correctly package color theme files for both linux and OS X
[ardour.git] / tools / osx_packaging / osx_build
index ca5c8570fa1eab2885da9cca4cf9912108adb8b1..a63f92c4bd8d321f1378ee980acba96771c1465f 100755 (executable)
@@ -1,5 +1,7 @@
 #!/bin/bash
 
 #!/bin/bash
 
+set -e
+
 # script for pulling together a MacOSX app bundle.
 
 GTKSTACK_ROOT=$HOME/gtk/inst
 # script for pulling together a MacOSX app bundle.
 
 GTKSTACK_ROOT=$HOME/gtk/inst
@@ -14,12 +16,19 @@ mkdir -p "$CACHEDIR"
 
 SAE=
 MIXBUS=
 
 SAE=
 MIXBUS=
+MIXBUS32C=
 WITH_HARVID=1
 WITH_HARVID=1
+WITH_HARRISON_LV2=
+WITH_X42_LV2=
 WITH_LADSPA=1
 STRIP=1
 PRINT_SYSDEPS=
 WITH_NLS=
 
 WITH_LADSPA=1
 STRIP=1
 PRINT_SYSDEPS=
 WITH_NLS=
 
+: ${HARRISONCHANNELSTRIP=harrison_channelstrip}
+
+. ../define_versions.sh
+
 while [ $# -gt 0 ] ; do
     echo "arg = $1"
     case $1 in
 while [ $# -gt 0 ] ; do
     echo "arg = $1"
     case $1 in
@@ -28,34 +37,46 @@ while [ $# -gt 0 ] ; do
        # top level build targets
        #
 
        # 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 ;;
+       --sae)
+               SAE=1 ;
+               WITH_LADSPA=1;
+               STRIP= ;
+               PRODUCT_PKG_DIR=ArdourSAE ;
+               APPNAME=Ardour ;
+               shift ;;
+       --mixbus) MIXBUS=1;
+               WITH_HARRISON_LV2=1 ;
+               WITH_X42_LV2=1 ;
+               WITH_NLS=1 ;
+               SAE= ;
+               WITH_LADSPA=;
+               STRIP= ;
+               PRODUCT_PKG_DIR=Mixbus;
+               APPNAME=Mixbus ;
+               shift ;;
+       --mixbus32c) MIXBUS=1;
+               MIXBUS32C=1;
+               WITH_HARRISON_LV2=1 ;
+               WITH_X42_LV2=1 ;
+               WITH_NLS=1 ;
+               SAE= ;
+               WITH_LADSPA=;
+               STRIP= ;
+               PRODUCT_PKG_DIR=Mixbus32C;
+               APPNAME=Mixbus32C-${major_version} ;
+               major_version=""
+               shift ;;
+       --public)
+               SAE= ;
+               WITH_LADSPA=1;
+               PRODUCT_PKG_DIR=Ardour;
+               APPNAME=Ardour ;
+               shift ;;
+       --allinone) SAE= ;
+               WITH_LADSPA=1;
+               STRIP= ;
+               PRODUCT_PKG_DIR=Ardour ;
+               shift ;;
        --test) SAE= ; WITH_LADSPA=; STRIP= ; shift ;;
 
        #
        --test) SAE= ; WITH_LADSPA=; STRIP= ; shift ;;
 
        #
@@ -67,6 +88,7 @@ while [ $# -gt 0 ] ; do
        --nostrip) STRIP= ; shift ;;
        --sysdeps) PRINT_SYSDEPS=1; shift ;;
        --nls) WITH_NLS=1 ; shift ;;
        --nostrip) STRIP= ; shift ;;
        --sysdeps) PRINT_SYSDEPS=1; shift ;;
        --nls) WITH_NLS=1 ; shift ;;
+       --chanstrip) HARRISONCHANNELSTRIP=$2 ; shift; shift ;;
     esac
 done
 
     esac
 done
 
