add linux packaging script(s) from 2.0-ongoing

git-svn-id: svn://localhost/ardour2/branches/3.0@8625 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Paul Davis 2011-01-31 14:48:34 +00:00
parent 85b4ff8669
commit 339ef19a6f
5 changed files with 996 additions and 189 deletions

View file

@ -1,5 +1,10 @@
#!/bin/sh #!/bin/sh
#LD_LIBRARY_PATH needs to be set (empty) so that epa can swap between the original and the bundled version
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
export PREBUNDLE_ENV="$(env)"
BIN_DIR=$(dirname $(readlink -f $0)) BIN_DIR=$(dirname $(readlink -f $0))
INSTALL_DIR=$(dirname $BIN_DIR) INSTALL_DIR=$(dirname $BIN_DIR)
LIB_DIR=$INSTALL_DIR/lib LIB_DIR=$INSTALL_DIR/lib
@ -20,6 +25,7 @@ export ARDOUR_BUNDLED=true
%ENV% %ENV%
export GTK_PATH=$INSTALL_DIR${GTK_PATH:+:$GTK_PATH} export GTK_PATH=$INSTALL_DIR${GTK_PATH:+:$GTK_PATH}
export GTK_MODULES="" # Disable extra modules from being loaded by gtk (example, libcanberra-gtk-module.so)
export LD_LIBRARY_PATH=$INSTALL_DIR/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} export LD_LIBRARY_PATH=$INSTALL_DIR/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
# create install-location-dependent config files for Pango and GDK image loaders # create install-location-dependent config files for Pango and GDK image loaders
@ -28,7 +34,7 @@ export LD_LIBRARY_PATH=$INSTALL_DIR/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
sed "s?@ROOTDIR@/modules?$LIB_DIR/modules?" < $ETC_DIR/pango.modules.in > $USER_ARDOUR_DIR/pango.modules sed "s?@ROOTDIR@/modules?$LIB_DIR/modules?" < $ETC_DIR/pango.modules.in > $USER_ARDOUR_DIR/pango.modules
sed "s?@ROOTDIR@/loaders?$LIB_DIR/loaders?" < $ETC_DIR/gdk-pixbuf.loaders.in > $USER_ARDOUR_DIR/gdk-pixbuf.loaders sed "s?@ROOTDIR@/loaders?$LIB_DIR/loaders?" < $ETC_DIR/gdk-pixbuf.loaders.in > $USER_ARDOUR_DIR/gdk-pixbuf.loaders
exec $INSTALL_DIR/bin/ardour-2.8.11 "$@" exec $INSTALL_DIR/bin/ardour-%VER% "$@"

View file

