X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=tools%2Fosx_packaging%2Fosx_build;h=7502d73bf1112805f62a13a5859ac426a0e6e2ff;hb=bdc82f68e69c3f3ce37067b559aa01d605c2c8ff;hp=02f77dc22190cad2d6f2bcacb0129732f446f70c;hpb=cdd254033ef8243676faa95fead8f4b11d6a2a70;p=ardour.git diff --git a/tools/osx_packaging/osx_build b/tools/osx_packaging/osx_build index 02f77dc221..7502d73bf1 100755 --- a/tools/osx_packaging/osx_build +++ b/tools/osx_packaging/osx_build @@ -16,14 +16,20 @@ mkdir -p "$CACHEDIR" SAE= MIXBUS= +MIXBUS32C= WITH_HARVID=1 WITH_HARRISON_LV2= WITH_X42_LV2= -WITH_LADSPA=1 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 @@ -34,43 +40,59 @@ while [ $# -gt 0 ] ; do --sae) SAE=1 ; - WITH_LADSPA=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= ; - WITH_LADSPA=; 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_LADSPA=1; + 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= ; - WITH_LADSPA=1; STRIP= ; PRODUCT_PKG_DIR=Ardour ; shift ;; - --test) SAE= ; WITH_LADSPA=; STRIP= ; 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 @@ -79,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`" @@ -101,7 +122,7 @@ fi # setup directory structure -APPDIR=${APPNAME}${major_version}.app +APPDIR=${BUNDLENAME}.app APPROOT=$APPDIR/Contents Frameworks=$APPROOT/lib Resources=$APPROOT/Resources @@ -113,26 +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 @@ -151,49 +172,29 @@ 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="Ardour${major_version}-SAE" - EXECUTABLE=${appname} - 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" -elif test x$MIXBUS != x ; then - appname="Mixbus" - EXECUTABLE=${appname}${major_version} - 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" -else - appname="Ardour${major_version}" - EXECUTABLE=${appname} -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" @@ -205,7 +206,7 @@ sed -e "s?@ENV@?$env?g" \ -e "s?@VERSION@?$release_version?g" \ -e "s?@INFOSTRING@?$info_string?g" \ -e "s?@IDSUFFIX@?$EXECUTABLE?g" \ - -e "s?@BUNDLENAME@?${APPNAME}${major_version}?g" \ + -e "s?@BUNDLENAME@?$BUNDLENAME?g" \ -e "s?@EXECUTABLE@?$EXECUTABLE?g" < Info.plist.in > Info.plist # and plist strings sed -e "s?@APPNAME@?$appname?" \ @@ -238,6 +239,8 @@ cp $BUILD_ROOT/gtk2_ardour/ardour-$release_version $APPROOT/MacOS/$MAIN_EXECUTAB 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 @@ -325,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 @@ -356,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 @@ -378,6 +366,10 @@ 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 @@ -387,6 +379,12 @@ 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 @@ -411,6 +409,24 @@ 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\+\+' @@ -420,7 +436,7 @@ 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 @@ -463,20 +479,43 @@ 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 -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 /Contents/lib/LV2/ cp -R $BUILD_ROOT/libs/LV2 $Frameworks/ @@ -494,8 +533,19 @@ 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/$STDCPP)" | awk '{print $1}' | grep -v 'libjack\.'` ; do @@ -509,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` @@ -587,7 +637,7 @@ if file ${PRODUCT_PKG_DIR}/$APPROOT/MacOS/$MAIN_EXECUTABLE | grep -q x86_64; the OSX_BENSID=osx64 elif file ${PRODUCT_PKG_DIR}/$APPROOT/MacOS/$MAIN_EXECUTABLE | grep -q ppc; then OSX_ARCH=ppc - OSX_BENSID=ppc + OSX_BENSID=osxppc else OSX_ARCH=i386 OSX_BENSID=osx32 @@ -595,13 +645,13 @@ 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" + -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}/harrison_lv2s.${OSX_BENSID}.zip" + "${CACHEDIR}/${HARRISONLV2}.${OSX_BENSID}.zip" fi if test x$WITH_HARVID != x ; then @@ -644,37 +694,38 @@ fi ################################################################################ ### Mixbus plugins, etc -if test x$WITH_X42_LV2 != x ; then - echo "bundling x42 plugins" +if true; then + echo "Bundling General MIDI Synth LV2" mkdir -p "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2" - METERS_VERSION=$(curl -s -S http://x42-plugins.com/x42/osx/x42-meters.latest.txt) - rsync -a -q --partial \ - rsync://x42-plugins.com/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 - EQ_VERSION=$(curl -s -S http://x42-plugins.com/x42/osx/x42-eq.latest.txt) - rsync -a -q --partial \ - rsync://x42-plugins.com/x42/osx/x42-eq-lv2-osx-${EQ_VERSION}.zip \ - "$CACHEDIR/x42-eq-lv2-osx-${EQ_VERSION}.zip" - bsdtar -C "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2/" -xf \ - "$CACHEDIR/x42-eq-lv2-osx-${EQ_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 - SETBFREE_VERSION=$(curl -s -S http://x42-plugins.com/x42/osx/setBfree.latest.txt) - rsync -a -q --partial \ - rsync://x42-plugins.com/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" +fi - MIDIFILTER_VERSION=$(curl -s -S http://x42-plugins.com/x42/osx/x42-midifilter.latest.txt) - rsync -a -q --partial \ - rsync://x42-plugins.com/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" +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 -extract_family ${OSX_ARCH} ${file} -output ${file}.thin @@ -683,18 +734,39 @@ if test x$WITH_X42_LV2 != x ; then fi if test -n "$MIXBUS"; then - echo "deploying harrison tools for $OSX_BENSID" + echo "deploying harrison channelstrip for $OSX_BENSID" mkdir -p "${PRODUCT_PKG_DIR}/${APPROOT}/lib/ladspa/strip" curl -s -S --fail -# \ - -z "${CACHEDIR}/harrison_channelstrip.${OSX_BENSID}.so" \ - -o "${CACHEDIR}/harrison_channelstrip.${OSX_BENSID}.so" \ - "http://www.harrisonconsoles.com/mixbus/mb3/beta/harrison-dsp/harrison_channelstrip.${OSX_BENSID}.so" + -z "${CACHEDIR}/${HARRISONCHANNELSTRIP}.${OSX_BENSID}.so" \ + -o "${CACHEDIR}/${HARRISONCHANNELSTRIP}.${OSX_BENSID}.so" \ + "${HARRISONDSPURL}/${HARRISONCHANNELSTRIP}.${OSX_BENSID}.so" - cp "${CACHEDIR}/harrison_channelstrip.${OSX_BENSID}.so" \ - "${PRODUCT_PKG_DIR}/${APPROOT}/lib/ladspa/strip/harrison_channelstrip.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 @@ -768,7 +840,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