Freeze harvid/xjadeo PPC version
[ardour.git] / tools / osx_packaging / osx_build
index 1673db36224a67256ae1b105e20b759f352cd268..402cad208c086ba8b5965905a29c074d34fedaa7 100755 (executable)
@@ -16,13 +16,20 @@ mkdir -p "$CACHEDIR"
 
 SAE=
 MIXBUS=
+MIXBUS32C=
 WITH_HARVID=1
 WITH_HARRISON_LV2=
-WITH_LADSPA=1
+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
@@ -31,44 +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; 
-                 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
 
@@ -77,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`"
@@ -99,7 +122,7 @@ fi
 
 # setup directory structure
 
-APPDIR=${APPNAME}.app
+APPDIR=${BUNDLENAME}.app
 APPROOT=$APPDIR/Contents
 Frameworks=$APPROOT/lib
 Resources=$APPROOT/Resources
@@ -111,25 +134,26 @@ Resources=$APPROOT/Resources
 Shared=$Resources
 Etc=$Resources
 Locale=$Resources/locale
-#
-# Bundled Plugins live in a top level folder
-# 
-Plugins=$APPROOT/Plugins
+
 Surfaces=$Frameworks/surfaces
 Panners=$Frameworks/panners
 Backends=$Frameworks/backends
 MidiMaps=$Shared/midi_maps
+PluginMetadata=$Shared/plugin_metadata
 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/* ; do
        if ! file $file | grep -qs Mach-O ; then
            continue
        fi
@@ -148,54 +172,42 @@ echo "Building new app directory structure ..."
 
 mkdir -p $APPROOT/MacOS
 mkdir -p $APPROOT/Resources
-mkdir -p $Plugins
 mkdir -p $Surfaces
 mkdir -p $Panners
 mkdir -p $Backends
 mkdir -p $MidiMaps
 mkdir -p $ExportFormats
-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="$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>"
-elif test x$MIXBUS != x ; then
-    appname="Mixbus"
-    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>"
-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="$env<key>PATH</key><string>/usr/local/bin:/opt/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>"
 env="$env<key>DYLIB_FALLBACK_LIBRARY_PATH</key><string>/usr/local/lib:/opt/lib</string>"
 
 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" \
-    -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" \
@@ -213,24 +225,26 @@ 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/
 
@@ -298,24 +312,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 <<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
 
@@ -330,20 +328,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
@@ -361,12 +345,11 @@ for f in $BUILD_ROOT/../export/*.preset $BUILD_ROOT/../export/*.format ; do
     cp "$f" $ExportFormats ; 
 done
 
-# Session and Route templates
-#for f in $BUILD_ROOT/../templates/* ; do 
-#    if [ -d "$f" ] ; then
-#        cp -r "$f" $Templates ; 
-#    fi
-#done
+#Session templates
+cp -av $BUILD_ROOT/../templates $Templates
+
+# PluginMetadata
+cp -av $BUILD_ROOT/../plugin_metadata $PluginMetadata
 
 # MidiMaps
 # got to be careful with names here
@@ -380,12 +363,28 @@ 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
 
@@ -410,19 +409,47 @@ if test -f $BUILD_ROOT/libs/vfork/ardour-exec-wrapper ; then
     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
+
+# dynamically loaded NSS/SSL libs
+nsslibs="libsoftokn3.dylib libnsspem.dylib libnssckbi.dylib libfreebl3.dylib libnssdbm3.dylib libplds4.dylib"
+for nsslib in $nsslibs; do
+       cp $GTKSTACK_ROOT/lib/$nsslib $Frameworks/ || 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
-    for file in $APPROOT/MacOS/* $Frameworks/* $Frameworks/modules/* $Panners/*.dylib $Backends/*.dylib $Surfaces/*.dylib $Plugins/*.so ; do 
+    for file in $APPROOT/MacOS/* $Frameworks/* $Frameworks/modules/* $Panners/*.dylib $Backends/*.dylib $Surfaces/*.dylib ; do
        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
 
-       deps=`otool -L $file | awk '{print $1}' | egrep "($GTKSTACK_ROOT|$ARDOURSTACK_ROOT|/opt/|/local/|libs/)" | grep -v 'libjack\.' | grep -v "$(basename $file)"`
+       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`
@@ -445,31 +472,50 @@ 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 $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
 
+mkdir ${Resources}/icons
+mkdir ${Resources}/resources
 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
