Portable builds now have the same layout as system builds. If you want
to build a portable bundle, you now need to additionally install the
`portable` component.
For example:
    $ cmake -Bbuild -DCMAKE_INSTALL_PREFIX=install ...
    $ cmake --build build
    $ cmake --install build
    $ cmake --install build --component portable
		
	
		
			
				
	
	
		
			95 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			95 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/bash
 | 
						|
# Basic start script for running the launcher with the libs packaged with it.
 | 
						|
 | 
						|
function printerror {
 | 
						|
    printf "$1"
 | 
						|
    if which zenity >/dev/null; then zenity --error --text="$1" &>/dev/null;
 | 
						|
    elif which kdialog >/dev/null; then kdialog --error "$1" &>/dev/null;
 | 
						|
    fi
 | 
						|
}
 | 
						|
 | 
						|
if [[ $EUID -eq 0 ]]; then
 | 
						|
    printerror "This program should not be run using sudo or as the root user!\n"
 | 
						|
    exit 1
 | 
						|
fi
 | 
						|
 | 
						|
 | 
						|
LAUNCHER_NAME=@Launcher_APP_BINARY_NAME@
 | 
						|
LAUNCHER_DIR="$(dirname "$(readlink -f "$0")")"
 | 
						|
echo "Launcher Dir: ${LAUNCHER_DIR}"
 | 
						|
 | 
						|
# Set up env - filter out input LD_ variables but pass them in under different names
 | 
						|
export GAME_LIBRARY_PATH=${GAME_LIBRARY_PATH-${LD_LIBRARY_PATH}}
 | 
						|
export GAME_PRELOAD=${GAME_PRELOAD-${LD_PRELOAD}}
 | 
						|
export LD_LIBRARY_PATH="${LAUNCHER_DIR}/lib@LIB_SUFFIX@":$LAUNCHER_LIBRARY_PATH
 | 
						|
export LD_PRELOAD=$LAUNCHER_PRELOAD
 | 
						|
export QT_PLUGIN_PATH="${LAUNCHER_DIR}/plugins"
 | 
						|
export QT_FONTPATH="${LAUNCHER_DIR}/fonts"
 | 
						|
 | 
						|
# Detect missing dependencies...
 | 
						|
DEPS_LIST=`ldd "${LAUNCHER_DIR}"/plugins/*/*.so 2>/dev/null | grep "not found" | sort -u | awk -vORS=", " '{ print $1 }'`
 | 
						|
if [ "x$DEPS_LIST" = "x" ]; then
 | 
						|
    # We have all our dependencies. Run the launcher.
 | 
						|
    echo "No missing dependencies found."
 | 
						|
 | 
						|
    # Just to be sure...
 | 
						|
    chmod +x "${LAUNCHER_DIR}/bin/${LAUNCHER_NAME}"
 | 
						|
 | 
						|
    # Run the launcher
 | 
						|
    exec -a "${LAUNCHER_DIR}/${LAUNCHER_NAME}" "${LAUNCHER_DIR}/bin/${LAUNCHER_NAME}" -d "${LAUNCHER_DIR}" "$@"
 | 
						|
 | 
						|
    # Run the launcher in valgrind
 | 
						|
    # valgrind --log-file="valgrind.log" --leak-check=full --track-origins=yes "${LAUNCHER_DIR}/bin/${LAUNCHER_NAME}" -d "${LAUNCHER_DIR}" "$@"
 | 
						|
 | 
						|
    # Run the launcher with callgrind, delay instrumentation
 | 
						|
    # valgrind --log-file="valgrind.log" --tool=callgrind --instr-atstart=no "${LAUNCHER_DIR}/bin/${LAUNCHER_NAME}" -d "${LAUNCHER_DIR}" "$@"
 | 
						|
    # use callgrind_control -i on/off to profile actions
 | 
						|
 | 
						|
    # Exit with launcher's exit code.
 | 
						|
    # exit $?
 | 
						|