@ -15,42 +15,55 @@ PRINT_SYSDEPS=
WITH_NLS= WITH_NLS=
EXTERNAL_JACK= EXTERNAL_JACK=
if [ $# -eq 0 ] ; then
echo ""
echo "ERROR - Please specify build type"
echo " --public"
echo " --sae"
echo ""
exit 1
fi
while [ $# -gt 0 ] ; do while [ $# -gt 0 ] ; do
echo "arg = $1" echo "arg = $1"
case $1 in case $1 in
# #
# top level build targets # top level build targets
# #
--sae) WITH_NLS= ; --sae)
SAE=1 ; WITH_NLS= ;
INTERNAL_JACK=1; SAE=1 ;
WITH_LADSPA=1; INTERNAL_JACK=1;
STRIP= ; WITH_LADSPA=1;
APPNAME=Ardour ; STRIP= ;
shift ;; APPNAME=Ardour ;
--mixbus) MIXBUS=1; shift ;;
WITH_NLS=1 ; --mixbus)
SAE= ; MIXBUS=1;
INTERNAL_JACK=; WITH_NLS=1 ;
WITH_LADSPA=; SAE= ;
STRIP= ; INTERNAL_JACK=;
APPNAME=Mixbus ; WITH_LADSPA=;
shift ;; STRIP= ;
--public) WITH_NLS=1 ; APPNAME=Mixbus ;
SAE= ; shift ;;
INTERNAL_JACK=; --public)
WITH_LADSPA=; WITH_NLS=1 ;
STRIP= ; SAE= ;
APPNAME=Ardour ; INTERNAL_JACK=;
shift ;; WITH_LADSPA=;
--allinone) SAE= ; STRIP= ;
WITH_NLS= ; APPNAME=Ardour ;
INTERNAL_JACK=1; shift ;;
WITH_LADSPA=1; --allinone)
STRIP= ; SAE= ;
shift ;; WITH_NLS= ;
INTERNAL_JACK=1;
WITH_LADSPA=1;
STRIP= ;
shift ;;
--test) SAE= ; INTERNAL_JACK=; WITH_LADSPA=; STRIP= ; shift ;; --test) SAE= ; INTERNAL_JACK=; WITH_LADSPA=; STRIP= ; shift ;;
# #
@ -63,11 +76,19 @@ while [ $# -gt 0 ] ; do
--sysdeps) PRINT_SYSDEPS=1; shift ;; --sysdeps) PRINT_SYSDEPS=1; shift ;;
--nls) WITH_NLS=1 ; shift ;; --nls) WITH_NLS=1 ; shift ;;
--external_jack) EXTERNAL_JACK=$2; shift ; shift ;; --external_jack) EXTERNAL_JACK=$2; shift ; shift ;;
esac
*)
#catch all for unknown arguments
echo ""
echo "!!! ERROR !!! - Unknown argument $1"
echo ""
exit 1
;;
esac
done done
if [ x$EXTERNAL_JACK != x -a x$INTERNAL_JACK != x ] ; then if [ x$EXTERNAL_JACK != x -a x$INTERNAL_JACK != x ] ; then
echo "It makes no sense to package JACK internally and externally. Please pick one." echo "It makes no sense to package JACK internally and externally. Please pick one."
fi fi
release_version=`grep -m 1 '^ardour_version' ../../SConstruct | cut -d' ' -f 3 | sed "s/'//g"` release_version=`grep -m 1 '^ardour_version' ../../SConstruct | cut -d' ' -f 3 | sed "s/'//g"`
@ -76,9 +97,29 @@ echo "Version is $release_version / $svn_version"
info_string="$release_version/$svn_version built on `hostname` by `whoami` on `date`" info_string="$release_version/$svn_version built on `hostname` by `whoami` on `date`"
echo "Info string is $info_string" echo "Info string is $info_string"
# Figure out our CPU type
case `uname -m` in
i[3456789]86|x86|i86pc)
echo "Architecture is x86"
ARCH='x86'
ARCH_BITS='32-bit'
;;
x86_64|amd64|AMD64)
echo "Architecture is x86_64"
ARCH='x86_64'
ARCH_BITS='64-bit'
;;
*)
echo ""
echo "ERROR - Unknown architecture `uname -m`"
echo ""
exit 1
;;
esac
# setup directory structure # setup directory structure
APPDIR=${APPNAME} APPDIR=${APPNAME}_${ARCH}-${release_version}_${svn_version}
APPBIN=$APPDIR/bin APPBIN=$APPDIR/bin
APPLIB=$APPDIR/lib APPLIB=$APPDIR/lib
Libraries=$APPLIB Libraries=$APPLIB
@ -91,23 +132,23 @@ Locale=$Shared/locale
Modules=$Libraries/modules Modules=$Libraries/modules
Loaders=$Libraries/loaders Loaders=$Libraries/loaders
if [ x$PRINT_SYSDEPS != x ] ; then if [ x$PRINT_SYSDEPS != x ] ; then
# #
# print system dependencies # print system dependencies
# #
for file in $APPBIN/* $Libraries/* $Modules/* $Plugins/*.so ; do for file in $APPBIN/* $Libraries/* $Modules/* $Plugins/*.so ; do
if ! file $file | grep -qs Mach-O ; then if ! file $file | grep -qs Mach-O ; then
continue continue
fi fi
otool -L $file | awk '{print $1}' | egrep -v "(^@executable_path|^Ardour[0-9][.0-9]*.app)" otool -L $file | awk '{print $1}' | egrep -v "(^@executable_path|^Ardour[0-9][.0-9]*.app)"
done | sort | uniq done | sort | uniq
exit 0 exit 0
fi fi
echo "Removing old $APPDIR tree ..." echo "Removing old $APPDIR tree ..."
rm -rf $APPDIR/
rm -rf $APPDIR
echo "Building new app directory structure ..." echo "Building new app directory structure ..."
@ -132,25 +173,21 @@ rm -f $ENVIRONMENT
touch $ENVIRONMENT touch $ENVIRONMENT
if test x$SAE != x ; then if test x$SAE != x ; then
appname="Ardour2/SAE" echo "export ARDOUR_SAE=true" >> $ENVIRONMENT
echo "export ARDOUR_SAE=true" >> $ENVIRONMENT #
# # current default for SAE version is German keyboard layout without a keypad
# current default for SAE version is German keyboard layout without a keypad #
# echo export ARDOUR_KEYBOARD_LAYOUT=de-nokeypad >> $ENVIRONMENT
echo export ARDOUR_KEYBOARD_LAYOUT=de-nokeypad >> $ENVIRONMENT echo export ARDOUR_UI_CONF=ardour2_ui_sae.conf >> $ENVIRONMENT
echo export ARDOUR_UI_CONF=ardour2_ui_sae.conf >> $ENVIRONMENT echo export ARDOUR2_UI_RC=ardour2_ui_dark_sae.rc >> $ENVIRONMENT
echo export ARDOUR2_UI_RC=ardour2_ui_dark_sae.rc >> $ENVIRONMENT
elif test x$MIXBUS != x ; then elif test x$MIXBUS != x ; then
appname="Ardour2/Mixbus" echo export ARDOUR_MIXBUS=true >> $ENVIRONMENT
echo export ARDOUR_MIXBUS=true >> $ENVIRONMENT #
# # current default for MIXBUS version is US keyboard layout without a keypad
# current default for MIXBUS version is US keyboard layout without a keypad #
# echo export ARDOUR_KEYBOARD_LAYOUT=us-nokeypad >> $ENVIRONMENT
echo export ARDOUR_KEYBOARD_LAYOUT=us-nokeypad >> $ENVIRONMENT echo export ARDOUR_UI_CONF=ardour2_ui.conf >> $ENVIRONMENT
echo export ARDOUR_UI_CONF=ardour2_ui.conf >> $ENVIRONMENT echo export ARDOUR2_UI_RC=ardour2_ui_dark.rc >> $ENVIRONMENT
echo export ARDOUR2_UI_RC=ardour2_ui_dark.rc >> $ENVIRONMENT
else
appname="Ardour2"
fi fi
# #
@ -162,95 +199,223 @@ echo export 'PATH=/usr/local/bin:/opt/bin:$PATH' >> $ENVIRONMENT
# create startup helper script # create startup helper script
sed -e "/^%ENV%/r $ENVIRONMENT" -e '/^%ENV%/d' < ardour.sh.in > $APPBIN/ardour2 sed -e "/^%ENV%/r $ENVIRONMENT" -e '/^%ENV%/d' -e 's/%VER%/'"${release_version}"'/' < ardour.sh.in > $APPBIN/ardour2
rm $ENVIRONMENT && chmod 775 $APPBIN/ardour2 rm $ENVIRONMENT && chmod 775 $APPBIN/ardour2
MAIN_EXECUTABLE=ardour-$release_version MAIN_EXECUTABLE=ardour-$release_version
echo "Copying ardour executable ...." echo "Copying ardour executable ...."
cp ../../gtk2_ardour/$MAIN_EXECUTABLE $APPBIN cp ../../gtk2_ardour/$MAIN_EXECUTABLE $APPBIN
if test x$STRIP != x ; then if test x$STRIP != x ; then
strip $APPBIN/$MAIN_EXECUTABLE strip $APPBIN/$MAIN_EXECUTABLE
fi fi
# copy locale files # copy locale files
if test x$WITH_NLS != x ; then if test x$WITH_NLS != x ; then
echo "NLS support ..." echo "NLS support ..."
echo "I hope you remembered to run scons msgupdate!" echo "I hope you remembered to run scons msgupdate!"
LINGUAS= LINGUAS=
for file in ../../gtk2_ardour/*.mo files=`find ../../gtk2_ardour/ -name "*.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 ../../libs/ardour/*.mo
do
lang=`basename $file | sed 's/\.mo//'`
mkdir -p $Locale/$lang/LC_MESSAGES
cp $file $Locale/$lang/LC_MESSAGES/libardour.mo
done
GTK_MESSAGES="atk10.mo gdk-pixbuf.mo gtk20-properties.mo gtk20.mo atk10.mo glib20.mo" if [ -z "$files" ]; then
LOCALEROOT=/usr/share/locale echo ""
echo "!!!! WARNING !!!! - Did not find any .mo files in ../../gtk2_ardour"
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/gtk2_ardour.mo
LINGUAS="$LINGUAS $lang"
done
for l in $LINGUAS ; do files=`find ../../libs/ardour/ -name "*.mo"`
echo "Copying GTK i18n files for $l..."
for MO in $GTK_MESSAGES ; do if [ -z "$files" ]; then
if [ -f $LOCALEROOT/$l/LC_MESSAGES/$MO ] ; then echo ""
cp $LOCALEROOT/$l/LC_MESSAGES/$MO $Locale/$l/LC_MESSAGES echo "!!!! WARNING !!!! - Did not find any .mo files in ../../libs/ardour"
else echo ""
# try with just the language spec fi
just_lang=`echo $l | sed 's/_[A-Z][A-Z]$//'`
if [ -f $LOCALEROOT/$just_lang/LC_MESSAGES/$MO ] ; then for file in $files
cp $LOCALEROOT/$just_lang/LC_MESSAGES/$MO $Locale/$just_lang/LC_MESSAGES do
fi echo $file
fi lang=`basename $file | sed 's/\.mo//'`
done mkdir -p $Locale/$lang/LC_MESSAGES
done cp $file $Locale/$lang/LC_MESSAGES/libardour.mo
done
GTK_MESSAGES="atk10.mo gdk-pixbuf.mo gtk20-properties.mo gtk20.mo atk10.mo glib20.mo"
LOCALEROOT=/usr/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 else
echo "Skipping NLS support" echo "Skipping NLS support"
fi
### Find gtk ###
GTKROOT=`pkg-config --libs-only-L gtk+-2.0 | sed -e "s/-L//" -e "s/[[:space:]]//g"`
if [ ! -z "$GTKROOT" ]; then
echo "Found GTKROOT using pkg-config"
elif [ -d /usr/lib/gtk-2.0 ]; then
GTKROOT="/usr/lib/gtk-2.0"
elif [ -d /usr/local/lib/gtk-2.0 ]; then
GTKROOT="/usr/local/lib/gtk-2.0"
else
echo ""
echo "!!! ERROR !!! - Unable to locate gtk-2.0 directory. Packager will exit"
echo ""
exit 1
fi
echo "GTKROOT is ${GTKROOT}"
versionDir=`ls ${GTKROOT}/gtk-2.0/ | grep "[0-9]*\.[0-9]*\.[0-9]*"`
num=0
for name in $versionDir ; do
let "num += 1"
done
if [ $num -eq 1 ]; then
GTKLIB=${GTKROOT}/gtk-2.0/$versionDir
echo "GTKLIB is ${GTKLIB}"
else
echo ""
echo "!!! ERROR !!! - More than one gtk-2.0 version found in ${GTKROOT}/gtk-2.0/ ( $versionDir ). Packager will exit"
echo ""
exit 1
fi
### Find pango ###
PANGOROOT=`pkg-config --libs-only-L pango | sed -e "s/-L//" -e "s/[[:space:]]//g"`
if [ ! -z "$PANGOROOT" ]; then
echo "Found PANGOROOT using pkg-config"
elif [ -d /usr/lib/pango ]; then
PANGOROOT="/usr/lib/pango"
elif [ -d /usr/local/lib/pango ]; then
PANGOROOT="/usr/local/lib/pango"
else
echo ""
echo "!!! ERROR !!! - Unable to locate pango directory. Packager will exit"
echo ""
exit 1
fi
echo "PANGOROOT is ${PANGOROOT}"
versionDir=`ls ${PANGOROOT}/pango/ | grep "[0-9]*\.[0-9]*\.[0-9]*"`
num=0
for name in $versionDir ; do
let "num += 1"
done
if [ $num -eq 1 ]; then
PANGOLIB=${PANGOROOT}/pango/$versionDir
echo "PANGOLIB is ${PANGOLIB}"
else
echo ""
echo "!!! ERROR !!! - More than one pango version found in ${PANGOROOT}/pango/ ( $versionDir ). Packager will exit"
echo ""
exit 1
fi
### Find gdk-pixbuf ###
GDKPIXBUFROOT=`pkg-config --libs-only-L gdk-pixbuf-2.0 | sed -e "s/-L//" -e "s/[[:space:]]//g"`
if [ ! -z "$GDKPIXBUFROOT" ]; then
echo "Found GDKPIXBUFROOT using pkg-config"
elif [ -d /usr/lib/gdk-pixbuf-2.0 ]; then
GDKPIXBUFROOT="/usr/lib/gdk-pixbuf-2.0"
elif [ -d /usr/local/lib/gdk-pixbuf-2.0 ]; then
GDKPIXBUFROOT="/usr/local/lib/gdk-pixbuf-2.0"
elif [ -d ${GTKLIB}/loaders ]; then #odd ball case
GDKPIXBUFROOT=${GTKROOT}
GDKPIXBUFLIB=${GTKLIB}
else
echo ""
echo "!!! ERROR !!! - Unable to locate gdk-pixbuf-2.0 directory. Packager will exit"
echo ""
exit 1
fi
echo "GDKPIXBUFROOT is ${GDKPIXBUFROOT}"
if [ -z ${GDKPIXBUFLIB} ]; then
versionDir=`ls ${GDKPIXBUFROOT}/gdk-pixbuf-2.0/ | grep "[0-9]*\.[0-9]*\.[0-9]*"`
num=0
for name in $versionDir ; do
let "num += 1"
done
if [ $num -eq 1 ]; then
GDKPIXBUFLIB=${GDKPIXBUFROOT}/gdk-pixbuf-2.0/$versionDir
echo "GDKPIXBUFLIB is ${GDKPIXBUFLIB}"
else
echo ""
echo "!!! ERROR !!! - More than one gdk-pixbuf-2.0 version found in ${GDKPIXBUFROOT}/pango/ ( $versionDir ). Packager will exit"
echo ""
exit 1
fi
fi fi
GTKROOT=`pkg-config --libs-only-L gtk+-2.0 | sed s/-L//`
GTKROOT=`dirname $GTKROOT`
echo GTK stack root is $GTKROOT
GTKETC=${GTKROOT}/etc/gtk-2.0
GTKLIB=${GTKROOT}/lib/gtk-2.0/2.10.0
PANGOLIB=${GTKROOT}/lib/pango/1.6.0
GDKPIXBUFLIB=${GTKROOT}/lib/gdk-pixbuf-2.0/2.10.0
cp -R $GTKETC/* $Etc
echo "Copying all Pango modules ..." echo "Copying all Pango modules ..."
cp -R $PANGOLIB/modules/*.so $Modules cp -R $PANGOLIB/modules/*.so $Modules
echo "Copying all GDK Pixbuf loaders ..." echo "Copying all GDK Pixbuf loaders ..."
cp -R $GDKPIXBUFLIB/loaders/*.so $Loaders cp -R $GDKPIXBUFLIB/loaders/*.so $Loaders
pwd=`pwd` pango-querymodules | sed "s?$PANGOLIB/?@ROOTDIR@/?" > $Etc/pango.modules.in
gdk-pixbuf-query-loaders | sed "s?$GDKPIXBUFLIB/?@ROOTDIR@/?" > $Etc/gdk-pixbuf.loaders.in
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
echo "Copying `ls $plugdir | wc -l` plugins ..."
if [ -d $plugdir ] ; then
cp -r $plugdir/* $Plugins
fi
fi
pango-querymodules | sed "s?$GTKROOT/lib/pango/[0-9][0-9]*\.[0-9][0-9]*.[0-9][0-9]*/?@ROOTDIR@/?" > $Etc/pango.modules.in
gdk-pixbuf-query-loaders | sed "s?$GTKROOT/lib/gdk-pixbuf-2.0/[0-9][0-9]*\.[0-9][0-9]*.[0-9][0-9]*/?@ROOTDIR@/?" > $Etc/gdk-pixbuf.loaders.in
# We sort of rely on clearlooks, so include a version # We sort of rely on clearlooks, so include a version
# this one is special - we will set GTK_PATH to $Libraries/clearlooks # this one is special - we will set GTK_PATH to $Libraries/clearlooks
cp /usr/lib64/gtk-2.0/2.10.0/engines/libclearlooks.so $Libraries
if [ ! -e ${GTKLIB}/engines/libclearlooks.so ]; then
echo ""
echo "!!! ERROR !!! - not able to locate libclearlooks.so"
echo ""
echo "Packager with exit"
exit 1
fi
echo "Copying clearlooks ..."
cp ${GTKLIB}/engines/libclearlooks.so $Libraries
mkdir -p $Libraries/clearlooks/engines mkdir -p $Libraries/clearlooks/engines
(cd $Libraries/clearlooks/engines && ln -s ../../libclearlooks.so* ) (cd $Libraries/clearlooks/engines && ln -s ../../libclearlooks* libclearlooks.so )
# LADSPA
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
echo "Copying `ls $plugdir | wc -l` plugins ..."
if [ -d $plugdir ] ; then
cp -r $plugdir/* $Plugins
fi
fi
# XXX STILL NEED TO DO PANNERS FOR TRUNK # XXX STILL NEED TO DO PANNERS FOR TRUNK
cp ../../libs/surfaces/*/libardour_*.so* $Surfaces cp ../../libs/surfaces/*/libardour_*.so* $Surfaces
@ -263,56 +428,88 @@ cp ../../libs/vamp-plugins/libardourvampplugins.so* $Libraries
OURLIBDIR=../../libs OURLIBDIR=../../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 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
echo $OURLIBS${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
checkedIdx=0
while [ true ] ; do while [ true ] ; do
missing=false missing=false
for file in $APPBIN/* $Libraries/* $Modules/* $Plugins/*.so ; do filelist=`find $APPLIB/ -type f`
if ! file $file | grep -qs ELF ; then filelist="$APPBIN/$MAIN_EXECUTABLE $filelist"
continue
fi
# do not include libjack
deps=`LD_LIBRARY_PATH=$OURLIBS${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} ldd $file | awk '{print $3}' | egrep "(/opt/|/local/|libs/|/usr/lib|/gtk)" | grep -v 'libjack\.'`
# LD_LIBRARY_PATH=$OURLIBS${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} ldd $file | egrep "(/opt/|/local/|libs/|/usr/lib|/gtk)" | grep -v 'libjack\.'
echo -n "."
for dep in $deps ; do
if [ "x$dep" = "xnot" ] ; then
echo "Missing dependant library. Use ldd to find and fix"
exit 1
fi
# don't use anything mapped at a specific address for file in $filelist ; do
if echo $dep | grep -qs '0x' ; then continue; fi if ! file $file | grep -qs ELF ; then
# don't include any X Window libraries continue
if echo $dep | grep -qs libX ; then continue; fi
# don't include libc
if echo $dep | grep -qs 'libc\.' ; then continue; fi
base=`basename $dep`
if ! test -f $Libraries/$base; then
if echo $dep | grep -sq '^libs' ; then
# echo Copying ../../$dep
cp ../../$dep $Libraries
else
# echo Copying $dep
cp $dep $Libraries
fi fi
missing=true
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
let "checkIdx += 1"
# do not include libjack
deps=`LD_LIBRARY_PATH=$OURLIBS${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} ldd $file | awk '{print $3}'`
# LD_LIBRARY_PATH=$OURLIBS${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} ldd $file | egrep "(/opt/|/local/|libs/|/usr/lib|/gtk)" | grep -v 'libjack\.'
echo -n "."
for dep in $deps ; do
if test "not" = ${dep}; then
echo ""
echo "!!! ERROR !!! - Missing dependant library for $file."
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 /lib
if echo $dep | grep -qs "^/lib/" ; then continue; fi
# don't include jack
if echo $dep | grep -qs libjack ; 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
# 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
base=`basename $dep`
if ! test -f $Libraries/$base; then
parent=$(basename ${file})
if echo $dep | grep -sq '^libs' ; then
echo "Copying dependant lib ../../$dep (required by ${parent})"
cp ../../$dep $Libraries
else
echo "Copying dependant lib $dep (required by ${parent})"
cp $dep $Libraries
fi
missing=true
fi
done
done done
done if test x$missing = xfalse ; then
if test x$missing = xfalse ; then # everything has been found
# everything has been found break
break fi
fi
done done
echo echo
# strip libraries # strip libraries
echo Stripping libraries echo Stripping libraries
strip $APPLIB/*.so* find $APPLIB/ -name "*.so*" | xargs strip
find $APPLIB/ -name "*.so*" | xargs chmod a+rx
echo "Copying other stuff to $APPDIR ..." echo "Copying other stuff to $APPDIR ..."
cp ../../gtk2_ardour/ergonomic-us.bindings $Etc cp ../../gtk2_ardour/ergonomic-us.bindings $Etc
cp ../../gtk2_ardour/mnemonic-us.bindings $Etc cp ../../gtk2_ardour/mnemonic-us.bindings $Etc
cp ../../gtk2_ardour/SAE-de-keypad.bindings $Etc cp ../../gtk2_ardour/SAE-de-keypad.bindings $Etc
cp ../../gtk2_ardour/SAE-de-nokeypad.bindings $Etc cp ../../gtk2_ardour/SAE-de-nokeypad.bindings $Etc
@ -321,15 +518,15 @@ cp ../../gtk2_ardour/SAE-us-nokeypad.bindings $Etc
cp ../../gtk2_ardour/ardour.menus $Etc cp ../../gtk2_ardour/ardour.menus $Etc
cp ../../gtk2_ardour/ardour-sae.menus $Etc cp ../../gtk2_ardour/ardour-sae.menus $Etc
if test x$SAE != x ; then if test x$SAE != x ; then
cp ../../ardour_system_sae.rc $Etc/ardour_system.rc cp ../../ardour_system_sae.rc $Etc/ardour_system.rc
echo cp ../../ardour_system_sae.rc $Etc/ardour_system.rc echo cp ../../ardour_system_sae.rc $Etc/ardour_system.rc
cp ../../instant.xml.sae $Etc/instant.xml cp ../../instant.xml.sae $Etc/instant.xml
echo cp ../../instant.xml.sae $Etc/instant.xml echo cp ../../instant.xml.sae $Etc/instant.xml
else else
# cp ../../ardour_system.rc $Etc/ardour_system.rc cp ../../ardour_system.rc $Etc/ardour_system.rc
# echo FOO cp ../../ardour_system.rc $Etc/ardour_system.rc echo cp ../../ardour_system.rc $Etc/ardour_system.rc
cp ../../instant.xml $Etc/instant.xml cp ../../instant.xml $Etc/instant.xml
echo cp ../../instant.xml $Etc/instant.xml echo cp ../../instant.xml $Etc/instant.xml
fi fi
cp ../../gtk2_ardour/ardour2_ui_sae.conf $Etc cp ../../gtk2_ardour/ardour2_ui_sae.conf $Etc
cp ../../gtk2_ardour/ardour2_ui_default.conf $Etc cp ../../gtk2_ardour/ardour2_ui_default.conf $Etc
@ -347,7 +544,7 @@ cp -r ../../gtk2_ardour/pixmaps $Etc
# #
if [ -d specialSauce ] ; then if [ -d specialSauce ] ; then
cp -r specialSauce $Etc cp -r specialSauce $Etc
fi fi
# share stuff # share stuff
@ -357,38 +554,46 @@ cp ../../templates/*.template $Shared/templates/
# go through and recursively remove any .svn dirs in the bundle # go through and recursively remove any .svn dirs in the bundle
for svndir in `find $APPDIR -name .svn -type d`; do for svndir in `find $APPDIR -name .svn -type d`; do
rm -rf $svndir rm -rf $svndir
done done
#Sanity Check file
if [ -e ../sanity_check/sanityCheck ]; then
cp ../sanity_check/sanityCheck $APPDIR
else
echo "!!!ERROR !!! sanityCheck program is missing. packager will exit without being complete"
exit 1
fi
# #
# and now ... the final package # and now ... the final package
# #
if [ x$SAE != x ] ; then if [ x$SAE != x ] ; then
# SAE packaging # SAE packaging
echo "Creating SAE packaging directory" echo "Creating SAE packaging directory"
cp HowToInstallArdourSAE.pdf "$APPDIR/How To Install Ardour SAE.pdf" cp HowToInstallArdourSAE.pdf "$APPDIR/How To Install Ardour SAE.pdf"
cp SAE-de-keypad.pdf "$APPDIR/Ardour SAE Shortcuts (keypad).pdf" cp SAE-de-keypad.pdf "$APPDIR/Ardour SAE Shortcuts (keypad).pdf"
cp SAE-de-nokeypad.pdf "$APPDIR/Ardour SAE Shortcuts.pdf" cp SAE-de-nokeypad.pdf "$APPDIR/Ardour SAE Shortcuts.pdf"
elif [ x$MIXBUS != x ] ; then elif [ x$MIXBUS != x ] ; then
# Mixbus packaging # Mixbus packaging
echo "Creating Mixbus packaging directory" echo "Creating Mixbus packaging directory"
cp MixBus_Install_QuickStart.pdf "$APPDIR/Mixbus Install & Quick Start Guide.pdf" cp MixBus_Install_QuickStart.pdf "$APPDIR/Mixbus Install & Quick Start Guide.pdf"
if [ -x $EXTERNAL_JACK != x ] ; then if [ -x $EXTERNAL_JACK != x ] ; then
cp $EXTERNAL_JACK $PRODUCT_PKG_DIR cp $EXTERNAL_JACK $PRODUCT_PKG_DIR
fi fi
fi fi
#echo "Building tarball ..." echo "Building tarball ..."
#rm -f $APPNAME-$release_version.tar.bz2 rm -f $APPDIR.tar.bz2
#tar -jcf $APPNAME-$release_version.tar.bz2 $APPDIR tar -cjf $APPDIR.tar.bz2 $APPDIR
echo "Done." echo "Done."

View file

@ -0,0 +1,16 @@
#!/bin/sh
# Make sure we have a terminal for the user to see and then run
# the real install script.
if [ -z $WINDOWID ]; then
if which xterm > /dev/null; then
exec xterm -e ./stage2.run
elif which gnome-terminal > /dev/null; then
exec gnome-terminal -e ./stage2.run
elif which konsole > /dev/null; then
exec konsole -e ./stage2.run
fi
else
./stage2.run
fi

85
tools/linux_packaging/package Executable file
View file

@ -0,0 +1,85 @@
#!/bin/bash
# bundle
if [ $# -eq 0 ] ; then
echo ""
echo "ERROR - Please specify build type"
echo " --public"
echo " --sae"
echo ""
exit 1
fi
while [ $# -gt 0 ] ; do
echo "arg = $1"
case $1 in
#
# top level build targets
#
--sae)
APPNAME=Ardour ;
shift ;;
--mixbus)
APPNAME=Mixbus ;
shift ;;
--public)
APPNAME=Ardour ;
shift ;;
*)
#catch all for unknown arguments
echo ""
echo "!!! ERROR !!! - Unknown argument $1"
echo ""
exit 1
;;
esac
done
release_version=`grep -m 1 '^ardour_version' ../../SConstruct | cut -d' ' -f 3 | sed "s/'//g"`
svn_version=`grep -m 1 'svn_revision =' ../../libs/ardour/svn_revision.cc | cut -d' ' -f 6 | sed 's/[";]//g'`
X86_BUILD="${APPNAME}_x86-${release_version}_${svn_version}.tar.bz2"
X86_64_BUILD="${APPNAME}_x86_64-${release_version}_${svn_version}.tar.bz2"
PACKAGE="${APPNAME}-${release_version}_${svn_version}"
if [ ! -e ${X86_BUILD} ]; then
echo ""
echo "!!! ERROR !!! - Can't locate x86 build file ${X86_BUILD}"
echo ""
exit 1
fi
if [ ! -e ${X86_64_BUILD} ]; then
echo ""
echo "!!! ERROR !!! - Can't locate x86_64 build file ${X86_64_BUILD}"
echo ""
exit 1
fi
echo "Cleaning up any old package files for this build"
#Get rid of any old packages of this same name.
rm -f ${PACKAGE}.tar.bz2
rm -rf ${PACKAGE}
echo "Creating new package dir..."
mkdir ${PACKAGE}
mv ${X86_BUILD} ${PACKAGE}
mv ${X86_64_BUILD} ${PACKAGE}
cp install.sh ${PACKAGE}
cp stage2.run ${PACKAGE}
echo "Creating tarball..."
tar -czf ${PACKAGE}.tar.gz ${PACKAGE}
echo "Clean up"
rm -rf ${PACKAGE}
echo ""
echo "Done"
echo ""

495
tools/linux_packaging/stage2.run Executable file
View file

@ -0,0 +1,495 @@
#!/bin/sh
####################################
#
# stage2.run
# Ardour/Mixbus bundle installer
# Todd Naugle
#
###################################
PGM_NAME="Ardour"
PGM_VENDOR="Ardour"
PGM_EXEC_FILE="ardour2"
INSTALL_DEST_BASE="/usr/local/bin"
#### Derived Variables ####
PGM_NAME_LOWER=$(echo $PGM_NAME | tr '[:upper:]' '[:lower:]')
ICON_NAME="${PGM_VENDOR}-${PGM_NAME}"
MENU_FILE="${PGM_VENDOR}-${PGM_NAME}.desktop"
DESKTOP_LINK_FILE="${PGM_NAME}.desktop"
PGM_EXEC_PATH="${INSTALL_DEST_BASE}/${PGM_NAME}/bin/${PGM_EXEC_FILE}"
ICON_PATH="${INSTALL_DEST_BASE}/${PGM_NAME}/etc/icons"
MENU_FILE_PATH="${INSTALL_DEST_BASE}/${PGM_NAME}/${MENU_FILE}"
#### Global Variables ####
HAS_XDG="T"
########################
# Function Definitions
########################
VaildateYesNoQuestion ()
{
# $1 = Question Text
local INPUT_OK="n"
local USER_INPUT=""
until test "y" = $INPUT_OK;
do
echo ""
read -p "$1 [y/n]: " USER_INPUT
echo ""
if [ ! -z $USER_INPUT ];
then
if [ "Y" = $USER_INPUT -o "y" = $USER_INPUT -o "n" = $USER_INPUT -o "N" = $USER_INPUT ];
then
INPUT_OK="y"
fi
fi
done
echo $USER_INPUT | tr '[:upper:]' '[:lower:]'
}
SystemInstall ()
{
# Determine which software install app to use and then install requested package
# $1 = Package Name
if which yum > /dev/null;
then
sudo yum -y install $1
rtrn=$?
if [ $rtrn -ne 0 ];
then
echo ""
echo "!!! ERROR !!! yum install failed for an unknown reason."
echo "Please install package $1 after this installer completes."
echo ""
fi
elif which apt-get > /dev/null;
then
sudo apt-get -y install $1
rtrn=$?
if [ $rtrn -ne 0 ];
then
echo ""
echo "!!! ERROR !!! apt-get install failed for an unknown reason."
echo "Please install package $1 after this installer completes."
echo ""
fi
else
echo ""
echo "!!! ERROR !!! - Not able to detect which software install tool to use (yum or apt-get)."
echo "Please install package $1 using the system software install tool."
echo ""
rtrn=1
fi
return $rtrn
}
########################################################################
# Main
########################################################################
##############
# Check sudo
##############
if ! sudo date;
then
echo ""
echo "!!! ERROR !!!"
echo ""
echo "Either you don't know the root password or the user is not allowed to sudo"
echo "Please correct this and run the installer again (hint: use visudo to edit sudoers file)"
echo ""
read -p "Press ENTER to exit installer:" BLAH
exit 1
fi
############################
# Determine processor type
############################
case `uname -m` in
i[3456789]86|x86|i86pc)
echo "Architecture is x86"
ARCH='x86'
BUNDLE_DIR=${PGM_NAME}_${ARCH}-*
;;
x86_64|amd64|AMD64)
echo "Architecture is x86_64"
ARCH='x86_64'
BUNDLE_DIR=${PGM_NAME}_${ARCH}-*
;;
*)
echo ""
echo "!!! ERROR !!! - Unknown architecture `uname -m`"
echo ""
read -p "Press ENTER to exit installer:" BLAH
exit 1
;;
esac
# untar the correct bundle for us to install
echo "Unpacking bundle for $ARCH"
tar -xjf ${BUNDLE_DIR}.tar.bz2
#######################
# Check for xdg utils
#######################
XDG_MENU_VER=$(xdg-desktop-menu --version 2> /dev/null)
if [ -z "$XDG_MENU_VER" ];
then
echo "System does not have xdg-desktop-menu installed"
HAS_XDG="F"
fi
XDG_ICON_VER=$(xdg-icon-resource --version 2> /dev/null)
if [ -z "$XDG_ICON_VER" ];
then
echo "System does not have xdg-icon-resource installed"
HAS_XDG="F"
fi
#################################################
# Check if system libs are OK (libc, etc)
#################################################
echo ""
echo "Checking system libs to see if they are compatible with ${PGM_NAME}."
echo ""
LIB_ERROR="F"
LD_PATH=`pwd`/${BUNDLE_DIR}/lib
# check the main App
LDD_RESULT=$(LD_LIBRARY_PATH=${LD_PATH} ldd ${BUNDLE_DIR}/bin/${PGM_NAME_LOWER}-* 2>&1 > /dev/null)
if [ -n "$LDD_RESULT" ];
then
echo "$LDD_RESULT"
LIB_ERROR="T"
fi
# check the libs
LIB_FILES=$(find ${BUNDLE_DIR}/lib -name "*.so")
for path in $LIB_FILES
do
LDD_RESULT=$(LD_LIBRARY_PATH=${LD_PATH} ldd $path 2>&1 > /dev/null)
if [ -n "$LDD_RESULT" ];
then
echo "$LDD_RESULT"
LIB_ERROR="T"
fi
done
if test "T" = $LIB_ERROR;
then
echo ""
echo "!!! ERROR !!! - Missing library detected!"
echo "This system does not have the correct libs to run ${PGM_NAME}."
echo "Installation will not complete. Please use a compatible distro."
echo ""
read -p "Press ENTER to exit installer:" BLAH
exit 1
fi
################################
# Install bundle and Menu/Link
################################
# uninstall any older versions
if [ -d ${INSTALL_DEST_BASE}/${PGM_NAME} ];
then
echo ""
echo "Removing existing ${PGM_NAME} installation from ${INSTALL_DEST_BASE}"
echo ""
if [ "T" = ${HAS_XDG} ];
then
sudo xdg-desktop-menu uninstall ${MENU_FILE_PATH}
sudo xdg-icon-resource uninstall --size 16 ${ICON_NAME}
sudo xdg-icon-resource uninstall --size 22 ${ICON_NAME}
sudo xdg-icon-resource uninstall --size 32 ${ICON_NAME}
sudo xdg-icon-resource uninstall --size 48 ${ICON_NAME}
if [ -e /usr/share/icons/hicolor/scalable/apps/${ICON_NAME}.svg ];
then
sudo rm -f /usr/share/icons/hicolor/scalable/apps/${ICON_NAME}.svg
fi
fi
if [ -e ~/Desktop/${DESKTOP_LINK_FILE} ];
then
sudo rm -f ~/Desktop/${DESKTOP_LINK_FILE}
fi
# delete the old package
sudo rm -rf ${INSTALL_DEST_BASE}/${PGM_NAME}
fi
echo ""
echo "Installing ${PGM_NAME} in ${INSTALL_DEST_BASE}"
echo ""
# Copy the new version in the install directory
sudo mkdir ${INSTALL_DEST_BASE}/${PGM_NAME}
sudo cp -Rf ${BUNDLE_DIR}/* ${INSTALL_DEST_BASE}/${PGM_NAME}
# write the desktop/menu file
echo "[Desktop Entry]" > /tmp/${MENU_FILE}
echo "Encoding=UTF-8" >> /tmp/${MENU_FILE}
echo "Version=1.0" >> /tmp/${MENU_FILE}
echo "Type=Application" >> /tmp/${MENU_FILE}
echo "Terminal=false" >> /tmp/${MENU_FILE}
echo "Exec=${PGM_EXEC_PATH}" >> /tmp/${MENU_FILE}
echo "Name=${PGM_NAME}" >> /tmp/${MENU_FILE}
echo "Icon=${ICON_NAME}" >> /tmp/${MENU_FILE}
echo "Comment=Digital Audio Workstation" >> /tmp/${MENU_FILE}
echo "Categories=AudioVideo;Audio;Recorder;" >> /tmp/${MENU_FILE}
chmod ugo+rx /tmp/${MENU_FILE}
sudo mv /tmp/${MENU_FILE} ${MENU_FILE_PATH}
# install the Menu, Link, and Icon(s)
if [ "T" = ${HAS_XDG} ];
then
echo "Adding ${PGM_NAME} to the applications menu"
sudo xdg-icon-resource install --context apps --size 16 ${ICON_PATH}/${PGM_NAME_LOWER}_icon_16px.png ${ICON_NAME}
sudo xdg-icon-resource install --context apps --size 22 ${ICON_PATH}/${PGM_NAME_LOWER}_icon_22px.png ${ICON_NAME}
sudo xdg-icon-resource install --context apps --size 32 ${ICON_PATH}/${PGM_NAME_LOWER}_icon_32px.png ${ICON_NAME}
sudo xdg-icon-resource install --context apps --size 48 ${ICON_PATH}/${PGM_NAME_LOWER}_icon_48px.png ${ICON_NAME}
if [ -e ${ICON_PATH}/${PGM_NAME_LOWER}_icon.svg -a -d /usr/share/icons/hicolor/scalable/apps ];
then
sudo cp -f ${ICON_PATH}/${PGM_NAME_LOWER}_icon.svg /usr/share/icons/hicolor/scalable/apps/${ICON_NAME}.svg
fi
sudo xdg-desktop-menu install ${MENU_FILE_PATH}
echo "Creating a desktop link for ${PGM_NAME}"
cp ${MENU_FILE_PATH} ~/Desktop/${DESKTOP_LINK_FILE}
chmod ugo+rx ~/Desktop/${DESKTOP_LINK_FILE}
else
echo "Creating a desktop link for ${PGM_NAME}"
cp ${MENU_FILE_PATH} ~/Desktop/${DESKTOP_LINK_FILE}
chmod ugo+rx ~/Desktop/${DESKTOP_LINK_FILE}
fi
###########################
# Check Jack and qjackctl
###########################
echo ""
echo "Checking to see if Jack is installed"
if ! which jackd > /dev/null;
then
echo ""
echo "The program Jack is missing from this system. Jack is a required component of $PGM_NAME."
echo ""
ANSWER=$(VaildateYesNoQuestion "Install jack using system software repository?")
if test "y" = $ANSWER;
then
echo "Attempting to install Jack"
SystemInstall "jackd"
if [ $? -ne 0 ];
then
echo ""
read -p "Press ENTER to continue:" BLAH
fi
fi
else
echo "Jack OK"
fi
if ! which qjackctl > /dev/null;
then
echo ""
echo "The program QjackCtl is missing from this system. QjackCtl is an OPTIONAL component of $PGM_NAME."
echo ""
ANSWER=$(VaildateYesNoQuestion "Install QjackCtl using system software repository?")
if test "y" = $ANSWER;
then
echo "Attempting to install QjackCtl"
SystemInstall "qjackctl"
if [ $? -ne 0 ];
then
echo ""
read -p "Press ENTER to continue:" BLAH
fi
fi
fi
########################
# Run Sanity Check
########################
USER_GROUP_ADJUSTED="f"
if ! ./${BUNDLE_DIR}/sanityCheck -a > /dev/null;
then
echo ""
echo "System failed the quick sanity check... Looking for the cause"
if ! ./${BUNDLE_DIR}/sanityCheck -rt > /dev/null;
then
echo ""
echo "System does not allow realtime for the current user... Looking for a solution"
if ./${BUNDLE_DIR}/sanityCheck -hasaudiogroup > /dev/null;
then
if ./${BUNDLE_DIR}/sanityCheck -memberaudiogroup > /dev/null 2>&1;
then
## This is an odd case. We have an audio group and are a member.
echo ""
echo "!!! WARNING !!! - The current user can not execute realtime processes."
echo "This will adversely affect audio latency."
echo "This system has an audio group and the user is a member. If jack was"
echo "just installed, a simple log out/in may fix this."
echo ""
echo "For best results, please correct this on your system."
echo "(Hint: check /etc/security/limits.conf or /etc/security/limits.d/)"
echo ""
read -p "Press ENTER to continue:" BLAH
else
# Not a member of an audio group. Try to fix it.
if ./${BUNDLE_DIR}/sanityCheck -hasgroup audio > /dev/null && find /etc/security -type f -name "*.conf" | xargs grep -q "^@audio.*rtprio";
then
# add user to audio group
echo ""
echo "Adding user `whoami` to the audio group."
echo "This should allow you to run realtime tasks. Please re-login for this change to take affect."
echo ""
read -p "Press ENTER to continue:" BLAH
user=`whoami`
if sudo usermod -a -G audio $user;
then
USER_GROUP_ADJUSTED="t"
else
echo ""
echo "!!! ERROR !!! - Not able to add user to the audio group (usermod failed)!"
echo ""
echo "Please add yourself to the audio group and re-login"
echo ""
read -p "Press ENTER to continue:" BLAH
fi
elif ./${BUNDLE_DIR}/sanityCheck -hasgroup jackuser > /dev/null && find /etc/security -type f -name "*.conf" | xargs grep -q "^@jackuser.*rtprio";
then
# add user to jackuser group
echo ""
echo "Adding user `whoami` to the jackuser group."
echo "This should allow you to run realtime tasks. Please re-login for this change to take affect."
echo ""
read -p "Press ENTER to continue:" BLAH
user=`whoami`
if sudo usermod -a -G jackuser $user;
then
USER_GROUP_ADJUSTED="t"
else
echo ""
echo "!!! ERROR !!! - Not able to add user to the jackuser group."
echo ""
echo "Please add yourself to the audio group and re-login"
echo ""
read -p "Press ENTER to continue:" BLAH
fi
fi
fi
else
# No audio group found on this system!
echo ""
echo "!!! WARNING !!! - The system does not seem to have an audio group (audio or jackuser)."
echo ""
echo "We will not attempt to fix this. Please configure your system to allow"
echo "non-root users to execute realtime tasks."
echo ""
read -p "Press ENTER to continue:" BLAH
fi
fi
if ! ./${BUNDLE_DIR}/sanityCheck -freqscaling > /dev/null;
then
echo ""
echo "!!! WARNING !!! - Your system seems to use frequency scaling."
echo "This can have a serious impact on audio latency. You have two choices:"
echo "(1) turn it off, e.g. by chosing the 'performance' governor."
echo "(2) Use the HPET clocksource by passing \"-c h\" to JACK"
echo "(this second option only works on relatively recent computers)"
echo ""
read -p "Press ENTER to continue:" BLAH
fi
if [ "f" = $USER_GROUP_ADJUSTED ];
then
if ! ./${BUNDLE_DIR}/sanityCheck -memlock > /dev/null;
then
echo ""
echo "!!! WARNING !!! - You are not allowed to lock memory."
echo ""
echo "We will not attempt to fix this. Please configure your system to allow"
echo "non-root users to execute lock memory."
echo ""
read -p "Press ENTER to continue:" BLAH
fi
fi
fi
########################
# Install Complete
########################
echo ""
echo "Cleaning up"
rm -rf ${BUNDLE_DIR}/
echo ""
echo "!!! Install Complete !!!"
if [ "t" = $USER_GROUP_ADJUSTED ];
then
echo "You will need to logout and then login again for all changes to be complete"
fi
echo ""
read -p "Press ENTER to close this window:" BLAH