@@ -75,7 +97,6 @@ if test -z "$PRODUCT_PKG_DIR" -o -z "$APPNAME"; then
        exit 1
 fi
 
        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`"
 echo "Version is $release_version"
 if [ "x$commit" != "x" ] ; then
     info_string="$release_version ($commit) built on `hostname` by `whoami` on `date`"
@@ -84,9 +105,20 @@ else
 fi
 echo "Info string is $info_string"
 
 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
 
 # setup directory structure
 
-APPDIR=${APPNAME}.app
+APPDIR=${APPNAME}${major_version}.app
 APPROOT=$APPDIR/Contents
 Frameworks=$APPROOT/lib
 Resources=$APPROOT/Resources
 APPROOT=$APPDIR/Contents
 Frameworks=$APPROOT/lib
 Resources=$APPROOT/Resources
@@ -109,8 +141,9 @@ MidiMaps=$Shared/midi_maps
 ExportFormats=$Shared/export
 Templates=$Shared/templates
 PatchFiles=$Shared/patchfiles
 ExportFormats=$Shared/export
 Templates=$Shared/templates
 PatchFiles=$Shared/patchfiles
+LuaScripts=$Shared/scripts
 MackieControl=$Shared/mcp
 MackieControl=$Shared/mcp
-VFork=$Frameworks/vfork
+Themes=$Shared/themes
 
 if [ x$PRINT_SYSDEPS != x ] ; then
 #
 
 if [ x$PRINT_SYSDEPS != x ] ; then
 #
@@ -147,30 +180,32 @@ mkdir -p $Frameworks/modules
 mkdir -p $Etc
 mkdir -p $MackieControl
 mkdir -p $PatchFiles
 mkdir -p $Etc
 mkdir -p $MackieControl
 mkdir -p $PatchFiles
-mkdir -p $VFork
+mkdir -p $LuaScripts
+mkdir -p $Themes
 
 # maybe set variables
 env=""
 if test x$SAE != x ; then
 
 # maybe set variables
 env=""
 if test x$SAE != x ; then
-    appname="Ardour3/SAE"
+    appname="Ardour${major_version}-SAE"
+    EXECUTABLE=${appname}
     env="$env<key>ARDOUR_SAE</key><string>true</string>"
     #
     # current default for SAE version is German keyboard layout without a keypad
     #
     env="$env<key>ARDOUR_KEYBOARD_LAYOUT</key><string>de-nokeypad</string>"
     env="$env<key>ARDOUR_UI_CONF</key><string>ardour3_ui_sae.conf</string>"
     env="$env<key>ARDOUR_SAE</key><string>true</string>"
     #
     # current default for SAE version is German keyboard layout without a keypad
     #
     env="$env<key>ARDOUR_KEYBOARD_LAYOUT</key><string>de-nokeypad</string>"
     env="$env<key>ARDOUR_UI_CONF</key><string>ardour3_ui_sae.conf</string>"
-    env="$env<key>ARDOUR3_UI_RC</key><string>ardour3_ui_dark_sae.rc</string>"
 elif test x$MIXBUS != x ; then
 elif test x$MIXBUS != x ; then
-    appname="Ardour3/Mixbus"
+    appname=$APPNAME
+    EXECUTABLE=${appname}${major_version}
     env="$env<key>ARDOUR_MIXBUS</key><string>true</string>"
     #
     # current default for MIXBUS version is US keyboard layout without a keypad
     #
     env="$env<key>ARDOUR_KEYBOARD_LAYOUT</key><string>us-nokeypad</string>"
     env="$env<key>ARDOUR_UI_CONF</key><string>ardour3_ui.conf</string>"
     env="$env<key>ARDOUR_MIXBUS</key><string>true</string>"
     #
     # current default for MIXBUS version is US keyboard layout without a keypad
     #
     env="$env<key>ARDOUR_KEYBOARD_LAYOUT</key><string>us-nokeypad</string>"
     env="$env<key>ARDOUR_UI_CONF</key><string>ardour3_ui.conf</string>"
-    env="$env<key>ARDOUR3_UI_RC</key><string>ardour3_ui_dark.rc</string>"
 else
 else
-    appname="Ardour3"
+    appname="Ardour${major_version}"
+    EXECUTABLE=${appname}
 fi
 
 #
 fi
 
 #
@@ -183,10 +218,14 @@ env="$env<key>DYLIB_FALLBACK_LIBRARY_PATH</key><string>/usr/local/lib:/opt/lib</
 
 env="<key>LSEnvironment</key><dict>$env<key>ARDOUR_BUNDLED</key><string>true</string></dict>"
 
 
 env="<key>LSEnvironment</key><dict>$env<key>ARDOUR_BUNDLED</key><string>true</string></dict>"
 
+
 # edit plist
 sed -e "s?@ENV@?$env?g" \
     -e "s?@VERSION@?$release_version?g" \
 # 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@?${APPNAME}${major_version}?g" \
+    -e "s?@EXECUTABLE@?$EXECUTABLE?g" < Info.plist.in > Info.plist
 # and plist strings
 sed -e "s?@APPNAME@?$appname?" \
     -e "s?@ENV@?$env?g" \
 # and plist strings
 sed -e "s?@APPNAME@?$appname?" \
     -e "s?@ENV@?$env?g" \
@@ -199,34 +238,35 @@ cp Info.plist $APPROOT
 cp -R Resources $APPROOT
 
 # ..and clean up
 cp -R Resources $APPROOT
 
 # ..and clean up
-rm Info.plist
-rm -rf Resources
+rm -f Info.plist
+rm -f Resources/InfoPlist.strings
 
 #
 # if we build a bundle without jack, then
 
 #
 # 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.
 #
 
 # 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
 
 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
 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/
 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
 
 # copy locale files
 if test x$WITH_NLS != x ; then
@@ -290,24 +330,8 @@ fi
 # 
 
 cp -R $GTKSTACK_ROOT/etc/* $Etc
 # 
 
 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
 
 cp -R $GTKSTACK_ROOT/lib/charset.alias $Resources
 
-# generate new Pango module file
-cat > pangorc <<EOF 
-[Pango]
-ModulesPath=$GTKSTACK_ROOT/lib/pango/1.8.0/modules
-EOF
-env PANGO_RC_FILE=pangorc $GTKSTACK_ROOT/bin/pango-querymodules | sed "s?$GTKSTACK_ROOT/lib/pango/1.8.0/modules/?@executable_path/../lib/modules/?" > $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
 
 # 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
 
@@ -344,7 +368,7 @@ cp $BUILD_ROOT/libs/surfaces/control_protocol/libardourcp*.dylib $Frameworks
 cp $BUILD_ROOT/libs/panners/*/lib*.dylib $Panners
 
 # Backends
 cp $BUILD_ROOT/libs/panners/*/lib*.dylib $Panners
 
 # Backends
-for backend in jack wavesaudio dummy; do
+for backend in jack wavesaudio dummy coreaudio; do
     cp $BUILD_ROOT/libs/backends/$backend/lib*.dylib $Backends
 done
 
     cp $BUILD_ROOT/libs/backends/$backend/lib*.dylib $Backends
 done
 
@@ -372,6 +396,12 @@ for x in $BUILD_ROOT/../patchfiles/*.midnam ; do
     cp "$x" $PatchFiles
 done
 
     cp "$x" $PatchFiles
 done
 
+# Lua Script Files
+# got to be careful with names here
+for x in $BUILD_ROOT/../scripts/*.lua ; do
+    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
 # MackieControl data
 # got to be careful with names here
 for x in $BUILD_ROOT/../mcp/*.device $BUILD_ROOT/../mcp/*.profile ; do
@@ -393,15 +423,21 @@ fi
 
 # VST scanner app and wrapper script, if they exist
 if test -d $BUILD_ROOT/libs/fst ; then
 
 # VST scanner app and wrapper script, if they exist
 if test -d $BUILD_ROOT/libs/fst ; then
-    cp $BUILD_ROOT/libs/fst/ardour-vst-scanner* $Frameworks/ || true
+    cp $BUILD_ROOT/libs/fst/ardour-vst-scanner* $Frameworks/
 fi
 
 # vfork wrapper
 if test -f $BUILD_ROOT/libs/vfork/ardour-exec-wrapper ; then
     mkdir -p $Frameworks/vfork
 fi
 
 # vfork wrapper
 if test -f $BUILD_ROOT/libs/vfork/ardour-exec-wrapper ; then
     mkdir -p $Frameworks/vfork
-    cp $BUILD_ROOT/libs/vfork/ardour-exec-wrapper $VFork
+    cp $BUILD_ROOT/libs/vfork/ardour-exec-wrapper $Frameworks/
 fi
 
 fi
 
+# 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
 
 while [ true ] ; do 
     missing=false
@@ -409,7 +445,16 @@ while [ true ] ; do
        if ! file $file | grep -qs Mach-O ; then
            continue
        fi
        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`
        # echo -n "."
        for dep in $deps ; do
            base=`basename $dep`
