Permalink
Browse files

Re-order some build steps (while investigating slowish debug builds).

  • Loading branch information...
stuconnolly committed Mar 23, 2017
1 parent dd46890 commit 4a186517155223c48255e9952d002f465c567626
Showing with 83 additions and 39 deletions.
  1. +83 −39 Scripts/build.sh
View
@@ -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
}
@@ -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"
@@ -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"
@@ -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.