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
186 # maybe set variables
188 if test x$SAE != x ; then
189 appname="Ardour${major_version}-SAE"
190 EXECUTABLE=${appname}
191 env="$env<key>ARDOUR_SAE</key><string>true</string>"
193 # current default for SAE version is German keyboard layout without a keypad
195 env="$env<key>ARDOUR_KEYBOARD_LAYOUT</key><string>de-nokeypad</string>"
196 env="$env<key>ARDOUR_UI_CONF</key><string>ardour3_ui_sae.conf</string>"
197 elif test x$MIXBUS != x ; then
199 EXECUTABLE=${appname}${major_version}
200 env="$env<key>ARDOUR_MIXBUS</key><string>true</string>"
202 # current default for MIXBUS version is US keyboard layout without a keypad
204 env="$env<key>ARDOUR_KEYBOARD_LAYOUT</key><string>us-nokeypad</string>"
205 env="$env<key>ARDOUR_UI_CONF</key><string>ardour3_ui.conf</string>"
207 appname="Ardour${major_version}"
208 EXECUTABLE=${appname}
212 # if we're not going to bundle JACK, make sure we can find
213 # jack in the places where it might be
216 env="$env<key>PATH</key><string>/usr/local/bin:/opt/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>"
217 env="$env<key>DYLIB_FALLBACK_LIBRARY_PATH</key><string>/usr/local/lib:/opt/lib</string>"
219 env="<key>LSEnvironment</key><dict>$env<key>ARDOUR_BUNDLED</key><string>true</string></dict>"
223 sed -e "s?@ENV@?$env?g" \
224 -e "s?@VERSION@?$release_version?g" \
225 -e "s?@INFOSTRING@?$info_string?g" \
226 -e "s?@IDSUFFIX@?$EXECUTABLE?g" \
227 -e "s?@BUNDLENAME@?${APPNAME}${major_version}?g" \
228 -e "s?@EXECUTABLE@?$EXECUTABLE?g" < Info.plist.in > Info.plist
230 sed -e "s?@APPNAME@?$appname?" \
231 -e "s?@ENV@?$env?g" \
232 -e "s?@VERSION@?$release_version?g" \
233 -e "s?@INFOSTRING@?$info_string?g" < InfoPlist.strings.in > Resources/InfoPlist.strings || exit 1
237 cp Info.plist $APPROOT
238 cp -R Resources $APPROOT
242 rm -f Resources/InfoPlist.strings
245 # if we build a bundle without jack, then
246 # make the Ardour executable a helper
247 # script that checks to see if JACK is
251 cp startup_script $APPROOT/MacOS/$EXECUTABLE
252 chmod 775 $APPROOT/MacOS/$EXECUTABLE
253 MAIN_EXECUTABLE=Ardour.bin ## used in startup_script
255 echo "Copying ardour executable ...."
256 cp $BUILD_ROOT/gtk2_ardour/ardour-$release_version $APPROOT/MacOS/$MAIN_EXECUTABLE
257 if test x$SAE != x ; then
258 # cp $BUILD_ROOT/gtk2_ardour/evtest $APPROOT/MacOS/gtkevents
259 cp Ardour3-SAE.icns $Resources/appIcon.icns
260 elif test x$MIXBUS32C != x ; then
261 cp Mixbus32C.icns $Resources/appIcon.icns
262 elif test x$MIXBUS != x ; then
263 cp Mixbus.icns $Resources/appIcon.icns
265 cp Ardour.icns $Resources/appIcon.icns
267 cp typeArdour.icns $Resources/
269 set +e # things below are not error-free (optional files etc) :(
272 if test x$WITH_NLS != x ; then
273 echo "NLS support ..."
274 echo "I hope you remembered to run waf i18n"
277 for pkg in gtk2_ardour libs/ardour libs/gtkmm2ext ; do
278 files=`find ../../$pkg -name "*.mo"`
281 # the package name is appended with a number so that
282 # it can be parallel installed during a regular install
283 # with older (and newer) versions. it is just the major
284 # number of the release (i.e. leading digits)
287 vsuffix=`echo $release_version | sed 's/^\([0-9][0-9]*\).*/\1/'`
289 if [ -z "$files" ]; then
291 echo "!!!! WARNING !!!! - Did not find any .mo files in ../../$pkg"
298 lang=`basename $file | sed 's/\.mo//'`
299 mkdir -p $Locale/$lang/LC_MESSAGES
300 cp $file $Locale/$lang/LC_MESSAGES/`basename $pkg`$vsuffix.mo
301 echo copy $file to $Locale/$lang/LC_MESSAGES/`basename $pkg`$vsuffix.mo
302 if echo $LINGUAS | grep $lang >/dev/null 2>&1 ; then
305 LINGUAS="$LINGUAS $lang"
312 if [ -d $GTKSTACK_ROOT/share/locale/$l ] ; then
313 echo "Copying GTK i18n files for $l..."
314 cp -r $GTKSTACK_ROOT/share/locale/$l $Locale
316 # try with just the language spec
317 just_lang=`echo $l | sed 's/_[A-Z][A-Z]$//'`
318 if [ -d $GTKSTACK_ROOT/share/locale/$just_lang ] ; then
319 echo "Copying GTK i18n files for $l..."
320 cp -r $GTKSTACK_ROOT/share/locale/$just_lang $Locale
325 echo "Skipping NLS support"
329 # Copy stuff that may be dynamically loaded
332 cp -R $GTKSTACK_ROOT/etc/* $Etc
333 cp -R $GTKSTACK_ROOT/lib/charset.alias $Resources
335 # We rely on clearlooks, so include a version from our own build tree
336 # this one is special - we will set GTK_PATH to $Frameworks/gtkengines
338 GTK_ENGINE_DIR=$Frameworks/gtkengines/engines
339 mkdir -p $GTK_ENGINE_DIR
341 echo "Copying GTK engines ..."
342 cp $BUILD_ROOT/libs/clearlooks-newer/libclearlooks.dylib $Frameworks
343 (cd $GTK_ENGINE_DIR && ln -s ../../libclearlooks.dylib . && ln -s ../../libclearlooks.dylib libclearlooks.so)
345 cp $GTKSTACK_ROOT/lib/gtk-2.0/2.10.0/engines/libpixmap.so $Frameworks
346 (cd $GTK_ENGINE_DIR && ln -s ../../libpixmap.so)
349 if test x$WITH_LADSPA != x ; then
350 if test x$SAE != x ; then
352 elif test x$MIXBUS != x ; then
353 plugdir=mixbus_ladspa
357 if [ -d $plugdir -a "x$(ls $plugdir)" != x ] ; then
358 echo "Copying `ls $plugdir | wc -l` plugins ..."
359 cp -r $plugdir/* $Plugins
363 # Control Surface shared libraries
364 cp $BUILD_ROOT/libs/surfaces/*/libardour_*.dylib $Surfaces
365 cp $BUILD_ROOT/libs/surfaces/control_protocol/libardourcp*.dylib $Frameworks
368 cp $BUILD_ROOT/libs/panners/*/lib*.dylib $Panners
371 for backend in jack wavesaudio dummy coreaudio; do
372 cp $BUILD_ROOT/libs/backends/$backend/lib*.dylib $Backends
375 # Export Formats/Presets
376 for f in $BUILD_ROOT/../export/*.preset $BUILD_ROOT/../export/*.format ; do
377 cp "$f" $ExportFormats ;
380 # Session and Route templates
381 #for f in $BUILD_ROOT/../templates/* ; do
382 # if [ -d "$f" ] ; then
383 # cp -r "$f" $Templates ;
388 # got to be careful with names here
389 for x in $BUILD_ROOT/../midi_maps/*.map ; do
394 # got to be careful with names here
395 for x in $BUILD_ROOT/../patchfiles/*.midnam ; do
400 # got to be careful with names here
401 for x in $BUILD_ROOT/../scripts/*.lua ; do
406 # got to be careful with names here
407 for x in $BUILD_ROOT/../mcp/*.device $BUILD_ROOT/../mcp/*.profile ; do
408 cp "$x" $MackieControl
411 # VAMP plugins that we use
412 cp $BUILD_ROOT/libs/vamp-plugins/libardourvampplugins.dylib $Frameworks
414 # Suil modules (new dir 'build-stack')
415 if test -d $GTKSTACK_ROOT/lib/suil-0/ ; then
416 cp $GTKSTACK_ROOT/lib/suil-0/lib* $Frameworks
419 # Suil modules (old dir 'build-ardour-stack')
420 if test -d $ARDOURSTACK_ROOT/lib/suil-0/ ; then
421 cp $ARDOURSTACK_ROOT/lib/suil-0/lib* $Frameworks
424 # VST scanner app and wrapper script, if they exist
425 if test -d $BUILD_ROOT/libs/fst ; then
426 cp $BUILD_ROOT/libs/fst/ardour-vst-scanner* $Frameworks/
430 if test -f $BUILD_ROOT/libs/vfork/ardour-exec-wrapper ; then
431 mkdir -p $Frameworks/vfork
432 cp $BUILD_ROOT/libs/vfork/ardour-exec-wrapper $Frameworks/
435 # TODO check if this is still needed, even when building on 10.5
436 if file $BUILD_ROOT/gtk2_ardour/ardour-$release_version | grep -q ppc; then
437 STDCPP='|libstdc\+\+'
444 for file in $APPROOT/MacOS/* $Frameworks/* $Frameworks/modules/* $Panners/*.dylib $Backends/*.dylib $Surfaces/*.dylib $Plugins/*.so ; do
445 if ! file $file | grep -qs Mach-O ; then
448 # libffi contains "S" (other section symbols) that should not be stripped.
449 if [[ $file == *"libffi"* ]] ; then
453 if test x$STRIP != x ; then
454 strip -u -r -arch all $file &>/dev/null
457 deps=`otool -L $file | awk '{print $1}' | egrep "($GTKSTACK_ROOT|$ARDOURSTACK_ROOT|/opt/|/local/|libs/$STDCPP)" | grep -v 'libjack\.' | grep -v "$(basename $file)"`
459 for dep in $deps ; do
461 if ! test -f $Frameworks/$base; then
462 if echo $dep | grep -sq '^libs' ; then
463 cp $BUILD_ROOT/$dep $Frameworks
471 if test x$missing = xfalse ; then
472 # everything has been found
478 echo "Copying other stuff to $APPDIR ..."
480 cp $BUILD_ROOT/gtk2_ardour/ardour.keys $Resources
481 cp $BUILD_ROOT/gtk2_ardour/ardour.menus $Resources
482 cp $BUILD_ROOT/gtk2_ardour/default_ui_config $Resources
483 cp $BUILD_ROOT/gtk2_ardour/clearlooks.rc $Resources
485 # Copied directly from source tree
487 mkdir ${Resources}/icons
488 mkdir ${Resources}/resources
489 cp ../../system_config $Resources/system_config
490 cp ../../instant.xml $Resources/instant.xml
491 cp ../../gtk2_ardour/icons/*.png ${Resources}/icons/
492 cp -r ../../gtk2_ardour/icons/cursor_* ${Resources}/icons/
493 cp ../../gtk2_ardour/ArdourMono.ttf $Shared
494 cp ../../gtk2_ardour/resources/${PRODUCT_PKG_DIR}-* ${Resources}/resources/
497 # Themes: only install those named for this app
498 lower_case_appname=`echo $APPNAME | tr '[:upper:]' '[:lower:]'`
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 # install bundled LV2s to <app>/Contents/lib/LV2/
507 cp -R $BUILD_ROOT/libs/LV2 $Frameworks/
509 # lv2 core, classifications etc - TODO check if we need the complete LV2 ontology
510 if test -d $ARDOURSTACK_ROOT/lib/lv2/lv2core.lv2 ; then
511 cp -R $ARDOURSTACK_ROOT/lib/lv2/lv2core.lv2 $Frameworks/LV2/
512 elif test -d $GTKSTACK_ROOT/lib/lv2/lv2core.lv2 ; then
513 cp -R $GTKSTACK_ROOT/lib/lv2/lv2core.lv2 $Frameworks/LV2/
517 # now fix up the executables
518 echo "Fixing up executable dependency names ..."
519 executables=$MAIN_EXECUTABLE
520 if test x$SAE != x ; then
521 executables="$executables"
524 for exe in $executables; do
525 EXE=$APPROOT/MacOS/$exe
527 for lib in `otool -L $EXE | egrep "($GTKSTACK_ROOT|$ARDOURSTACK_ROOT|/opt/|/local/|libs/$STDCPP)" | awk '{print $1}' | grep -v 'libjack\.'` ; do
529 changes="$changes -change $lib @executable_path/../lib/$base"
531 if test "x$changes" != "x" ; then
532 install_name_tool $changes $EXE
536 echo "Fixing up library names ..."
537 # now do the same for all the libraries we include
538 for libdir in $Frameworks $Frameworks/modules $Surfaces $Panners $Backends ; do
540 libbase=`basename $libdir`
542 for dylib in $libdir/*.dylib $libdir/*.so ; do
546 if test -L $dylib ; then
550 # change all the dependencies
553 for lib in `otool -L $dylib | egrep "($GTKSTACK_ROOT|$ARDOURSTACK_ROOT|/opt/|/local/|libs/$STDCPP)" | awk '{print $1}' | grep -v 'libjack\.'` ; do
555 if echo $lib | grep -s libbase; then
556 changes="$changes -change $lib @executable_path/../$libbase/$base"
558 changes="$changes -change $lib @executable_path/../lib/$base"
562 if test "x$changes" != x ; then
563 if install_name_tool $changes $dylib ; then
570 # now the change what the library thinks its own name is
572 base=`basename $dylib`
573 install_name_tool -id @executable_path/../$libbase/$base $dylib
578 # and now ... the DMG
581 rm -rf $PRODUCT_PKG_DIR
582 mkdir $PRODUCT_PKG_DIR
587 if [ x$SAE != x ] ; then
591 echo "Creating SAE packaging directory"
592 mv $APPDIR $PRODUCT_PKG_DIR/Ardour3-SAE.app
593 cp HowToInstallArdourSAE.pdf "$PRODUCT_PKG_DIR/How To Install Ardour SAE.pdf"
594 cp SAE-de-keypad.pdf "$PRODUCT_PKG_DIR/Ardour SAE Shortcuts (keypad).pdf"
595 cp SAE-de-nokeypad.pdf "$PRODUCT_PKG_DIR/Ardour SAE Shortcuts.pdf"
597 elif [ x$MIXBUS != x ] ; then
601 echo "Creating Mixbus packaging directory"
602 mv $APPDIR $PRODUCT_PKG_DIR/
603 DMGBACKGROUND=dmgbgMB
606 echo "Creating $APPNAME packaging directory"
607 mv $APPDIR $PRODUCT_PKG_DIR/
611 if file ${PRODUCT_PKG_DIR}/$APPROOT/MacOS/$MAIN_EXECUTABLE | grep -q x86_64; then
614 elif file ${PRODUCT_PKG_DIR}/$APPROOT/MacOS/$MAIN_EXECUTABLE | grep -q ppc; then
622 if test x$WITH_HARRISON_LV2 != x ; then
623 curl -s -S --fail -# \
624 -z "${CACHEDIR}/harrison_lv2s.${OSX_BENSID}.zip" \
625 -o "${CACHEDIR}/harrison_lv2s.${OSX_BENSID}.zip" \
626 "http://www.harrisonconsoles.com/mixbus/mb3/beta/harrison-dsp/harrison_lv2s.${OSX_BENSID}.zip"
628 mkdir -p "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2"
629 bsdtar -C "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2/" -xf \
630 "${CACHEDIR}/harrison_lv2s.${OSX_BENSID}.zip"
633 if test x$WITH_HARVID != x ; then
634 echo "installing video tools.."
635 HARVID_VERSION=$(curl -s -S http://ardour.org/files/video-tools/harvid_version.txt)
636 XJADEO_VERSION=$(curl -s -S http://ardour.org/files/video-tools/xjadeo_version.txt)
638 echo "copying harvid and xjadeo ..."
641 rsync://ardour.org/video-tools/harvid-osx-${HARVID_VERSION}.tgz \
642 "$CACHEDIR/harvid-${MULTIARCH}-${HARVID_VERSION}.tgz"
645 rsync://ardour.org/video-tools/jadeo-${XJADEO_VERSION:1}.dmg \
646 "$CACHEDIR/jadeo-${XJADEO_VERSION:1}.dmg"
649 -C $PRODUCT_PKG_DIR/$APPROOT \
650 -f "$CACHEDIR/harvid-${MULTIARCH}-${HARVID_VERSION}.tgz" || exit 1
652 JADEO=$(hdiutil attach "$CACHEDIR/jadeo-${XJADEO_VERSION:1}.dmg" | grep Apple_HFS | grep dev/ | cut -f 3)
653 cp -r "${JADEO}/Jadeo.app" "$PRODUCT_PKG_DIR/"
654 hdiutil detach "${JADEO}"
656 XJCONTENT=${PRODUCT_PKG_DIR}/Jadeo.app/Contents
657 HVLIBS=${PRODUCT_PKG_DIR}/$APPROOT/lib/harvid
659 for file in ${XJCONTENT}/MacOS/Jadeo-bin ${XJCONTENT}/Frameworks/*.dylib ${HVLIBS}/*.dylib ${PRODUCT_PKG_DIR}/$APPROOT/MacOS/*harvid* ; do
660 lipo -extract_family ${OSX_ARCH} ${file} -output ${file}.thin && \
661 mv ${file}.thin ${file}
665 YPOS=$[ $DMGWINBOTTOM - 300 ]
666 XJADEOPOS="set position of item \"Jadeo.app\" of container window to {310, ${YPOS}}"
668 DMGBACKGROUND=${DMGBACKGROUND}xj
671 ################################################################################
672 ### Mixbus plugins, etc
673 if test x$WITH_X42_LV2 != x ; then
674 echo "bundling x42 plugins"
675 mkdir -p "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2"
677 METERS_VERSION=$(curl -s -S http://x42-plugins.com/x42/osx/x42-meters.latest.txt)
678 rsync -a -q --partial \
679 rsync://x42-plugins.com/x42/osx/x42-meters-lv2-osx-${METERS_VERSION}.zip \
680 "$CACHEDIR/x42-meters-lv2-osx-${METERS_VERSION}.zip"
681 bsdtar -C "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2/" -xf \
682 "$CACHEDIR/x42-meters-lv2-osx-${METERS_VERSION}.zip"
684 EQ_VERSION=$(curl -s -S http://x42-plugins.com/x42/osx/x42-eq.latest.txt)
685 rsync -a -q --partial \
686 rsync://x42-plugins.com/x42/osx/x42-eq-lv2-osx-${EQ_VERSION}.zip \
687 "$CACHEDIR/x42-eq-lv2-osx-${EQ_VERSION}.zip"
688 bsdtar -C "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2/" -xf \
689 "$CACHEDIR/x42-eq-lv2-osx-${EQ_VERSION}.zip"
691 SETBFREE_VERSION=$(curl -s -S http://x42-plugins.com/x42/osx/setBfree.latest.txt)
692 rsync -a -q --partial \
693 rsync://x42-plugins.com/x42/osx/setBfree-lv2-osx-${SETBFREE_VERSION}.zip \
694 "$CACHEDIR/setBfree-lv2-osx-${SETBFREE_VERSION}.zip"
695 bsdtar -C "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2/" -xf \
696 "$CACHEDIR/setBfree-lv2-osx-${SETBFREE_VERSION}.zip"
698 MIDIFILTER_VERSION=$(curl -s -S http://x42-plugins.com/x42/osx/x42-midifilter.latest.txt)
699 rsync -a -q --partial \
700 rsync://x42-plugins.com/x42/osx/x42-midifilter-lv2-osx-${MIDIFILTER_VERSION}.zip \
701 "$CACHEDIR/x42-midifilter-lv2-osx-${MIDIFILTER_VERSION}.zip"
702 bsdtar -C "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2/" -xf \
703 "$CACHEDIR/x42-midifilter-lv2-osx-${MIDIFILTER_VERSION}.zip"
705 for file in ${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2/*/*.dylib ; do
706 lipo -extract_family ${OSX_ARCH} ${file} -output ${file}.thin
707 mv ${file}.thin ${file}
711 if test -n "$MIXBUS"; then
712 echo "deploying harrison channelstrip for $OSX_BENSID"
714 mkdir -p "${PRODUCT_PKG_DIR}/${APPROOT}/lib/ladspa/strip"
716 curl -s -S --fail -# \
717 -z "${CACHEDIR}/${HARRISONCHANNELSTRIP}.${OSX_BENSID}.so" \
718 -o "${CACHEDIR}/${HARRISONCHANNELSTRIP}.${OSX_BENSID}.so" \
719 "http://www.harrisonconsoles.com/mixbus/mb3/beta/harrison-dsp/${HARRISONCHANNELSTRIP}.${OSX_BENSID}.so"
721 cp "${CACHEDIR}/${HARRISONCHANNELSTRIP}.${OSX_BENSID}.so" \
722 "${PRODUCT_PKG_DIR}/${APPROOT}/lib/ladspa/strip/${HARRISONCHANNELSTRIP}.so"
724 echo "deploying harrison vamp plugins for $OSX_BENSID"
726 curl -s -S --fail -# \
727 -z "${CACHEDIR}/harrison_vamp.${OSX_BENSID}.dylib" \
728 -o "${CACHEDIR}/harrison_vamp.${OSX_BENSID}.dylib" \
729 "http://www.harrisonconsoles.com/mixbus/mb3/beta/harrison-dsp/harrison_vamp.${OSX_BENSID}.dylib"
731 cp "${CACHEDIR}/harrison_vamp.${OSX_BENSID}.dylib" \
732 "${PRODUCT_PKG_DIR}/${APPROOT}/lib/harrison_vamp.dylib"
734 ################################################################################
736 ( cd $PRODUCT_PKG_DIR ; find . ) > file_list.txt
738 echo "Building DMG ..."
740 # UC_DMG=$APPNAME-${release_version}-UC.dmg
741 # FINAL_DMG=$APPNAME-${release_version}.dmg
743 if [ x$DEBUG = xT ]; then
744 UC_DMG=$APPNAME-$release_version-dbg.dmg
746 UC_DMG=$APPNAME-$release_version.dmg
748 VOLNAME=$APPNAME-$release_version
750 MNTPATH=`mktemp -d -t ardourimg`
751 TMPDMG=`mktemp -t ardour`
752 ICNSTMP=`mktemp -t ardouricon`
754 DMGMEGABYTES=$[ `du -sk "$PRODUCT_PKG_DIR" | cut -f 1` * 1024 / 1048576 + $EXTRA_SPACE_MB ]
756 echo "DMG MB = " $DMGMEGABYTES
758 rm -f $UC_DMG "$TMPDMG" "${TMPDMG}.dmg" "$ICNSTMP"
762 TMPDMG="${TMPDMG}.dmg"
764 trap "rm -rf $MNTPATH $TMPDMG ${TMPDMG}.dmg $ICNSTMP" EXIT
766 hdiutil create -megabytes $DMGMEGABYTES -fs HFS+ -volname "${VOLNAME}" "$TMPDMG"
767 DiskDevice=$(hdid -nomount "$TMPDMG" | grep Apple_HFS | cut -f 1 -d ' ')
768 mount -t hfs -o nobrowse "${DiskDevice}" "${MNTPATH}"
770 cp -r ${PRODUCT_PKG_DIR}/* "${MNTPATH}" || exit
771 mkdir "${MNTPATH}/.background"
772 cp -vi ${DMGBACKGROUND}.png "${MNTPATH}/.background/dmgbg.png"
774 echo "setting DMG background ..."
776 if test $(sw_vers -productVersion | cut -d '.' -f 2) -lt 9; then
780 # OSX 10.9.X and later
781 DISKNAME=`basename "${MNTPATH}"`
785 tell application "Finder"
787 tell disk "${DISKNAME}"
790 set current view of container window to icon view
791 set toolbar visible of container window to false
792 set statusbar visible of container window to false
793 set the bounds of container window to {400, 200, 800, ${DMGWINBOTTOM}}
794 set theViewOptions to the icon view options of container window
795 set arrangement of theViewOptions to not arranged
796 set icon size of theViewOptions to 64
797 set background picture of theViewOptions to file ".background:dmgbg.png"
798 make new alias file at container window to POSIX file "/Applications" with properties {name:"Applications"}
799 set position of item "${APPDIR}" of container window to {90, 100}
800 set position of item "Applications" of container window to {310, 100}
806 update without registering applications
813 chmod -Rf go-w "${MNTPATH}"
817 echo "compressing Image ..."
819 # Umount the image ('eject' above may already have done that)
820 umount "${DiskDevice}" || true
821 hdiutil eject "${DiskDevice}" || true
822 # Create a read-only version, use zlib compression
823 hdiutil convert -format UDZO "${TMPDMG}" -imagekey zlib-level=9 -o "${UC_DMG}"
825 if test $(sw_vers -productVersion | cut -d '.' -f 2) -gt 5; then
826 echo "setting file icon ..."
828 cp ${PRODUCT_PKG_DIR}/$Resources/appIcon.icns ${ICNSTMP}.icns
829 sips -i ${ICNSTMP}.icns
830 DeRez -only icns ${ICNSTMP}.icns > ${ICNSTMP}.rsrc
831 Rez -append ${ICNSTMP}.rsrc -o "$UC_DMG"
832 SetFile -a C "$UC_DMG"
834 rm ${ICNSTMP}.icns ${ICNSTMP}.rsrc
837 rm -rf ${PRODUCT_PKG_DIR}
840 echo "packaging suceeded."