13
0
livetrax/tools/linux_packaging/build
Robin Gareus 233a82d5f9
Separate xjadeo and harvid packaging (and remove 32c)
This is mainly for the benefit of traxlive, which needs
ffmpeg to encode mp3 or import encoded files, without
support for video.
2024-05-03 03:52:57 +02:00

884 lines
25 KiB
Bash
Executable File

#!/bin/bash
# script for pulling together a Linux app bundle.
#
# This will create a bundle for a x86_64 architecture.
# Execute this script and then use `package; to build
# the installer.
# where the GTK stack is installed
GTKSTACK_ROOT=$HOME/gtk/inst
# the waf build tree to use when copying built/generated files
BUILD_ROOT=../../build
. ../define_versions.sh
# where harvid and xjadeo binaries are cached
if test -z "$CACHEDIR" -o ! -d "$CACHEDIR"; then
CACHEDIR=`pwd`
fi
MIXBUS=
WITH_HARRISON_LV2=
WITH_COMMERCIAL_X42_LV2=
WITH_GRATIS_X42_LV2=
WITH_GMSYNYTH=
WITH_HARVID=
WITH_XJADEO=
STRIP=all
PRINT_SYSDEPS=
WITH_NLS=
EXTERNAL_JACK=
VENDOR=Ardour ;
EXENAME=ardour
BUILDTYPE=""
NOSTRIP="libsuil|libserd|libsord|liblilv|libsratom|liblrdf|libardour|libpbd|libevoral"
: ${HARRISONCHANNELSTRIP=harrison_channelstrip}
: ${HARRISONLV2=harrison_lv2s-n}
: ${HARRISONDSPURL=http://rsrc.harrisonconsoles.com/plugins/releases/public}
if [ $# -eq 0 ] ; then
echo ""
echo "ERROR - Please specify build type"
echo " --public"
echo " --mixbus"
echo ""
exit 1
fi
while [ $# -gt 0 ] ; do
echo "arg = $1"
case $1 in
#
# top level build targets
#
--mixbus)
MIXBUS=1;
WITH_HARRISON_LV2=1 ;
WITH_COMMERCIAL_X42_LV2=1
WITH_GRATIS_X42_LV2=1
WITH_GMSYNYTH=1
WITH_HARVID=1
WITH_XJADEO=1
WITH_NLS=1 ;
STRIP=all
APPNAME=Mixbus ;
VENDOR=Harrison ;
EXENAME=mixbus ;
shift ;;
--livetrax)
LIVETRAX=1 ;
STRIP=all ;
WITH_NLS=1 ;
APPNAME=LiveTrax ;
WITHOUT_GMSYNYTH=1 ;
shift ;;
--public)
WITH_HARRISON_LV2=1 ;
WITH_GMSYNYTH=1
WITH_HARVID=1
WITH_XJADEO=1
WITH_NLS=1 ;
STRIP=all ;
APPNAME=Ardour ;
shift ;;
--allinone)
WITH_NLS= ;
STRIP=all;
shift ;;
--test) STRIP= ; shift ;;
#
# specific build flags
#
--nojack) INTERNAL_JACK= ; shift ;;
--strip) STRIP=$2 ; shift ; shift ;;
--sysdeps) PRINT_SYSDEPS=1; shift ;;
--nls) WITH_NLS=1 ; shift ;;
--harvid) shift ;;
--gcc5abi) shift ;;
--chanstrip) HARRISONCHANNELSTRIP=$2 ; shift; shift ;;
*)
#catch all for unknown arguments
echo ""
echo "!!! ERROR !!! - Unknown argument $1"
echo ""
exit 1
;;
esac
done
if test x$STRIP != xall -a x$STRIP != xnone -a x$STRIP != xsome ; then
echo "Unknown strip option \"$STRIP\""
echo "Legal values are: all, none, some"
exit 1
fi
. ../define_versions.sh
lower_case_appname=`echo $APPNAME | tr '[:upper:]' '[:lower:]'`
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
case `uname -m` in
x86_64|amd64|AMD64)
echo "Architecture is x86_64"
ARCH='x86_64'
WARCH='x86_64'
HARCH='linux64'
ARCH_BITS='64-bit'
MULTIARCH='x86_64-linux-gnu'
;;
*)
echo ""
echo "ERROR - Unknown architecture `uname -m`"
echo ""
exit 1
;;
esac
if [ "$DEBUG" = "T" ]; then
BUILDTYPE="dbg"
fi
if [ "$FREEBI" = "T" ]; then
BUILDTYPE="demo"
fi
if [ "$DEBUG$FREEBI" = "TT" ]; then
BUILDTYPE="demo-dbg"
fi
if [ x$DEBUG = xT ]; then
if [ x$STRIP = xall ] ; then
echo "A debug build with --strip all makes no sense - STRIP reset to \"some\""
STRIP=some
fi
fi
# setup directory structure
if [ -z "${BUILDTYPE}" ]; then
APPDIR=${APPNAME}_${ARCH}-${release_version}
APP_VER_NAME=${APPNAME}-${release_version}
else
APPDIR=${APPNAME}_${ARCH}-${release_version}-${BUILDTYPE}
APP_VER_NAME=${APPNAME}-${release_version}-${BUILDTYPE}
fi
APPBIN=$APPDIR/bin
APPLIB=$APPDIR/lib
Libraries=$APPLIB
Etc=$APPDIR/etc
Shared=$APPDIR/share
Plugins=$APPLIB/plugins
Surfaces=$APPLIB/surfaces
Panners=$APPLIB/panners
Backends=$APPLIB/backends
Themes=$Shared/themes
Templates=$Shared/templates
LRDFPresets=$Shared/rdf
PluginMetadata=$Shared/plugin_metadata
MixerSettings=$Shared/mixer_settings
ExportFormats=$Shared/export
Locale=$Shared/locale
MidiMaps=$Shared/midi_maps
PatchFiles=$Shared/patchfiles
LuaScripts=$Shared/scripts
MediaClips=$Shared/media
WebSurfaces=$Shared/web_surfaces
MackieControl=$Shared/mcp
OSC=$Shared/osc
if [ x$PRINT_SYSDEPS != x ] ; then
#
# print system dependencies
#
for file in $APPBIN/* $Libraries/* $Plugins/*.so ; do
if ! file $file | grep -qs Mach-O ; then
continue
fi
otool -L $file | awk '{print $1}' | egrep -v "(^@executable_path|^Ardour[0-9][.0-9]*.app)"
done | sort | uniq
exit 0
fi
echo "Removing old $APPDIR tree ..."
rm -rf $APPDIR/
echo "Building new app directory structure ..."
# only bother to make the longest paths
mkdir -p $APPDIR
mkdir -p $APPBIN
mkdir -p $APPLIB
mkdir -p $Etc
mkdir -p $Shared
mkdir -p $Themes
mkdir -p $Locale
mkdir -p $Surfaces
mkdir -p $MidiMaps
mkdir -p $PatchFiles
mkdir -p $LuaScripts
mkdir -p $MackieControl
mkdir -p $OSC
mkdir -p $ExportFormats
mkdir -p $Panners
mkdir -p $Backends
mkdir -p $Shared/doc
# maybe set variables
ENVIRONMENT=environment
rm -f $ENVIRONMENT
touch $ENVIRONMENT
if test x$MIXBUS != x ; then
echo export ARDOUR_MIXBUS=true >> $ENVIRONMENT
#
# current default for MIXBUS version is US keyboard layout without a keypad
#
echo export ARDOUR_KEYBOARD_LAYOUT=us-nokeypad >> $ENVIRONMENT
echo export ARDOUR_UI_CONF=ardour3_ui.conf >> $ENVIRONMENT
fi
#
# if we're not going to bundle JACK, make sure we can find
# jack in the places where it might be
#
echo export 'PATH="/usr/local/bin:/opt/bin:$PATH"' >> $ENVIRONMENT
sed -e "/^%ENV%/r $ENVIRONMENT" -e '/^%ENV%/d' -e 's/%VER%/'"${release_version}"'/;s/%EXENAME%/'"${EXENAME}"'/' < ardour.sh.in > $APPBIN/${EXENAME}${major_version}
rm $ENVIRONMENT && chmod 775 $APPBIN/${EXENAME}${major_version}
echo "Copying ardour executable ...."
if test -d $BUILD_ROOT/vst; then
#cp -v $BUILD_ROOT/gtk2_ardour/libgtk2_ardour.so $APPLIB/
cp -v $BUILD_ROOT/gtk2_ardour/ardour-${release_version}-vst.exe.so $APPBIN/${EXENAME}-${release_version}
else
cp -v $BUILD_ROOT/gtk2_ardour/ardour-${release_version}* $APPBIN/${EXENAME}-${release_version}
fi
if test x$STRIP = xall ; then
strip -s $APPBIN/${EXENAME}-${release_version}
fi
# copy locale files
# note that at present(feb 2011), the .mo files end up in the source tree which is
# not really as it should be.
if test x$WITH_NLS != x ; then
echo "NLS support ..."
echo "I hope you remembered to run scons msgupdate!"
LINGUAS=
for pkg in gtk2_ardour libs/ardour libs/gtkmm2ext libs/tk/ytk ; 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
GTK_MESSAGES="atk10.mo gdk-pixbuf.mo gtk20-properties.mo gtk20.mo atk10.mo glib20.mo"
LOCALEROOT=$GTKSTACK_ROOT/share/locale
for l in $LINGUAS ; do
echo "Copying GTK i18n files for $l..."
for MO in $GTK_MESSAGES ; do
if [ -f $LOCALEROOT/$l/LC_MESSAGES/$MO ] ; then
cp $LOCALEROOT/$l/LC_MESSAGES/$MO $Locale/$l/LC_MESSAGES
else
# try with just the language spec
just_lang=`echo $l | sed 's/_[A-Z][A-Z]$//'`
if [ -f $LOCALEROOT/$just_lang/LC_MESSAGES/$MO ] ; then
cp $LOCALEROOT/$just_lang/LC_MESSAGES/$MO $Locale/$just_lang/LC_MESSAGES
fi
fi
done
done
else
echo "Skipping NLS support"
fi
# We rely on clearlooks, so include a version from our own build tree
# this one is special - we will set GTK_PATH to $Libraries/gtkengines
GTK_ENGINE_DIR=$Libraries/gtkengines/engines
mkdir -p $GTK_ENGINE_DIR
echo "Copying GTK engines ..."
cp $BUILD_ROOT/libs/clearlooks-newer/libclearlooks.so $Libraries
(cd $GTK_ENGINE_DIR && ln -s ../../libclearlooks.so . )
# Control Surfaces
cp $BUILD_ROOT/libs/surfaces/*/libardour_*.so* $Surfaces
cp $BUILD_ROOT/libs/ctrl-interface/*/libardour_*.so* $Libraries
# MidiMaps
# got to be careful with names here
for x in $BUILD_ROOT/../share/midi_maps/*.map ; do
cp "$x" $MidiMaps
done
# MIDNAM Patch Files
# got to be careful with names here
for x in $BUILD_ROOT/../share/patchfiles/*.midnam ; do
cp "$x" $PatchFiles
done
# Lua Scripts Files
# got to be careful with names here
for x in $BUILD_ROOT/../share/scripts/*.lua ; do
BN=$(basename $x)
if test "${BN:0:1}" = "_"; then
continue;
fi
cp "$x" $LuaScripts
done
# recursively copy web-surface html/js
cp -a $BUILD_ROOT/../share/web_surfaces $WebSurfaces
rm $WebSurfaces/wscript
# recursively copy clips/media
cp -a $BUILD_ROOT/../share/media $MediaClips
rm $MediaClips/wscript
# MackieControl data
# got to be careful with names here
for x in $BUILD_ROOT/../share/mcp/*.device $BUILD_ROOT/../share/mcp/*.profile ; do
cp "$x" $MackieControl
done
# OSC data
# got to be careful with names here
for x in $BUILD_ROOT/../share/osc/*.preset ; do
cp "$x" $OSC
done
# Mixbus MixerSettings (if any)
for x in $BUILD_ROOT/../mixer_settings/*.lua ; do
mkdir -p $MixerSettings # create on demand
cp "$x" $MixerSettings
done
#Session templates
cp -av $BUILD_ROOT/../share/templates $Templates
#LADSPA Presets
cp -av $BUILD_ROOT/../share/rdf $LRDFPresets
# PluginMetadata
cp -av $BUILD_ROOT/../share/plugin_metadata $PluginMetadata
# ExportFormats
# got to be careful with names here
for x in $BUILD_ROOT/../share/export/*.preset $BUILD_ROOT/../share/export/*.format ; do
cp "$x" $ExportFormats
done
# Panners
cp $BUILD_ROOT/libs/panners/*/lib*.so* $Panners
# Backends
for backend in jack alsa dummy wavesaudio pulseaudio; 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
cp $BUILD_ROOT/libs/vamp-pyin/libardourvamppyin.so $Libraries
# Suil modules (new dir 'build-stack')
if test -d $BUILD_ROOT/libs/tk/suil/ ; then
cp $BUILD_ROOT/libs/tk/suil/libsuil_*_in_gtk2.so $Libraries
elif test -d $GTKSTACK_ROOT/lib/suil-0/ ; then
cp $GTKSTACK_ROOT/lib/suil-0/lib* $Libraries
fi
# 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)
if test -d $BUILD_ROOT/libs/fst ; then
cp $BUILD_ROOT/libs/fst/ardour-vst-scanner* $APPLIB || true
cp $BUILD_ROOT/libs/fst/ardour-vst3-scanner* $APPLIB || true
if test x$STRIP = xall ; then
strip -s $APPLIB/ardour-vst-scanner*
strip -s $APPLIB/ardour-vst3-scanner*
fi
fi
# vfork wrapper
if test -f $BUILD_ROOT/libs/vfork/ardour-exec-wrapper ; then
cp $BUILD_ROOT/libs/vfork/ardour-exec-wrapper $APPLIB
if test x$STRIP = xall ; then
strip -s $APPLIB/ardour-exec-wrapper
fi
fi
# ALSA device reservation tool (if available)
if test -f $BUILD_ROOT/libs/ardouralsautil/ardour-request-device; then
cp $BUILD_ROOT/libs/ardouralsautil/ardour-request-device $APPLIB/ || true
if test x$STRIP = xall ; then
strip -s $APPLIB/ardour-request-device
fi
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 $APPLIB/
if test x$STRIP = xall ; then
strip -s $APPLIB/${BN}
fi
ln -s ../lib/ardour-util.sh $APPBIN/${BN}
HAVE_SESSION_UTILS=true
done
if test -x $BUILD_ROOT/luasession/luasession; then
BN=${lower_case_appname}${major_version}-lua
cp -v $BUILD_ROOT/luasession/luasession $APPLIB/$BN
if test x$STRIP = xall ; then
strip -s $APPLIB/${BN}
fi
ln -s ../lib/ardour-util.sh $APPBIN/${BN}
HAVE_SESSION_UTILS=true
fi
if test "$HAVE_SESSION_UTILS" = true ; then
cat >> $APPLIB/ardour-util.sh << EOF
#!/bin/sh
BIN_DIR=\$(dirname \$(readlink -f \$0))
INSTALL_DIR=\$(dirname \$BIN_DIR)
export LD_LIBRARY_PATH=\$INSTALL_DIR/lib\${LD_LIBRARY_PATH:+:\$LD_LIBRARY_PATH}
export ARDOUR_DATA_PATH=\$INSTALL_DIR/share
export ARDOUR_CONFIG_PATH=\$INSTALL_DIR/etc
export ARDOUR_DLL_PATH=\$INSTALL_DIR/lib
export VAMP_PATH=\$INSTALL_DIR/lib\${VAMP_PATH:+:\$VAMP_PATH}
SELF=\$(basename \$0)
exec "\$INSTALL_DIR/lib/\$SELF" "\$@"
EOF
chmod +x $APPLIB/ardour-util.sh
fi
cp $BUILD_ROOT/libs/ardour-avahi $APPLIB/ardour-avahi
chmod +x $APPLIB/ardour-avahi
OURLIBDIR=$BUILD_ROOT/libs
OURLIBS=$OURLIBDIR/tk/ydk-pixbuf:$OURLIBDIR/tk/ztk:$OURLIBDIR/tk/ydk:$OURLIBDIR/tk/ytk:$OURLIBDIR/tk/suil:$OURLIBDIR/tk/ztkmm:$OURLIBDIR/tk/ydkmm:$OURLIBDIR/tk/ytkmm:$OURLIBDIR/ctrl-interface/midi_surface:$OURLIBDIR/ctrl-interface/control_protocol:$OURLIBDIR/ardour:$OURLIBDIR/midi++2:$OURLIBDIR/pbd:$OURLIBDIR/gtkmm2ext:$OURLIBDIR/glibmm2:$OURLIBDIR/canvas:$OURLIBDIR/widgets:$OURLIBDIR/waveview:$OURLIBDIR/evoral:$OURLIBDIR/evoral/src/libsmf:$OURLIBDIR/audiographer:$OURLIBDIR/temporal:$OURLIBDIR/libltc:$OURLIBDIR/qm-dsp:$OURLIBDIR/ardouralsautil:$OURLIBDIR/ptformat:$OURLIBDIR/aaf:$BUILD_ROOT/gtk2_ardour
echo $OURLIBS${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
checkedIdx=0
# these are dynamically loaded by NSS
deplibs="libfreeblpriv3.so libsoftokn3.so libnsspem.so"
cp -v $GTKSTACK_ROOT/lib/libsoftokn3.so $Libraries/
cp -v $GTKSTACK_ROOT/lib/libfreeblpriv3.so $Libraries/
cp -v $GTKSTACK_ROOT/lib/libnsspem.so $Libraries/
chrpath -r foo $Libraries/libsoftokn3.so
chrpath -r foo $Libraries/libfreeblpriv3.so
chrpath -r foo $Libraries/libnsspem.so
while [ true ] ; do
missing=false
filelist=`find $APPLIB/ -type f`
filelist="$APPBIN/${EXENAME}-${release_version} $filelist"
for file in $filelist ; do
if ! file $file | grep -qs ELF ; then
continue
fi
# speed this up a bit by not checking things multiple times.
for i in "${depCheckedList[@]}"; do
if [ $i == $file ]; then
continue 2
fi
done
depCheckedList[$checkIdx]=$file
checkIdx=$(($checkIdx + 1))
# ignore suil/qt wrappers - the plugin will pull in QT4.
if echo $file | grep -qs 'libsuil_.*qt[45]' ; then continue; fi
# do not include libjack, nor libwine
deps=`LD_LIBRARY_PATH=$OURLIBS${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} ldd $file | grep -v libwine.so | awk '{print $3}'`
echo -n "."
for dep in $deps ; do
if test "not" = ${dep}; then
echo ""
echo "!!! ERROR !!! - Missing dependent library for $file."
echo "Searched: " $OURLIBS${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
echo ""
(LD_LIBRARY_PATH=$OURLIBS${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} ldd $file)
echo ""
echo "!!! ERROR !!! - See Above"
exit 1
fi
# don't use anything mapped at a specific address
if echo $dep | grep -qs '0x' ; then continue; fi
# don't include any distro libraries
if echo $dep | grep -qs "^/lib/" ; then continue; fi
if echo $dep | grep -qs "^/usr/lib/" ; then continue; fi
if echo $dep | grep -qs "^/usr/local/lib/" ; then continue; fi
## the following are likely redundant ##
# skip jack, ALSA & pulse
if echo $dep | grep -qs libjack ; then continue; fi
if echo $dep | grep -qs libasound ; then continue; fi
if echo $dep | grep -qs libpulse ; then continue; fi
# don't include any X Window libraries
if echo $dep | grep -qs libX\. ; then continue; fi
if echo $dep | grep -qs libxcb ; then continue; fi
if echo $dep | grep -qs libICE\. ; then continue; fi
if echo $dep | grep -qs libSM\. ; then continue; fi
# don't include libc
if echo $dep | grep -qs 'libc\.' ; then continue; fi
# don't include libstdc++
if echo $dep | grep -qs libstdc++ ; then continue; fi
# don't include libdbus (alsa request device)
if echo $dep | grep -qs libdbus ; then continue; fi
# nor libudev (hidapi)
if echo $dep | grep -qs libudev ; then continue; fi
base=`basename $dep`
if ! test -f $Libraries/$base; then
parent=$(basename ${file})
if echo $dep | grep -sq '^libs' ; then
echo "Copying dependent lib $BUILD_ROOT/$dep (required by ${parent})"
cp $BUILD_ROOT/$dep $Libraries
else
echo "Copying dependent lib $dep (required by ${parent})"
cp $dep $Libraries
fi
chmod 755 $Libraries/`basename $dep`
#
# reset RPATH so that the runtime linker never looks
# in places we don't want it to
#
chrpath -r foo $Libraries/`basename $dep`
if echo $dep | grep -sq '^/' ; then
# absolute path, candidate for stripping
deplibs="$deplibs $base"
fi
missing=true
fi
done
done
if test x$missing = xfalse ; then
# everything has been found
break
fi
done
echo
# strip libraries
if test x$STRIP = xall ; then
echo Stripping all libraries
# Must be writable so that we can strip
find $APPLIB/ -name "*.so*" -print0 | xargs -0 chmod u+w
# and strip ...
find $APPLIB/ -name "*.so*" -print0 | xargs -0 strip -s
elif test x$STRIP = xsome ; then
echo Stripping dependent libraries
for l in $deplibs ; do
if echo "$l" | grep -qE "$NOSTRIP"; then
continue
fi
chmod u+w $APPLIB/$l
strip -s $APPLIB/$l
done
fi
find $APPLIB/ -name "*.so*" -print0 | xargs -0 chmod a+rx
# Remove ABI suffix, symlink *.so.
# This fixes plugins that dynamically open libs.
# e.g. JUCE option to lazily loading libcurl.so
(
cd $APPLIB/
for lib in *.so.[0-9]*; do
link=$(echo $lib | sed 's/\.[0-9]*$//')
ln -s $lib $link;
done
)
echo "Copying other stuff to $APPDIR ..."
# these are all generated by waf
cp $BUILD_ROOT/gtk2_ardour/ardour.keys $Etc
cp $BUILD_ROOT/gtk2_ardour/ardour.menus $Etc
cp $BUILD_ROOT/gtk2_ardour/clearlooks.rc $Etc
cp $BUILD_ROOT/gtk2_ardour/default_ui_config $Etc
# Copied directly from source tree
mkdir ${Shared}/icons
mkdir ${Shared}/resources
cp ../../system_config $Etc/system_config
cp ../../gtk2_ardour/icons/*.png ${Shared}/icons
cp -r ../../gtk2_ardour/icons/cursor_* ${Shared}/icons/
cp ../../gtk2_ardour/ArdourMono.ttf $Shared
cp ../../gtk2_ardour/ArdourSans.ttf $Shared
cp ../../gtk2_ardour/resources/${APPNAME}-* ${Shared}/resources/
# Themes: only install those named for this app
cp ../../gtk2_ardour/themes/*-${lower_case_appname}.colors $Themes
#
# put sooper sekrit ingredients here and they will be copied
#
if [ -d specialSauce ] ; then
cp -r specialSauce $Etc
fi
# install bundled LV2s to <app>/lib/LV2/
cp -R $BUILD_ROOT/libs/LV2 $APPLIB/ || true
# lv2 core, classifications
for file in $GTKSTACK_ROOT/lib/lv2/*.lv2; do
BN=$(basename $file)
mkdir -p $APPLIB/LV2/$BN
cp $GTKSTACK_ROOT/lib/lv2/${BN}/*.ttl $APPLIB/LV2/${BN}/
done
# go through and recursively remove any .svn dirs in the bundle
for svndir in `find $APPDIR -name .svn -type d`; do
rm -rf $svndir
done
################################################################################
### Mixbus plugins, etc
if test x$WITH_HARRISON_LV2 != x ; then
echo "Adding Harrison LV2s"
mkdir -p $APPLIB/LV2
curl -s -S --fail -# \
-z "${CACHEDIR}/${HARRISONLV2}.${HARCH}.zip" \
-o "${CACHEDIR}/${HARRISONLV2}.${HARCH}.zip" \
"${HARRISONDSPURL}/${HARRISONLV2}.${HARCH}.zip"
unzip -q -d "$APPLIB/LV2/" "${CACHEDIR}/${HARRISONLV2}.${HARCH}.zip"
fi
if test -n "$MIXBUS"; then
echo "Adding Mixbus Channelstrip"
mkdir -p $APPLIB/ladspa/strip/
curl -s -S --fail -# \
-z "${CACHEDIR}/${HARRISONCHANNELSTRIP}.${HARCH}.so" \
-o "${CACHEDIR}/${HARRISONCHANNELSTRIP}.${HARCH}.so" \
"${HARRISONDSPURL}/${HARRISONCHANNELSTRIP}.${HARCH}.so"
cp "${CACHEDIR}/${HARRISONCHANNELSTRIP}.${HARCH}.so" \
$APPLIB/ladspa/strip/${HARRISONCHANNELSTRIP}.so
chmod +x $APPLIB/ladspa/strip/${HARRISONCHANNELSTRIP}.so
echo "Adding Harrison Vamp Plugins"
VAMPARCH="${HARCH}gcc5"
curl -s -S --fail -# \
-z "${CACHEDIR}/harrison_vamp.${VAMPARCH}.so" \
-o "${CACHEDIR}/harrison_vamp.${VAMPARCH}.so" \
"${HARRISONDSPURL}/harrison_vamp.${VAMPARCH}.so"
cp "${CACHEDIR}/harrison_vamp.${VAMPARCH}.so" \
$APPLIB/harrison_vamp.so
chmod +x $APPLIB/harrison_vamp.so
# Mixbus Bundled Media Content
curl -s -S --fail -# \
-z "${CACHEDIR}/MixbusBundledMedia.zip" \
-o "${CACHEDIR}/MixbusBundledMedia.zip" \
"http://builder.harrisonconsoles.com/pub/share/MixbusBundledMedia.zip"
if test -f "${CACHEDIR}/MixbusBundledMedia.zip"; then
echo "Adding Mixbus Bundled Content"
rm -f "${MediaClips}/"*.*
unzip -q -o -d "${MediaClips}" "${CACHEDIR}/MixbusBundledMedia.zip"
fi
elif test -z "$LIVETRAX"; then
echo "Fetching Ardour bundled content"
curl -s -S --fail -# \
-z "${CACHEDIR}/ArdourBundledMedia.zip" \
-o "${CACHEDIR}/ArdourBundledMedia.zip" \
"http://stuff.ardour.org/loops/ArdourBundledMedia.zip"
if test -f "${CACHEDIR}/ArdourBundledMedia.zip"; then
echo "Adding Ardour Bundled Content"
rm -f "${MediaClips}/"*.*
unzip -q -o -d "${MediaClips}" "${CACHEDIR}/ArdourBundledMedia.zip"
fi
fi
echo "Setting Bundled Media dir/file permissions"
find "${MediaClips}" -type d -exec chmod 755 "{}" \;
find "${MediaClips}" -type f -exec chmod 644 "{}" \;
if test x$WITH_GMSYNYTH != x ; then
mkdir -p $APPLIB/LV2
echo "Adding General MIDI Synth LV2"
for proj in x42-gmsynth ; do
X42_VERSION=$(curl -s -S http://x42-plugins.com/x42/linux/${proj}.latest.txt)
rsync -a -q --partial \
rsync://x42-plugins.com/x42/linux/${proj}-lv2-linux-${WARCH}-${X42_VERSION}.zip \
"${CACHEDIR}/${proj}-lv2-linux-${WARCH}-${X42_VERSION}.zip"
unzip -q -d "$APPLIB/LV2/" "${CACHEDIR}/${proj}-lv2-linux-${WARCH}-${X42_VERSION}.zip"
done
fi
if test x$WITH_COMMERCIAL_X42_LV2 != x ; then
mkdir -p $APPLIB/LV2
echo "Adding commercial x42 Plugins"
for proj in x42-meters x42-eq x42-whirl; do
X42_VERSION=$(curl -s -S http://x42-plugins.com/x42/linux/${proj}.latest.txt)
rsync -a -q --partial \
rsync://x42-plugins.com/x42/linux/${proj}-lv2-linux-${WARCH}-${X42_VERSION}.zip \
"${CACHEDIR}/${proj}-lv2-linux-${WARCH}-${X42_VERSION}.zip"
unzip -q -d "$APPLIB/LV2/" "${CACHEDIR}/${proj}-lv2-linux-${WARCH}-${X42_VERSION}.zip"
done
fi
if test x$WITH_GRATIS_X42_LV2 != x ; then
mkdir -p $APPLIB/LV2
echo "Adding gratis x42 Plugins"
for proj in x42-autotune x42-midifilter x42-stereoroute setBfree x42-avldrums x42-limiter x42-tuner; do
X42_VERSION=$(curl -s -S http://x42-plugins.com/x42/linux/${proj}.latest.txt)
rsync -a -q --partial \
rsync://x42-plugins.com/x42/linux/${proj}-lv2-linux-${WARCH}-${X42_VERSION}.zip \
"${CACHEDIR}/${proj}-lv2-linux-${WARCH}-${X42_VERSION}.zip"
unzip -q -d "$APPLIB/LV2/" "${CACHEDIR}/${proj}-lv2-linux-${WARCH}-${X42_VERSION}.zip"
done
fi
################################################################################
if test x$WITH_HARVID != x ; then
cd $APPBIN
HARVID_VERSION=$(curl -s -S http://ardour.org/files/video-tools/harvid_version.txt)
rsync -Pa \
rsync://ardour.org/video-tools/harvid-${MULTIARCH}-${HARVID_VERSION}.tgz \
"$CACHEDIR/harvid-${MULTIARCH}-${HARVID_VERSION}.tgz"
tar -x -z \
--exclude=README --exclude=harvid.1 --strip-components=1 \
-f "$CACHEDIR/harvid-${MULTIARCH}-${HARVID_VERSION}.tgz" || exit 1
cd -
fi
if test x$WITH_XJADEO != x ; then
cd $APPBIN
XJADEO_VERSION=$(curl -s -S http://ardour.org/files/video-tools/xjadeo_version.txt)
rsync -Pa \
rsync://ardour.org/video-tools/xjadeo-${MULTIARCH}-${XJADEO_VERSION}.tgz \
"$CACHEDIR/xjadeo-${MULTIARCH}-${XJADEO_VERSION}.tgz"
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
################################################################################
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
################################################################################
#
# Add the uninstaller
#
sed -e "s/%REPLACE_PGM%/${APPNAME}/" -e "s/%REPLACE_VENDOR%/${VENDOR}/" -e "s/%REPLACE_MAJOR_VERSION%/${major_version}/" -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
#
# Add the stage2.run script
#
sed -e "s/%REPLACE_MAJOR_VERSION%/${major_version}/;s/%REPLACE_PGM%/${APPNAME}/;s/%REPLACE_VENDOR%/${VENDOR}/;s/%REPLACE_EXE%/${EXENAME}/" < stage2.run.in > stage2.run
chmod a+x stage2.run
#Sanity Check file
if [ -e $BUILD_ROOT/tools/sanity_check/sanityCheck ]; then
cp $BUILD_ROOT/tools/sanity_check/sanityCheck $APPBIN
else
echo "!!!ERROR !!! sanityCheck program is missing. packager will exit without being complete"
exit 1
fi
echo "Building tarball ..."
rm -f $APPDIR.tar
tar -cf $APPDIR.tar $APPDIR
echo "Calculating bundle size"
du -sb $APPDIR/ | awk '{print $1}' > $APPDIR.size
( cd $APPDIR ; find . ) > file_list.txt
rm -rf $APPDIR/
echo "Done."