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
27 : ${HARRISONCHANNELSTRIP=harrison_channelstrip}
28 : ${HARRISONLV2=harrison_lv2s-n}
29 : ${HARRISONDSPURL=http://www.harrisonconsoles.com/plugins/releases/public}
31 . ../define_versions.sh
33 while [ $# -gt 0 ] ; do
38 # top level build targets
44 PRODUCT_PKG_DIR=ArdourSAE ;
46 BUNDLENAME=Ardour${major_version} ;
47 lower_case_appname=ardour;
55 PRODUCT_PKG_DIR=Mixbus;
57 BUNDLENAME=Mixbus${major_version} ;
58 lower_case_appname=mixbus;
60 --mixbus32c) MIXBUS=1;
67 PRODUCT_PKG_DIR=Mixbus32C;
68 lower_case_appname=mixbus32c;
70 BUNDLENAME=Mixbus32C-${major_version} ;
76 PRODUCT_PKG_DIR=Ardour;
78 BUNDLENAME=Ardour${major_version} ;
79 lower_case_appname=ardour;
83 PRODUCT_PKG_DIR=Ardour ;
85 --test) SAE= ; STRIP= ; shift ;;
88 # specific build flags
91 --noharvid) WITH_HARVID= ; shift ;;
92 --nostrip) STRIP= ; shift ;;
93 --sysdeps) PRINT_SYSDEPS=1; shift ;;
94 --nls) WITH_NLS=1 ; shift ;;
95 --chanstrip) HARRISONCHANNELSTRIP=$2 ; shift; shift ;;
99 if test -z "$PRODUCT_PKG_DIR" -o -z "$APPNAME"; then
100 echo "application or product-name was not specified"
104 echo "Version is $release_version"
105 if [ "x$commit" != "x" ] ; then
106 info_string="$release_version ($commit) built on `hostname` by `whoami` on `date`"
108 info_string="$release_version built on `hostname` by `whoami` on `date`"
110 echo "Info string is $info_string"
112 if [ x$DEBUG = xT ]; then
114 echo "Debug build, strip disabled"
116 if test x$STRIP != x ; then
117 echo "No debug build, strip enabled"
119 echo "No debug build, but strip disabled."
123 # setup directory structure
125 APPDIR=${BUNDLENAME}.app
126 APPROOT=$APPDIR/Contents
127 Frameworks=$APPROOT/lib
128 Resources=$APPROOT/Resources
130 # Since this is OS X, don't try to distinguish between etc and shared
131 # (machine dependent and independent data) - just put everything
136 Locale=$Resources/locale
138 Surfaces=$Frameworks/surfaces
139 Panners=$Frameworks/panners
140 Backends=$Frameworks/backends
141 MidiMaps=$Shared/midi_maps
142 PluginMetadata=$Shared/plugin_metadata
143 ExportFormats=$Shared/export
144 Templates=$Shared/templates
145 PatchFiles=$Shared/patchfiles
146 LuaScripts=$Shared/scripts
147 MackieControl=$Shared/mcp
149 Themes=$Shared/themes
151 if [ x$PRINT_SYSDEPS != x ] ; then
153 # print system dependencies
156 for file in $APPROOT/MacOS/* $Frameworks/* $Frameworks/modules/* ; do
157 if ! file $file | grep -qs Mach-O ; then
160 otool -L $file | awk '{print $1}' | egrep -v "(^@executable_path|^Ardour[0-9][.0-9]*.app)"
165 echo "Removing old $APPDIR tree ..."
169 echo "Building new app directory structure ..."
171 # only bother to make the longest paths
173 mkdir -p $APPROOT/MacOS
174 mkdir -p $APPROOT/Resources
179 mkdir -p $ExportFormats
180 mkdir -p $Frameworks/modules
182 mkdir -p $MackieControl
190 EXECUTABLE=${BUNDLENAME}
193 # if we're not going to bundle JACK, make sure we can find
194 # jack in the places where it might be
198 env="$env<key>PATH</key><string>/usr/local/bin:/opt/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>"
199 env="$env<key>DYLIB_FALLBACK_LIBRARY_PATH</key><string>/usr/local/lib:/opt/lib</string>"
201 env="<key>LSEnvironment</key><dict>$env<key>ARDOUR_BUNDLED</key><string>true</string></dict>"
205 sed -e "s?@ENV@?$env?g" \
206 -e "s?@VERSION@?$release_version?g" \
207 -e "s?@INFOSTRING@?$info_string?g" \
208 -e "s?@IDSUFFIX@?$EXECUTABLE?g" \
209 -e "s?@BUNDLENAME@?$BUNDLENAME?g" \
210 -e "s?@EXECUTABLE@?$EXECUTABLE?g" < Info.plist.in > Info.plist
212 sed -e "s?@APPNAME@?$appname?" \
213 -e "s?@ENV@?$env?g" \
214 -e "s?@VERSION@?$release_version?g" \
215 -e "s?@INFOSTRING@?$info_string?g" < InfoPlist.strings.in > Resources/InfoPlist.strings || exit 1
219 cp Info.plist $APPROOT
220 cp -R Resources $APPROOT
224 rm -f Resources/InfoPlist.strings
227 # if we build a bundle without jack, then
228 # make the Ardour executable a helper
229 # script that checks to see if JACK is
233 cp startup_script $APPROOT/MacOS/$EXECUTABLE
234 chmod 775 $APPROOT/MacOS/$EXECUTABLE
235 MAIN_EXECUTABLE=Ardour.bin ## used in startup_script
237 echo "Copying ardour executable ...."
238 cp $BUILD_ROOT/gtk2_ardour/ardour-$release_version $APPROOT/MacOS/$MAIN_EXECUTABLE
239 if test x$SAE != x ; then
240 # cp $BUILD_ROOT/gtk2_ardour/evtest $APPROOT/MacOS/gtkevents
241 cp Ardour3-SAE.icns $Resources/appIcon.icns
242 elif test x$MIXBUS32C != x ; then
243 cp Mixbus32C.icns $Resources/appIcon.icns
244 elif test x$MIXBUS != x ; then
245 cp Mixbus.icns $Resources/appIcon.icns
247 cp Ardour.icns $Resources/appIcon.icns
249 cp typeArdour.icns $Resources/
251 set +e # things below are not error-free (optional files etc) :(
254 if test x$WITH_NLS != x ; then
255 echo "NLS support ..."
256 echo "I hope you remembered to run waf i18n"
259 for pkg in gtk2_ardour libs/ardour libs/gtkmm2ext ; do
260 files=`find ../../$pkg -name "*.mo"`
263 # the package name is appended with a number so that
264 # it can be parallel installed during a regular install
265 # with older (and newer) versions. it is just the major
266 # number of the release (i.e. leading digits)
269 vsuffix=`echo $release_version | sed 's/^\([0-9][0-9]*\).*/\1/'`
271 if [ -z "$files" ]; then
273 echo "!!!! WARNING !!!! - Did not find any .mo files in ../../$pkg"
280 lang=`basename $file | sed 's/\.mo//'`
281 mkdir -p $Locale/$lang/LC_MESSAGES
282 cp $file $Locale/$lang/LC_MESSAGES/`basename $pkg`$vsuffix.mo
283 echo copy $file to $Locale/$lang/LC_MESSAGES/`basename $pkg`$vsuffix.mo
284 if echo $LINGUAS | grep $lang >/dev/null 2>&1 ; then
287 LINGUAS="$LINGUAS $lang"
294 if [ -d $GTKSTACK_ROOT/share/locale/$l ] ; then
295 echo "Copying GTK i18n files for $l..."
296 cp -r $GTKSTACK_ROOT/share/locale/$l $Locale
298 # try with just the language spec
299 just_lang=`echo $l | sed 's/_[A-Z][A-Z]$//'`
300 if [ -d $GTKSTACK_ROOT/share/locale/$just_lang ] ; then
301 echo "Copying GTK i18n files for $l..."
302 cp -r $GTKSTACK_ROOT/share/locale/$just_lang $Locale
307 echo "Skipping NLS support"
311 # Copy stuff that may be dynamically loaded
314 cp -R $GTKSTACK_ROOT/etc/* $Etc
315 cp -R $GTKSTACK_ROOT/lib/charset.alias $Resources
317 # We rely on clearlooks, so include a version from our own build tree
318 # this one is special - we will set GTK_PATH to $Frameworks/gtkengines
320 GTK_ENGINE_DIR=$Frameworks/gtkengines/engines
321 mkdir -p $GTK_ENGINE_DIR
323 echo "Copying GTK engines ..."
324 cp $BUILD_ROOT/libs/clearlooks-newer/libclearlooks.dylib $Frameworks
325 (cd $GTK_ENGINE_DIR && ln -s ../../libclearlooks.dylib . && ln -s ../../libclearlooks.dylib libclearlooks.so)
327 cp $GTKSTACK_ROOT/lib/gtk-2.0/2.10.0/engines/libpixmap.so $Frameworks
328 (cd $GTK_ENGINE_DIR && ln -s ../../libpixmap.so)
331 # Control Surface shared libraries
332 cp $BUILD_ROOT/libs/surfaces/*/libardour_*.dylib $Surfaces
333 cp $BUILD_ROOT/libs/surfaces/control_protocol/libardourcp*.dylib $Frameworks
336 cp $BUILD_ROOT/libs/panners/*/lib*.dylib $Panners
339 for backend in jack wavesaudio dummy coreaudio; do
340 cp $BUILD_ROOT/libs/backends/$backend/lib*.dylib $Backends
343 # Export Formats/Presets
344 for f in $BUILD_ROOT/../export/*.preset $BUILD_ROOT/../export/*.format ; do
345 cp "$f" $ExportFormats ;
349 cp -av $BUILD_ROOT/../templates $Templates
352 cp -av $BUILD_ROOT/../plugin_metadata $PluginMetadata
355 # got to be careful with names here
356 for x in $BUILD_ROOT/../midi_maps/*.map ; do
361 # got to be careful with names here
362 for x in $BUILD_ROOT/../patchfiles/*.midnam ; do
367 # got to be careful with names here
368 for x in $BUILD_ROOT/../scripts/*.lua ; do
370 if test "${BN:0:1}" = "_"; then
377 # got to be careful with names here
378 for x in $BUILD_ROOT/../mcp/*.device $BUILD_ROOT/../mcp/*.profile ; do
379 cp "$x" $MackieControl
383 # got to be careful with names here
384 for x in $BUILD_ROOT/../osc/*.preset ; do
388 # VAMP plugins that we use
389 cp $BUILD_ROOT/libs/vamp-plugins/libardourvampplugins.dylib $Frameworks
391 # Suil modules (new dir 'build-stack')
392 if test -d $GTKSTACK_ROOT/lib/suil-0/ ; then
393 cp $GTKSTACK_ROOT/lib/suil-0/lib* $Frameworks
396 # Suil modules (old dir 'build-ardour-stack')
397 if test -d $ARDOURSTACK_ROOT/lib/suil-0/ ; then
398 cp $ARDOURSTACK_ROOT/lib/suil-0/lib* $Frameworks
401 # VST scanner app and wrapper script, if they exist
402 if test -d $BUILD_ROOT/libs/fst ; then
403 cp $BUILD_ROOT/libs/fst/ardour-vst-scanner* $Frameworks/
407 if test -f $BUILD_ROOT/libs/vfork/ardour-exec-wrapper ; then
408 mkdir -p $Frameworks/vfork
409 cp $BUILD_ROOT/libs/vfork/ardour-exec-wrapper $Frameworks/
413 HAVE_SESSION_UTILS=false
414 for file in $BUILD_ROOT/session_utils/${lower_case_appname}${major_version}-*; do
416 cp -v $file $Frameworks/
417 if test x$STRIP = xall ; then
418 strip -s $Frameworks/${BN}
420 ln -s ../lib/ardour-util.sh ${APPROOT}/MacOS/${BN}
421 HAVE_SESSION_UTILS=true
424 # dynamically loaded NSS/SSL libs
425 nsslibs="libsoftokn3.dylib libnsspem.dylib libnssckbi.dylib libfreebl3.dylib libnssdbm3.dylib libplds4.dylib"
426 for nsslib in $nsslibs; do
427 cp $GTKSTACK_ROOT/lib/$nsslib $Frameworks/ || true
430 # TODO check if this is still needed, even when building on 10.5
431 if file $BUILD_ROOT/gtk2_ardour/ardour-$release_version | grep -q ppc; then
432 STDCPP='|libstdc\+\+'
439 for file in $APPROOT/MacOS/* $Frameworks/* $Frameworks/modules/* $Panners/*.dylib $Backends/*.dylib $Surfaces/*.dylib ; do
440 if ! file $file | grep -qs Mach-O ; then
443 # libffi contains "S" (other section symbols) that should not be stripped.
444 if [[ $file == *"libffi"* ]] ; then
448 if test x$STRIP != x ; then
449 strip -u -r -arch all $file &>/dev/null
452 deps=`otool -L $file | awk '{print $1}' | egrep "($GTKSTACK_ROOT|$ARDOURSTACK_ROOT|/opt/|/local/|libs/$STDCPP)" | grep -v 'libjack\.' | grep -v "$(basename $file)"`
454 for dep in $deps ; do
456 if ! test -f $Frameworks/$base; then
457 if echo $dep | grep -sq '^libs' ; then
458 cp $BUILD_ROOT/$dep $Frameworks
466 if test x$missing = xfalse ; then
467 # everything has been found
473 echo "Copying other stuff to $APPDIR ..."
475 cp $BUILD_ROOT/gtk2_ardour/ardour.keys $Resources
476 cp $BUILD_ROOT/gtk2_ardour/ardour.menus $Resources
477 cp $BUILD_ROOT/gtk2_ardour/default_ui_config $Resources
478 cp $BUILD_ROOT/gtk2_ardour/clearlooks.rc $Resources
480 # Copied directly from source tree
482 mkdir ${Resources}/icons
483 mkdir ${Resources}/resources
484 cp ../../system_config $Resources/system_config
485 cp ../../gtk2_ardour/icons/*.png ${Resources}/icons/
486 cp -r ../../gtk2_ardour/icons/cursor_* ${Resources}/icons/
487 cp ../../gtk2_ardour/ArdourMono.ttf $Shared
488 cp ../../gtk2_ardour/resources/${PRODUCT_PKG_DIR}-* ${Resources}/resources/
491 # Themes: only install those named for this app
492 cp ../../gtk2_ardour/themes/*-${lower_case_appname}.colors $Themes
494 # go through and recursively remove any .svn dirs in the bundle
495 for svndir in `find $APPDIR -name .svn -type dir`; do
499 # session utils start script
500 if test "$HAVE_SESSION_UTILS" = true ; then
501 cat >> $Frameworks/ardour-util.sh << EOF
504 BIN_DIR=\$(dirname "\$0")
505 BUNDLE_DIR=\$(dirname "\$BIN_DIR")
507 export ARDOUR_DATA_PATH="\$BUNDLE_DIR/share"
508 export ARDOUR_CONFIG_PATH="\$BUNDLE_DIR/etc"
509 export ARDOUR_DLL_PATH="\$BUNDLE_DIR/lib"
510 export VAMP_PATH="\$BUNDLE_DIR/lib"\${VAMP_PATH:+:\$VAMP_PATH}
512 SELF=\$(basename "\$0")
513 exec "\$BUNDLE_DIR/lib/\$SELF" "\$@"
515 chmod +x $Frameworks/ardour-util.sh
519 # install bundled LV2s to <app>/Contents/lib/LV2/
520 cp -R $BUILD_ROOT/libs/LV2 $Frameworks/
522 # lv2 core, classifications etc - TODO check if we need the complete LV2 ontology
523 if test -d $ARDOURSTACK_ROOT/lib/lv2/lv2core.lv2 ; then
524 cp -R $ARDOURSTACK_ROOT/lib/lv2/lv2core.lv2 $Frameworks/LV2/
525 elif test -d $GTKSTACK_ROOT/lib/lv2/lv2core.lv2 ; then
526 cp -R $GTKSTACK_ROOT/lib/lv2/lv2core.lv2 $Frameworks/LV2/
530 # now fix up the executables
531 echo "Fixing up executable dependency names ..."
532 executables=$MAIN_EXECUTABLE
533 if test x$SAE != x ; then
534 executables="$executables"
536 if test "$HAVE_SESSION_UTILS" = true ; then
537 for file in $Frameworks/${lower_case_appname}${major_version}-*; do
539 executables="$executables ../lib/${BN}"
543 if test -f "$Frameworks/ardour-vst-scanner"; then
544 executables="$executables ../lib/ardour-vst-scanner"
547 for exe in $executables; do
548 echo "Processing Executable: $exe"
549 EXE=$APPROOT/MacOS/$exe
551 for lib in `otool -L $EXE | egrep "($GTKSTACK_ROOT|$ARDOURSTACK_ROOT|/opt/|/local/|libs/$STDCPP)" | awk '{print $1}' | grep -v 'libjack\.'` ; do
553 changes="$changes -change $lib @executable_path/../lib/$base"
555 if test "x$changes" != "x" ; then
556 install_name_tool $changes $EXE
560 echo "Fixing up library names ..."
561 # now do the same for all the libraries we include
562 for libdir in $Frameworks $Frameworks/modules $Surfaces $Panners $Backends $Frameworks/LV2/* ; do
564 libbase=`basename $libdir`
566 for dylib in $libdir/*.dylib $libdir/*.so ; do
570 if test -L $dylib ; then
574 # change all the dependencies
577 for lib in `otool -L $dylib | egrep "($GTKSTACK_ROOT|$ARDOURSTACK_ROOT|/opt/|/local/|libs/$STDCPP)" | awk '{print $1}' | grep -v 'libjack\.'` ; do
579 if echo $lib | grep -s libbase; then
580 changes="$changes -change $lib @executable_path/../$libbase/$base"
582 changes="$changes -change $lib @executable_path/../lib/$base"
586 if test "x$changes" != x ; then
587 if install_name_tool $changes $dylib ; then
594 # now the change what the library thinks its own name is
596 base=`basename $dylib`
597 install_name_tool -id @executable_path/../$libbase/$base $dylib
602 # and now ... the DMG
605 rm -rf $PRODUCT_PKG_DIR
606 mkdir $PRODUCT_PKG_DIR
611 if [ x$SAE != x ] ; then
615 echo "Creating SAE packaging directory"
616 mv $APPDIR $PRODUCT_PKG_DIR/Ardour3-SAE.app
617 cp HowToInstallArdourSAE.pdf "$PRODUCT_PKG_DIR/How To Install Ardour SAE.pdf"
618 cp SAE-de-keypad.pdf "$PRODUCT_PKG_DIR/Ardour SAE Shortcuts (keypad).pdf"
619 cp SAE-de-nokeypad.pdf "$PRODUCT_PKG_DIR/Ardour SAE Shortcuts.pdf"
621 elif [ x$MIXBUS != x ] ; then
625 echo "Creating Mixbus packaging directory"
626 mv $APPDIR $PRODUCT_PKG_DIR/
627 DMGBACKGROUND=dmgbgMB
630 echo "Creating $APPNAME packaging directory"
631 mv $APPDIR $PRODUCT_PKG_DIR/
635 if file ${PRODUCT_PKG_DIR}/$APPROOT/MacOS/$MAIN_EXECUTABLE | grep -q x86_64; then
638 elif file ${PRODUCT_PKG_DIR}/$APPROOT/MacOS/$MAIN_EXECUTABLE | grep -q ppc; then
646 if test x$WITH_HARRISON_LV2 != x ; then
647 curl -s -S --fail -# \
648 -z "${CACHEDIR}/${HARRISONLV2}.${OSX_BENSID}.zip" \
649 -o "${CACHEDIR}/${HARRISONLV2}.${OSX_BENSID}.zip" \
650 "${HARRISONDSPURL}/${HARRISONLV2}.${OSX_BENSID}.zip"
652 mkdir -p "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2"
653 bsdtar -C "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2/" -xf \
654 "${CACHEDIR}/${HARRISONLV2}.${OSX_BENSID}.zip"
657 if test x$WITH_HARVID != x ; then
658 echo "installing video tools.."
659 HARVID_VERSION=$(curl -s -S http://ardour.org/files/video-tools/harvid_version.txt)
660 XJADEO_VERSION=$(curl -s -S http://ardour.org/files/video-tools/xjadeo_version.txt)
662 echo "copying harvid and xjadeo ..."
665 rsync://ardour.org/video-tools/harvid-osx-${HARVID_VERSION}.tgz \
666 "$CACHEDIR/harvid-${MULTIARCH}-${HARVID_VERSION}.tgz"
669 rsync://ardour.org/video-tools/jadeo-${XJADEO_VERSION:1}.dmg \
670 "$CACHEDIR/jadeo-${XJADEO_VERSION:1}.dmg"
673 -C $PRODUCT_PKG_DIR/$APPROOT \
674 -f "$CACHEDIR/harvid-${MULTIARCH}-${HARVID_VERSION}.tgz" || exit 1
676 JADEO=$(hdiutil attach "$CACHEDIR/jadeo-${XJADEO_VERSION:1}.dmg" | grep Apple_HFS | grep dev/ | cut -f 3)
677 cp -r "${JADEO}/Jadeo.app" "$PRODUCT_PKG_DIR/"
678 hdiutil detach "${JADEO}"
680 XJCONTENT=${PRODUCT_PKG_DIR}/Jadeo.app/Contents
681 HVLIBS=${PRODUCT_PKG_DIR}/$APPROOT/lib/harvid
683 for file in ${XJCONTENT}/MacOS/Jadeo-bin ${XJCONTENT}/Frameworks/*.dylib ${HVLIBS}/*.dylib ${PRODUCT_PKG_DIR}/$APPROOT/MacOS/*harvid* ; do
684 lipo -extract_family ${OSX_ARCH} ${file} -output ${file}.thin && \
685 mv ${file}.thin ${file}
689 YPOS=$[ $DMGWINBOTTOM - 300 ]
690 XJADEOPOS="set position of item \"Jadeo.app\" of container window to {310, ${YPOS}}"
692 DMGBACKGROUND=${DMGBACKGROUND}xj
695 ################################################################################
696 ### Mixbus plugins, etc
698 echo "Bundling General MIDI Synth LV2"
699 mkdir -p "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2"
701 for proj in x42-gmsynth; do
702 X42_VERSION=$(curl -s -S http://x42-plugins.com/x42/osx/${proj}.latest.txt)
703 rsync -a -q --partial \
704 rsync://x42-plugins.com/x42/osx/${proj}-lv2-osx-${X42_VERSION}.zip \
705 "$CACHEDIR/${proj}-lv2-osx-${X42_VERSION}.zip"
706 bsdtar -C "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2/" -xf \
707 "$CACHEDIR/${proj}-lv2-osx-${X42_VERSION}.zip"
710 for file in ${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2/*/*.dylib ; do
711 lipo -extract_family ${OSX_ARCH} ${file} -output ${file}.thin
712 mv ${file}.thin ${file}
717 if test x$WITH_X42_LV2 != x ; then
718 echo "bundling x42 plugins"
719 mkdir -p "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2"
721 for proj in x42-meters x42-midifilter x42-midimap x42-stereoroute x42-eq setBfree x42-avldrums x42-whirl x42-limiter; do
722 X42_VERSION=$(curl -s -S http://x42-plugins.com/x42/osx/${proj}.latest.txt)
723 rsync -a -q --partial \
724 rsync://x42-plugins.com/x42/osx/${proj}-lv2-osx-${X42_VERSION}.zip \
725 "$CACHEDIR/${proj}-lv2-osx-${X42_VERSION}.zip"
726 bsdtar -C "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2/" -xf \
727 "$CACHEDIR/${proj}-lv2-osx-${X42_VERSION}.zip"
730 for file in ${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2/*/*.dylib ; do
731 lipo -extract_family ${OSX_ARCH} ${file} -output ${file}.thin
732 mv ${file}.thin ${file}
736 if test -n "$MIXBUS"; then
737 echo "deploying harrison channelstrip for $OSX_BENSID"
739 mkdir -p "${PRODUCT_PKG_DIR}/${APPROOT}/lib/ladspa/strip"
741 curl -s -S --fail -# \
742 -z "${CACHEDIR}/${HARRISONCHANNELSTRIP}.${OSX_BENSID}.so" \
743 -o "${CACHEDIR}/${HARRISONCHANNELSTRIP}.${OSX_BENSID}.so" \
744 "${HARRISONDSPURL}/${HARRISONCHANNELSTRIP}.${OSX_BENSID}.so"
746 cp "${CACHEDIR}/${HARRISONCHANNELSTRIP}.${OSX_BENSID}.so" \
747 "${PRODUCT_PKG_DIR}/${APPROOT}/lib/ladspa/strip/${HARRISONCHANNELSTRIP}.so"
749 echo "deploying harrison vamp plugins for $OSX_BENSID"
751 curl -s -S --fail -# \
752 -z "${CACHEDIR}/harrison_vamp.${OSX_BENSID}.dylib" \
753 -o "${CACHEDIR}/harrison_vamp.${OSX_BENSID}.dylib" \
754 "${HARRISONDSPURL}/harrison_vamp.${OSX_BENSID}.dylib"
756 cp "${CACHEDIR}/harrison_vamp.${OSX_BENSID}.dylib" \
757 "${PRODUCT_PKG_DIR}/${APPROOT}/lib/harrison_vamp.dylib"
760 ################################################################################
762 if test x$DEMO_SESSION_URL != x ; then
763 mkdir -p $Shared/sessions
764 DEMO_SESSIONS=$(curl -s -S --fail $DEMO_SESSION_URL/index.txt)
765 for demo in $DEMO_SESSIONS; do
766 curl -s -S --fail -# -o $Shared/sessions/$demo $DEMO_SESSION_URL/$demo
770 ################################################################################
772 ( cd $PRODUCT_PKG_DIR ; find . ) > file_list.txt
774 echo "Building DMG ..."
776 # UC_DMG=$APPNAME-${release_version}-UC.dmg
777 # FINAL_DMG=$APPNAME-${release_version}.dmg
779 if [ x$DEBUG = xT ]; then
780 UC_DMG=$APPNAME-$release_version-dbg.dmg
782 UC_DMG=$APPNAME-$release_version.dmg
784 VOLNAME=$APPNAME-$release_version
786 MNTPATH=`mktemp -d -t ardourimg`
787 TMPDMG=`mktemp -t ardour`
788 ICNSTMP=`mktemp -t ardouricon`
790 DMGMEGABYTES=$[ `du -sk "$PRODUCT_PKG_DIR" | cut -f 1` * 1024 / 1048576 + $EXTRA_SPACE_MB ]
792 echo "DMG MB = " $DMGMEGABYTES
794 rm -f $UC_DMG "$TMPDMG" "${TMPDMG}.dmg" "$ICNSTMP"
798 TMPDMG="${TMPDMG}.dmg"
800 trap "rm -rf $MNTPATH $TMPDMG ${TMPDMG}.dmg $ICNSTMP" EXIT
802 hdiutil create -megabytes $DMGMEGABYTES -fs HFS+ -volname "${VOLNAME}" "$TMPDMG"
803 DiskDevice=$(hdid -nomount "$TMPDMG" | grep Apple_HFS | cut -f 1 -d ' ')
804 mount -t hfs -o nobrowse "${DiskDevice}" "${MNTPATH}"
806 cp -r ${PRODUCT_PKG_DIR}/* "${MNTPATH}" || exit
807 mkdir "${MNTPATH}/.background"
808 cp -vi ${DMGBACKGROUND}.png "${MNTPATH}/.background/dmgbg.png"
810 echo "setting DMG background ..."
812 if test $(sw_vers -productVersion | cut -d '.' -f 2) -lt 9; then
816 # OSX 10.9.X and later
817 DISKNAME=`basename "${MNTPATH}"`
821 tell application "Finder"
823 tell disk "${DISKNAME}"
826 set current view of container window to icon view
827 set toolbar visible of container window to false
828 set statusbar visible of container window to false
829 set the bounds of container window to {400, 200, 800, ${DMGWINBOTTOM}}
830 set theViewOptions to the icon view options of container window
831 set arrangement of theViewOptions to not arranged
832 set icon size of theViewOptions to 64
833 set background picture of theViewOptions to file ".background:dmgbg.png"
834 make new alias file at container window to POSIX file "/Applications" with properties {name:"Applications"}
835 set position of item "${APPDIR}" of container window to {90, 100}
836 set position of item "Applications" of container window to {310, 100}
842 update without registering applications
844 set position of item "${APPDIR}" of container window to {90, 100}
845 set position of item "Applications" of container window to {310, 100}
851 update without registering applications
858 chmod -Rf go-w "${MNTPATH}"
862 echo "compressing Image ..."
864 # Umount the image ('eject' above may already have done that)
865 umount "${DiskDevice}" || true
866 hdiutil eject "${DiskDevice}" || true
867 # Create a read-only version, use zlib compression
868 hdiutil convert -format UDZO "${TMPDMG}" -imagekey zlib-level=9 -o "${UC_DMG}"
870 if test $(sw_vers -productVersion | cut -d '.' -f 2) -gt 5; then
871 echo "setting file icon ..."
873 cp ${PRODUCT_PKG_DIR}/$Resources/appIcon.icns ${ICNSTMP}.icns
874 sips -i ${ICNSTMP}.icns
875 DeRez -only icns ${ICNSTMP}.icns > ${ICNSTMP}.rsrc
876 Rez -append ${ICNSTMP}.rsrc -o "$UC_DMG"
877 SetFile -a C "$UC_DMG"
879 rm ${ICNSTMP}.icns ${ICNSTMP}.rsrc
882 rm -rf ${PRODUCT_PKG_DIR}
885 echo "packaging suceeded."