Skip to content

Commit

Permalink
Re-order some build steps (while investigating slowish debug builds).
Browse files Browse the repository at this point in the history
  • Loading branch information
stuconnolly committed Mar 23, 2017
1 parent dd46890 commit 4a18651
Showing 1 changed file with 83 additions and 39 deletions.
122 changes: 83 additions & 39 deletions Scripts/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -40,11 +40,16 @@ then
exit 1
fi

FRAMEWORKS_LIST="/tmp/sp.frameworks.$$"
FILES_TO_SIGN_LIST="/tmp/sp.filelist.$$"
BUILD_PRODUCT="${BUILT_PRODUCTS_DIR}/${TARGET_NAME}${WRAPPER_SUFFIX}"
FRAMEWORKS_PATH="${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}"
SHARED_SUPPORT_DIR="${BUILD_PRODUCT}/Contents/SharedSupport"

dev_sign_resource()
{
log "Signing resource: $1"

codesign -f -s 'Sequel Pro Development' "$1" 2> /dev/null
}

Expand Down Expand Up @@ -92,86 +97,124 @@ dist_code_sign()
echo $ERRORS
}

echo 'Updating build version...'
copy_default_bundles()
{
log "Copying default bundles from '${SRCROOT}/SharedSupport/Default Bundles' to '${SHARED_SUPPORT_DIR}'"

# Copy all Default Bundles to build product
rm -rf "${SHARED_SUPPORT_DIR}/Default Bundles"

mkdir -p "${SHARED_SUPPORT_DIR}/Default Bundles"

cp -R "${SRCROOT}/SharedSupport/Default Bundles" "${SHARED_SUPPORT_DIR}"
}

copy_default_themes()
{
log "Copying default bundles from '${SRCROOT}/SharedSupport/Default Themes' to '${SHARED_SUPPORT_DIR}'"

# Copy all Default Themes to build product
rm -rf "${SHARED_SUPPORT_DIR}/Default Themes"

mkdir -p "${SHARED_SUPPORT_DIR}/Default Themes"

cp -R "${SRCROOT}/SharedSupport/Default Themes" "${SHARED_SUPPORT_DIR}"
}

set_spotlight_comment()
{
log "Setting Spotlight comment to 'MySQL database pancakes with syrup'"

# Add a SpotLight comment (can't use applescript from a continuous integration server, so we manually set the binaryplist with xattr - but if this fails fall back to applescript)
xattr -wx com.apple.metadata:kMDItemFinderComment "62 70 6C 69 73 74 30 30 5F 10 22 4D 79 53 51 4C 20 64 61 74 61 62 61 73 65 20 70 61 6E 63 61 6B 65 73 20 77 69 74 68 20 73 79 72 75 70 08 00 00 00 00 00 00 01 01 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2D" "${BUILD_PRODUCT}"

if [ $? -ne 0 ] ; then
osascript -e "tell application \"Finder\" to set comment of (alias (POSIX file \"${BUILD_PRODUCT}\")) to \"MySQL database pancakes with syrup\""
fi
}

remove_temp_files()
{
rm "$FRAMEWORKS_LIST"
rm "$FILES_TO_SIGN_LIST"
}

log()
{
echo $1
}

log 'Updating build number (build-version.pl)...'

# Add the build/bundle version
"${SRCROOT}/Scripts/build-version.pl"

# Remove the .ibplugin from within frameworks
rm -rf "${BUILD_PRODUCT}/Contents/Frameworks/ShortcutRecorder.framework/Versions/A/Resources/ShortcutRecorder.ibplugin"
copy_default_bundles
copy_default_themes

# Perform 'Release' or 'Distribution' build specific actions
if [[ "$CONFIGURATION" == 'Release' || "$CONFIGURATION" == 'Distribution' ]]
then
log 'Updating localizations (localize.sh)...'

"${SRCROOT}/Scripts/localize.sh"

printf "Running trim-application.sh to strip application resources for distribution...\n\n"
log "Stripping application resources for distribution (trim-application.sh)..."

"${SRCROOT}/Scripts/trim-application.sh" -p "$BUILD_PRODUCT" -a
fi

SHARED_SUPPORT_DIR="${BUILD_PRODUCT}/Contents/SharedSupport"

# Copy all Default Bundles to build product
rm -rf "${SHARED_SUPPORT_DIR}/Default Bundles"

mkdir -p "${SHARED_SUPPORT_DIR}/Default Bundles"

cp -R "${SRCROOT}/SharedSupport/Default Bundles" "${SHARED_SUPPORT_DIR}"

# Copy all Default Themes to build product
rm -rf "${SHARED_SUPPORT_DIR}/Default Themes"

mkdir -p "${SHARED_SUPPORT_DIR}/Default Themes"
# Remove the .ibplugin from within frameworks
rm -rf "${BUILD_PRODUCT}/Contents/Frameworks/ShortcutRecorder.framework/Versions/A/Resources/ShortcutRecorder.ibplugin"

cp -R "${SRCROOT}/SharedSupport/Default Themes" "${SHARED_SUPPORT_DIR}"

