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 ;
53 PRODUCT_PKG_DIR=Mixbus;
56 --mixbus32c) MIXBUS=1;
63 PRODUCT_PKG_DIR=Mixbus32C;
64 APPNAME=Mixbus32C-${major_version} ;
71 PRODUCT_PKG_DIR=Ardour;
76 PRODUCT_PKG_DIR=Ardour ;
78 --test) SAE= ; STRIP= ; shift ;;
81 # specific build flags
84 --noharvid) WITH_HARVID= ; shift ;;
85 --nostrip) STRIP= ; shift ;;
86 --sysdeps) PRINT_SYSDEPS=1; shift ;;
87 --nls) WITH_NLS=1 ; shift ;;
88 --chanstrip) HARRISONCHANNELSTRIP=$2 ; shift; shift ;;
92 if test -z "$PRODUCT_PKG_DIR" -o -z "$APPNAME"; then
93 echo "application or product-name was not specified"
97 echo "Version is $release_version"
98 if [ "x$commit" != "x" ] ; then
99 info_string="$release_version ($commit) built on `hostname` by `whoami` on `date`"
101 info_string="$release_version built on `hostname` by `whoami` on `date`"
103 echo "Info string is $info_string"
105 if [ x$DEBUG = xT ]; then
107 echo "Debug build, strip disabled"
109 if test x$STRIP != x ; then
110 echo "No debug build, strip enabled"
112 echo "No debug build, but strip disabled."
116 lower_case_appname=`echo $APPNAME | tr '[:upper:]' '[:lower:]'`
118 # setup directory structure
120 APPDIR=${APPNAME}${major_version}.app
121 APPROOT=$APPDIR/Contents
122 Frameworks=$APPROOT/lib
123 Resources=$APPROOT/Resources
125 # Since this is OS X, don't try to distinguish between etc and shared
126 # (machine dependent and independent data) - just put everything
131 Locale=$Resources/locale
133 # Bundled Plugins live in a top level folder
135 Plugins=$APPROOT/Plugins
136 Surfaces=$Frameworks/surfaces
137 Panners=$Frameworks/panners
138 Backends=$Frameworks/backends
139 MidiMaps=$Shared/midi_maps
140 ExportFormats=$Shared/export
141 Templates=$Shared/templates
142 PatchFiles=$Shared/patchfiles
143 LuaScripts=$Shared/scripts
144 MackieControl=$Shared/mcp
145 Themes=$Shared/themes
147 if [ x$PRINT_SYSDEPS != x ] ; then
149 # print system dependencies
152 for file in $APPROOT/MacOS/* $Frameworks/* $Frameworks/modules/* $Plugins/*.so ; do
153 if ! file $file | grep -qs Mach-O ; then
156 otool -L $file | awk '{print $1}' | egrep -v "(^@executable_path|^Ardour[0-9][.0-9]*.app)"
161 echo "Removing old $APPDIR tree ..."
165 echo "Building new app directory structure ..."
167 # only bother to make the longest paths
169 mkdir -p $APPROOT/MacOS
170 mkdir -p $APPROOT/Resources
176 mkdir -p $ExportFormats
178 mkdir -p $Frameworks/modules
180 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 # Control Surface shared libraries
349 cp $BUILD_ROOT/libs/surfaces/*/libardour_*.dylib $Surfaces
350 cp $BUILD_ROOT/libs/surfaces/control_protocol/libardourcp*.dylib $Frameworks
353 cp $BUILD_ROOT/libs/panners/*/lib*.dylib $Panners
356 for backend in jack wavesaudio dummy coreaudio; do
357 cp $BUILD_ROOT/libs/backends/$backend/lib*.dylib $Backends
360 # Export Formats/Presets
361 for f in $BUILD_ROOT/../export/*.preset $BUILD_ROOT/../export/*.format ; do
362 cp "$f" $ExportFormats ;
365 # Session and Route templates
366 #for f in $BUILD_ROOT/../templates/* ; do
367 # if [ -d "$f" ] ; then
368 # cp -r "$f" $Templates ;
373 # got to be careful with names here
374 for x in $BUILD_ROOT/../midi_maps/*.map ; do
379 # got to be careful with names here
380 for x in $BUILD_ROOT/../patchfiles/*.midnam ; do
385 # got to be careful with names here
386 for x in $BUILD_ROOT/../scripts/*.lua ; do
388 if test "${BN:0:1}" = "_"; then
395 # got to be careful with names here
396 for x in $BUILD_ROOT/../mcp/*.device $BUILD_ROOT/../mcp/*.profile ; do
397 cp "$x" $MackieControl
400 # VAMP plugins that we use
401 cp $BUILD_ROOT/libs/vamp-plugins/libardourvampplugins.dylib $Frameworks
403 # Suil modules (new dir 'build-stack')
404 if test -d $GTKSTACK_ROOT/lib/suil-0/ ; then
405 cp $GTKSTACK_ROOT/lib/suil-0/lib* $Frameworks
408 # Suil modules (old dir 'build-ardour-stack')
409 if test -d $ARDOURSTACK_ROOT/lib/suil-0/ ; then
410 cp $ARDOURSTACK_ROOT/lib/suil-0/lib* $Frameworks
413 # VST scanner app and wrapper script, if they exist
414 if test -d $BUILD_ROOT/libs/fst ; then
415 cp $BUILD_ROOT/libs/fst/ardour-vst-scanner* $Frameworks/
419 if test -f $BUILD_ROOT/libs/vfork/ardour-exec-wrapper ; then
420 mkdir -p $Frameworks/vfork
421 cp $BUILD_ROOT/libs/vfork/ardour-exec-wrapper $Frameworks/
425 HAVE_SESSION_UTILS=false
426 for file in $BUILD_ROOT/session_utils/${lower_case_appname}${major_version}-*; do
428 cp -v $file $Frameworks/
429 if test x$STRIP = xall ; then
430 strip -s $Frameworks/${BN}
432 ln -s ../lib/ardour-util.sh ${APPROOT}/MacOS/${BN}
433 HAVE_SESSION_UTILS=true
436 # TODO check if this is still needed, even when building on 10.5
437 if file $BUILD_ROOT/gtk2_ardour/ardour-$release_version | grep -q ppc; then
438 STDCPP='|libstdc\+\+'
445 for file in $APPROOT/MacOS/* $Frameworks/* $Frameworks/modules/* $Panners/*.dylib $Backends/*.dylib $Surfaces/*.dylib $Plugins/*.so ; do
446 if ! file $file | grep -qs Mach-O ; then
449 # libffi contains "S" (other section symbols) that should not be stripped.
450 if [[ $file == *"libffi"* ]] ; then
454 if test x$STRIP != x ; then
455 strip -u -r -arch all $file &>/dev/null
458 deps=`otool -L $file | awk '{print $1}' | egrep "($GTKSTACK_ROOT|$ARDOURSTACK_ROOT|/opt/|/local/|libs/$STDCPP)" | grep -v 'libjack\.' | grep -v "$(basename $file)"`
460 for dep in $deps ; do
462 if ! test -f $Frameworks/$base; then
463 if echo $dep | grep -sq '^libs' ; then
464 cp $BUILD_ROOT/$dep $Frameworks
472 if test x$missing = xfalse ; then
473 # everything has been found
479 echo "Copying other stuff to $APPDIR ..."
481 cp $BUILD_ROOT/gtk2_ardour/ardour.keys $Resources
482 cp $BUILD_ROOT/gtk2_ardour/ardour.menus $Resources
483 cp $BUILD_ROOT/gtk2_ardour/default_ui_config $Resources
484 cp $BUILD_ROOT/gtk2_ardour/clearlooks.rc $Resources
486 # Copied directly from source tree
488 mkdir ${Resources}/icons
489 mkdir ${Resources}/resources
490 cp ../../system_config $Resources/system_config
491 cp ../../instant.xml $Resources/instant.xml
492 cp ../../gtk2_ardour/icons/*.png ${Resources}/icons/
493 cp -r ../../gtk2_ardour/icons/cursor_* ${Resources}/icons/
494 cp ../../gtk2_ardour/ArdourMono.ttf $Shared
495 cp ../../gtk2_ardour/resources/${PRODUCT_PKG_DIR}-* ${Resources}/resources/
498 # Themes: only install those named for this app
499 cp ../../gtk2_ardour/themes/*-${lower_case_appname}.colors $Themes
501 # go through and recursively remove any .svn dirs in the bundle
502 for svndir in `find $APPDIR -name .svn -type dir`; do
506 # session utils start script
507 if test "$HAVE_SESSION_UTILS" = true ; then
508 cat >> $Frameworks/ardour-util.sh << EOF
511 BIN_DIR=\$(dirname "\$0")
512 BUNDLE_DIR=\$(dirname "\$BIN_DIR")
514 export ARDOUR_DATA_PATH="\$BUNDLE_DIR/share"
515 export ARDOUR_CONFIG_PATH="\$BUNDLE_DIR/etc"
516 export ARDOUR_DLL_PATH="\$BUNDLE_DIR/lib"
517 export VAMP_PATH="\$BUNDLE_DIR/lib"\${VAMP_PATH:+:\$VAMP_PATH}
519 SELF=\$(basename "\$0")
520 exec "\$BUNDLE_DIR/lib/\$SELF" "\$@"
522 chmod +x $Frameworks/ardour-util.sh
526 # install bundled LV2s to <app>/Contents/lib/LV2/
527 cp -R $BUILD_ROOT/libs/LV2 $Frameworks/
529 # lv2 core, classifications etc - TODO check if we need the complete LV2 ontology
530 if test -d $ARDOURSTACK_ROOT/lib/lv2/lv2core.lv2 ; then
531 cp -R $ARDOURSTACK_ROOT/lib/lv2/lv2core.lv2 $Frameworks/LV2/
532 elif test -d $GTKSTACK_ROOT/lib/lv2/lv2core.lv2 ; then
533 cp -R $GTKSTACK_ROOT/lib/lv2/lv2core.lv2 $Frameworks/LV2/
537 # now fix up the executables
538 echo "Fixing up executable dependency names ..."
539 executables=$MAIN_EXECUTABLE
540 if test x$SAE != x ; then
541 executables="$executables"
543 if test "$HAVE_SESSION_UTILS" = true ; then
544 for file in $Frameworks/${lower_case_appname}${major_version}-*; do
546 executables="$executables ../lib/${BN}"
550 for exe in $executables; do
551 echo "Processing Executable: $exe"
552 EXE=$APPROOT/MacOS/$exe
554 for lib in `otool -L $EXE | egrep "($GTKSTACK_ROOT|$ARDOURSTACK_ROOT|/opt/|/local/|libs/$STDCPP)" | awk '{print $1}' | grep -v 'libjack\.'` ; do
556 changes="$changes -change $lib @executable_path/../lib/$base"
558 if test "x$changes" != "x" ; then
559 install_name_tool $changes $EXE
563 echo "Fixing up library names ..."
564 # now do the same for all the libraries we include
565 for libdir in $Frameworks $Frameworks/modules $Surfaces $Panners $Backends $Frameworks/LV2/* ; do
567 libbase=`basename $libdir`
569 for dylib in $libdir/*.dylib $libdir/*.so ; do
573 if test -L $dylib ; then
577 # change all the dependencies
580 for lib in `otool -L $dylib | egrep "($GTKSTACK_ROOT|$ARDOURSTACK_ROOT|/opt/|/local/|libs/$STDCPP)" | awk '{print $1}' | grep -v 'libjack\.'` ; do
582 if echo $lib | grep -s libbase; then
583 changes="$changes -change $lib @executable_path/../$libbase/$base"
585 changes="$changes -change $lib @executable_path/../lib/$base"
589 if test "x$changes" != x ; then
590 if install_name_tool $changes $dylib ; then
597 # now the change what the library thinks its own name is
599 base=`basename $dylib`
600 install_name_tool -id @executable_path/../$libbase/$base $dylib
605 # and now ... the DMG
608 rm -rf $PRODUCT_PKG_DIR
609 mkdir $PRODUCT_PKG_DIR
614 if [ x$SAE != x ] ; then
618 echo "Creating SAE packaging directory"
619 mv $APPDIR $PRODUCT_PKG_DIR/Ardour3-SAE.app
620 cp HowToInstallArdourSAE.pdf "$PRODUCT_PKG_DIR/How To Install Ardour SAE.pdf"
621 cp SAE-de-keypad.pdf "$PRODUCT_PKG_DIR/Ardour SAE Shortcuts (keypad).pdf"
622 cp SAE-de-nokeypad.pdf "$PRODUCT_PKG_DIR/Ardour SAE Shortcuts.pdf"
624 elif [ x$MIXBUS != x ] ; then
628 echo "Creating Mixbus packaging directory"
629 mv $APPDIR $PRODUCT_PKG_DIR/
630 DMGBACKGROUND=dmgbgMB
633 echo "Creating $APPNAME packaging directory"
634 mv $APPDIR $PRODUCT_PKG_DIR/
638 if file ${PRODUCT_PKG_DIR}/$APPROOT/MacOS/$MAIN_EXECUTABLE | grep -q x86_64; then
641 elif file ${PRODUCT_PKG_DIR}/$APPROOT/MacOS/$MAIN_EXECUTABLE | grep -q ppc; then
649 if test x$WITH_HARRISON_LV2 != x ; then
650 curl -s -S --fail -# \
651 -z "${CACHEDIR}/${HARRISONLV2}.${OSX_BENSID}.zip" \
652 -o "${CACHEDIR}/${HARRISONLV2}.${OSX_BENSID}.zip" \
653 "${HARRISONDSPURL}/${HARRISONLV2}.${OSX_BENSID}.zip"
655 mkdir -p "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2"
656 bsdtar -C "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2/" -xf \
657 "${CACHEDIR}/${HARRISONLV2}.${OSX_BENSID}.zip"
660 if test x$WITH_HARVID != x ; then
661 echo "installing video tools.."
662 HARVID_VERSION=$(curl -s -S http://ardour.org/files/video-tools/harvid_version.txt)
663 XJADEO_VERSION=$(curl -s -S http://ardour.org/files/video-tools/xjadeo_version.txt)
665 echo "copying harvid and xjadeo ..."
668 rsync://ardour.org/video-tools/harvid-osx-${HARVID_VERSION}.tgz \
669 "$CACHEDIR/harvid-${MULTIARCH}-${HARVID_VERSION}.tgz"
672 rsync://ardour.org/video-tools/jadeo-${XJADEO_VERSION:1}.dmg \
673 "$CACHEDIR/jadeo-${XJADEO_VERSION:1}.dmg"
676 -C $PRODUCT_PKG_DIR/$APPROOT \
677 -f "$CACHEDIR/harvid-${MULTIARCH}-${HARVID_VERSION}.tgz" || exit 1
679 JADEO=$(hdiutil attach "$CACHEDIR/jadeo-${XJADEO_VERSION:1}.dmg" | grep Apple_HFS | grep dev/ | cut -f 3)
680 cp -r "${JADEO}/Jadeo.app" "$PRODUCT_PKG_DIR/"
681 hdiutil detach "${JADEO}"
683 XJCONTENT=${PRODUCT_PKG_DIR}/Jadeo.app/Contents
684 HVLIBS=${PRODUCT_PKG_DIR}/$APPROOT/lib/harvid
686 for file in ${XJCONTENT}/MacOS/Jadeo-bin ${XJCONTENT}/Frameworks/*.dylib ${HVLIBS}/*.dylib ${PRODUCT_PKG_DIR}/$APPROOT/MacOS/*harvid* ; do
687 lipo -extract_family ${OSX_ARCH} ${file} -output ${file}.thin && \
688 mv ${file}.thin ${file}
692 YPOS=$[ $DMGWINBOTTOM - 300 ]
693 XJADEOPOS="set position of item \"Jadeo.app\" of container window to {310, ${YPOS}}"
695 DMGBACKGROUND=${DMGBACKGROUND}xj
698 ################################################################################
699 ### Mixbus plugins, etc
700 if test x$WITH_X42_LV2 != x ; then
701 echo "bundling x42 plugins"
702 mkdir -p "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2"
704 for proj in x42-meters x42-midifilter x42-midimap x42-stereoroute x42-eq setBfree; do
705 X42_VERSION=$(curl -s -S http://x42-plugins.com/x42/osx/${proj}.latest.txt)
706 rsync -a -q --partial \
707 rsync://x42-plugins.com/x42/osx/${proj}-lv2-osx-${X42_VERSION}.zip \
708 "$CACHEDIR/${proj}-lv2-osx-${X42_VERSION}.zip"
709 bsdtar -C "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2/" -xf \
710 "$CACHEDIR/${proj}-lv2-osx-${X42_VERSION}.zip"
713 for file in ${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2/*/*.dylib ; do
714 lipo -extract_family ${OSX_ARCH} ${file} -output ${file}.thin
715 mv ${file}.thin ${file}
719 if test -n "$MIXBUS"; then
720 echo "deploying harrison channelstrip for $OSX_BENSID"
722 mkdir -p "${PRODUCT_PKG_DIR}/${APPROOT}/lib/ladspa/strip"
724 curl -s -S --fail -# \
725 -z "${CACHEDIR}/${HARRISONCHANNELSTRIP}.${OSX_BENSID}.so" \
726 -o "${CACHEDIR}/${HARRISONCHANNELSTRIP}.${OSX_BENSID}.so" \
727 "${HARRISONDSPURL}/${HARRISONCHANNELSTRIP}.${OSX_BENSID}.so"
729 cp "${CACHEDIR}/${HARRISONCHANNELSTRIP}.${OSX_BENSID}.so" \
730 "${PRODUCT_PKG_DIR}/${APPROOT}/lib/ladspa/strip/${HARRISONCHANNELSTRIP}.so"
732 echo "deploying harrison vamp plugins for $OSX_BENSID"
734 curl -s -S --fail -# \
735 -z "${CACHEDIR}/harrison_vamp.${OSX_BENSID}.dylib" \
736 -o "${CACHEDIR}/harrison_vamp.${OSX_BENSID}.dylib" \
737 "${HARRISONDSPURL}/harrison_vamp.${OSX_BENSID}.dylib"
739 cp "${CACHEDIR}/harrison_vamp.${OSX_BENSID}.dylib" \
740 "${PRODUCT_PKG_DIR}/${APPROOT}/lib/harrison_vamp.dylib"
743 ################################################################################
745 if test x$DEMO_SESSION_URL != x ; then
746 mkdir -p $Shared/sessions
747 DEMO_SESSIONS=$(curl -s -S --fail $DEMO_SESSION_URL/index.txt)
748 for demo in $DEMO_SESSIONS; do
749 curl -s -S --fail -# -o $Shared/sessions/$demo $DEMO_SESSION_URL/$demo
753 ################################################################################
755 ( cd $PRODUCT_PKG_DIR ; find . ) > file_list.txt
757 echo "Building DMG ..."
759 # UC_DMG=$APPNAME-${release_version}-UC.dmg
760 # FINAL_DMG=$APPNAME-${release_version}.dmg
762 if [ x$DEBUG = xT ]; then
763 UC_DMG=$APPNAME-$release_version-dbg.dmg
765 UC_DMG=$APPNAME-$release_version.dmg
767 VOLNAME=$APPNAME-$release_version
769 MNTPATH=`mktemp -d -t ardourimg`
770 TMPDMG=`mktemp -t ardour`
771 ICNSTMP=`mktemp -t ardouricon`
773 DMGMEGABYTES=$[ `du -sk "$PRODUCT_PKG_DIR" | cut -f 1` * 1024 / 1048576 + $EXTRA_SPACE_MB ]
775 echo "DMG MB = " $DMGMEGABYTES
777 rm -f $UC_DMG "$TMPDMG" "${TMPDMG}.dmg" "$ICNSTMP"
781 TMPDMG="${TMPDMG}.dmg"
783 trap "rm -rf $MNTPATH $TMPDMG ${TMPDMG}.dmg $ICNSTMP" EXIT
785 hdiutil create -megabytes $DMGMEGABYTES -fs HFS+ -volname "${VOLNAME}" "$TMPDMG"
786 DiskDevice=$(hdid -nomount "$TMPDMG" | grep Apple_HFS | cut -f 1 -d ' ')
787 mount -t hfs -o nobrowse "${DiskDevice}" "${MNTPATH}"
789 cp -r ${PRODUCT_PKG_DIR}/* "${MNTPATH}" || exit
790 mkdir "${MNTPATH}/.background"
791 cp -vi ${DMGBACKGROUND}.png "${MNTPATH}/.background/dmgbg.png"
793 echo "setting DMG background ..."
795 if test $(sw_vers -productVersion | cut -d '.' -f 2) -lt 9; then
799 # OSX 10.9.X and later
800 DISKNAME=`basename "${MNTPATH}"`
804 tell application "Finder"
806 tell disk "${DISKNAME}"
809 set current view of container window to icon view
810 set toolbar visible of container window to false
811 set statusbar visible of container window to false
812 set the bounds of container window to {400, 200, 800, ${DMGWINBOTTOM}}
813 set theViewOptions to the icon view options of container window
814 set arrangement of theViewOptions to not arranged
815 set icon size of theViewOptions to 64
816 set background picture of theViewOptions to file ".background:dmgbg.png"
817 make new alias file at container window to POSIX file "/Applications" with properties {name:"Applications"}
818 set position of item "${APPDIR}" of container window to {90, 100}
819 set position of item "Applications" of container window to {310, 100}
825 update without registering applications
832 chmod -Rf go-w "${MNTPATH}"
836 echo "compressing Image ..."
838 # Umount the image ('eject' above may already have done that)
839 umount "${DiskDevice}" || true
840 hdiutil eject "${DiskDevice}" || true
841 # Create a read-only version, use zlib compression
842 hdiutil convert -format UDZO "${TMPDMG}" -imagekey zlib-level=9 -o "${UC_DMG}"
844 if test $(sw_vers -productVersion | cut -d '.' -f 2) -gt 5; then
845 echo "setting file icon ..."
847 cp ${PRODUCT_PKG_DIR}/$Resources/appIcon.icns ${ICNSTMP}.icns
848 sips -i ${ICNSTMP}.icns
849 DeRez -only icns ${ICNSTMP}.icns > ${ICNSTMP}.rsrc
850 Rez -append ${ICNSTMP}.rsrc -o "$UC_DMG"
851 SetFile -a C "$UC_DMG"
853 rm ${ICNSTMP}.icns ${ICNSTMP}.rsrc
856 rm -rf ${PRODUCT_PKG_DIR}
859 echo "packaging suceeded."