else
 | 
						|
    # apt
 | 
						|
    if which apt-file &>/dev/null; then
 | 
						|
        LIBRARIES=`echo "$DEPS_LIST" | grep -oP "[^, ]*" | sort -u`
 | 
						|
        COMMAND_LIBS=`for LIBRARY in $LIBRARIES; do apt-file -l search $LIBRARY; done`
 | 
						|
        COMMAND_LIBS=`echo "$COMMAND_LIBS" | sort -u | awk -vORS=" " '{ print $1 }'`
 | 
						|
        INSTALL_CMD="sudo apt-get install $COMMAND_LIBS"
 | 
						|
    # pacman
 | 
						|
    elif which pkgfile &>/dev/null; then
 | 
						|
        LIBRARIES=`echo "$DEPS_LIST" | grep -oP "[^, ]*" | sort -u`
 | 
						|
        COMMAND_LIBS=`for LIBRARY in $LIBRARIES; do pkgfile $LIBRARY; done`
 | 
						|
        COMMAND_LIBS=`echo "$COMMAND_LIBS" | sort -u | awk -vORS=" " '{ print $1 }'`
 | 
						|
        INSTALL_CMD="sudo pacman -S $COMMAND_LIBS"
 | 
						|
    # dnf
 | 
						|
    elif which dnf &>/dev/null; then
 | 
						|
        LIBRARIES=`echo "$DEPS_LIST" | grep -oP "[^, ]*" | sort -u`
 | 
						|
        COMMAND_LIBS=`for LIBRARY in $LIBRARIES; do dnf whatprovides -q $LIBRARY; done`
 | 
						|
        COMMAND_LIBS=`echo "$COMMAND_LIBS" | grep -v 'Repo' | sort -u | awk -vORS=" " '{ print $1 }'`
 | 
						|
        INSTALL_CMD="sudo dnf install $COMMAND_LIBS"
 | 
						|
    # yum
 | 
						|
    elif which yum &>/dev/null; then
 | 
						|
        LIBRARIES=`echo "$DEPS_LIST" | grep -oP "[^, ]*" | sort -u`
 | 
						|
        COMMAND_LIBS=`for LIBRARY in $LIBRARIES; do yum whatprovides $LIBRARY; done`
 | 
						|
        COMMAND_LIBS=`echo "$COMMAND_LIBS" | sort -u | awk -vORS=" " '{ print $1 }'`
 | 
						|
        INSTALL_CMD="sudo yum install $COMMAND_LIBS"
 | 
						|
    # zypper
 | 
						|
    elif which zypper &>/dev/null; then
 | 
						|
        LIBRARIES=`echo "$DEPS_LIST" | grep -oP "[^, ]*" | sort -u`
 | 
						|
        COMMAND_LIBS=`for LIBRARY in $LIBRARIES; do zypper wp $LIBRARY; done`
 | 
						|
        COMMAND_LIBS=`echo "$COMMAND_LIBS" | sort -u | awk -vORS=" " '{ print $1 }'`
 | 
						|
        INSTALL_CMD="sudo zypper install $COMMAND_LIBS"
 | 
						|
    # emerge
 | 
						|
    elif which pfl &>/dev/null; then
 | 
						|
        LIBRARIES=`echo "$DEPS_LIST" | grep -oP "[^, ]*" | sort -u`
 | 
						|
        COMMAND_LIBS=`for LIBRARY in $LIBRARIES; do pfl $LIBRARY; done`
 | 
						|
        COMMAND_LIBS=`echo "$COMMAND_LIBS" | sort -u | awk -vORS=" " '{ print $1 }'`
 | 
						|
        INSTALL_CMD="sudo emerge $COMMAND_LIBS"
 | 
						|
    fi
 | 
						|
 | 
						|
    MESSAGE="Error: The launcher is missing the following libraries that it needs to work correctly:\n\t${DEPS_LIST}\nPlease install them from your distribution's package manager."
 | 
						|
    MESSAGE="$MESSAGE\n\nHint (please apply common sense): $INSTALL_CMD\n"
 | 
						|
 | 
						|
    printerror "$MESSAGE"
 | 
						|
    exit 1
 | 
						|
fi
 |