don't bundle no-inst scripts
[ardour.git] / tools / osx_packaging / osx_build
index f3f235b120037f4e86b2abac031fdcd04e423804..68bb675626d0f93b947fa23abcaa3ac1f3e6ddfe 100755 (executable)
@@ -16,13 +16,19 @@ mkdir -p "$CACHEDIR"
 
 SAE=
 MIXBUS=
 
 SAE=
 MIXBUS=
+MIXBUS32C=
 WITH_HARVID=1
 WITH_HARRISON_LV2=
 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
@@ -31,33 +37,48 @@ 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; 
-                 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;
+               WITH_HARRISON_LV2=1 ;
+               WITH_X42_LV2=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 ;;
 
        #
@@ -69,6 +90,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
 
@@ -77,7 +99,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`"
@@ -99,7 +120,7 @@ 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
@@ -122,7 +143,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
+Themes=$Shared/themes
 
 if [ x$PRINT_SYSDEPS != x ] ; then
 #
 
 if [ x$PRINT_SYSDEPS != x ] ; then
 #
@@ -159,11 +182,14 @@ mkdir -p $Frameworks/modules
 mkdir -p $Etc
 mkdir -p $MackieControl
 mkdir -p $PatchFiles
 mkdir -p $Etc
 mkdir -p $MackieControl
 mkdir -p $PatchFiles
+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_SAE</key><string>true</string>"
     #
     # current default for SAE version is German keyboard layout without a keypad
@@ -171,7 +197,8 @@ if test x$SAE != x ; then
     env="$env<key>ARDOUR_KEYBOARD_LAYOUT</key><string>de-nokeypad</string>"
     env="$env<key>ARDOUR_UI_CONF</key><string>ardour3_ui_sae.conf</string>"
 elif test x$MIXBUS != x ; then
     env="$env<key>ARDOUR_KEYBOARD_LAYOUT</key><string>de-nokeypad</string>"
     env="$env<key>ARDOUR_UI_CONF</key><string>ardour3_ui_sae.conf</string>"
 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_MIXBUS</key><string>true</string>"
     #
     # current default for MIXBUS version is US keyboard layout without a keypad
@@ -179,7 +206,8 @@ elif test x$MIXBUS != x ; then
     env="$env<key>ARDOUR_KEYBOARD_LAYOUT</key><string>us-nokeypad</string>"
     env="$env<key>ARDOUR_UI_CONF</key><string>ardour3_ui.conf</string>"
 else
     env="$env<key>ARDOUR_KEYBOARD_LAYOUT</key><string>us-nokeypad</string>"
     env="$env<key>ARDOUR_UI_CONF</key><string>ardour3_ui.conf</string>"
 else
-    appname="Ardour3"
+    appname="Ardour${major_version}"
+    EXECUTABLE=${appname}
 fi
 
 #
 fi
 
 #
@@ -192,10 +220,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" \
@@ -213,24 +245,26 @@ 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/
 
@@ -298,24 +332,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
 
@@ -352,7 +370,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
 
@@ -380,6 +398,15 @@ 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
+         if test "${x: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
 # MackieControl data
 # got to be careful with names here
 for x in $BUILD_ROOT/../mcp/*.device $BUILD_ROOT/../mcp/*.profile ; do
@@ -410,6 +437,12 @@ if test -f $BUILD_ROOT/libs/vfork/ardour-exec-wrapper ; then
     cp $BUILD_ROOT/libs/vfork/ardour-exec-wrapper $Frameworks/
 fi
 
     cp $BUILD_ROOT/libs/vfork/ardour-exec-wrapper $Frameworks/
 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
@@ -417,12 +450,16 @@ while [ true ] ; do
        if ! file $file | grep -qs Mach-O ; then
            continue
        fi
        if ! file $file | grep -qs Mach-O ; then
            continue
        fi
+       # 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
 
 
        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/)" | grep -v 'libjack\.'`
+       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`
@@ -445,25 +482,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 $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
 
 # Copied directly from source tree
 
 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
 
 # Copied directly from source tree
 
+mkdir ${Resources}/icons
+mkdir ${Resources}/resources
 cp ../../system_config $Resources/system_config
 cp ../../instant.xml $Resources/instant.xml
 cp ../../system_config $Resources/system_config
 cp ../../instant.xml $Resources/instant.xml
-cp ../../gtk2_ardour/step_editing.bindings $Resources
-cp ../../gtk2_ardour/mixer.bindings $Resources
-cp -r ../../gtk2_ardour/icons $Resources
-cp -r ../../gtk2_ardour/pixmaps $Resources
-cp ../../gtk2_ardour/dark.colors $Resources
-cp -R ../../gtk2_ardour/splash.png $Shared
-cp -R ../../gtk2_ardour/small-splash.png $Shared
-cp -R ../../gtk2_ardour/ArdourMono.ttf $Shared
+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
@@ -491,7 +529,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
@@ -502,7 +540,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`
     
@@ -517,7 +555,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"
@@ -575,14 +613,26 @@ 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
 if test x$WITH_HARRISON_LV2 != x ; then
-       if file ${PRODUCT_PKG_DIR}/$APPROOT/MacOS/$MAIN_EXECUTABLE | grep -q x86_64; then
-               OSX_ARCH=osx64
-       else 
-               OSX_ARCH=osx32
-       fi
-       curl -s http://www.harrisonconsoles.com/mixbus/mb3/${OSX_ARCH}/harrison_lv2s.zip \
-               | bsdtar -C "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2/" -xf -
+       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
 fi
 
 if test x$WITH_HARVID != x ; then
@@ -608,6 +658,14 @@ 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}}"
@@ -615,6 +673,54 @@ if test x$WITH_HARVID != x ; then
        DMGBACKGROUND=${DMGBACKGROUND}xj
 fi
 
        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
+
+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
 echo "Building DMG ..."
 
 # UC_DMG=$APPNAME-${release_version}-UC.dmg
@@ -643,9 +749,8 @@ TMPDMG="${TMPDMG}.dmg"
 
 trap "rm -rf $MNTPATH $TMPDMG ${TMPDMG}.dmg $ICNSTMP" EXIT
 
 
 trap "rm -rf $MNTPATH $TMPDMG ${TMPDMG}.dmg $ICNSTMP" EXIT
 
-hdiutil create -megabytes $DMGMEGABYTES "$TMPDMG"
+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 -o nobrowse "${DiskDevice}" "${MNTPATH}"
 
 cp -r ${PRODUCT_PKG_DIR}/* "${MNTPATH}" || exit
 mount -t hfs -o nobrowse "${DiskDevice}" "${MNTPATH}"
 
 cp -r ${PRODUCT_PKG_DIR}/* "${MNTPATH}" || exit
@@ -667,6 +772,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
@@ -696,12 +802,13 @@ sync
 set -e
 echo "compressing Image ..."
 
 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}"
 
 # Create a read-only version, use zlib compression
 hdiutil convert -format UDZO "${TMPDMG}" -imagekey zlib-level=9 -o "${UC_DMG}"
 
+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
@@ -711,6 +818,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."