5 # script for pulling together a MacOSX app bundle.
7 GTKSTACK_ROOT=$HOME/gtk/inst
8 ARDOURSTACK_ROOT=$HOME/a3/inst
11 # where harvid and xjadeo binaries are cached
12 if test -z "$CACHEDIR" -o ! -d "$CACHEDIR"; then
28 : ${HARRISONCHANNELSTRIP=harrison_channelstrip}
30 . ../define_versions.sh
32 while [ $# -gt 0 ] ; do
37 # top level build targets
44 PRODUCT_PKG_DIR=ArdourSAE ;
54 PRODUCT_PKG_DIR=Mixbus;
57 --mixbus32c) MIXBUS=1;
65 PRODUCT_PKG_DIR=Mixbus32C;
66 APPNAME=Mixbus32C-${major_version} ;
72 PRODUCT_PKG_DIR=Ardour;
78 PRODUCT_PKG_DIR=Ardour ;
80 --test) SAE= ; WITH_LADSPA=; STRIP= ; shift ;;
83 # specific build flags
86 --noharvid) WITH_HARVID= ; shift ;;
87 --noladspa) WITH_LADSPA= ; shift ;;
88 --nostrip) STRIP= ; shift ;;
89 --sysdeps) PRINT_SYSDEPS=1; shift ;;
90 --nls) WITH_NLS=1 ; shift ;;
91 --chanstrip) HARRISONCHANNELSTRIP=$2 ; shift; shift ;;
95 if test -z "$PRODUCT_PKG_DIR" -o -z "$APPNAME"; then
96 echo "application or product-name was not specified"
100 echo "Version is $release_version"
101 if [ "x$commit" != "x" ] ; then
102 info_string="$release_version ($commit) built on `hostname` by `whoami` on `date`"
104 info_string="$release_version built on `hostname` by `whoami` on `date`"
106 echo "Info string is $info_string"
108 if [ x$DEBUG = xT ]; then
110 echo "Debug build, strip disabled"
112 if test x$STRIP != x ; then
113 echo "No debug build, strip enabled"
115 echo "No debug build, but strip disabled."
119 # setup directory structure
121 APPDIR=${APPNAME}${major_version}.app
122 APPROOT=$APPDIR/Contents
123 Frameworks=$APPROOT/lib
124 Resources=$APPROOT/Resources
126 # Since this is OS X, don't try to distinguish between etc and shared
127 # (machine dependent and independent data) - just put everything
132 Locale=$Resources/locale
134 # Bundled Plugins live in a top level folder
136 Plugins=$APPROOT/Plugins
137 Surfaces=$Frameworks/surfaces
138 Panners=$Frameworks/panners
139 Backends=$Frameworks/backends
140 MidiMaps=$Shared/midi_maps
141 ExportFormats=$Shared/export
142 Templates=$Shared/templates
143 PatchFiles=$Shared/patchfiles
144 LuaScripts=$Shared/scripts
145 MackieControl=$Shared/mcp
146 Themes=$Shared/themes
148 if [ x$PRINT_SYSDEPS != x ] ; then
150 # print system dependencies
153 for file in $APPROOT/MacOS/* $Frameworks/* $Frameworks/modules/* $Plugins/*.so ; do
154 if ! file $file | grep -qs Mach-O ; then
157 otool -L $file | awk '{print $1}' | egrep -v "(^@executable_path|^Ardour[0-9][.0-9]*.app)"
162 echo "Removing old $APPDIR tree ..."
166 echo "Building new app directory structure ..."
168 # only bother to make the longest paths
170 mkdir -p $APPROOT/MacOS
171 mkdir -p $APPROOT/Resources
177 mkdir -p $ExportFormats
179 mkdir -p $Frameworks/modules
181 mkdir -p $MackieControl
185 # maybe set variables
187 if test x$SAE != x ; then
188 appname="Ardour${major_version}-SAE"
189 EXECUTABLE=${appname}
190 env="$env<key>ARDOUR_SAE</key><string>true</string>"
192 # current default for SAE version is German keyboard layout without a keypad
194 env="$env<key>ARDOUR_KEYBOARD_LAYOUT</key><string>de-nokeypad</string>"
195 env="$env<key>ARDOUR_UI_CONF</key><string>ardour3_ui_sae.conf</string>"
196 elif test x$MIXBUS != x ; then
198 EXECUTABLE=${appname}${major_version}
199 env="$env<key>ARDOUR_MIXBUS</key><string>true</string>"
201 # current default for MIXBUS version is US keyboard layout without a keypad
203 env="$env<key>ARDOUR_KEYBOARD_LAYOUT</key><string>us-nokeypad</string>"
204 env="$env<key>ARDOUR_UI_CONF</key><string>ardour3_ui.conf</string>"
206 appname="Ardour${major_version}"
207 EXECUTABLE=${appname}
211 # if we're not going to bundle JACK, make sure we can find
212 # jack in the places where it might be
215 env="$env<key>PATH</key><string>/usr/local/bin:/opt/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>"
216 env="$env<key>DYLIB_FALLBACK_LIBRARY_PATH</key><string>/usr/local/lib:/opt/lib</string>"
218 env="<key>LSEnvironment</key><dict>$env<key>ARDOUR_BUNDLED</key><string>true</string></dict>"
222 sed -e "s?@ENV@?$env?g" \
223 -e "s?@VERSION@?$release_version?g" \
224 -e "s?@INFOSTRING@?$info_string?g" \
225 -e "s?@IDSUFFIX@?$EXECUTABLE?g" \
226 -e "s?@BUNDLENAME@?${APPNAME}${major_version}?g" \
227 -e "s?@EXECUTABLE@?$EXECUTABLE?g" < Info.plist.in > Info.plist
229 sed -e "s?@APPNAME@?$appname?" \
230 -e "s?@ENV@?$env?g" \
231 -e "s?@VERSION@?$release_version?g" \
232 -e "s?@INFOSTRING@?$info_string?g" < InfoPlist.strings.in > Resources/InfoPlist.strings || exit 1
236 cp Info.plist $APPROOT
237 cp -R Resources $APPROOT
241 rm -f Resources/InfoPlist.strings
244 # if we build a bundle without jack, then
245 # make the Ardour executable a helper
246 # script that checks to see if JACK is
250 cp startup_script $APPROOT/MacOS/$EXECUTABLE
251 chmod 775 $APPROOT/MacOS/$EXECUTABLE
252 MAIN_EXECUTABLE=Ardour.bin ## used in startup_script
254 echo "Copying ardour executable ...."
255 cp $BUILD_ROOT/gtk2_ardour/ardour-$release_version $APPROOT/MacOS/$MAIN_EXECUTABLE
256 if test x$SAE != x ; then
257 # cp $BUILD_ROOT/gtk2_ardour/evtest $APPROOT/MacOS/gtkevents
258 cp Ardour3-SAE.icns $Resources/appIcon.icns
259 elif test x$MIXBUS32C != x ; then
260 cp Mixbus32C.icns $Resources/appIcon.icns
261 elif test x$MIXBUS != x ; then
262 cp Mixbus.icns $Resources/appIcon.icns
264 cp Ardour.icns $Resources/appIcon.icns
266 cp typeArdour.icns $Resources/
268 set +e # things below are not error-free (optional files etc) :(
271 if test x$WITH_NLS != x ; then
272 echo "NLS support ..."
273 echo "I hope you remembered to run waf i18n"
276 for pkg in gtk2_ardour libs/ardour libs/gtkmm2ext ; do
277 files=`find ../../$pkg -name "*.mo"`
280 # the package name is appended with a number so that
281 # it can be parallel installed during a regular install
282 # with older (and newer) versions. it is just the major
283 # number of the release (i.e. leading digits)
286 vsuffix=`echo $release_version | sed 's/^\([0-9][0-9]*\).*/\1/'`
288 if [ -z "$files" ]; then
290 echo "!!!! WARNING !!!! - Did not find any .mo files in ../../$pkg"
297 lang=`basename $file | sed 's/\.mo//'`
298 mkdir -p $Locale/$lang/LC_MESSAGES
299 cp $file $Locale/$lang/LC_MESSAGES/`basename $pkg`$vsuffix.mo
300 echo copy $file to $Locale/$lang/LC_MESSAGES/`basename $pkg`$vsuffix.mo
301 if echo $LINGUAS | grep $lang >/dev/null 2>&1 ; then
304 LINGUAS="$LINGUAS $lang"
311 if [ -d $GTKSTACK_ROOT/share/locale/$l ] ; then
312 echo "Copying GTK i18n files for $l..."
313 cp -r $GTKSTACK_ROOT/share/locale/$l $Locale
315 # try with just the language spec
316 just_lang=`echo $l | sed 's/_[A-Z][A-Z]$//'`
317 if [ -d $GTKSTACK_ROOT/share/locale/$just_lang ] ; then
318 echo "Copying GTK i18n files for $l..."
319 cp -r $GTKSTACK_ROOT/share/locale/$just_lang $Locale
324 echo "Skipping NLS support"
328 # Copy stuff that may be dynamically loaded
331 cp -R $GTKSTACK_ROOT/etc/* $Etc
332 cp -R $GTKSTACK_ROOT/lib/charset.alias $Resources
334 # We rely on clearlooks, so include a version from our own build tree
335 # this one is special - we will set GTK_PATH to $Frameworks/gtkengines
337 GTK_ENGINE_DIR=$Frameworks/gtkengines/engines
338 mkdir -p $GTK_ENGINE_DIR
340 echo "Copying GTK engines ..."
341 cp $BUILD_ROOT/libs/clearlooks-newer/libclearlooks.dylib $Frameworks
342 (cd $GTK_ENGINE_DIR && ln -s ../../libclearlooks.dylib . && ln -s ../../libclearlooks.dylib libclearlooks.so)
344 cp $GTKSTACK_ROOT/lib/gtk-2.0/2.10.0/engines/libpixmap.so $Frameworks
345 (cd $GTK_ENGINE_DIR && ln -s ../../libpixmap.so)
348 if test x$WITH_LADSPA != x ; then
349 if test x$SAE != x ; then
351 elif test x$MIXBUS != x ; then
352 plugdir=mixbus_ladspa
356 if [ -d $plugdir -a "x$(ls $plugdir)" != x ] ; then
357 echo "Copying `ls $plugdir | wc -l` plugins ..."
358 cp -r $plugdir/* $Plugins
362 # Control Surface shared libraries
363 cp $BUILD_ROOT/libs/surfaces/*/libardour_*.dylib $Surfaces
364 cp $BUILD_ROOT/libs/surfaces/control_protocol/libardourcp*.dylib $Frameworks
367 cp $BUILD_ROOT/libs/panners/*/lib*.dylib $Panners
370 for backend in jack wavesaudio dummy coreaudio; do
371 cp $BUILD_ROOT/libs/backends/$backend/lib*.dylib $Backends
374 # Export Formats/Presets
375 for f in $BUILD_ROOT/../export/*.preset $BUILD_ROOT/../export/*.format ; do
376 cp "$f" $ExportFormats ;
379 # Session and Route templates
380 #for f in $BUILD_ROOT/../templates/* ; do
381 # if [ -d "$f" ] ; then
382 # cp -r "$f" $Templates ;
387 # got to be careful with names here
388 for x in $BUILD_ROOT/../midi_maps/*.map ; do
393 # got to be careful with names here
394 for x in $BUILD_ROOT/../patchfiles/*.midnam ; do
399 # got to be careful with names here
400 for x in $BUILD_ROOT/../scripts/*.lua ; do
405 # got to be careful with names here
406 for x in $BUILD_ROOT/../mcp/*.device $BUILD_ROOT/../mcp/*.profile ; do
407 cp "$x" $MackieControl
410 # VAMP plugins that we use
411 cp $BUILD_ROOT/libs/vamp-plugins/libardourvampplugins.dylib $Frameworks
413 # Suil modules (new dir 'build-stack')
414 if test -d $GTKSTACK_ROOT/lib/suil-0/ ; then
415 cp $GTKSTACK_ROOT/lib/suil-0/lib* $Frameworks
418 # Suil modules (old dir 'build-ardour-stack')
419 if test -d $ARDOURSTACK_ROOT/lib/suil-0/ ; then
420 cp $ARDOURSTACK_ROOT/lib/suil-0/lib* $Frameworks
423 # VST scanner app and wrapper script, if they exist
424 if test -d $BUILD_ROOT/libs/fst ; then
425 cp $BUILD_ROOT/libs/fst/ardour-vst-scanner* $Frameworks/
429 if test -f $BUILD_ROOT/libs/vfork/ardour-exec-wrapper ; then
430 mkdir -p $Frameworks/vfork
431 cp $BUILD_ROOT/libs/vfork/ardour-exec-wrapper $Frameworks/
434 # TODO check if this is still needed, even when building on 10.5
435 if file $BUILD_ROOT/gtk2_ardour/ardour-$release_version | grep -q ppc; then
436 STDCPP='|libstdc\+\+'
443 for file in $APPROOT/MacOS/* $Frameworks/* $Frameworks/modules/* $Panners/*.dylib $Backends/*.dylib $Surfaces/*.dylib $Plugins/*.so ; do
444 if ! file $file | grep -qs Mach-O ; then
447 # libffi contains "S" (other section symbols) that should not be stripped.
448 if [[ $file == *"libffi"* ]] ; then
452 if test x$STRIP != x ; then
453 strip -u -r -arch all $file &>/dev/null
456 deps=`otool -L $file | awk '{print $1}' | egrep "($GTKSTACK_ROOT|$ARDOURSTACK_ROOT|/opt/|/local/|libs/$STDCPP)" | grep -v 'libjack\.' | grep -v "$(basename $file)"`
458 for dep in $deps ; do
460 if ! test -f $Frameworks/$base; then
461 if echo $dep | grep -sq '^libs' ; then
462 cp $BUILD_ROOT/$dep $Frameworks
470 if test x$missing = xfalse ; then
471 # everything has been found
477 echo "Copying other stuff to $APPDIR ..."
479 cp $BUILD_ROOT/gtk2_ardour/ardour.keys $Resources
480 cp $BUILD_ROOT/gtk2_ardour/ardour.menus $Resources
481 cp $BUILD_ROOT/gtk2_ardour/default_ui_config $Resources
482 cp $BUILD_ROOT/gtk2_ardour/clearlooks.rc $Resources
484 # Copied directly from source tree
486 mkdir ${Resources}/icons
487 mkdir ${Resources}/resources
488 cp ../../system_config $Resources/system_config
489 cp ../../instant.xml $Resources/instant.xml
490 cp ../../gtk2_ardour/icons/*.png ${Resources}/icons/
491 cp -r ../../gtk2_ardour/icons/cursor_* ${Resources}/icons/
492 cp ../../gtk2_ardour/ArdourMono.ttf $Shared
493 cp ../../gtk2_ardour/resources/${PRODUCT_PKG_DIR}-* ${Resources}/resources/
496 # Themes: only install those named for this app
497 lower_case_appname=`echo $APPNAME | tr '[:upper:]' '[:lower:]'`
498 for colors in `echo ../../gtk2_ardour/themes/*-${lower_case_appname}.colors`
500 cp `basename $colors` $Themes
504 # go through and recursively remove any .svn dirs in the bundle
505 for svndir in `find $APPDIR -name .svn -type dir`; do
509 # install bundled LV2s to <app>/Contents/lib/LV2/
510 cp -R $BUILD_ROOT/libs/LV2 $Frameworks/
512 # lv2 core, classifications etc - TODO check if we need the complete LV2 ontology
513 if test -d $ARDOURSTACK_ROOT/lib/lv2/lv2core.lv2 ; then
514 cp -R $ARDOURSTACK_ROOT/lib/lv2/lv2core.lv2 $Frameworks/LV2/
515 elif test -d $GTKSTACK_ROOT/lib/lv2/lv2core.lv2 ; then
516 cp -R $GTKSTACK_ROOT/lib/lv2/lv2core.lv2 $Frameworks/LV2/
520 # now fix up the executables
521 echo "Fixing up executable dependency names ..."
522 executables=$MAIN_EXECUTABLE
523 if test x$SAE != x ; then
524 executables="$executables"
527 for exe in $executables; do
528 EXE=$APPROOT/MacOS/$exe
530 for lib in `otool -L $EXE | egrep "($GTKSTACK_ROOT|$ARDOURSTACK_ROOT|/opt/|/local/|libs/$STDCPP)" | awk '{print $1}' | grep -v 'libjack\.'` ; do
532 changes="$changes -change $lib @executable_path/../lib/$base"
534 if test "x$changes" != "x" ; then
535 install_name_tool $changes $EXE
539 echo "Fixing up library names ..."
540 # now do the same for all the libraries we include
541 for libdir in $Frameworks $Frameworks/modules $Surfaces $Panners $Backends ; do
543 libbase=`basename $libdir`
545 for dylib in $libdir/*.dylib $libdir/*.so ; do
549 if test -L $dylib ; then
553 # change all the dependencies
556 for lib in `otool -L $dylib | egrep "($GTKSTACK_ROOT|$ARDOURSTACK_ROOT|/opt/|/local/|libs/$STDCPP)" | awk '{print $1}' | grep -v 'libjack\.'` ; do
558 if echo $lib | grep -s libbase; then
559 changes="$changes -change $lib @executable_path/../$libbase/$base"
561 changes="$changes -change $lib @executable_path/../lib/$base"
565 if test "x$changes" != x ; then
566 if install_name_tool $changes $dylib ; then
573 # now the change what the library thinks its own name is
575 base=`basename $dylib`
576 install_name_tool -id @executable_path/../$libbase/$base $dylib
581 # and now ... the DMG
584 rm -rf $PRODUCT_PKG_DIR
585 mkdir $PRODUCT_PKG_DIR
590 if [ x$SAE != x ] ; then
594 echo "Creating SAE packaging directory"
595 mv $APPDIR $PRODUCT_PKG_DIR/Ardour3-SAE.app
596 cp HowToInstallArdourSAE.pdf "$PRODUCT_PKG_DIR/How To Install Ardour SAE.pdf"
597 cp SAE-de-keypad.pdf "$PRODUCT_PKG_DIR/Ardour SAE Shortcuts (keypad).pdf"
598 cp SAE-de-nokeypad.pdf "$PRODUCT_PKG_DIR/Ardour SAE Shortcuts.pdf"
600 elif [ x$MIXBUS != x ] ; then
604 echo "Creating Mixbus packaging directory"
605 mv $APPDIR $PRODUCT_PKG_DIR/
606 DMGBACKGROUND=dmgbgMB
609 echo "Creating $APPNAME packaging directory"
610 mv $APPDIR $PRODUCT_PKG_DIR/
614 if file ${PRODUCT_PKG_DIR}/$APPROOT/MacOS/$MAIN_EXECUTABLE | grep -q x86_64; then
617 elif file ${PRODUCT_PKG_DIR}/$APPROOT/MacOS/$MAIN_EXECUTABLE | grep -q ppc; then
625 if test x$WITH_HARRISON_LV2 != x ; then
626 curl -s -S --fail -# \
627 -z "${CACHEDIR}/harrison_lv2s.${OSX_BENSID}.zip" \
628 -o "${CACHEDIR}/harrison_lv2s.${OSX_BENSID}.zip" \
629 "http://www.harrisonconsoles.com/mixbus/mb3/beta/harrison-dsp/harrison_lv2s.${OSX_BENSID}.zip"
631 mkdir -p "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2"
632 bsdtar -C "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2/" -xf \
633 "${CACHEDIR}/harrison_lv2s.${OSX_BENSID}.zip"
636 if test x$WITH_HARVID != x ; then
637 echo "installing video tools.."
638 HARVID_VERSION=$(curl -s -S http://ardour.org/files/video-tools/harvid_version.txt)
639 XJADEO_VERSION=$(curl -s -S http://ardour.org/files/video-tools/xjadeo_version.txt)
641 echo "copying harvid and xjadeo ..."
644 rsync://ardour.org/video-tools/harvid-osx-${HARVID_VERSION}.tgz \
645 "$CACHEDIR/harvid-${MULTIARCH}-${HARVID_VERSION}.tgz"
648 rsync://ardour.org/video-tools/jadeo-${XJADEO_VERSION:1}.dmg \
649 "$CACHEDIR/jadeo-${XJADEO_VERSION:1}.dmg"
652 -C $PRODUCT_PKG_DIR/$APPROOT \
653 -f "$CACHEDIR/harvid-${MULTIARCH}-${HARVID_VERSION}.tgz" || exit 1
655 JADEO=$(hdiutil attach "$CACHEDIR/jadeo-${XJADEO_VERSION:1}.dmg" | grep Apple_HFS | grep dev/ | cut -f 3)
656 cp -r "${JADEO}/Jadeo.app" "$PRODUCT_PKG_DIR/"
657 hdiutil detach "${JADEO}"
659 XJCONTENT=${PRODUCT_PKG_DIR}/Jadeo.app/Contents
660 HVLIBS=${PRODUCT_PKG_DIR}/$APPROOT/lib/harvid
662 for file in ${XJCONTENT}/MacOS/Jadeo-bin ${XJCONTENT}/Frameworks/*.dylib ${HVLIBS}/*.dylib ${PRODUCT_PKG_DIR}/$APPROOT/MacOS/*harvid* ; do
663 lipo -extract_family ${OSX_ARCH} ${file} -output ${file}.thin && \
664 mv ${file}.thin ${file}
668 YPOS=$[ $DMGWINBOTTOM - 300 ]
669 XJADEOPOS="set position of item \"Jadeo.app\" of container window to {310, ${YPOS}}"
671 DMGBACKGROUND=${DMGBACKGROUND}xj
674 ################################################################################
675 ### Mixbus plugins, etc
676 if test x$WITH_X42_LV2 != x ; then
677 echo "bundling x42 plugins"
678 mkdir -p "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2"
680 METERS_VERSION=$(curl -s -S http://x42-plugins.com/x42/osx/x42-meters.latest.txt)
681 rsync -a -q --partial \
682 rsync://x42-plugins.com/x42/osx/x42-meters-lv2-osx-${METERS_VERSION}.zip \
683 "$CACHEDIR/x42-meters-lv2-osx-${METERS_VERSION}.zip"
684 bsdtar -C "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2/" -xf \
685 "$CACHEDIR/x42-meters-lv2-osx-${METERS_VERSION}.zip"
687 EQ_VERSION=$(curl -s -S http://x42-plugins.com/x42/osx/x42-eq.latest.txt)
688 rsync -a -q --partial \
689 rsync://x42-plugins.com/x42/osx/x42-eq-lv2-osx-${EQ_VERSION}.zip \
690 "$CACHEDIR/x42-eq-lv2-osx-${EQ_VERSION}.zip"
691 bsdtar -C "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2/" -xf \
692 "$CACHEDIR/x42-eq-lv2-osx-${EQ_VERSION}.zip"
694 SETBFREE_VERSION=$(curl -s -S http://x42-plugins.com/x42/osx/setBfree.latest.txt)
695 rsync -a -q --partial \
696 rsync://x42-plugins.com/x42/osx/setBfree-lv2-osx-${SETBFREE_VERSION}.zip \
697 "$CACHEDIR/setBfree-lv2-osx-${SETBFREE_VERSION}.zip"
698 bsdtar -C "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2/" -xf \
699 "$CACHEDIR/setBfree-lv2-osx-${SETBFREE_VERSION}.zip"
701 MIDIFILTER_VERSION=$(curl -s -S http://x42-plugins.com/x42/osx/x42-midifilter.latest.txt)
702 rsync -a -q --partial \
703 rsync://x42-plugins.com/x42/osx/x42-midifilter-lv2-osx-${MIDIFILTER_VERSION}.zip \
704 "$CACHEDIR/x42-midifilter-lv2-osx-${MIDIFILTER_VERSION}.zip"
705 bsdtar -C "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2/" -xf \
706 "$CACHEDIR/x42-midifilter-lv2-osx-${MIDIFILTER_VERSION}.zip"
708 for file in ${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2/*/*.dylib ; do
709 lipo -extract_family ${OSX_ARCH} ${file} -output ${file}.thin
710 mv ${file}.thin ${file}
714 if test -n "$MIXBUS"; then
715 echo "deploying harrison channelstrip for $OSX_BENSID"
717 mkdir -p "${PRODUCT_PKG_DIR}/${APPROOT}/lib/ladspa/strip"
719 curl -s -S --fail -# \
720 -z "${CACHEDIR}/${HARRISONCHANNELSTRIP}.${OSX_BENSID}.so" \
721 -o "${CACHEDIR}/${HARRISONCHANNELSTRIP}.${OSX_BENSID}.so" \
722 "http://www.harrisonconsoles.com/mixbus/mb3/beta/harrison-dsp/${HARRISONCHANNELSTRIP}.${OSX_BENSID}.so"
724 cp "${CACHEDIR}/${HARRISONCHANNELSTRIP}.${OSX_BENSID}.so" \
725 "${PRODUCT_PKG_DIR}/${APPROOT}/lib/ladspa/strip/${HARRISONCHANNELSTRIP}.so"
727 echo "deploying harrison vamp plugins for $OSX_BENSID"
729 curl -s -S --fail -# \
730 -z "${CACHEDIR}/harrison_vamp.${OSX_BENSID}.dylib" \
731 -o "${CACHEDIR}/harrison_vamp.${OSX_BENSID}.dylib" \
732 "http://www.harrisonconsoles.com/mixbus/mb3/beta/harrison-dsp/harrison_vamp.${OSX_BENSID}.dylib"
734 cp "${CACHEDIR}/harrison_vamp.${OSX_BENSID}.dylib" \
735 "${PRODUCT_PKG_DIR}/${APPROOT}/lib/harrison_vamp.dylib"
737 ################################################################################
739 ( cd $PRODUCT_PKG_DIR ; find . ) > file_list.txt
741 echo "Building DMG ..."
743 # UC_DMG=$APPNAME-${release_version}-UC.dmg
744 # FINAL_DMG=$APPNAME-${release_version}.dmg
746 if [ x$DEBUG = xT ]; then
747 UC_DMG=$APPNAME-$release_version-dbg.dmg
749 UC_DMG=$APPNAME-$release_version.dmg
751 VOLNAME=$APPNAME-$release_version
753 MNTPATH=`mktemp -d -t ardourimg`
754 TMPDMG=`mktemp -t ardour`
755 ICNSTMP=`mktemp -t ardouricon`
757 DMGMEGABYTES=$[ `du -sk "$PRODUCT_PKG_DIR" | cut -f 1` * 1024 / 1048576 + $EXTRA_SPACE_MB ]
759 echo "DMG MB = " $DMGMEGABYTES
761 rm -f $UC_DMG "$TMPDMG" "${TMPDMG}.dmg" "$ICNSTMP"
765 TMPDMG="${TMPDMG}.dmg"
767 trap "rm -rf $MNTPATH $TMPDMG ${TMPDMG}.dmg $ICNSTMP" EXIT
769 hdiutil create -megabytes $DMGMEGABYTES -fs HFS+ -volname "${VOLNAME}" "$TMPDMG"
770 DiskDevice=$(hdid -nomount "$TMPDMG" | grep Apple_HFS | cut -f 1 -d ' ')
771 mount -t hfs -o nobrowse "${DiskDevice}" "${MNTPATH}"
773 cp -r ${PRODUCT_PKG_DIR}/* "${MNTPATH}" || exit
774 mkdir "${MNTPATH}/.background"
775 cp -vi ${DMGBACKGROUND}.png "${MNTPATH}/.background/dmgbg.png"
777 echo "setting DMG background ..."
779 if test $(sw_vers -productVersion | cut -d '.' -f 2) -lt 9; then
783 # OSX 10.9.X and later
784 DISKNAME=`basename "${MNTPATH}"`
788 tell application "Finder"
790 tell disk "${DISKNAME}"
793 set current view of container window to icon view
794 set toolbar visible of container window to false
795 set statusbar visible of container window to false
796 set the bounds of container window to {400, 200, 800, ${DMGWINBOTTOM}}
797 set theViewOptions to the icon view options of container window
798 set arrangement of theViewOptions to not arranged
799 set icon size of theViewOptions to 64
800 set background picture of theViewOptions to file ".background:dmgbg.png"
801 make new alias file at container window to POSIX file "/Applications" with properties {name:"Applications"}
802 set position of item "${APPDIR}" of container window to {90, 100}
803 set position of item "Applications" of container window to {310, 100}
809 update without registering applications
816 chmod -Rf go-w "${MNTPATH}"
820 echo "compressing Image ..."
822 # Umount the image ('eject' above may already have done that)
823 umount "${DiskDevice}" || true
824 hdiutil eject "${DiskDevice}" || true
825 # Create a read-only version, use zlib compression
826 hdiutil convert -format UDZO "${TMPDMG}" -imagekey zlib-level=9 -o "${UC_DMG}"
828 if test $(sw_vers -productVersion | cut -d '.' -f 2) -gt 5; then
829 echo "setting file icon ..."
831 cp ${PRODUCT_PKG_DIR}/$Resources/appIcon.icns ${ICNSTMP}.icns
832 sips -i ${ICNSTMP}.icns
833 DeRez -only icns ${ICNSTMP}.icns > ${ICNSTMP}.rsrc
834 Rez -append ${ICNSTMP}.rsrc -o "$UC_DMG"
835 SetFile -a C "$UC_DMG"
837 rm ${ICNSTMP}.icns ${ICNSTMP}.rsrc
840 rm -rf ${PRODUCT_PKG_DIR}
843 echo "packaging suceeded."