ARDOURSTACK_ROOT=$HOME/a3/inst
BUILD_ROOT=../../build
+# where harvid and xjadeo binaries are cached
+if test -z "$CACHEDIR" -o ! -d "$CACHEDIR"; then
+ CACHEDIR=`pwd`
+fi
+
SAE=
MIXBUS=
+WITH_HARVID=1
WITH_LADSPA=1
STRIP=1
PRINT_SYSDEPS=
# specific build flags
#
+ --noharvid) WITH_HARVID= ; shift ;;
--noladspa) WITH_LADSPA= ; shift ;;
--nostrip) STRIP= ; shift ;;
--sysdeps) PRINT_SYSDEPS=1; shift ;;
esac
done
-#release_version=`grep -m 1 '[^A-Za-z_]OSX_VERSION = ' ../../wscript | cut -d' ' -f 3 | sed "s/'//g"`
-release_version=3.0
-revision=`grep -m 1 'revision =' ../../libs/ardour/revision.cc | cut -d' ' -f 8 | sed 's/[^0-9]//g'`
-echo "Version is $release_version / $revision"
-info_string="$release_version/$revision built on `hostname` by `whoami` on `date`"
+if test -z "$PRODUCT_PKG_DIR" -o -z "$APPNAME"; then
+ echo "application or product-name was not specified"
+ 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`"
+else
+ info_string="$release_version built on `hostname` by `whoami` on `date`"
+fi
echo "Info string is $info_string"
# setup directory structure
Plugins=$APPROOT/Plugins
Surfaces=$Frameworks/surfaces
Panners=$Frameworks/panners
+Backends=$Frameworks/backends
MidiMaps=$Shared/midi_maps
ExportFormats=$Shared/export
Templates=$Shared/templates
PatchFiles=$Shared/patchfiles
MackieControl=$Shared/mcp
+VFork=$Frameworks/vfork
if [ x$PRINT_SYSDEPS != x ] ; then
#
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 $Shared/templates
mkdir -p $Etc
mkdir -p $MackieControl
+mkdir -p $PatchFiles
+mkdir -p $VFork
# maybe set variables
env=""
# edit plist
sed -e "s?@ENV@?$env?g" \
- -e "s?@VERSION@?$release_version/$revision?g" \
+ -e "s?@VERSION@?$release_version?g" \
-e "s?@INFOSTRING@?$info_string?g" < Info.plist.in > Info.plist
# and plist strings
sed -e "s?@APPNAME@?$appname?" \
-e "s?@ENV@?$env?g" \
- -e "s?@VERSION@?$release_version/$revision?g" \
+ -e "s?@VERSION@?$release_version?g" \
-e "s?@INFOSTRING@?$info_string?g" < InfoPlist.strings.in > Resources/InfoPlist.strings || exit 1
# copy static files
# copy locale files
if test x$WITH_NLS != x ; then
echo "NLS support ..."
- echo "I hope you remembered to run scons msgupdate!"
+ echo "I hope you remembered to run waf i18n"
LINGUAS=
- for file in $BUILD_ROOT/gtk2_ardour/*.mo
- do
- lang=`basename $file | sed 's/\.mo//'`
- mkdir -p $Locale/$lang/LC_MESSAGES
- cp $file $Locale/$lang/LC_MESSAGES/gtk2_ardour.mo
- LINGUAS="$LINGUAS $lang"
- done
- for file in $BUILD_ROOT/libs/ardour/*.mo
- do
- lang=`basename $file | sed 's/\.mo//'`
- mkdir -p $Locale/$lang/LC_MESSAGES
- cp $file $Locale/$lang/LC_MESSAGES/libardour.mo
+
+ for pkg in gtk2_ardour libs/ardour libs/gtkmm2ext ; do
+ files=`find ../../$pkg -name "*.mo"`
+
+ #
+ # the package name is appended with a number so that
+ # it can be parallel installed during a regular install
+ # with older (and newer) versions. it is just the major
+ # number of the release (i.e. leading digits)
+ #
+
+ vsuffix=`echo $release_version | sed 's/^\([0-9][0-9]*\).*/\1/'`
+
+ if [ -z "$files" ]; then
+ echo ""
+ echo "!!!! WARNING !!!! - Did not find any .mo files in ../../$pkg"
+ echo ""
+ fi
+
+ for file in $files
+ do
+ echo $file
+ lang=`basename $file | sed 's/\.mo//'`
+ mkdir -p $Locale/$lang/LC_MESSAGES
+ cp $file $Locale/$lang/LC_MESSAGES/`basename $pkg`$vsuffix.mo
+ echo copy $file to $Locale/$lang/LC_MESSAGES/`basename $pkg`$vsuffix.mo
+ if echo $LINGUAS | grep $lang >/dev/null 2>&1 ; then
+ :
+ else
+ LINGUAS="$LINGUAS $lang"
+ fi
+ done
done
+
for l in $LINGUAS
do
if [ -d $GTKSTACK_ROOT/share/locale/$l ] ; then
cp -R $GTKSTACK_ROOT/etc/* $Etc
echo "Copying all Pango modules ..."
-cp -R $GTKSTACK_ROOT/lib/pango/1.6.0/modules/*.so $Frameworks/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
# generate new Pango module file
cat > pangorc <<EOF
[Pango]
-ModulesPath=$GTKSTACK_ROOT/lib/pango/1.6.0/modules
+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.6.0/modules/?@executable_path/../lib/modules/?" > $Resources/pango.modules
+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
# Panners
cp $BUILD_ROOT/libs/panners/*/lib*.dylib $Panners
+# Backends
+for backend in jack wavesaudio dummy; do
+ cp $BUILD_ROOT/libs/backends/$backend/lib*.dylib $Backends
+done
# Export Formats/Presets
for f in $BUILD_ROOT/../export/*.preset $BUILD_ROOT/../export/*.format ; do
done
# Session and Route templates
-for f in $BUILD_ROOT/../templates/* ; do
- if [ -d "$f" ] ; then
- cp -r "$f" $Templates ;
- fi
-done
+#for f in $BUILD_ROOT/../templates/* ; do
+# if [ -d "$f" ] ; then
+# cp -r "$f" $Templates ;
+# fi
+#done
# MidiMaps
# got to be careful with names here
# Suil modules
cp $ARDOURSTACK_ROOT/lib/suil-0/lib* $Frameworks
+# VST scanner app and wrapper script, if they exist
+cp $BUILD_ROOT/libs/fst/ardour-vst-scanner* $Frameworks/ || true
+
+# vfork wrapper
+mkdir -p $Frameworks/vfork
+cp $BUILD_ROOT/libs/vfork/ardour-exec-wrapper $VFork
+
+
while [ true ] ; do
missing=false
- for file in $APPROOT/MacOS/* $Frameworks/* $Frameworks/modules/* $Panners/*.dylib $Surfaces/*.dylib $Plugins/*.so ; do
+ for file in $APPROOT/MacOS/* $Frameworks/* $Frameworks/modules/* $Panners/*.dylib $Backends/*.dylib $Surfaces/*.dylib $Plugins/*.so ; do
if ! file $file | grep -qs Mach-O ; then
continue
fi
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/ardour_system_sae.rc $Resources/ardour_system.rc
- echo cp $BUILD_ROOT/ardour_system_sae.rc $Resources/ardour_system.rc
cp $BUILD_ROOT/instant.xml.sae $Resources/instant.xml
echo cp $BUILD_ROOT/instant.xml.sae $Resources/instant.xml
else
- cp ../../ardour_system.rc $Resources/ardour_system.rc
+ cp ../../system_config $Resources/system_config
cp ../../instant.xml $Resources/instant.xml
echo cp ../../instant.xml $Resources/instant.xml
fi
-cp ../../gtk2_ardour/ardour3_ui_default.conf $Resources
-cp ../../gtk2_ardour/ardour3_ui_default.conf $Resources/ardour3_ui.conf
-cp $BUILD_ROOT/gtk2_ardour/ardour3_ui_light.rc $Resources
-cp $BUILD_ROOT/gtk2_ardour/ardour3_ui_dark.rc $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
# go through and recursively remove any .svn dirs in the bundle
rm -rf $svndir
done
+# install bundled LV2s to <app>/Contents/lib/LV2/
+cp -R $BUILD_ROOT/libs/LV2 $Frameworks/
+
# now fix up the executables
echo "Fixing up executable dependency names ..."
executables=$MAIN_EXECUTABLE
echo "Fixing up library names ..."
# now do the same for all the libraries we include
-for libdir in $Frameworks $Frameworks/modules $Surfaces $Panners ; do
+for libdir in $Frameworks $Frameworks/modules $Surfaces $Panners $Backends ; do
libbase=`basename $libdir`
rm -rf $PRODUCT_PKG_DIR
mkdir $PRODUCT_PKG_DIR
+DMGWINBOTTOM=440
+DMGBACKGROUND=dmgbg.png
+
if [ x$SAE != x ] ; then
# SAE packaging
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}}"
else
echo "Creating $APPNAME packaging directory"
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)
+ MULTIARCH=osx
+ echo "copying harvid and xjadeo ..."
+
+ rsync -Pa \
+ rsync://ardour.org/video-tools/harvid-osx-${HARVID_VERSION}.tgz \
+ "$CACHEDIR/harvid-${MULTIARCH}-${HARVID_VERSION}.tgz"
+
+ rsync -Pa \
+ rsync://ardour.org/video-tools/jadeo-${XJADEO_VERSION:1}.dmg \
+ "$CACHEDIR/jadeo-${XJADEO_VERSION:1}.dmg"
+
+ tar -x -z \
+ -C $PRODUCT_PKG_DIR/$APPROOT \
+ -f "$CACHEDIR/harvid-${MULTIARCH}-${HARVID_VERSION}.tgz" || exit 1
+
+ JADEO=$(hdiutil attach "$CACHEDIR/jadeo-${XJADEO_VERSION:1}.dmg" | grep Apple_HFS | grep dev/ | cut -f 3)
+ cp -r "${JADEO}/Jadeo.app" "$PRODUCT_PKG_DIR/"
+ hdiutil detach "${JADEO}"
+
+ DMGWINBOTTOM=580
+ YPOS=$[ $DMGWINBOTTOM - 300 ]
+ XJADEOPOS="set position of item \"Jadeo.app\" of container window to {310, ${YPOS}}"
+
+ DMGBACKGROUND=dmgbgxj.png
+fi
+
echo "Building DMG ..."
-# UC_DMG=$APPNAME-${release_version}-${revision}-UC.dmg
-# FINAL_DMG=$APPNAME-${release_version}-${revision}.dmg
-UC_DMG=$APPNAME-${release_version}-${revision}.dmg
+# UC_DMG=$APPNAME-${release_version}-UC.dmg
+# FINAL_DMG=$APPNAME-${release_version}.dmg
+UC_DMG=$APPNAME-$release_version.dmg
VOLNAME=$APPNAME-$release_version
# TODO use mktemp
-MNTPATH=`mktemp -d -t ardourimg`
+export TMPDIR=`pwd`
+MNTPATH=`mktemp -d -t /ardourimg`
TMPDMG=`mktemp -t ardour`
ICNSTMP=`mktemp -t ardouricon`
-DMGSIZE=$[ `du -sm "$PRODUCT_PKG_DIR" | cut -f 1` * 1049 / 1000 + 3 ]
+EXTRA_SPACE_MB=30
+DMGMEGABYTES=$[ `du -sk "$PRODUCT_PKG_DIR" | cut -f 1` * 1024 / 1048576 + $EXTRA_SPACE_MB ]
+
+echo "DMG MB = " $DMGMEGABYTES
rm -f $UC_DMG "$TMPDMG" "${TMPDMG}.dmg" "$ICNSTMP"
rm -rf "$MNTPATH"
TMPDMG="${TMPDMG}.dmg"
-hdiutil create -megabytes $DMGSIZE "$TMPDMG"
+hdiutil create -megabytes $DMGMEGABYTES "$TMPDMG"
DiskDevice=$(hdid -nomount "$TMPDMG" | grep Apple_HFS | cut -f 1 -d ' ')
newfs_hfs -v "${VOLNAME}" "${DiskDevice}"
mount -t hfs "${DiskDevice}" "${MNTPATH}"
-cp -r ${PRODUCT_PKG_DIR}/${APPDIR} "${MNTPATH}" || exit
+cp -r ${PRODUCT_PKG_DIR}/* "${MNTPATH}" || exit
mkdir "${MNTPATH}/.background"
-cp -vi dmgbg.png "${MNTPATH}/.background/dmgbg.png"
+cp -vi ${DMGBACKGROUND} "${MNTPATH}/.background/dmgbg.png"
echo "setting DMG background ..."
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 the bounds of container window to {400, 200, 800, 440}
+ set the bounds of container window to {400, 200, 800, '${DMGWINBOTTOM}'}
set theViewOptions to the icon view options of container window
set arrangement of theViewOptions to not arranged
set icon size of theViewOptions to 64
make new alias file at container window to POSIX file "/Applications" with properties {name:"Applications"}
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
hdiutil convert -format UDZO "${TMPDMG}" -imagekey zlib-level=9 -o "${UC_DMG}"
# Delete the temporary files
rm "$TMPDMG"
-rmdir "$MNTPATH"
+rm -rf "$MNTPATH"
echo "setting file icon ..."
cp ${PRODUCT_PKG_DIR}/$Resources/appIcon.icns ${ICNSTMP}.icns
-/usr/bin/sips -i ${ICNSTMP}.icns
-/Developer/Tools/DeRez -only icns ${ICNSTMP}.icns > ${ICNSTMP}.rsrc
-/Developer/Tools/Rez -append ${ICNSTMP}.rsrc -o "$UC_DMG"
-/Developer/Tools/SetFile -a C "$UC_DMG"
+sips -i ${ICNSTMP}.icns
+DeRez -only icns ${ICNSTMP}.icns > ${ICNSTMP}.rsrc
+Rez -append ${ICNSTMP}.rsrc -o "$UC_DMG"
+SetFile -a C "$UC_DMG"
rm ${ICNSTMP}.icns ${ICNSTMP}.rsrc