Preserve --dir parameter after updating Allow more than one copy of a command line parameter in MultiMC Linux runner script no longer changes current directory, which allows '--dir .' Fixed unit tests, removed the obsolete one (for some legacy updater command line params that were also removed) [fixes 63127704]
		
			
				
	
	
		
			78 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/bash
 | 
						|
# Basic start script for running MultiMC 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
 | 
						|
 | 
						|
 | 
						|
MMC_DIR="$(dirname "$(readlink -f "$0")")"
 | 
						|
echo "MultiMC Dir: ${MMC_DIR}"
 | 
						|
 | 
						|
# Set up env
 | 
						|
export LD_LIBRARY_PATH="${MMC_DIR}/bin":$LD_LIBRARY_PATH
 | 
						|
export QT_PLUGIN_PATH="${MMC_DIR}/plugins"
 | 
						|
export QT_FONTPATH="${MMC_DIR}/fonts"
 | 
						|
 | 
						|
# Detect missing dependencies...
 | 
						|
DEPS_LIST=`ldd "${MMC_DIR}"/plugins/*/*.so 2>/dev/null | grep "not found" | awk -vORS=", " '{ print $1 }'`
 | 
						|
if [ "x$DEPS_LIST" = "x" ]; then
 | 
						|
	# We have all our dependencies. Run MultiMC.
 | 
						|
	echo "No missing dependencies found."
 | 
						|
 | 
						|
	# Just to be sure...
 | 
						|
	chmod +x "${MMC_DIR}/bin/MultiMC"
 | 
						|
 | 
						|
	# Run MultiMC
 | 
						|
	"${MMC_DIR}/bin/MultiMC" -d "${MMC_DIR}" $@
 | 
						|
 | 
						|
	# Exit with MultiMC's exit code.
 | 
						|
	exit $?
 | 
						|
else
 | 
						|
	# apt
 | 
						|
	if which apt-file &>/dev/null; then
 | 
						|
		LIBRARIES=`echo "$DEPS_LIST" | grep -oP "[^, ]*"`
 | 
						|
		COMMAND_LIBS=`for LIBRARY in $LIBRARIES; do apt-file -l search $LIBRARY; done`
 | 
						|
		COMMAND_LIBS=`echo "$COMMAND_LIBS" | 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 "[^, ]*"`
 | 
						|
		COMMAND_LIBS=`for LIBRARY in $LIBRARIES; do pkgfile $LIBRARY; done`
 | 
						|
		COMMAND_LIBS=`echo "$COMMAND_LIBS" | awk -vORS=" " '{ print $1 }'`
 | 
						|
		INSTALL_CMD="sudo pacman -S $COMMAND_LIBS"
 | 
						|
	# yum
 | 
						|
	elif which yum &>/dev/null; then
 | 
						|
		LIBRARIES=`echo "$DEPS_LIST" | grep -oP "[^, ]*"`
 | 
						|
		COMMAND_LIBS=`for LIBRARY in $LIBRARIES; do yum whatprovides $LIBRARY; done`
 | 
						|
		COMMAND_LIBS=`echo "$COMMAND_LIBS" | awk -vORS=" " '{ print $1 }'`
 | 
						|
		INSTALL_CMD="sudo yum install $COMMAND_LIBS"
 | 
						|
	# zypper
 | 
						|
	elif which zypper &>/dev/null; then
 | 
						|
		LIBRARIES=`echo "$DEPS_LIST" | grep -oP "[^, ]*"`
 | 
						|
		COMMAND_LIBS=`for LIBRARY in $LIBRARIES; do zypper wp $LIBRARY; done`
 | 
						|
		COMMAND_LIBS=`echo "$COMMAND_LIBS" | awk -vORS=" " '{ print $1 }'`
 | 
						|
		INSTALL_CMD="sudo zypper install $COMMAND_LIBS"
 | 
						|
	# emerge
 | 
						|
	elif which pfl &>/dev/null; then
 | 
						|
		LIBRARIES=`echo "$DEPS_LIST" | grep -oP "[^, ]*"`
 | 
						|
		COMMAND_LIBS=`for LIBRARY in $LIBRARIES; do pfl $LIBRARY; done`
 | 
						|
		COMMAND_LIBS=`echo "$COMMAND_LIBS" | awk -vORS=" " '{ print $1 }'`
 | 
						|
		INSTALL_CMD="sudo emerge $COMMAND_LIBS"
 | 
						|
	fi
 | 
						|
 | 
						|
	MESSAGE="Error: MultiMC 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: $INSTALL_CMD\n"
 | 
						|
 | 
						|
	printerror "$MESSAGE"
 | 
						|
	exit 1
 | 
						|
fi
 |