# Add a SpotLight comment (can't use applescript from a continuous integration server, so we manually set the binaryplist with xattr - but if this fails fall back to applescript)
xattr -wx com.apple.metadata:kMDItemFinderComment "62 70 6C 69 73 74 30 30 5F 10 22 4D 79 53 51 4C 20 64 61 74 61 62 61 73 65 20 70 61 6E 63 61 6B 65 73 20 77 69 74 68 20 73 79 72 75 70 08 00 00 00 00 00 00 01 01 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2D" "${BUILD_PRODUCT}"
if [ $? -ne 0 ] ; then
osascript -e "tell application \"Finder\" to set comment of (alias (POSIX file \"${BUILD_PRODUCT}\")) to \"MySQL database pancakes with syrup\""
set_spotlight_comment
fi


FRAMEWORKS_LIST="/tmp/sp.frameworks.$$"
ls -d -1 "$FRAMEWORKS_PATH"/** > "$FRAMEWORKS_LIST"

FILES_TO_SIGN_LIST="/tmp/sp.filelist.$$"
echo "${BUILD_PRODUCT}/Contents/Library/QuickLook/Sequel Pro.qlgenerator" >> "$FILES_TO_SIGN_LIST"
echo "${BUILD_PRODUCT}/Contents/Resources/SequelProTunnelAssistant" >> "$FILES_TO_SIGN_LIST"
echo "${BUILD_PRODUCT}" >> "$FILES_TO_SIGN_LIST"


# Perform distribution specific tasks if this is a 'Distribution' build
if [ "$CONFIGURATION" == 'Distribution' ]
then
echo 'Checking for localizations to copy in, using the "ResourcesToCopy" directory...'
log 'Checking for localizations to copy in, using the "ResourcesToCopy" directory...'

if [ -e "${SRCROOT}/ResourcesToCopy" ]
then
TRANSLATIONS_BASE="${SRCROOT}/languagetranslations"
IBSTRINGSDIR="${SRCROOT}/ibstrings"
XIB_BASE="${SRCROOT}/Interfaces/English.lproj"

rm -rf "${IBSTRINGSDIR}" &> /dev/null
rm -rf "${TRANSLATIONS_BASE}" &> /dev/null

echo "Creating IB strings files for rekeying..."
log "Creating IB strings files for rekeying..."

cp -R "${SRCROOT}/ResourcesToCopy" "${TRANSLATIONS_BASE}"

mkdir -p "$IBSTRINGSDIR/English.lproj"

find "${XIB_BASE}" \( -name "*.xib" \) | while read FILE; do
ibtool "$FILE" --export-strings-file "$IBSTRINGSDIR/English.lproj/`basename "$FILE" .xib`.strings"
done

echo "Rekeying localization files, translating xibs, merging localizations..."
log "Rekeying localization files, translating xibs, merging localizations..."

find "${TRANSLATIONS_BASE}" \( -name "*.lproj" \) | while read FILE; do
loc=`basename "$FILE"`

mkdir "$IBSTRINGSDIR/$loc"

printf "\tProcessing: $loc\n"

find "$FILE" \( -name "*.strings" \) | while read STRFILE; do

file=`basename "$STRFILE" .strings`
ibkeyfile="$IBSTRINGSDIR/English.lproj/$file.strings"
xibfile="$XIB_BASE/$file.xib"
transfile="$IBSTRINGSDIR/$loc/$file.strings"

if [ -e "$ibkeyfile" ] && [ -e "$xibfile" ]; then
"${BUILT_PRODUCTS_DIR}/xibLocalizationPostprocessor" "$STRFILE" "$ibkeyfile" "$transfile"

Expand All @@ -187,30 +230,32 @@ then
rm -rf "${IBSTRINGSDIR}" &> /dev/null
rm -rf "${TRANSLATIONS_BASE}" &> /dev/null
else
echo 'No localizations to copy.'
log 'No localizations to copy.'
fi

echo 'Performing distribution build code signing...'
log 'Performing distribution build code signing...'

VERIFY_ERRORS=$(dist_code_sign "$FRAMEWORKS_LIST" "$FILES_TO_SIGN_LIST")

if [ "$VERIFY_ERRORS" != '' ]
then
echo "error: Signing verification threw an error: $VERIFY_ERRORS"
echo "error: All distribution builds must be signed with the key used for all previous distribution signing!"
log "error: Signing verification threw an error: $VERIFY_ERRORS"
log "error: All distribution builds must be signed with the key used for all previous distribution signing!"

remove_temp_files

exit 1
fi

echo 'Running package-application.sh to package application for distribution...'
log 'Running package-application.sh to package application for distribution...'

"${SRCROOT}/Scripts/package-application.sh" -p "$BUILD_PRODUCT"
fi

# Development build code signing
if [ "$CONFIGURATION" == 'Debug' ]
then
echo 'Performing development build code signing...'
log 'Performing development build code signing...'

dev_code_sign "$FRAMEWORKS_LIST"
dev_code_sign "$FILES_TO_SIGN_LIST"
Expand All @@ -219,7 +264,6 @@ then
touch "$BUILD_PRODUCT"
fi

rm "$FRAMEWORKS_LIST"
rm "$FILES_TO_SIGN_LIST"
remove_temp_files

exit 0

0 comments on commit 4a18651

Please sign in to comment.