X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=tools%2Fosx_packaging%2Fosx_build;h=a63f92c4bd8d321f1378ee980acba96771c1465f;hb=3099d99e0b9c12c500507cc2e3e14015c7364823;hp=fcf1febe84fc78c2dd1641336c6d5918a47594ab;hpb=8648a8a13b04549362f14a0738947d997ef1abc7;p=ardour.git diff --git a/tools/osx_packaging/osx_build b/tools/osx_packaging/osx_build index fcf1febe84..a63f92c4bd 100755 --- a/tools/osx_packaging/osx_build +++ b/tools/osx_packaging/osx_build @@ -1,5 +1,7 @@ #!/bin/bash +set -e + # script for pulling together a MacOSX app bundle. GTKSTACK_ROOT=$HOME/gtk/inst @@ -8,17 +10,25 @@ BUILD_ROOT=../../build # where harvid and xjadeo binaries are cached if test -z "$CACHEDIR" -o ! -d "$CACHEDIR"; then - CACHEDIR=`pwd` + CACHEDIR=/var/tmp fi +mkdir -p "$CACHEDIR" SAE= MIXBUS= +MIXBUS32C= WITH_HARVID=1 +WITH_HARRISON_LV2= +WITH_X42_LV2= WITH_LADSPA=1 STRIP=1 PRINT_SYSDEPS= WITH_NLS= +: ${HARRISONCHANNELSTRIP=harrison_channelstrip} + +. ../define_versions.sh + while [ $# -gt 0 ] ; do echo "arg = $1" case $1 in @@ -27,34 +37,46 @@ while [ $# -gt 0 ] ; do # top level build targets # - --sae) WITH_NLS= ; - SAE=1 ; - WITH_LADSPA=1; - STRIP= ; - PRODUCT_PKG_DIR=ArdourSAE ; - APPNAME=Ardour ; - shift ;; - --mixbus) MIXBUS=1; - WITH_NLS=1 ; - SAE= ; - WITH_LADSPA=; - STRIP= ; - PRODUCT_PKG_DIR=MixBus; - APPNAME=Mixbus ; - shift ;; - --public) WITH_NLS= ; - SAE= ; - WITH_LADSPA=1; - STRIP= ; - PRODUCT_PKG_DIR=Ardour; - APPNAME=Ardour ; - shift ;; - --allinone) SAE= ; - WITH_NLS= ; - WITH_LADSPA=1; - STRIP= ; - PRODUCT_PKG_DIR=Ardour ; - shift ;; + --sae) + SAE=1 ; + WITH_LADSPA=1; + STRIP= ; + PRODUCT_PKG_DIR=ArdourSAE ; + APPNAME=Ardour ; + shift ;; + --mixbus) MIXBUS=1; + WITH_HARRISON_LV2=1 ; + WITH_X42_LV2=1 ; + WITH_NLS=1 ; + SAE= ; + WITH_LADSPA=; + STRIP= ; + PRODUCT_PKG_DIR=Mixbus; + APPNAME=Mixbus ; + shift ;; + --mixbus32c) MIXBUS=1; + MIXBUS32C=1; + WITH_HARRISON_LV2=1 ; + WITH_X42_LV2=1 ; + WITH_NLS=1 ; + SAE= ; + WITH_LADSPA=; + STRIP= ; + PRODUCT_PKG_DIR=Mixbus32C; + APPNAME=Mixbus32C-${major_version} ; + major_version="" + shift ;; + --public) + SAE= ; + WITH_LADSPA=1; + PRODUCT_PKG_DIR=Ardour; + APPNAME=Ardour ; + shift ;; + --allinone) SAE= ; + WITH_LADSPA=1; + STRIP= ; + PRODUCT_PKG_DIR=Ardour ; + shift ;; --test) SAE= ; WITH_LADSPA=; STRIP= ; shift ;; # @@ -66,6 +88,7 @@ while [ $# -gt 0 ] ; do --nostrip) STRIP= ; shift ;; --sysdeps) PRINT_SYSDEPS=1; shift ;; --nls) WITH_NLS=1 ; shift ;; + --chanstrip) HARRISONCHANNELSTRIP=$2 ; shift; shift ;; esac done @@ -74,7 +97,6 @@ if test -z "$PRODUCT_PKG_DIR" -o -z "$APPNAME"; then exit 1 fi -. ../define_versions.sh echo "Version is $release_version" if [ "x$commit" != "x" ] ; then info_string="$release_version ($commit) built on `hostname` by `whoami` on `date`" @@ -83,9 +105,20 @@ else fi echo "Info string is $info_string" +if [ x$DEBUG = xT ]; then + STRIP= + echo "Debug build, strip disabled" +else + if test x$STRIP != x ; then + echo "No debug build, strip enabled" + else + echo "No debug build, but strip disabled." + fi +fi + # setup directory structure -APPDIR=${APPNAME}.app +APPDIR=${APPNAME}${major_version}.app APPROOT=$APPDIR/Contents Frameworks=$APPROOT/lib Resources=$APPROOT/Resources @@ -108,14 +141,16 @@ MidiMaps=$Shared/midi_maps ExportFormats=$Shared/export Templates=$Shared/templates PatchFiles=$Shared/patchfiles +LuaScripts=$Shared/scripts MackieControl=$Shared/mcp +Themes=$Shared/themes if [ x$PRINT_SYSDEPS != x ] ; then # # print system dependencies # - for file in $APPROOT/MacOS/* $Frameworks/* $Frameworks/modules/* $Plugins/*.so ; do +for file in $APPROOT/MacOS/* $Frameworks/* $Frameworks/modules/* $Plugins/*.so ; do if ! file $file | grep -qs Mach-O ; then continue fi @@ -144,29 +179,33 @@ mkdir -p $Templates mkdir -p $Frameworks/modules mkdir -p $Etc mkdir -p $MackieControl +mkdir -p $PatchFiles +mkdir -p $LuaScripts +mkdir -p $Themes # maybe set variables env="" if test x$SAE != x ; then - appname="Ardour3/SAE" + appname="Ardour${major_version}-SAE" + EXECUTABLE=${appname} env="$envARDOUR_SAEtrue" # # current default for SAE version is German keyboard layout without a keypad # env="$envARDOUR_KEYBOARD_LAYOUTde-nokeypad" env="$envARDOUR_UI_CONFardour3_ui_sae.conf" - env="$envARDOUR3_UI_RCardour3_ui_dark_sae.rc" elif test x$MIXBUS != x ; then - appname="Ardour3/Mixbus" + appname=$APPNAME + EXECUTABLE=${appname}${major_version} env="$envARDOUR_MIXBUStrue" # # current default for MIXBUS version is US keyboard layout without a keypad # env="$envARDOUR_KEYBOARD_LAYOUTus-nokeypad" env="$envARDOUR_UI_CONFardour3_ui.conf" - env="$envARDOUR3_UI_RCardour3_ui_dark.rc" else - appname="Ardour3" + appname="Ardour${major_version}" + EXECUTABLE=${appname} fi # @@ -179,10 +218,14 @@ env="$envDYLIB_FALLBACK_LIBRARY_PATH/usr/local/lib:/opt/libLSEnvironment$envARDOUR_BUNDLEDtrue" + # edit plist sed -e "s?@ENV@?$env?g" \ -e "s?@VERSION@?$release_version?g" \ - -e "s?@INFOSTRING@?$info_string?g" < Info.plist.in > Info.plist + -e "s?@INFOSTRING@?$info_string?g" \ + -e "s?@IDSUFFIX@?$EXECUTABLE?g" \ + -e "s?@BUNDLENAME@?${APPNAME}${major_version}?g" \ + -e "s?@EXECUTABLE@?$EXECUTABLE?g" < Info.plist.in > Info.plist # and plist strings sed -e "s?@APPNAME@?$appname?" \ -e "s?@ENV@?$env?g" \ @@ -194,31 +237,36 @@ sed -e "s?@APPNAME@?$appname?" \ cp Info.plist $APPROOT cp -R Resources $APPROOT +# ..and clean up +rm -f Info.plist +rm -f Resources/InfoPlist.strings + # # if we build a bundle without jack, then -# make the Ardour3 executable a helper +# make the Ardour executable a helper # script that checks to see if JACK is # installed. # -cp startup_script $APPROOT/MacOS/Ardour3 -chmod 775 $APPROOT/MacOS/Ardour3 -MAIN_EXECUTABLE=Ardour3.bin +cp startup_script $APPROOT/MacOS/$EXECUTABLE +chmod 775 $APPROOT/MacOS/$EXECUTABLE +MAIN_EXECUTABLE=Ardour.bin ## used in startup_script echo "Copying ardour executable ...." cp $BUILD_ROOT/gtk2_ardour/ardour-$release_version $APPROOT/MacOS/$MAIN_EXECUTABLE if test x$SAE != x ; then # cp $BUILD_ROOT/gtk2_ardour/evtest $APPROOT/MacOS/gtkevents cp Ardour3-SAE.icns $Resources/appIcon.icns +elif test x$MIXBUS32C != x ; then + cp Mixbus32C.icns $Resources/appIcon.icns elif test x$MIXBUS != x ; then cp Mixbus.icns $Resources/appIcon.icns else - cp Ardour3.icns $Resources/appIcon.icns + cp Ardour.icns $Resources/appIcon.icns fi cp typeArdour.icns $Resources/ -if test x$STRIP != x ; then - strip $APPROOT/MacOS/Ardour3 -fi + +set +e # things below are not error-free (optional files etc) :( # copy locale files if test x$WITH_NLS != x ; then @@ -282,24 +330,8 @@ fi # cp -R $GTKSTACK_ROOT/etc/* $Etc -echo "Copying all Pango modules ..." -cp -R $GTKSTACK_ROOT/lib/pango/1.8.0/modules/*.so $Frameworks/modules -echo "Copying all GDK Pixbuf loaders ..." -cp -R $GTKSTACK_ROOT/lib/gdk-pixbuf-2.0/2.10.0/loaders/*.so $Frameworks/modules -# charset alias file cp -R $GTKSTACK_ROOT/lib/charset.alias $Resources -# generate new Pango module file -cat > pangorc < $Resources/pango.modules -rm pangorc - -# generate a new GDK pixbufs loaders file -gdk-pixbuf-query-loaders | sed "s?$GTKSTACK_ROOT/lib/gdk-pixbuf-2.0/2.10.0/loaders/?@executable_path/../lib/modules/?" > $Resources/gdk-pixbuf.loaders - # We rely on clearlooks, so include a version from our own build tree # this one is special - we will set GTK_PATH to $Frameworks/gtkengines @@ -336,7 +368,9 @@ cp $BUILD_ROOT/libs/surfaces/control_protocol/libardourcp*.dylib $Frameworks cp $BUILD_ROOT/libs/panners/*/lib*.dylib $Panners # Backends -cp $BUILD_ROOT/libs/backends/*/lib*.dylib $Backends +for backend in jack wavesaudio dummy coreaudio; do + cp $BUILD_ROOT/libs/backends/$backend/lib*.dylib $Backends +done # Export Formats/Presets for f in $BUILD_ROOT/../export/*.preset $BUILD_ROOT/../export/*.format ; do @@ -362,6 +396,12 @@ for x in $BUILD_ROOT/../patchfiles/*.midnam ; do cp "$x" $PatchFiles done +# Lua Script Files +# got to be careful with names here +for x in $BUILD_ROOT/../scripts/*.lua ; do + cp "$x" $LuaScripts +done + # MackieControl data # got to be careful with names here for x in $BUILD_ROOT/../mcp/*.device $BUILD_ROOT/../mcp/*.profile ; do @@ -371,8 +411,33 @@ done # VAMP plugins that we use cp $BUILD_ROOT/libs/vamp-plugins/libardourvampplugins.dylib $Frameworks -# Suil modules -cp $ARDOURSTACK_ROOT/lib/suil-0/lib* $Frameworks +# Suil modules (new dir 'build-stack') +if test -d $GTKSTACK_ROOT/lib/suil-0/ ; then + cp $GTKSTACK_ROOT/lib/suil-0/lib* $Frameworks +fi + +# Suil modules (old dir 'build-ardour-stack') +if test -d $ARDOURSTACK_ROOT/lib/suil-0/ ; then + cp $ARDOURSTACK_ROOT/lib/suil-0/lib* $Frameworks +fi + +# VST scanner app and wrapper script, if they exist +if test -d $BUILD_ROOT/libs/fst ; then + cp $BUILD_ROOT/libs/fst/ardour-vst-scanner* $Frameworks/ +fi + +# vfork wrapper +if test -f $BUILD_ROOT/libs/vfork/ardour-exec-wrapper ; then + mkdir -p $Frameworks/vfork + cp $BUILD_ROOT/libs/vfork/ardour-exec-wrapper $Frameworks/ +fi + +# TODO check if this is still needed, even when building on 10.5 +if file $BUILD_ROOT/gtk2_ardour/ardour-$release_version | grep -q ppc; then +STDCPP='|libstdc\+\+' +else +STDCPP= +fi while [ true ] ; do missing=false @@ -380,7 +445,16 @@ while [ true ] ; do if ! file $file | grep -qs Mach-O ; then continue fi - deps=`otool -L $file | awk '{print $1}' | egrep "($GTKSTACK_ROOT|$ARDOURSTACK_ROOT|/opt/|/local/|libs/)" | grep -v 'libjack\.'` + # libffi contains "S" (other section symbols) that should not be stripped. + if [[ $file == *"libffi"* ]] ; then + continue + fi + + if test x$STRIP != x ; then + strip -u -r -arch all $file &>/dev/null + fi + + deps=`otool -L $file | awk '{print $1}' | egrep "($GTKSTACK_ROOT|$ARDOURSTACK_ROOT|/opt/|/local/|libs/$STDCPP)" | grep -v 'libjack\.' | grep -v "$(basename $file)"` # echo -n "." for dep in $deps ; do base=`basename $dep` @@ -403,39 +477,26 @@ echo echo "Copying other stuff to $APPDIR ..." -#cp $BUILD_ROOT/gtk2_ardour/ergonomic-us.bindings $Resources - -cp $BUILD_ROOT/gtk2_ardour/mnemonic-us.bindings $Resources -cp ../../gtk2_ardour/mixer.bindings $Resources -cp ../../gtk2_ardour/step_editing.bindings $Resources +cp $BUILD_ROOT/gtk2_ardour/ardour.keys $Resources cp $BUILD_ROOT/gtk2_ardour/ardour.menus $Resources +cp $BUILD_ROOT/gtk2_ardour/default_ui_config $Resources +cp $BUILD_ROOT/gtk2_ardour/clearlooks.rc $Resources -if test x$SAE != x ; then - cp $BUILD_ROOT/gtk2_ardour/SAE-de-keypad.bindings $Resources - cp $BUILD_ROOT/gtk2_ardour/SAE-de-nokeypad.bindings $Resources - cp $BUILD_ROOT/gtk2_ardour/SAE-us-keypad.bindings $Resources - cp $BUILD_ROOT/gtk2_ardour/SAE-us-nokeypad.bindings $Resources - cp $BUILD_ROOT/ardour_system_sae.rc $Resources/ardour_system.rc - echo cp $BUILD_ROOT/ardour_system_sae.rc $Resources/ardour_system.rc - cp $BUILD_ROOT/instant.xml.sae $Resources/instant.xml - echo cp $BUILD_ROOT/instant.xml.sae $Resources/instant.xml -else - cp ../../ardour_system.rc $Resources/ardour_system.rc - cp ../../instant.xml $Resources/instant.xml - echo cp ../../instant.xml $Resources/instant.xml -fi -cp ../../gtk2_ardour/ardour3_ui_default.conf $Resources -cp ../../gtk2_ardour/ardour3_ui_default.conf $Resources/ardour3_ui.conf -cp $BUILD_ROOT/gtk2_ardour/ardour3_ui_light.rc $Resources -cp $BUILD_ROOT/gtk2_ardour/ardour3_ui_dark.rc $Resources +# Copied directly from source tree -cp -r ../../gtk2_ardour/icons $Resources -cp -r ../../gtk2_ardour/pixmaps $Resources +mkdir ${Resources}/icons +mkdir ${Resources}/resources +cp ../../system_config $Resources/system_config +cp ../../instant.xml $Resources/instant.xml +cp ../../gtk2_ardour/icons/*.png ${Resources}/icons/ +cp -r ../../gtk2_ardour/icons/cursor_* ${Resources}/icons/ +cp ../../gtk2_ardour/ArdourMono.ttf $Shared +cp ../../gtk2_ardour/resources/${PRODUCT_PKG_DIR}-* ${Resources}/resources/ -# shared stuff -cp -R ../../gtk2_ardour/splash.png $Shared -cp -R ../../gtk2_ardour/small-splash.png $Shared -cp -R ../../gtk2_ardour/ArdourMono.ttf $Shared + +# Themes: only install those named for this app +lower_case_appname=`echo $APPNAME | tr '[:upper:]' '[:lower:]'` +cp ../../gtk2_ardour/themes/*-${lower_case_appname}.colors $Themes # go through and recursively remove any .svn dirs in the bundle for svndir in `find $APPDIR -name .svn -type dir`; do @@ -445,6 +506,14 @@ done # install bundled LV2s to /Contents/lib/LV2/ cp -R $BUILD_ROOT/libs/LV2 $Frameworks/ +# lv2 core, classifications etc - TODO check if we need the complete LV2 ontology +if test -d $ARDOURSTACK_ROOT/lib/lv2/lv2core.lv2 ; then + cp -R $ARDOURSTACK_ROOT/lib/lv2/lv2core.lv2 $Frameworks/LV2/ +elif test -d $GTKSTACK_ROOT/lib/lv2/lv2core.lv2 ; then + cp -R $GTKSTACK_ROOT/lib/lv2/lv2core.lv2 $Frameworks/LV2/ +fi + + # now fix up the executables echo "Fixing up executable dependency names ..." executables=$MAIN_EXECUTABLE @@ -455,7 +524,7 @@ fi for exe in $executables; do EXE=$APPROOT/MacOS/$exe changes="" - for lib in `otool -L $EXE | egrep "($GTKSTACK_ROOT|$ARDOURSTACK_ROOT|/opt/|/local/|libs/)" | awk '{print $1}' | grep -v 'libjack\.'` ; do + for lib in `otool -L $EXE | egrep "($GTKSTACK_ROOT|$ARDOURSTACK_ROOT|/opt/|/local/|libs/$STDCPP)" | awk '{print $1}' | grep -v 'libjack\.'` ; do base=`basename $lib` changes="$changes -change $lib @executable_path/../lib/$base" done @@ -466,7 +535,7 @@ done echo "Fixing up library names ..." # now do the same for all the libraries we include -for libdir in $Frameworks $Frameworks/modules $Surfaces $Panners $Backends ; do +for libdir in $Frameworks $Frameworks/modules $Surfaces $Panners $Backends $Frameworks/LV2/* ; do libbase=`basename $libdir` @@ -481,7 +550,7 @@ for libdir in $Frameworks $Frameworks/modules $Surfaces $Panners $Backends ; do # change all the dependencies changes="" - for lib in `otool -L $dylib | egrep "($GTKSTACK_ROOT|$ARDOURSTACK_ROOT|/opt/|/local/|libs/)" | awk '{print $1}' | grep -v 'libjack\.'` ; do + for lib in `otool -L $dylib | egrep "($GTKSTACK_ROOT|$ARDOURSTACK_ROOT|/opt/|/local/|libs/$STDCPP)" | awk '{print $1}' | grep -v 'libjack\.'` ; do base=`basename $lib` if echo $lib | grep -s libbase; then changes="$changes -change $lib @executable_path/../$libbase/$base" @@ -513,7 +582,7 @@ rm -rf $PRODUCT_PKG_DIR mkdir $PRODUCT_PKG_DIR DMGWINBOTTOM=440 -DMGBACKGROUND=dmgbg.png +DMGBACKGROUND=dmgbg if [ x$SAE != x ] ; then @@ -531,10 +600,7 @@ elif [ x$MIXBUS != x ] ; then echo "Creating Mixbus packaging directory" mv $APPDIR $PRODUCT_PKG_DIR/ - cp MixBus_Install_QuickStart.pdf "$PRODUCT_PKG_DIR/Mixbus Install & Quick Start Guide.pdf" - DMGWINBOTTOM=580 - YPOS=$[ $DMGWINBOTTOM - 300 ] - MIXBUSPOS="set position of item \"MixBus_Install_QuickStart.pdf\" of container window to {90, ${YPOS}}" + DMGBACKGROUND=dmgbgMB else echo "Creating $APPNAME packaging directory" @@ -542,10 +608,33 @@ else fi +if file ${PRODUCT_PKG_DIR}/$APPROOT/MacOS/$MAIN_EXECUTABLE | grep -q x86_64; then + OSX_ARCH=x86_64 + OSX_BENSID=osx64 +elif file ${PRODUCT_PKG_DIR}/$APPROOT/MacOS/$MAIN_EXECUTABLE | grep -q ppc; then + OSX_ARCH=ppc + OSX_BENSID=osxppc +else + OSX_ARCH=i386 + OSX_BENSID=osx32 +fi + +if test x$WITH_HARRISON_LV2 != x ; then + curl -s -S --fail -# \ + -z "${CACHEDIR}/harrison_lv2s.${OSX_BENSID}.zip" \ + -o "${CACHEDIR}/harrison_lv2s.${OSX_BENSID}.zip" \ + "http://www.harrisonconsoles.com/mixbus/mb3/beta/harrison-dsp/harrison_lv2s.${OSX_BENSID}.zip" + + mkdir -p "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2" + bsdtar -C "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2/" -xf \ + "${CACHEDIR}/harrison_lv2s.${OSX_BENSID}.zip" +fi + if test x$WITH_HARVID != x ; then echo "installing video tools.." HARVID_VERSION=$(curl -s -S http://ardour.org/files/video-tools/harvid_version.txt) XJADEO_VERSION=$(curl -s -S http://ardour.org/files/video-tools/xjadeo_version.txt) + MULTIARCH=osx echo "copying harvid and xjadeo ..." rsync -Pa \ @@ -564,23 +653,82 @@ if test x$WITH_HARVID != x ; then cp -r "${JADEO}/Jadeo.app" "$PRODUCT_PKG_DIR/" hdiutil detach "${JADEO}" + XJCONTENT=${PRODUCT_PKG_DIR}/Jadeo.app/Contents + HVLIBS=${PRODUCT_PKG_DIR}/$APPROOT/lib/harvid + + for file in ${XJCONTENT}/MacOS/Jadeo-bin ${XJCONTENT}/Frameworks/*.dylib ${HVLIBS}/*.dylib ${PRODUCT_PKG_DIR}/$APPROOT/MacOS/*harvid* ; do + lipo -extract_family ${OSX_ARCH} ${file} -output ${file}.thin && \ + mv ${file}.thin ${file} + done + DMGWINBOTTOM=580 YPOS=$[ $DMGWINBOTTOM - 300 ] XJADEOPOS="set position of item \"Jadeo.app\" of container window to {310, ${YPOS}}" - DMGBACKGROUND=dmgbgxj.png + DMGBACKGROUND=${DMGBACKGROUND}xj +fi + +################################################################################ +### Mixbus plugins, etc +if test x$WITH_X42_LV2 != x ; then + echo "bundling x42 plugins" + mkdir -p "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2" + + for proj in x42-meters x42-midifilter x42-midimap x42-stereoroute x42-eq setBfree; do + X42_VERSION=$(curl -s -S http://x42-plugins.com/x42/osx/${proj}.latest.txt) + rsync -a -q --partial \ + rsync://x42-plugins.com/x42/osx/${proj}-lv2-osx-${X42_VERSION}.zip \ + "$CACHEDIR/${proj}-lv2-osx-${X42_VERSION}.zip" + bsdtar -C "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2/" -xf \ + "$CACHEDIR/${proj}-lv2-osx-${X42_VERSION}.zip" + done + + for file in ${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2/*/*.dylib ; do + lipo -extract_family ${OSX_ARCH} ${file} -output ${file}.thin + mv ${file}.thin ${file} + done +fi + +if test -n "$MIXBUS"; then + echo "deploying harrison channelstrip for $OSX_BENSID" + + mkdir -p "${PRODUCT_PKG_DIR}/${APPROOT}/lib/ladspa/strip" + + curl -s -S --fail -# \ + -z "${CACHEDIR}/${HARRISONCHANNELSTRIP}.${OSX_BENSID}.so" \ + -o "${CACHEDIR}/${HARRISONCHANNELSTRIP}.${OSX_BENSID}.so" \ + "http://www.harrisonconsoles.com/mixbus/mb3/beta/harrison-dsp/${HARRISONCHANNELSTRIP}.${OSX_BENSID}.so" + + cp "${CACHEDIR}/${HARRISONCHANNELSTRIP}.${OSX_BENSID}.so" \ + "${PRODUCT_PKG_DIR}/${APPROOT}/lib/ladspa/strip/${HARRISONCHANNELSTRIP}.so" + + echo "deploying harrison vamp plugins for $OSX_BENSID" + + curl -s -S --fail -# \ + -z "${CACHEDIR}/harrison_vamp.${OSX_BENSID}.dylib" \ + -o "${CACHEDIR}/harrison_vamp.${OSX_BENSID}.dylib" \ + "http://www.harrisonconsoles.com/mixbus/mb3/beta/harrison-dsp/harrison_vamp.${OSX_BENSID}.dylib" + + cp "${CACHEDIR}/harrison_vamp.${OSX_BENSID}.dylib" \ + "${PRODUCT_PKG_DIR}/${APPROOT}/lib/harrison_vamp.dylib" fi +################################################################################ + +( cd $PRODUCT_PKG_DIR ; find . ) > file_list.txt echo "Building DMG ..." # UC_DMG=$APPNAME-${release_version}-UC.dmg # FINAL_DMG=$APPNAME-${release_version}.dmg -UC_DMG=$APPNAME-$release_version.dmg + +if [ x$DEBUG = xT ]; then + UC_DMG=$APPNAME-$release_version-dbg.dmg +else + UC_DMG=$APPNAME-$release_version.dmg +fi VOLNAME=$APPNAME-$release_version -# TODO use mktemp -export TMPDIR=`pwd` -MNTPATH=`mktemp -d -t /ardourimg` +MNTPATH=`mktemp -d -t ardourimg` TMPDMG=`mktemp -t ardour` ICNSTMP=`mktemp -t ardouricon` EXTRA_SPACE_MB=30 @@ -594,67 +742,80 @@ mkdir -p "$MNTPATH" TMPDMG="${TMPDMG}.dmg" -hdiutil create -megabytes $DMGMEGABYTES "$TMPDMG" +trap "rm -rf $MNTPATH $TMPDMG ${TMPDMG}.dmg $ICNSTMP" EXIT + +hdiutil create -megabytes $DMGMEGABYTES -fs HFS+ -volname "${VOLNAME}" "$TMPDMG" DiskDevice=$(hdid -nomount "$TMPDMG" | grep Apple_HFS | cut -f 1 -d ' ') -newfs_hfs -v "${VOLNAME}" "${DiskDevice}" -mount -t hfs "${DiskDevice}" "${MNTPATH}" +mount -t hfs -o nobrowse "${DiskDevice}" "${MNTPATH}" cp -r ${PRODUCT_PKG_DIR}/* "${MNTPATH}" || exit mkdir "${MNTPATH}/.background" -cp -vi ${DMGBACKGROUND} "${MNTPATH}/.background/dmgbg.png" +cp -vi ${DMGBACKGROUND}.png "${MNTPATH}/.background/dmgbg.png" echo "setting DMG background ..." -echo ' - tell application "Finder" - tell disk "'${VOLNAME}'" - open - set current view of container window to icon view - set toolbar visible of container window to false - set statusbar visible of container window to false - set the bounds of container window to {400, 200, 800, '${DMGWINBOTTOM}'} - set theViewOptions to the icon view options of container window - set arrangement of theViewOptions to not arranged - set icon size of theViewOptions to 64 - set background picture of theViewOptions to file ".background:dmgbg.png" - make new alias file at container window to POSIX file "/Applications" with properties {name:"Applications"} - set position of item "'${APPDIR}'" of container window to {90, 100} - set position of item "Applications" of container window to {310, 100} - '${MIXBUSPOS}' - '${HARVIDPOS}' - '${XJADEOPOS}' - close - open - update without registering applications - delay 5 - eject - end tell - end tell -' | osascript +if test $(sw_vers -productVersion | cut -d '.' -f 2) -lt 9; then + # OSX ..10.8.X + DISKNAME=${VOLNAME} +else + # OSX 10.9.X and later + DISKNAME=`basename "${MNTPATH}"` +fi + +osascript << EOF + tell application "Finder" + activate + tell disk "${DISKNAME}" + open + delay 2 + set current view of container window to icon view + set toolbar visible of container window to false + set statusbar visible of container window to false + set the bounds of container window to {400, 200, 800, ${DMGWINBOTTOM}} + set theViewOptions to the icon view options of container window + set arrangement of theViewOptions to not arranged + set icon size of theViewOptions to 64 + set background picture of theViewOptions to file ".background:dmgbg.png" + make new alias file at container window to POSIX file "/Applications" with properties {name:"Applications"} + set position of item "${APPDIR}" of container window to {90, 100} + set position of item "Applications" of container window to {310, 100} + ${MIXBUSPOS} + ${HARVIDPOS} + ${XJADEOPOS} + close + open + update without registering applications + delay 5 + eject + end tell + end tell +EOF chmod -Rf go-w "${MNTPATH}" sync +set -e echo "compressing Image ..." -# Umount the image -umount "${DiskDevice}" -hdiutil eject "${DiskDevice}" +# Umount the image ('eject' above may already have done that) +umount "${DiskDevice}" || true +hdiutil eject "${DiskDevice}" || true # Create a read-only version, use zlib compression hdiutil convert -format UDZO "${TMPDMG}" -imagekey zlib-level=9 -o "${UC_DMG}" -# Delete the temporary files -rm "$TMPDMG" -rm -rf "$MNTPATH" +if test $(sw_vers -productVersion | cut -d '.' -f 2) -gt 5; then echo "setting file icon ..." cp ${PRODUCT_PKG_DIR}/$Resources/appIcon.icns ${ICNSTMP}.icns -/usr/bin/sips -i ${ICNSTMP}.icns -/Developer/Tools/DeRez -only icns ${ICNSTMP}.icns > ${ICNSTMP}.rsrc -/Developer/Tools/Rez -append ${ICNSTMP}.rsrc -o "$UC_DMG" -/Developer/Tools/SetFile -a C "$UC_DMG" +sips -i ${ICNSTMP}.icns +DeRez -only icns ${ICNSTMP}.icns > ${ICNSTMP}.rsrc +Rez -append ${ICNSTMP}.rsrc -o "$UC_DMG" +SetFile -a C "$UC_DMG" rm ${ICNSTMP}.icns ${ICNSTMP}.rsrc +fi + +rm -rf ${PRODUCT_PKG_DIR} echo echo "packaging suceeded."