# # # patch "osx_bundle.sh" # from [8ff21773cbd796df474fb452dc80397a8e081b00] # to [f75387dd2c33c0c4a054dd00441de5e8c0e99417] # ============================================================ --- osx_bundle.sh 8ff21773cbd796df474fb452dc80397a8e081b00 +++ osx_bundle.sh f75387dd2c33c0c4a054dd00441de5e8c0e99417 @@ -1,18 +1,23 @@ #!/bin/bash # # This script creates a distributable application package which already -# contains the needed Qt4 libraries. +# contains the needed Qt4 libraries in order to run the application. +# In the end a disk image is created for easy distribution which is put +# into the $BIN_DIR. # -APP_BUNDLE="guitone/bin/guitone.app" -APP_FRAMEW="$APP_BUNDLE/Contents/Frameworks" -APP_BINARY="guitone" +BIN_DIR="guitone/bin" +BINARY_NAME="guitone" declare -a NEEDED_LIBS=( "QtCore" "QtGui" "QtXml" ) # # configuration end, nothing should be edited from here on # +bundle_dir="$BIN_DIR/$BINARY_NAME.app" +bundle_bin="$bundle_dir/Contents/MacOS/$BINARY_NAME" +framework_dir="$bundle_dir/Contents/Frameworks" + if [ -z $QTDIR ]; then echo "\$QTDIR environment variable not found... exiting." exit 1 @@ -22,13 +27,13 @@ QTDIR=`perl -e "use Cwd 'realpath'; prin # so we need to use perl for this QTDIR=`perl -e "use Cwd 'realpath'; print realpath('$QTDIR');"` -if [ ! -d $APP_BUNDLE ]; then +if [ ! -d "$bundle_dir" ]; then echo "Application bundle not found in bin... exiting." exit 1 fi echo "Creating Frameworks directory in application bundle..." -mkdir -p "$APP_FRAMEW" +mkdir -p "framework_dir" address@hidden for (( i = 0 ; i < libcount ; i++ )) @@ -41,29 +46,38 @@ do exit 1 fi - rm -rf "$APP_FRAMEW/$lib.framework" - cp -fR "$QTDIR/lib/$lib.framework" "$APP_FRAMEW" + rm -rf "$framework_dir/$lib.framework" + cp -fR "$QTDIR/lib/$lib.framework" "$framework_dir" echo "...$lib copied." install_name_tool \ -id "@executable_path/../Frameworks/$lib.framework/Versions/4/$lib" \ - "$APP_FRAMEW/$lib.framework/Versions/4/$lib" + "$framework_dir/$lib.framework/Versions/4/$lib" # other Qt libs depend at least on QtCore if [ "$lib" != "QtCore" ]; then install_name_tool -change "$QTDIR/lib/QtCore.framework/Versions/4/QtCore" \ "@executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore" \ - "$APP_FRAMEW/$lib.framework/Versions/Current/$lib" + "$framework_dir/$lib.framework/Versions/Current/$lib" fi install_name_tool -change "$QTDIR/lib/$lib.framework/Versions/4/$lib" \ "@executable_path/../Frameworks/$lib.framework/Versions/4/$lib" \ - "$APP_BUNDLE/Contents/MacOS/$APP_BINARY" + "$bundle_bin" echo "...$lib done." done echo "Removing any debug libraries and headers..." -find "$APP_FRAMEW" | egrep "debug|Headers" | xargs rm -rf +find "$framework_dir" | egrep "debug|Headers" | xargs rm -rf +echo "Creating disk image..." +tempdir="/tmp/`basename $0`.$$" +mkdir $tempdir +cp -R $bundle_dir $tempdir +rm -f "$BIN_DIR/$BINARY_NAME.dmg" +# format UDBZ: bzip2 compressed (10.4+), UDZ0: zlib compressed (default) +hdiutil create -srcfolder $tempdir -format UDBZ -volname "$BINARY_NAME" "$BIN_DIR/$BINARY_NAME.dmg" +rm -rf $tempdir +