X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=tools%2Fosx_packaging%2Fosx_build;h=ca3db40ea3b78125e37bff4ad8d0c99152de5e1a;hb=72ac6bc8a69762b4b7503baa160f68077ba8b20e;hp=23d32e96681c7c7167090ad46f366fd76416e92d;hpb=82b2f27e57b3646a47c31921e8cc625c085462b9;p=ardour.git diff --git a/tools/osx_packaging/osx_build b/tools/osx_packaging/osx_build index 23d32e9668..ca3db40ea3 100755 --- a/tools/osx_packaging/osx_build +++ b/tools/osx_packaging/osx_build @@ -18,6 +18,7 @@ SAE= MIXBUS= WITH_HARVID=1 WITH_HARRISON_LV2= +WITH_X42_LV2= WITH_LADSPA=1 STRIP=1 PRINT_SYSDEPS= @@ -31,33 +32,34 @@ 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 ;; + --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 ;; + --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 ;; # @@ -99,7 +101,7 @@ fi # setup directory structure -APPDIR=${APPNAME}.app +APPDIR=${APPNAME}${major_version}.app APPROOT=$APPDIR/Contents Frameworks=$APPROOT/lib Resources=$APPROOT/Resources @@ -122,6 +124,7 @@ MidiMaps=$Shared/midi_maps ExportFormats=$Shared/export Templates=$Shared/templates PatchFiles=$Shared/patchfiles +LuaScripts=$Shared/scripts MackieControl=$Shared/mcp if [ x$PRINT_SYSDEPS != x ] ; then @@ -159,11 +162,13 @@ mkdir -p $Frameworks/modules mkdir -p $Etc mkdir -p $MackieControl mkdir -p $PatchFiles +mkdir -p $LuaScripts # maybe set variables env="" if test x$SAE != x ; then - appname="Ardour3/SAE" + appname="Ardour${major_version}-SAE" + EXECUTABLE=${appname} env="$envARDOUR_SAEtrue" # # current default for SAE version is German keyboard layout without a keypad @@ -172,6 +177,7 @@ if test x$SAE != x ; then 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 @@ -179,7 +185,8 @@ elif test x$MIXBUS != x ; then env="$envARDOUR_KEYBOARD_LAYOUTus-nokeypad" env="$envARDOUR_UI_CONFardour3_ui.conf" else - appname="Ardour3" + appname="Ardour${major_version}" + EXECUTABLE=${appname} fi # @@ -192,10 +199,14 @@ env="$envDYLIB_FALLBACK_LIBRARY_PATH/usr/local/lib:/opt/libLSEnvironment$envARDOUR_BUNDLEDtrue" + # edit plist sed -e "s?@ENV@?$env?g" \ -e "s?@VERSION@?$release_version?g" \ - -e "s?@INFOSTRING@?$info_string?g" < Info.plist.in > Info.plist + -e "s?@INFOSTRING@?$info_string?g" \ + -e "s?@IDSUFFIX@?$EXECUTABLE?g" \ + -e "s?@BUNDLENAME@?${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" \ @@ -213,14 +224,14 @@ 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 @@ -230,7 +241,7 @@ if test x$SAE != x ; then 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 +309,8 @@ fi # cp -R $GTKSTACK_ROOT/etc/* $Etc -echo "Copying all Pango modules ..." -cp -R $GTKSTACK_ROOT/lib/pango/1.8.0/modules/*.so $Frameworks/modules -echo "Copying all GDK Pixbuf loaders ..." -cp -R $GTKSTACK_ROOT/lib/gdk-pixbuf-2.0/2.10.0/loaders/*.so $Frameworks/modules -# charset alias file cp -R $GTKSTACK_ROOT/lib/charset.alias $Resources -# generate new Pango module file -cat > pangorc < $Resources/pango.modules -rm pangorc - -# generate a new GDK pixbufs loaders file -gdk-pixbuf-query-loaders | sed "s?$GTKSTACK_ROOT/lib/gdk-pixbuf-2.0/2.10.0/loaders/?@executable_path/../lib/modules/?" > $Resources/gdk-pixbuf.loaders - # We rely on clearlooks, so include a version from our own build tree # this one is special - we will set GTK_PATH to $Frameworks/gtkengines @@ -352,7 +347,7 @@ cp $BUILD_ROOT/libs/surfaces/control_protocol/libardourcp*.dylib $Frameworks cp $BUILD_ROOT/libs/panners/*/lib*.dylib $Panners # Backends -for backend in jack wavesaudio dummy; do +for backend in jack wavesaudio dummy coreaudio; do cp $BUILD_ROOT/libs/backends/$backend/lib*.dylib $Backends done @@ -380,6 +375,12 @@ 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 + 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 @@ -410,6 +411,12 @@ if test -f $BUILD_ROOT/libs/vfork/ardour-exec-wrapper ; then 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 @@ -417,12 +424,16 @@ while [ true ] ; 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,9 +456,7 @@ 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 @@ -456,8 +465,6 @@ cp $BUILD_ROOT/gtk2_ardour/clearlooks.rc $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 @@ -491,7 +498,7 @@ fi 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 @@ -517,7 +524,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,14 +582,26 @@ 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}/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 @@ -608,6 +627,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,35 +642,58 @@ if test x$WITH_HARVID != x ; then DMGBACKGROUND=${DMGBACKGROUND}xj fi -################################################################### +################################################################################ ### Mixbus plugins, etc -if test -n "$MIXBUS"; then - if file ${PRODUCT_PKG_DIR}/$APPROOT/MacOS/$MAIN_EXECUTABLE | grep -q x86_64; then - OSX_ARCH=x86_64 - else - OSX_ARCH=i386 - fi - +if test x$WITH_X42_LV2 != x ; then + echo "bundling x42 plugins" mkdir -p "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2" - # TODO use rsync://gareus.org/x42/ and cache locally - see harvid/xjadeo below - METERS_VERSION=$(curl -s -S http://gareus.org/x42/osx/x42-meters.latest.txt) - curl -s http://gareus.org/x42/osx/x42-meters-lv2-osx-${METERS_VERSION}.zip \ - | bsdtar -C "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2/" -xf - - - SETBFREE_VERSION=$(curl -s -S http://gareus.org/x42/osx/setBfree.latest.txt) - curl -s http://gareus.org/x42/osx/setBfree-lv2-osx-${SETBFREE_VERSION}.zip \ - | bsdtar -C "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2/" -xf - - - MIDIFILTER_VERSION=$(curl -s -S http://gareus.org/x42/osx/x42-midifilter.latest.txt) - curl -s http://gareus.org/x42/osx/x42-midifilter-lv2-osx-${MIDIFILTER_VERSION}.zip \ - | bsdtar -C "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2/" -xf - + 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" + + 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" + + 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" + + 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" 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 tools 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" + + cp "${CACHEDIR}/harrison_channelstrip.${OSX_BENSID}.so" \ + "${PRODUCT_PKG_DIR}/${APPROOT}/lib/ladspa/strip/harrison_channelstrip.so" fi ################################################################################ @@ -677,9 +727,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 @@ -701,6 +750,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 @@ -730,12 +780,13 @@ sync set -e echo "compressing Image ..." -# Umount the image -umount "${DiskDevice}" -hdiutil eject "${DiskDevice}" +# Umount the image ('eject' above may already have done that) +umount "${DiskDevice}" || true +hdiutil eject "${DiskDevice}" || true # Create a read-only version, use zlib compression hdiutil convert -format UDZO "${TMPDMG}" -imagekey zlib-level=9 -o "${UC_DMG}" +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 @@ -745,6 +796,9 @@ Rez -append ${ICNSTMP}.rsrc -o "$UC_DMG" SetFile -a C "$UC_DMG" rm ${ICNSTMP}.icns ${ICNSTMP}.rsrc +fi + +rm -rf ${PRODUCT_PKG_DIR} echo echo "packaging suceeded."