correctly copy vfork exec wrapper into right location in binary bundles on OS X and...
[ardour.git] / tools / linux_packaging / build
index b3323654074490bde478756ae6acf193655cba01..4e8ef72c47ca52610d57c81ee5691d81aae21aa9 100755 (executable)
@@ -14,6 +14,11 @@ ARDOURSTACK_ROOT=$HOME/a3/inst
 # the waf build tree to use when copying built/generated files
 BUILD_ROOT=../../build
 
+# where harvid and xjadeo binaries are cached
+if test -z "$CACHEDIR" -o ! -d "$CACHEDIR"; then
+       CACHEDIR=`pwd`
+fi
+
 MIXBUS=
 WITH_LADSPA=0
 WITH_HARVID=
@@ -24,6 +29,7 @@ EXTERNAL_JACK=
 VENDOR=Ardour ;
 BUILDTYPE=""
 
+
 if [ $# -eq 0 ] ; then
        echo ""  
        echo "ERROR - Please specify build type"
@@ -89,10 +95,14 @@ if test x$STRIP != xall -a x$STRIP != xnone -a x$STRIP != xsome ; then
     exit 1
 fi
 
-. ./define_versions.sh
+. ../define_versions.sh
 
-echo "Version is $version / $commit"
-info_string="$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`"
+else
+    info_string="$release_version built on `hostname` by `whoami` on `date`"
+fi
 echo "Info string is $info_string"
 
 # Figure out our CPU type
@@ -128,11 +138,11 @@ fi
 # setup directory structure
 
 if [ -z "${BUILDTYPE}" ]; then
-       APPDIR=${APPNAME}_${ARCH}-${version}
-       APP_VER_NAME=${APPNAME}-${version}
+       APPDIR=${APPNAME}_${ARCH}-${release_version}
+       APP_VER_NAME=${APPNAME}-${release_version}
 else
-       APPDIR=${APPNAME}_${ARCH}-${version}-${BUILDTYPE}
-       APP_VER_NAME=${APPNAME}-${version}-${BUILDTYPE}
+       APPDIR=${APPNAME}_${ARCH}-${release_version}-${BUILDTYPE}
+       APP_VER_NAME=${APPNAME}-${release_version}-${BUILDTYPE}
 fi
 
 APPBIN=$APPDIR/bin
@@ -144,6 +154,7 @@ Shared=$APPDIR/share
 Plugins=$APPLIB/plugins
 Surfaces=$APPLIB/surfaces
 Panners=$APPLIB/panners
+Backends=$APPLIB/backends
 
 Modules=$Libraries/modules
 Loaders=$Libraries/loaders
@@ -154,6 +165,7 @@ Locale=$Shared/locale
 MidiMaps=$Shared/midi_maps
 PatchFiles=$Shared/patchfiles
 MackieControl=$Shared/mcp
+VFork=$Libraries/vfork
 
 if [ x$PRINT_SYSDEPS != x ] ; then
 #
@@ -191,8 +203,10 @@ mkdir -p $PatchFiles
 mkdir -p $MackieControl
 mkdir -p $ExportFormats
 mkdir -p $Panners
+mkdir -p $Backends
 mkdir -p $Templates
 mkdir -p $Shared/doc
+mkdir -p $VFork
 
 # maybe set variables
 ENVIRONMENT=environment
@@ -220,8 +234,7 @@ echo export 'PATH=/usr/local/bin:/opt/bin:$PATH' >> $ENVIRONMENT
 
 sed -e "/^%ENV%/r $ENVIRONMENT" -e '/^%ENV%/d' -e 's/%VER%/'"${release_version}"'/' < ardour.sh.in > $APPBIN/ardour3
 rm $ENVIRONMENT && chmod 775 $APPBIN/ardour3
-# the 3.0 here is not the same as "release-version" because the latter may include "-betaN" etc.
-MAIN_EXECUTABLE=ardour-3.0
+MAIN_EXECUTABLE=ardour-${release_version}
 
 echo "Copying ardour executable ...."
 cp $BUILD_ROOT/gtk2_ardour/$MAIN_EXECUTABLE $APPBIN
@@ -297,7 +310,7 @@ fi
 
 cp -R $GTKSTACK_ROOT/etc/* $Etc
 echo "Copying all Pango modules ..."
-cp -R $GTKSTACK_ROOT/lib/pango/1.6.0/modules/*.so $Modules
+cp -R $GTKSTACK_ROOT/lib/pango/1.8.0/modules/*.so $Modules
 echo "Copying all GDK Pixbuf loaders ..."
 cp -R $GTKSTACK_ROOT/lib/gdk-pixbuf-2.0/2.10.0/loaders/*.so $Loaders
 
@@ -305,9 +318,9 @@ cp -R $GTKSTACK_ROOT/lib/gdk-pixbuf-2.0/2.10.0/loaders/*.so $Loaders
 
 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/?@ROOTDIR@/?" > $Etc/pango.modules.in
+env PANGO_RC_FILE=pangorc $GTKSTACK_ROOT/bin/pango-querymodules | sed "s?$GTKSTACK_ROOT/lib/pango/1.8.0/?@ROOTDIR@/?" > $Etc/pango.modules.in
 rm pangorc
 
 # Ditto for gdk-pixbuf loaders
@@ -377,14 +390,31 @@ done
 # Panners
 cp $BUILD_ROOT/libs/panners/*/lib*.so* $Panners
 
+# Backends
+for backend in jack wavesaudio ; do
+    cp $BUILD_ROOT/libs/backends/$backend/lib*.so* $Backends
+done
+
 # VAMP plugins that we use
 cp $BUILD_ROOT/libs/vamp-plugins/libardourvampplugins.so* $Libraries
 
 # Suil modules
 cp $ARDOURSTACK_ROOT/lib/suil-0/lib* $Libraries
 
+# VST scanner app (both LXVST as well as WIN-VST, 2in1)
+# (if build with wine: ardour-vst-scanner is a wrapper
+#  script for ardour-vst-scanner.exe.so, if VST is disabled
+#  neither binary nor script exists)
+cp $BUILD_ROOT/libs/fst/ardour-vst-scanner* $APPLIB || true
+
+# vfork wrapper
+cp $BUILD_ROOT/libs/vfork/ardour-exec-wrapper $VFork
+
+# ALSA device reservation tool (if available)
+cp $BUILD_ROOT/libs/ardouralsautil/ardour-request-device $APPLIB/ || true
+
 OURLIBDIR=$BUILD_ROOT/libs
-OURLIBS=$OURLIBDIR/vamp-sdk:$OURLIBDIR/surfaces/control_protocol:$OURLIBDIR/ardour:$OURLIBDIR/midi++2:$OURLIBDIR/pbd:$OURLIBDIR/rubberband:$OURLIBDIR/soundtouch:$OURLIBDIR/gtkmm2ext:$OURLIBDIR/sigc++2:$OURLIBDIR/glibmm2:$OURLIBDIR/gtkmm2/atk:$OURLIBDIR/gtkmm2/pango:$OURLIBDIR/gtkmm2/gdk:$OURLIBDIR/gtkmm2/gtk:$OURLIBDIR/libgnomecanvasmm:$OURLIBDIR/libsndfile:$OURLIBDIR/evoral:$OURLIBDIR/evoral/src/libsmf:$OURLIBDIR/audiographer:$OURLIBDIR/timecode:$OURLIBDIR/taglib:$OURLIBDIR/libltc:$OURLIBDIR/qm-dsp
+OURLIBS=$OURLIBDIR/vamp-sdk:$OURLIBDIR/surfaces/control_protocol:$OURLIBDIR/ardour:$OURLIBDIR/midi++2:$OURLIBDIR/pbd:$OURLIBDIR/rubberband:$OURLIBDIR/soundtouch:$OURLIBDIR/gtkmm2ext:$OURLIBDIR/sigc++2:$OURLIBDIR/glibmm2:$OURLIBDIR/gtkmm2/atk:$OURLIBDIR/gtkmm2/pango:$OURLIBDIR/gtkmm2/gdk:$OURLIBDIR/gtkmm2/gtk:$OURLIBDIR/canvas:$OURLIBDIR/libsndfile:$OURLIBDIR/evoral:$OURLIBDIR/evoral/src/libsmf:$OURLIBDIR/audiographer:$OURLIBDIR/timecode:$OURLIBDIR/taglib:$OURLIBDIR/libltc:$OURLIBDIR/qm-dsp:$OURLIBDIR/ardouralsautil
 
 echo $OURLIBS${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
 
@@ -521,8 +551,12 @@ fi
 # share stuff
 
 cp -R ../../gtk2_ardour/splash.png $Shared
+cp -R ../../gtk2_ardour/small-splash.png $Shared
 cp -R ../../gtk2_ardour/ArdourMono.ttf $Shared
 
+# install bundled LV2s to <app>/lib/LV2/
+cp -R $BUILD_ROOT/libs/LV2 $APPLIB/
+
 # go through and recursively remove any .svn dirs in the bundle
 for svndir in `find $APPDIR -name .svn -type d`; do
        rm -rf $svndir
@@ -530,16 +564,32 @@ done
 
 if test x$WITH_HARVID != x ; then
        cd $APPBIN
-       HARVID_VERSION=$(curl http://ardour.org/files/video-tools/latest_version_numer.txt)
-       curl -L http://ardour.org/files/video-tools/harvid-${MULTIARCH}-${HARVID_VERSION}.tgz \
-               | tar -x -z --exclude=README --exclude=harvid.1 --strip-components=1 || exit 1
+       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)
+
+       rsync -Pa \
+               rsync://ardour.org/video-tools/harvid-${MULTIARCH}-${HARVID_VERSION}.tgz \
+               "$CACHEDIR/harvid-${MULTIARCH}-${HARVID_VERSION}.tgz"
+
+       rsync -Pa \
+               rsync://ardour.org/video-tools/xjadeo-${MULTIARCH}-${XJADEO_VERSION}.tgz \
+               "$CACHEDIR/xjadeo-${MULTIARCH}-${XJADEO_VERSION}.tgz"
+
+       tar -x -z \
+               --exclude=README --exclude=harvid.1 --strip-components=1 \
+               -f "$CACHEDIR/harvid-${MULTIARCH}-${HARVID_VERSION}.tgz" || exit 1
+
+       tar -x -z \
+               --exclude=README --exclude=xjadeo.1 --strip-components=1 \
+               -f "$CACHEDIR/xjadeo-${MULTIARCH}-${XJADEO_VERSION}.tgz" || exit 1
+       mv xjadeo xjremote
        cd -
 fi
 
 #
 # Add the uninstaller
 #
-sed -e "s/%REPLACE_PGM%/${APPNAME}/" -e "s/%REPLACE_VENDOR%/${VENDOR}/" -e "s/%REPLACE_VERSION%/${version}/" -e "s/%REPLACE_TYPE%/${BUILDTYPE}/" < uninstall.sh.in > $APPBIN/${APP_VER_NAME}.uninstall.sh
+sed -e "s/%REPLACE_PGM%/${APPNAME}/" -e "s/%REPLACE_VENDOR%/${VENDOR}/" -e "s/%REPLACE_VERSION%/${release_version}/" -e "s/%REPLACE_TYPE%/${BUILDTYPE}/" < uninstall.sh.in > $APPBIN/${APP_VER_NAME}.uninstall.sh
 chmod a+x $APPBIN/${APP_VER_NAME}.uninstall.sh
 
 #Sanity Check file