3 ####################################
6 # Ardour/Mixbus bundle installer
9 ###################################
11 MAJOR_VERSION="%REPLACE_MAJOR_VERSION%"
13 PGM_NAME="%REPLACE_PGM%"
14 PGM_VENDOR="%REPLACE_VENDOR%"
15 PGM_EXEC_FILE="%REPLACE_EXE%${MAJOR_VERSION}"
19 if test -z "$INSTALL_DEST_BASE"; then
20 INSTALL_DEST_BASE="/opt"
26 USER_BIN_DIR="/usr/local/bin"
28 PGM_NAME_LOWER=$(echo $PGM_NAME | tr '[:upper:]' '[:lower:]')
32 #### Global Variables ####
36 ########################
37 # Function Definitions
38 ########################
40 VaildateYesNoQuestion ()
47 until test "y" = $INPUT_OK;
50 read -p "$1 [y/n]: " USER_INPUT
53 if [ ! -z $USER_INPUT ];
55 if [ "Y" = $USER_INPUT -o "y" = $USER_INPUT -o "n" = $USER_INPUT -o "N" = $USER_INPUT ];
62 echo $USER_INPUT | tr '[:upper:]' '[:lower:]'
69 # Determine which software install app to use and then install requested package
72 if which yum > /dev/null;
74 ${SUPER} yum -y install $1
80 echo "!!! ERROR !!! yum install failed for an unknown reason."
81 echo "Please install package $1 after this installer completes."
85 elif which apt-get > /dev/null;
87 ${SUPER} apt-get -y install $1
93 echo "!!! ERROR !!! apt-get install failed for an unknown reason."
94 echo "Please install package $1 after this installer completes."
100 echo "!!! ERROR !!! - Not able to detect which software install tool to use (yum or apt-get)."
101 echo "Please install package $1 using the system software install tool."
110 ########################################################################
112 ########################################################################
115 # If you double click a script, some systems don't get the PWD correct.
116 # Force it to be correct
117 PKG_PATH=$(dirname "$(readlink -f "$0")")
121 echo "Welcome to the ${PGM_NAME} installer"
123 echo "${PGM_NAME} will be installed for user ${USER_NAME} in ${INSTALL_DEST_BASE}"
125 #############################
126 # Check for root privileges
127 #############################
132 if [ "$(id -u)" != "0" ]; then
134 if ! which sudo > /dev/null;
137 echo "Sudo installed failed, attempting to install using su"
138 echo "Please enter root password below"
141 if ! su -s $THE_SHELL -c "./.stage2.run";
146 echo "This installer requires root privileges. It is currently not"
147 echo "running as root AND an attempt to use su failed."
149 echo "Please correct this by installing and configuring sudo or running"
150 echo "the installer as root (su -s $THE_SHELL -c)."
152 read -p "Press ENTER to exit installer:" BLAH
157 sudo -k # make sudo forget about cached credentials
163 echo "Attempting to install using su"
164 echo "Please enter root password below"
167 if ! su -s $THE_SHELL -c "./.stage2.run";
172 echo "This installer requires root privileges. It is currently not"
173 echo "running as root AND an attempt to use both sudo and su failed."
175 echo "Please correct this by installing and configuring sudo or running"
176 echo "the installer as root (su -s $THE_SHELL -c)."
178 read -p "Press ENTER to exit installer:" BLAH
185 # The quoting reqired for the su sanityCheck method does not work when used without
186 # su. Using sh -c in the normal case gets around that, but is a bit of a hack.
189 NORM_USER="su -l $USER_NAME -s $THE_SHELL -c"
192 ###############################
193 # Check for install destination
194 ###############################
196 if test -n "$CALL_MKDIR"; then
197 ${SUPER} mkdir -p "$INSTALL_DEST_BASE"
200 if [ ! -d ${INSTALL_DEST_BASE} ];
203 echo "!!! ERROR !!! - Installation location ${INSTALL_DEST_BASE} does not exist!"
204 echo "Installation will not complete."
206 read -p "Press ENTER to exit installer:" BLAH
211 ############################
212 # Determine processor type
213 ############################
216 i[3456789]86|x86|i86pc)
217 echo "Architecture is x86"
221 echo "Architecture is x86_64"
226 echo "!!! ERROR !!! - Unknown architecture `uname -m`"
228 read -p "Press ENTER to exit installer:" BLAH
237 if test -n "$MULTABI_BUNDLE"; then
238 if ! "${PKG_PATH}/.gcc-glibmm-abi-check" --fail --gcc5; then
243 # allow to manually override
244 if test "$1" = "--gcc4"; then
247 if test "$1" = "--gcc5"; then
254 ####################################
255 # Check if bundle is for this system
256 ####################################
258 if [ ! -e ${PGM_NAME}_${ARCH}${ABI}-*.tar ]; then
260 echo "!!! ERROR !!! Can't locate ${ARCH}${ABI} bundle file."
261 echo "The installer detected the system as ${ARCH}${ABI}, but this bundle"
262 echo "does not contain the files needed for that configuration."
264 read -p "Press ENTER to exit installer:" BLAH
273 # We have to check the current folder and the INSTALL_DEST_BASE just
274 # in case they are on different devices
275 echo "Checking for required disk space"
277 if [ ! -e .${PGM_NAME}_${ARCH}${ABI}-*.size ]; then
279 echo "!!! ERROR !!! Can't locate .size file for ${ARCH}${ABI} bundle."
280 echo "This package is broken or does not support ${ARCH}${ABI}."
282 read -p "Press ENTER to exit installer:" BLAH
285 REQUIRED_BYTES=$(cat .${PGM_NAME}_${ARCH}${ABI}-*.size)
287 #Installer needs 2x the space since the bundle is unpacked locally and then copied
288 REQUIRED_BYTES=$(($REQUIRED_BYTES + $REQUIRED_BYTES))
290 #Check space in current folder
291 FREE_BYTES=$(df -P -B 1 "${PKG_PATH}" | grep / | awk '{print $4}')
293 if [ ${FREE_BYTES} -le ${REQUIRED_BYTES} ] ; then
295 echo "!!! ERROR !!! - Insufficient disk space in ${PKG_PATH}"
296 echo "Install requires ${REQUIRED_BYTES} bytes and"
297 echo "there is only ${FREE_BYTES} bytes of free space"
299 read -p "Press ENTER to exit installer:" BLAH
303 #Check space in INSTALL_DEST_BASE
304 FREE_BYTES=$(df -P -B 1 ${INSTALL_DEST_BASE} | grep / | awk '{print $4}')
306 if [ ${FREE_BYTES} -le ${REQUIRED_BYTES} ] ; then
308 echo "!!! ERROR !!! - Insufficient disk space in ${INSTALL_DEST_BASE}"
309 echo "Install requires ${REQUIRED_BYTES} bytes and"
310 echo "there is only ${FREE_BYTES} bytes of free space"
312 read -p "Press ENTER to exit installer:" BLAH
317 #############################
318 # Determine C11 stdlibc++ ABI
319 #############################
321 if test -z "$ABI"; then
322 if %REPLACE_GCC5%; then
323 # Ardour was compiled with gcc5, warn on gcc4 systems
324 if ! "${PKG_PATH}/.gcc-glibmm-abi-check" --gcc5; then
326 echo "WARNING: GCC4/5 libstdc++ ABI Mismatch"
328 echo "${PGM_NAME} was compiled with gcc5, your system uses an older version of the"
329 echo "standard c++ library. Plugins on your system may not load or plugin-UIs"
330 echo "may cause crashes."
332 ANSWER=$(VaildateYesNoQuestion "Continue anyway?")
333 if test "n" = $ANSWER; then
338 # Ardour was compiled with gcc4, warn on gcc5 systems
339 if ! "${PKG_PATH}/.gcc-glibmm-abi-check" --gcc4 ; then
341 echo "WARNING: GCC4/5 libstdc++ ABI Mismatch"
343 echo "${PGM_NAME} was compiled with gcc4, your system uses a newer version of the"
344 echo "standard c++ library. Plugins on your system may not load or plugin-UIs"
345 echo "may cause crashes."
347 ANSWER=$(VaildateYesNoQuestion "Continue anyway?")
348 if test "n" = $ANSWER; then
355 if %REPLACE_WINE%; then
356 if test -z "`which wine`"; then
358 echo "!!! ERROR !!! - 'wine' was not found."
360 echo "This version of ${PGM_NAME} with Windows VST support requires wine."
361 echo "https://www.winehq.org/"
363 read -p "Press ENTER to exit installer:" BLAH
368 #####################
370 #####################
372 FILESYSTEM_TYPE=$(df -P -T "${PKG_PATH}" | grep / | awk '{print $2}')
373 echo "Bundle is on ${FILESYSTEM_TYPE} filesystem"
375 # untar the correct bundle for us to install
376 echo "Unpacking bundle for $ARCH${ABI}"
378 if ! tar -xf ${PGM_NAME}_${ARCH}${ABI}-*.tar; then
380 echo "!!! ERROR !!! Can't unpack ${ARCH}${ABI} bundle file."
382 read -p "Press ENTER to exit installer:" BLAH
385 echo "Bundle unpacked"
388 BUNDLE_DIR=$(basename `find -maxdepth 1 -type d -name "${PGM_NAME}_${ARCH}-*"`)
391 #######################
392 # Check for xdg utils
393 #######################
395 #load the file that contains the translated names of the users directories
396 if [ -e /home/${USER_NAME}/.config/user-dirs.dirs ]; then
397 . /home/${USER_NAME}/.config/user-dirs.dirs
400 if [ "$(id -u)" != "0" ]; then
401 USER_DESKTOP_DIR=${XDG_DESKTOP_DIR:-$HOME/Desktop}
403 #running as root with su makes this more difficult
404 DESKTOP_FOLDER=$(echo ${XDG_DESKTOP_DIR:-$HOME/Desktop} | awk -F/ '{print $NF}')
405 USER_DESKTOP_DIR="/home/${USER_NAME}/${DESKTOP_FOLDER}"
408 XDG_MENU_VER=$(xdg-desktop-menu --version 2> /dev/null)
409 if [ -z "$XDG_MENU_VER" ];
411 echo "System does not have xdg-desktop-menu installed"
415 XDG_ICON_VER=$(xdg-icon-resource --version 2> /dev/null)
416 if [ -z "$XDG_ICON_VER" ];
418 echo "System does not have xdg-icon-resource installed"
422 #################################################
424 #################################################
425 if %REPLACE_WINE%; then
427 echo "Searching libwine.so (Windows VST support)"
428 # we need to add libwine to ardour's LD_LIBRARY_PATH
429 # libwine itself includes paths to the various system-components
430 # which may be different on each platform.
432 # There's some chicken/egg here: ardour.exe.so is linked against libwine.so
433 # at build-time. wine/wineloader assumes a windows-application (which does not use libwine
434 # directly) and does not set up the LD path to libwine itself. the application terminates
435 # (missing libs) before it even starts..
437 # wine itself does not provide means to find the location of libwine.
438 # /usr/bin/wine is usually shell-script and libwine.so can be found in
439 # various places on different distros.
441 # if this check were quick and easy.. it should be done in the startup-script, but it's not
442 # so here we go... (updating wine may require re-installing ardour)
444 # on recent Ubuntu wine does load both:
445 # /usr/lib/i386-linux-gnu/libwine.so.1
447 # /usr/lib/x86_64-linux-gnu/libwine.so.1
448 # so we need to work around this (thanks).
449 # (this hack break 64bit LinuxVST builds, but we don't do those anyway)
452 LD_DEBUG=files wine `pwd`/${BUNDLE_DIR}/lib/ardour-vst-scanner.exe.so 2>&1 \
453 | grep -e "calling init:.*libwine" \
454 | sed 's/^.*calling init: //' \
455 | grep -v x86_64-linux-gnu \
458 if ! test -f "$LIBWINE"; then
460 echo "!!! ERROR !!! - 'libwine.so*' was not found."
462 read -p "Press ENTER to exit installer:" BLAH
465 echo "Using: $LIBWINE"
466 # this replaces/overwrites the bundled libwine
467 cp -L "$LIBWINE" `pwd`/${BUNDLE_DIR}/lib/libwine.so.1
470 #################################################
471 # Check if system libs are OK (libc, etc)
472 #################################################
475 echo "Checking system libs to see if they are compatible with ${PGM_NAME}."
479 LD_PATH=`pwd`/${BUNDLE_DIR}/lib
482 LDD_RESULT=$(LD_LIBRARY_PATH=${LD_PATH} ldd ${BUNDLE_DIR}/bin/${PGM_NAME_LOWER}-* 2>&1 > /dev/null | grep -v "no version information")
484 if [ -n "$LDD_RESULT" ];
491 LIB_FILES=$(find ${BUNDLE_DIR}/lib -name "*.so")
493 for path in $LIB_FILES
495 LDD_RESULT=$(LD_LIBRARY_PATH=${LD_PATH} ldd $path 2>&1 > /dev/null | grep -v "no version information")
496 if [ -n "$LDD_RESULT" ];
503 if test "T" = $LIB_ERROR;
506 echo "!!! ERROR !!! - Missing library detected!"
507 echo "This system does not have the correct libs to run ${PGM_NAME}."
508 echo "Installation will not complete. Please use a compatible distro."
510 read -p "Press ENTER to exit installer:" BLAH
514 ################################
515 # Setup derived variables
516 ################################
517 PGM_VERSION=$(echo ${BUNDLE_DIR} | cut -d- -f2)
518 PGM_BUILDTYPE=$(echo ${BUNDLE_DIR} | cut -d- -f3)
520 if [ -z ${PGM_BUILDTYPE} ];
522 PGM_FULL_NAME="${PGM_NAME}-${PGM_VERSION}"
523 ICON_NAME="${PGM_VENDOR}-${PGM_NAME}_${PGM_VERSION}" #no dash between name and version since dash seperates vendor from program
524 MENU_FILE="${PGM_VENDOR}-${PGM_NAME}_${PGM_VERSION}.desktop" #no dash between name and version since dash seperates vendor from program
525 DESKTOP_LINK_FILE="${PGM_NAME}_${PGM_VERSION}.desktop"
527 PGM_FULL_NAME="${PGM_NAME}-${PGM_VERSION}-${PGM_BUILDTYPE}"
528 ICON_NAME="${PGM_VENDOR}-${PGM_NAME}_${PGM_VERSION}_${PGM_BUILDTYPE}" #no dash between name and version since dash seperates vendor from program
529 MENU_FILE="${PGM_VENDOR}-${PGM_NAME}_${PGM_VERSION}_${PGM_BUILDTYPE}.desktop" #no dash between name and version since dash seperates vendor from program
530 DESKTOP_LINK_FILE="${PGM_NAME}_${PGM_VERSION}_${PGM_BUILDTYPE}.desktop"
533 PGM_EXEC_PATH="${INSTALL_DEST_BASE}/${PGM_FULL_NAME}/bin/${PGM_EXEC_FILE}"
534 ICON_PATH="${INSTALL_DEST_BASE}/${PGM_FULL_NAME}/share/resources"
535 MENU_FILE_PATH="${INSTALL_DEST_BASE}/${PGM_FULL_NAME}/share"
537 ################################
538 # Install bundle and Menu/Link
539 ################################
541 # uninstall any older versions
542 UNINSTALLERS=$(find ${INSTALL_DEST_BASE} -maxdepth 1 -type f -name "${PGM_NAME}-*.uninstall.sh")
543 if [ ! -z "$UNINSTALLERS" ];
545 for i in $UNINSTALLERS; do
547 echo "Found existing ${PGM_NAME} installation."
549 ANSWER=$(VaildateYesNoQuestion "Do you want to run the uninstaller ${i} ?")
551 if test "y" = $ANSWER;
554 echo "Running uninstaller $i"
566 echo "Installing ${PGM_NAME} ${PGM_VERSION} in ${INSTALL_DEST_BASE}"
569 # Copy the new version in the install directory
570 ${SUPER} mkdir ${INSTALL_DEST_BASE}/${PGM_FULL_NAME}
571 ${SUPER} cp -Rf ${BUNDLE_DIR}/* ${INSTALL_DEST_BASE}/${PGM_FULL_NAME}/
573 # write the desktop/menu file
574 echo "[Desktop Entry]" > /tmp/${MENU_FILE}
575 echo "Encoding=UTF-8" >> /tmp/${MENU_FILE}
576 echo "Version=1.0" >> /tmp/${MENU_FILE}
577 echo "Type=Application" >> /tmp/${MENU_FILE}
578 echo "Terminal=false" >> /tmp/${MENU_FILE}
579 echo "Exec=${PGM_EXEC_PATH}" >> /tmp/${MENU_FILE}
580 if [ -z ${PGM_BUILDTYPE} ];
582 echo "Name=${PGM_NAME}-${PGM_VERSION}" >> /tmp/${MENU_FILE}
584 echo "Name=${PGM_NAME}-${PGM_VERSION}-${PGM_BUILDTYPE}" >> /tmp/${MENU_FILE}
586 echo "Icon=${ICON_NAME}" >> /tmp/${MENU_FILE}
587 echo "Comment=Digital Audio Workstation" >> /tmp/${MENU_FILE}
588 echo "Categories=AudioVideo;AudioEditing;Audio;Recorder;" >> /tmp/${MENU_FILE}
590 chmod ugo+rx /tmp/${MENU_FILE}
591 ${SUPER} mv /tmp/${MENU_FILE} ${MENU_FILE_PATH}/.
593 # install the Menu, Link, and Icon(s)
594 if [ "T" = ${HAS_XDG} ];
596 echo "Adding ${PGM_NAME} to the applications menu"
597 ${SUPER} xdg-icon-resource install --context apps --size 16 ${ICON_PATH}/${PGM_NAME}-icon_16px.png ${ICON_NAME}
598 ${SUPER} xdg-icon-resource install --context apps --size 22 ${ICON_PATH}/${PGM_NAME}-icon_22px.png ${ICON_NAME}
599 ${SUPER} xdg-icon-resource install --context apps --size 32 ${ICON_PATH}/${PGM_NAME}-icon_32px.png ${ICON_NAME}
600 ${SUPER} xdg-icon-resource install --context apps --size 48 ${ICON_PATH}/${PGM_NAME}-icon_48px.png ${ICON_NAME}
601 ${SUPER} xdg-icon-resource install --context apps --size 256 ${ICON_PATH}/${PGM_NAME}-icon_256px.png ${ICON_NAME}
603 if [ -e ${ICON_PATH}/${PGM_NAME}_icon.svg -a -d /usr/share/icons/hicolor/scalable/apps ];
605 ${SUPER} cp -f ${ICON_PATH}/${PGM_NAME}_icon.svg /usr/share/icons/hicolor/scalable/apps/${ICON_NAME}.svg
608 ${SUPER} xdg-desktop-menu install ${MENU_FILE_PATH}/${MENU_FILE}
609 ${SUPER} xdg-desktop-menu forceupdate --mode system # Some systems need an extra kick
612 echo "Creating a desktop link for ${PGM_NAME} in ${USER_DESKTOP_DIR}"
613 cp ${MENU_FILE_PATH}/${MENU_FILE} "${USER_DESKTOP_DIR}/${DESKTOP_LINK_FILE}"
614 chmod ugo+rwx "${USER_DESKTOP_DIR}/${DESKTOP_LINK_FILE}"
617 echo "Creating a desktop link for ${PGM_NAME} in ${USER_DESKTOP_DIR}"
618 cp ${MENU_FILE_PATH}/${MENU_FILE} "${USER_DESKTOP_DIR}/${DESKTOP_LINK_FILE}"
619 chmod ugo+rwx "${USER_DESKTOP_DIR}/${DESKTOP_LINK_FILE}"
623 echo "Copying uninstall script to ${INSTALL_DEST_BASE}"
626 ${SUPER} cp -f ${BUNDLE_DIR}/bin/*.uninstall.sh ${INSTALL_DEST_BASE}/.
628 # Create link to the program in user bin
631 echo "Creating link ${PGM_NAME}${MAJOR_VERSION} in ${USER_BIN_DIR}"
634 if [ -d "${USER_BIN_DIR}" ]; then
635 if [ -e "${USER_BIN_DIR}/${PGM_NAME}${MAJOR_VERSION}" ]; then
636 ${SUPER} rm -f ${USER_BIN_DIR}/${PGM_NAME}${MAJOR_VERSION}
640 ${SUPER} ln -sf ${PGM_EXEC_PATH} ${PGM_NAME}${MAJOR_VERSION}
644 echo "Can not create link because ${USER_BIN_DIR} does not exist"
647 ###########################
648 # Check Jack and qjackctl
649 ###########################
652 echo "Checking to see if Jack is installed"
657 if which jackd > /dev/null; then
659 echo "Jack already present"
660 elif which jackdbus > /dev/null; then
662 echo "jackdbus was found but not jackd. Jack version compatibility check cannot be performed."
667 echo "The program Jack is missing from this system."
669 echo "Jack is a very useful utility to allow you to interconnect $PGM_NAME and other audio/MIDI applications."
670 echo "You can use $PGM_NAME without it, but you may find it useful to have around."
673 ANSWER=$(VaildateYesNoQuestion "Install jack using system software repository?")
675 if test "y" = $ANSWER;
677 echo "Attempting to install Jack"
678 SystemInstall "jackd"
683 read -p "Press ENTER to continue:" BLAH
690 # Check to see if Jack is new enough to operate correctly.
692 if [ "t" = ${JACK_INSTALLED} ];
695 JACK_VER_STRING=$(jackd --version | grep -e "jackd.*protocol")
696 JACK_NAME=$(echo $JACK_VER_STRING | awk '{print $1}')
697 JACK_VERSION=$(echo $JACK_VER_STRING | awk '{print $3}' | sed 's/-.*$//')
698 JACK_VERSION_MAJOR=$(echo $JACK_VERSION | awk 'BEGIN{FS="."}{print $1}')
699 JACK_VERSION_MIDDLE=$(echo $JACK_VERSION | awk 'BEGIN{FS="."}{print $2}')
700 JACK_VERSION_MINOR=$(echo $JACK_VERSION | awk 'BEGIN{FS="."}{print $3}')
702 if [ "jackd" = ${JACK_NAME} ];
704 if [ ${JACK_VERSION_MAJOR} -eq 0 ];
706 if [ ${JACK_VERSION_MIDDLE} -eq 121 ];
708 if [ ${JACK_VERSION_MINOR} -ge 3 ];
712 elif [ ${JACK_VERSION_MIDDLE} -gt 121 ];
716 elif [ ${JACK_VERSION_MAJOR} -gt 0 ];
720 elif [ "jackdmp" = ${JACK_NAME} ];
722 if [ ${JACK_VERSION_MAJOR} -eq 1 ];
724 if [ ${JACK_VERSION_MIDDLE} -eq 9 ];
726 if [ ${JACK_VERSION_MINOR} -ge 8 ];
730 elif [ ${JACK_VERSION_MIDDLE} -gt 9 ];
734 elif [ ${JACK_VERSION_MAJOR} -gt 1 ];
740 if [ "t" = ${JACK_VERSION_OK} ];
743 echo "Jack Version Check OK (${JACK_VER_STRING})"
747 echo "!!! WARNING !!! - The version of Jack on this system is too old!"
748 echo "Using an old version of Jack is not recommended. Please update"
749 echo "Jack for best results."
751 echo "System Jack version:"
752 echo " ${JACK_VER_STRING}"
754 echo "Recommended minimum versions:"
755 echo " Jack1 - 0.121.3"
756 echo " Jack2 - 1.9.8"
758 read -p "Press ENTER to continue:" BLAH
762 if ! which qjackctl > /dev/null;
765 echo "The program QjackCtl is missing from this system."
766 echo "QjackCtl is an extremely useful tool for any system that runs JACK applications like $PGM_NAME."
767 echo "We recommend that you install it."
770 ANSWER=$(VaildateYesNoQuestion "Install QjackCtl using system software repository?")
772 if test "y" = $ANSWER;
774 echo "Attempting to install QjackCtl"
775 SystemInstall "qjackctl"
780 read -p "Press ENTER to continue:" BLAH
786 ########################
788 ########################
790 USER_GROUP_ADJUSTED="f"
792 if ! ${NORM_USER} "${INSTALL_DEST_BASE}/${PGM_FULL_NAME}/bin/sanityCheck -a > /dev/null";
795 echo "System failed the quick sanity check... Looking for the cause"
797 if ! ${NORM_USER} "${INSTALL_DEST_BASE}/${PGM_FULL_NAME}/bin/sanityCheck -rt > /dev/null";
800 echo "System does not allow realtime for the current user... Looking for a solution"
802 if ${NORM_USER} "${INSTALL_DEST_BASE}/${PGM_FULL_NAME}/bin/sanityCheck -hasaudiogroup > /dev/null";
804 if ${NORM_USER} "${INSTALL_DEST_BASE}/${PGM_FULL_NAME}/bin/sanityCheck -memberaudiogroup > /dev/null 2>&1";
806 ## This is an odd case. We have an audio group and are a member.
808 echo "!!! WARNING !!! - The current user can not execute realtime processes."
809 echo "This will adversely affect audio latency."
810 echo "This system has an audio group and the user is a member. If jack was"
811 echo "just installed, a simple log out/in may fix this."
813 echo "For best results, please correct this on your system."
814 echo "(Hint: check /etc/security/limits.conf or /etc/security/limits.d/)"
816 read -p "Press ENTER to continue:" BLAH
818 # Not a member of an audio group. Try to fix it.
820 if ${NORM_USER} "${INSTALL_DEST_BASE}/${PGM_FULL_NAME}/bin/sanityCheck -hasgroup audio > /dev/null && find /etc/security -type f -name "*.conf" | xargs grep -q "^@audio.*rtprio" ";
822 # add user to audio group
824 echo "Adding user ${USER_NAME} to the audio group."
825 echo "This should allow you to run realtime tasks. Please re-login for this change to take affect."
827 read -p "Press ENTER to continue:" BLAH
829 if ${SUPER} usermod -a -G audio ${USER_NAME};
831 USER_GROUP_ADJUSTED="t"
834 echo "!!! ERROR !!! - Not able to add user to the audio group (usermod failed)!"
836 echo "Please add yourself to the audio group and re-login"
838 read -p "Press ENTER to continue:" BLAH
841 elif ${NORM_USER} "${INSTALL_DEST_BASE}/${PGM_FULL_NAME}/bin/sanityCheck -hasgroup jackuser > /dev/null && find /etc/security -type f -name "*.conf" | xargs grep -q "^@jackuser.*rtprio" ";
843 # add user to jackuser group
845 echo "Adding user ${USER_NAME} to the jackuser group."
846 echo "This should allow you to run realtime tasks. Please re-login for this change to take affect."
848 read -p "Press ENTER to continue:" BLAH
850 if ${SUPER} usermod -a -G jackuser ${USER_NAME};
852 USER_GROUP_ADJUSTED="t"
855 echo "!!! ERROR !!! - Not able to add user to the jackuser group."
857 echo "Please add yourself to the audio group and re-login"
859 read -p "Press ENTER to continue:" BLAH
866 # No audio group found on this system!
868 echo "!!! WARNING !!! - The system does not seem to have an audio group (audio or jackuser)."
870 echo "We will not attempt to fix this. Please configure your system to allow"
871 echo "non-root users to execute realtime tasks."
873 read -p "Press ENTER to continue:" BLAH
877 if ! ${NORM_USER} "${INSTALL_DEST_BASE}/${PGM_FULL_NAME}/bin/sanityCheck -freqscaling > /dev/null";
880 echo "!!! WARNING !!! - Your system seems to use frequency scaling."
881 echo "This can have a serious impact on audio latency."
882 echo "For best results turn it off, e.g. by choosing the 'performance' governor."
884 read -p "Press ENTER to continue:" BLAH
887 if [ "f" = $USER_GROUP_ADJUSTED ];
889 if ! ${NORM_USER} "${INSTALL_DEST_BASE}/${PGM_FULL_NAME}/bin/sanityCheck -memlock > /dev/null";
892 echo "!!! WARNING !!! - You are not allowed to lock memory."
894 echo "We will not attempt to fix this. Please configure your system to allow"
895 echo "non-root users to execute lock memory."
897 read -p "Press ENTER to continue:" BLAH
903 ########################
905 ########################
909 rm -rf ${BUNDLE_DIR}/
912 echo "!!! Install Complete !!!"
914 if [ "t" = $USER_GROUP_ADJUSTED ];
916 echo "You will need to logout and then login again for all changes to be complete"
920 read -p "Press ENTER to exit installer:" BLAH