@@ -432,41 +477,26 @@ echo
 
 echo "Copying other stuff to $APPDIR  ..."
 
 
 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/ardour.menus $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/instant.xml.sae $Resources/instant.xml
-    echo cp $BUILD_ROOT/instant.xml.sae $Resources/instant.xml
-else
-    cp ../../system_config $Resources/system_config
-    cp ../../instant.xml $Resources/instant.xml
-    echo cp ../../instant.xml $Resources/instant.xml
-fi
 cp $BUILD_ROOT/gtk2_ardour/default_ui_config $Resources
 cp $BUILD_ROOT/gtk2_ardour/default_ui_config $Resources
-cp $BUILD_ROOT/gtk2_ardour/dark_fonts.rc $Resources
-cp $BUILD_ROOT/gtk2_ardour/dark_styles.rc $Resources
-cp $BUILD_ROOT/gtk2_ardour/light_fonts.rc $Resources
-cp $BUILD_ROOT/gtk2_ardour/light_styles.rc $Resources
-cp $BUILD_ROOT/gtk2_ardour/ui_dark.rc $Resources
-cp $BUILD_ROOT/gtk2_ardour/ui_light.rc $Resources
-cp $BUILD_ROOT/gtk2_ardour/widgets.rc $Resources
-
-cp -r ../../gtk2_ardour/icons $Resources
-cp -r ../../gtk2_ardour/pixmaps $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
+cp $BUILD_ROOT/gtk2_ardour/clearlooks.rc $Resources
+
+# Copied directly from source tree
+
+mkdir ${Resources}/icons
+mkdir ${Resources}/resources
+cp ../../system_config $Resources/system_config
+cp ../../instant.xml $Resources/instant.xml
+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/
+
+
+# Themes: only install those named for this app
+lower_case_appname=`echo $APPNAME | tr '[:upper:]' '[:lower:]'`
+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
 
 # go through and recursively remove any .svn dirs in the bundle
 for svndir in `find $APPDIR -name .svn -type dir`; do
