X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=tools%2Fosx_packaging%2Fosx_build;h=3e9b587c332b2ed9df072d26febeabf92a63bed9;hb=952b8e1d74aef71815a945e95c2b4641fd1d961b;hp=7726b3d9a287d2e6cf94c0ddf1e560742ab0eaf3;hpb=ec1e119610f9dbeae5fc2543b12638b0b6fe4704;p=ardour.git
diff --git a/tools/osx_packaging/osx_build b/tools/osx_packaging/osx_build
index 7726b3d9a2..3e9b587c33 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,26 @@ 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_LADSPA=1
+WITH_HARRISON_LV2=
+WITH_X42_LV2=
STRIP=1
PRINT_SYSDEPS=
WITH_NLS=
+: ${HARRISONCHANNELSTRIP=harrison_channelstrip}
+: ${HARRISONLV2=harrison_lv2s-n}
+: ${HARRISONDSPURL=http://www.harrisonconsoles.com/plugins/releases/public}
+
+. ../define_versions.sh
+
while [ $# -gt 0 ] ; do
echo "arg = $1"
case $1 in
@@ -27,45 +38,61 @@ 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 ;;
- --test) SAE= ; WITH_LADSPA=; STRIP= ; shift ;;
+ --sae)
+ SAE=1 ;
+ STRIP= ;
+ PRODUCT_PKG_DIR=ArdourSAE ;
+ APPNAME=Ardour ;
+ BUNDLENAME=Ardour${major_version} ;
+ lower_case_appname=ardour;
+ shift ;;
+ --mixbus) MIXBUS=1;
+ WITH_HARRISON_LV2=1 ;
+ WITH_X42_LV2=1 ;
+ WITH_NLS=1 ;
+ SAE= ;
+ STRIP= ;
+ PRODUCT_PKG_DIR=Mixbus;
+ APPNAME=Mixbus ;
+ BUNDLENAME=Mixbus${major_version} ;
+ lower_case_appname=mixbus;
+ shift ;;
+ --mixbus32c) MIXBUS=1;
+ MIXBUS32C=1;
+ WITH_HARRISON_LV2=1 ;
+ WITH_X42_LV2=1 ;
+ WITH_NLS=1 ;
+ SAE= ;
+ STRIP= ;
+ PRODUCT_PKG_DIR=Mixbus32C;
+ lower_case_appname=mixbus32c;
+ APPNAME=Mixbus32C ;
+ BUNDLENAME=Mixbus32C-${major_version} ;
+ shift ;;
+ --public)
+ SAE= ;
+ WITH_HARRISON_LV2=1 ;
+ WITH_X42_LV2=1 ;
+ PRODUCT_PKG_DIR=Ardour;
+ APPNAME=Ardour ;
+ BUNDLENAME=Ardour${major_version} ;
+ lower_case_appname=ardour;
+ shift ;;
+ --allinone) SAE= ;
+ STRIP= ;
+ PRODUCT_PKG_DIR=Ardour ;
+ shift ;;
+ --test) SAE= ; STRIP= ; shift ;;
#
# specific build flags
#
--noharvid) WITH_HARVID= ; shift ;;
- --noladspa) WITH_LADSPA= ; shift ;;
--nostrip) STRIP= ; shift ;;
--sysdeps) PRINT_SYSDEPS=1; shift ;;
--nls) WITH_NLS=1 ; shift ;;
+ --chanstrip) HARRISONCHANNELSTRIP=$2 ; shift; shift ;;
esac
done
@@ -74,7 +101,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 +109,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=${BUNDLENAME}.app
APPROOT=$APPDIR/Contents
Frameworks=$APPROOT/lib
Resources=$APPROOT/Resources
@@ -108,14 +145,17 @@ MidiMaps=$Shared/midi_maps
ExportFormats=$Shared/export
Templates=$Shared/templates
PatchFiles=$Shared/patchfiles
+LuaScripts=$Shared/scripts
MackieControl=$Shared/mcp
+OSC=$Shared/osc
+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,46 +184,34 @@ mkdir -p $Templates
mkdir -p $Frameworks/modules
mkdir -p $Etc
mkdir -p $MackieControl
+mkdir -p $OSC
mkdir -p $PatchFiles
+mkdir -p $LuaScripts
+mkdir -p $Themes
+
-# maybe set variables
-env=""
-if test x$SAE != x ; then
- appname="Ardour3/SAE"
- 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"
- 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"
-fi
+
+EXECUTABLE=${BUNDLENAME}
#
# if we're not going to bundle JACK, make sure we can find
# jack in the places where it might be
#
+env=""
env="$envPATH/usr/local/bin:/opt/bin:/usr/bin:/bin:/usr/sbin:/sbin"
env="$envDYLIB_FALLBACK_LIBRARY_PATH/usr/local/lib:/opt/lib"
env="LSEnvironment$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@?$BUNDLENAME?g" \
+ -e "s?@EXECUTABLE@?$EXECUTABLE?g" < Info.plist.in > Info.plist
# and plist strings
sed -e "s?@APPNAME@?$appname?" \
-e "s?@ENV@?$env?g" \
@@ -195,31 +223,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
@@ -283,24 +316,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
@@ -315,20 +332,6 @@ cp $GTKSTACK_ROOT/lib/gtk-2.0/2.10.0/engines/libpixmap.so $Frameworks
(cd $GTK_ENGINE_DIR && ln -s ../../libpixmap.so)
-if test x$WITH_LADSPA != x ; then
- if test x$SAE != x ; then
- plugdir=sae_ladspa
- elif test x$MIXBUS != x ; then
- plugdir=mixbus_ladspa
- else
- plugdir=ladspa
- fi
- if [ -d $plugdir -a "x$(ls $plugdir)" != x ] ; then
- echo "Copying `ls $plugdir | wc -l` plugins ..."
- cp -r $plugdir/* $Plugins
- fi
-fi
-
# Control Surface shared libraries
cp $BUILD_ROOT/libs/surfaces/*/libardour_*.dylib $Surfaces
cp $BUILD_ROOT/libs/surfaces/control_protocol/libardourcp*.dylib $Frameworks
@@ -337,7 +340,7 @@ cp $BUILD_ROOT/libs/surfaces/control_protocol/libardourcp*.dylib $Frameworks
cp $BUILD_ROOT/libs/panners/*/lib*.dylib $Panners
# Backends
-for backend in jack wavesaudio ; do
+for backend in jack wavesaudio dummy coreaudio; do
cp $BUILD_ROOT/libs/backends/$backend/lib*.dylib $Backends
done
@@ -365,25 +368,70 @@ 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
+ BN=$(basename $x)
+ if test "${BN:0:1}" = "_"; then
+ continue;
+ fi
+ 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
cp "$x" $MackieControl
done
+# OSC data
+# got to be careful with names here
+for x in $BUILD_ROOT/../osc/*.preset ; do
+ cp "$x" $OSC
+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
-cp $BUILD_ROOT/libs/fst/ardour-vst-scanner* $Frameworks/ || true
+if test -d $BUILD_ROOT/libs/fst ; then
+ cp $BUILD_ROOT/libs/fst/ardour-vst-scanner* $Frameworks/
+fi
# vfork wrapper
-mkdir $Frameworks/vfork
-cp $BUILD_ROOT/libs/vfork/ardour-exec-wrapper $Frameworks/vfork/
+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
+
+# session-utils
+HAVE_SESSION_UTILS=false
+for file in $BUILD_ROOT/session_utils/${lower_case_appname}${major_version}-*; do
+ BN=$(basename $file)
+ cp -v $file $Frameworks/
+ if test x$STRIP = xall ; then
+ strip -s $Frameworks/${BN}
+ fi
+ ln -s ../lib/ardour-util.sh ${APPROOT}/MacOS/${BN}
+ HAVE_SESSION_UTILS=true
+done
+# 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
@@ -391,7 +439,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`
@@ -414,59 +471,83 @@ 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 ../../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
+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
rm -rf $svndir
done
+# session utils start script
+if test "$HAVE_SESSION_UTILS" = true ; then
+ cat >> $Frameworks/ardour-util.sh << EOF
+#!/bin/sh
+
+BIN_DIR=\$(dirname "\$0")
+BUNDLE_DIR=\$(dirname "\$BIN_DIR")
+
+export ARDOUR_DATA_PATH="\$BUNDLE_DIR/share"
+export ARDOUR_CONFIG_PATH="\$BUNDLE_DIR/etc"
+export ARDOUR_DLL_PATH="\$BUNDLE_DIR/lib"
+export VAMP_PATH="\$BUNDLE_DIR/lib"\${VAMP_PATH:+:\$VAMP_PATH}
+
+SELF=\$(basename "\$0")
+exec "\$BUNDLE_DIR/lib/\$SELF" "\$@"
+EOF
+ chmod +x $Frameworks/ardour-util.sh
+fi
+
+
# 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
if test x$SAE != x ; then
executables="$executables"
fi
+if test "$HAVE_SESSION_UTILS" = true ; then
+ for file in $Frameworks/${lower_case_appname}${major_version}-*; do
+ BN=$(basename $file)
+ executables="$executables ../lib/${BN}"
+ done
+fi
+
+if test -f "$Frameworks/ardour-vst-scanner"; then
+ executables="$executables ../lib/ardour-vst-scanner"
+fi
for exe in $executables; do
+ echo "Processing Executable: $exe"
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
@@ -477,7 +558,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`
@@ -492,7 +573,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"
@@ -524,7 +605,7 @@ rm -rf $PRODUCT_PKG_DIR
mkdir $PRODUCT_PKG_DIR
DMGWINBOTTOM=440
-DMGBACKGROUND=dmgbg.png
+DMGBACKGROUND=dmgbg
if [ x$SAE != x ] ; then
@@ -542,10 +623,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"
@@ -553,6 +631,28 @@ 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}/${HARRISONLV2}.${OSX_BENSID}.zip" \
+ -o "${CACHEDIR}/${HARRISONLV2}.${OSX_BENSID}.zip" \
+ "${HARRISONDSPURL}/${HARRISONLV2}.${OSX_BENSID}.zip"
+
+ mkdir -p "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2"
+ bsdtar -C "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2/" -xf \
+ "${CACHEDIR}/${HARRISONLV2}.${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)
@@ -576,23 +676,113 @@ 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 true; then
+ echo "Bundling General MIDI Synth LV2"
+ mkdir -p "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2"
+
+ for proj in x42-gmsynth; 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 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 x42-avldrums; 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" \
+ "${HARRISONDSPURL}/${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" \
+ "${HARRISONDSPURL}/harrison_vamp.${OSX_BENSID}.dylib"
+
+ cp "${CACHEDIR}/harrison_vamp.${OSX_BENSID}.dylib" \
+ "${PRODUCT_PKG_DIR}/${APPROOT}/lib/harrison_vamp.dylib"
+fi
+
+################################################################################
+
+if test x$DEMO_SESSION_URL != x ; then
+ mkdir -p $Shared/sessions
+ DEMO_SESSIONS=$(curl -s -S --fail $DEMO_SESSION_URL/index.txt)
+ for demo in $DEMO_SESSIONS; do
+ curl -s -S --fail -# -o $Shared/sessions/$demo $DEMO_SESSION_URL/$demo
+ done
+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
@@ -606,67 +796,89 @@ 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 3
+ 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 3
+ 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."