diff options
-rwxr-xr-x | Scripts/build.sh | 122 |
1 files changed, 83 insertions, 39 deletions
diff --git a/Scripts/build.sh b/Scripts/build.sh index 5348152a..681a98fa 100755 --- a/Scripts/build.sh +++ b/Scripts/build.sh @@ -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,22 +230,24 @@ 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 @@ -210,7 +255,7 @@ 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 |