@@ -476,6 +506,14 @@ done
 # install bundled LV2s to <app>/Contents/lib/LV2/
 cp -R $BUILD_ROOT/libs/LV2 $Frameworks/
 
 # install bundled LV2s to <app>/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
 # now fix up the executables
 echo "Fixing up executable dependency names ..."
 executables=$MAIN_EXECUTABLE
@@ -486,7 +524,7 @@ fi
 for exe in $executables; do
     EXE=$APPROOT/MacOS/$exe
     changes=""
 for exe in $executables; do
     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
       base=`basename $lib`
       changes="$changes -change $lib @executable_path/../lib/$base"
     done
@@ -497,7 +535,7 @@ done
 
 echo "Fixing up library names ..."
 # now do the same for all the libraries we include
 
 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`
     
 
     libbase=`basename $libdir`
     
@@ -512,7 +550,7 @@ for libdir in $Frameworks $Frameworks/modules $Surfaces $Panners $Backends ; do
         # change all the dependencies
        
        changes=""
         # 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"
            base=`basename $lib`
            if echo $lib | grep -s libbase; then
                changes="$changes -change $lib @executable_path/../$libbase/$base"
@@ -544,7 +582,7 @@ rm -rf $PRODUCT_PKG_DIR
 mkdir $PRODUCT_PKG_DIR
 
 DMGWINBOTTOM=440
 mkdir $PRODUCT_PKG_DIR
 
 DMGWINBOTTOM=440
-DMGBACKGROUND=dmgbg.png
+DMGBACKGROUND=dmgbg
 
 if [ x$SAE != x ] ; then
        
 
 if [ x$SAE != x ] ; then
        
@@ -562,10 +600,7 @@ elif [ x$MIXBUS != x ] ; then
 
     echo "Creating Mixbus packaging directory"
     mv $APPDIR $PRODUCT_PKG_DIR/
 
     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"
 else 
 
     echo "Creating $APPNAME packaging directory"
@@ -573,6 +608,28 @@ else
 
 fi
 
 
 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}/harrison_lv2s.${OSX_BENSID}.zip" \
+               -o "${CACHEDIR}/harrison_lv2s.${OSX_BENSID}.zip" \
+               "http://www.harrisonconsoles.com/mixbus/mb3/beta/harrison-dsp/harrison_lv2s.${OSX_BENSID}.zip"
+
+       mkdir -p "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2"
+       bsdtar -C "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2/" -xf \
+               "${CACHEDIR}/harrison_lv2s.${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)
 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)
@@ -596,22 +653,81 @@ if test x$WITH_HARVID != x ; then
        cp -r "${JADEO}/Jadeo.app" "$PRODUCT_PKG_DIR/"
        hdiutil detach "${JADEO}"
 
        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}}"
 
        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 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; 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
 
 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" \
+               "http://www.harrisonconsoles.com/mixbus/mb3/beta/harrison-dsp/${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" \
+               "http://www.harrisonconsoles.com/mixbus/mb3/beta/harrison-dsp/harrison_vamp.${OSX_BENSID}.dylib"
+
+       cp "${CACHEDIR}/harrison_vamp.${OSX_BENSID}.dylib" \
+               "${PRODUCT_PKG_DIR}/${APPROOT}/lib/harrison_vamp.dylib"
+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
 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
 
 VOLNAME=$APPNAME-$release_version
 
-# TODO use mktemp
-export TMPDIR=`pwd`
 MNTPATH=`mktemp -d -t ardourimg`
 TMPDMG=`mktemp -t ardour`
 ICNSTMP=`mktemp -t ardouricon`
 MNTPATH=`mktemp -d -t ardourimg`
 TMPDMG=`mktemp -t ardour`
 ICNSTMP=`mktemp -t ardouricon`
@@ -626,14 +742,15 @@ mkdir -p "$MNTPATH"
 
 TMPDMG="${TMPDMG}.dmg"
 
 
 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 ' ')
 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 -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 "setting DMG background ..."
 
@@ -650,6 +767,7 @@ osascript << EOF
     activate
     tell disk "${DISKNAME}"
       open
     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 current view of container window to icon view
       set toolbar visible of container window to false
       set statusbar visible of container window to false
@@ -676,17 +794,16 @@ EOF
 chmod -Rf go-w "${MNTPATH}"
 sync
 
 chmod -Rf go-w "${MNTPATH}"
 sync
 
+set -e
 echo "compressing Image ..."
 
 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}"
 # 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
 echo "setting file icon ..."
 
 cp ${PRODUCT_PKG_DIR}/$Resources/appIcon.icns ${ICNSTMP}.icns
@@ -696,6 +813,9 @@ Rez -append ${ICNSTMP}.rsrc -o "$UC_DMG"
 SetFile -a C "$UC_DMG"
 
 rm ${ICNSTMP}.icns ${ICNSTMP}.rsrc
 SetFile -a C "$UC_DMG"
 
 rm ${ICNSTMP}.icns ${ICNSTMP}.rsrc
+fi
+
+rm -rf ${PRODUCT_PKG_DIR}
 
 echo
 echo "packaging suceeded."
 
 echo
 echo "packaging suceeded."