+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 <app>/Contents/lib/LV2/
 cp -R $BUILD_ROOT/libs/LV2 $Frameworks/
 
@@ -487,11 +533,22 @@ 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
@@ -502,7 +559,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`
     
@@ -517,7 +574,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"
@@ -575,20 +632,38 @@ 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
-       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}/${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)
-       XJADEO_VERSION=$(curl -s -S http://ardour.org/files/video-tools/xjadeo_version.txt)
+       if test $OSX_ARCH = ppc; then
+               # EOL
+               HARVID_VERSION=v0.8.2
+               XJADEO_VERSION=v0.8.8
+       else
+               HARVID_VERSION=$(curl -s -S http://ardour.org/files/video-tools/harvid_version.txt)
+               XJADEO_VERSION=$(curl -s -S http://ardour.org/files/video-tools/xjadeo_version.txt)
+       fi
        MULTIARCH=osx
        echo "copying harvid and xjadeo ..."
 
@@ -608,6 +683,14 @@ 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}}"
@@ -615,45 +698,81 @@ if test x$WITH_HARVID != x ; then
        DMGBACKGROUND=${DMGBACKGROUND}xj
 fi
 
-###################################################################
+################################################################################
 ### Mixbus plugins, etc
-if test -n "$MIXBUS"; then
-       echo "bundling x42 plugins"
-       if file ${PRODUCT_PKG_DIR}/$APPROOT/MacOS/$MAIN_EXECUTABLE | grep -q x86_64; then
-               OSX_ARCH=x86_64
-       else
-               OSX_ARCH=i386
-       fi
-
+if true; then
+       echo "Bundling General MIDI Synth LV2"
        mkdir -p "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2"
 
-       METERS_VERSION=$(curl -s -S http://gareus.org/x42/osx/x42-meters.latest.txt)
-       rsync -a -q --partial \
-               rsync://gareus.org/x42/osx/x42-meters-lv2-osx-${METERS_VERSION}.zip \
-               "$CACHEDIR/x42-meters-lv2-osx-${METERS_VERSION}.zip"
-       bsdtar -C "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2/" -xf \
-               "$CACHEDIR/x42-meters-lv2-osx-${METERS_VERSION}.zip"
+       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
 
-       SETBFREE_VERSION=$(curl -s -S http://gareus.org/x42/osx/setBfree.latest.txt)
-       rsync -a -q --partial \
-               rsync://gareus.org/x42/osx/setBfree-lv2-osx-${SETBFREE_VERSION}.zip \
-               "$CACHEDIR/setBfree-lv2-osx-${SETBFREE_VERSION}.zip"
-       bsdtar -C "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2/" -xf \
-               "$CACHEDIR/setBfree-lv2-osx-${SETBFREE_VERSION}.zip"
+       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
 
-       MIDIFILTER_VERSION=$(curl -s -S http://gareus.org/x42/osx/x42-midifilter.latest.txt)
-       rsync -a -q --partial \
-               rsync://gareus.org/x42/osx/x42-midifilter-lv2-osx-${MIDIFILTER_VERSION}.zip \
-               "$CACHEDIR/x42-midifilter-lv2-osx-${MIDIFILTER_VERSION}.zip"
-       bsdtar -C "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2/" -xf \
-               "$CACHEDIR/x42-midifilter-lv2-osx-${MIDIFILTER_VERSION}.zip"
+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 x42-whirl x42-limiter; 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 -thin ${OSX_ARCH} ${file} -output ${file}.thin
+               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
@@ -686,9 +805,8 @@ TMPDMG="${TMPDMG}.dmg"
 
 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 ' ')
-newfs_hfs -v "${VOLNAME}" "${DiskDevice}"
 mount -t hfs -o nobrowse "${DiskDevice}" "${MNTPATH}"
 
 cp -r ${PRODUCT_PKG_DIR}/* "${MNTPATH}" || exit
@@ -710,6 +828,7 @@ osascript << EOF
     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
@@ -727,7 +846,16 @@ osascript << EOF
       close
       open
       update without registering applications
-      delay 5
+      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
@@ -745,6 +873,7 @@ hdiutil eject "${DiskDevice}" || true
 # 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
@@ -754,6 +883,8 @@ Rez -append ${ICNSTMP}.rsrc -o "$UC_DMG"
 SetFile -a C "$UC_DMG"
 
 rm ${ICNSTMP}.icns ${ICNSTMP}.rsrc
+fi
+
 rm -rf ${PRODUCT_PKG_DIR}
 
 echo