mirror of
https://github.com/TTimo/GtkRadiant.git
synced 2024-11-14 17:01:22 +00:00
125 lines
2.8 KiB
Bash
125 lines
2.8 KiB
Bash
|
#! /bin/sh
|
||
|
#
|
||
|
# Product setup script - Loki Entertainment Software
|
||
|
|
||
|
# TTimo FIXME need a way to configure this easily
|
||
|
critical_error="Please contact Id software technical support at bugs@idsoftware.com"
|
||
|
|
||
|
# Go to the proper setup directory (if not already there)
|
||
|
cd `dirname $0`
|
||
|
|
||
|
# Return the appropriate architecture string
|
||
|
DetectARCH()
|
||
|
{
|
||
|
status=1
|
||
|
case `uname -m` in
|
||
|
i?86) echo "x86"
|
||
|
status=0;;
|
||
|
*) echo "`uname -m`"
|
||
|
status=0;;
|
||
|
esac
|
||
|
return $status
|
||
|
}
|
||
|
|
||
|
# Return the appropriate version string
|
||
|
DetectLIBC()
|
||
|
{
|
||
|
status=1
|
||
|
if [ `uname -s` != Linux ]; then
|
||
|
echo "glibc-2.1"
|
||
|
return $status
|
||
|
fi
|
||
|
if [ -f `echo /lib/libc.so.6* | tail -1` ]; then
|
||
|
if fgrep GLIBC_2.1 /lib/libc.so.6* 2>&1 >/dev/null; then
|
||
|
echo "glibc-2.1"
|
||
|
status=0
|
||
|
else
|
||
|
echo "glibc-2.0"
|
||
|
status=0
|
||
|
fi
|
||
|
elif [ -f /lib/libc.so.5 ]; then
|
||
|
echo "libc5"
|
||
|
status=0
|
||
|
else
|
||
|
echo "unknown"
|
||
|
fi
|
||
|
return $status
|
||
|
}
|
||
|
|
||
|
# Detect the Linux environment
|
||
|
arch=`DetectARCH`
|
||
|
libc=`DetectLIBC`
|
||
|
os=`uname -s`
|
||
|
|
||
|
# Find the installation program
|
||
|
# try_run INSTALLER_NAME [-fatal] [PARAMETERS_PASSED]
|
||
|
# INSTALLER_NAME: setup.gtk or setup
|
||
|
# -fatal option: if you want verbose messages in case
|
||
|
# - the script could not be found
|
||
|
# - it's execution would fail
|
||
|
# PARAMETERS_PASSED: additional arguments passed to the setup script
|
||
|
try_run()
|
||
|
{
|
||
|
setup=$1
|
||
|
shift
|
||
|
# added safe check, direct test seems buggy on older bash
|
||
|
if [ "$#" > 0 ]; then
|
||
|
# looks like bash < 2.* don't like == operator, using = instead
|
||
|
if [ "$1" = "-fatal" ]; then
|
||
|
# got fatal
|
||
|
fatal=$1
|
||
|
shift
|
||
|
fi
|
||
|
fi
|
||
|
|
||
|
# First find the binary we want to run
|
||
|
failed=0
|
||
|
setup_bin="setup.data/bin/$os/$arch/$libc/$setup"
|
||
|
# trying $setup_bin
|
||
|
if [ ! -f "$setup_bin" ]; then
|
||
|
setup_bin="setup.data/bin/$os/$arch/$setup"
|
||
|
# libc dependant version failed, trying again
|
||
|
if [ ! -f "$setup_bin" ]; then
|
||
|
failed=1
|
||
|
fi
|
||
|
fi
|
||
|
if [ "$failed" -eq 1 ]; then
|
||
|
if [ "$fatal" != "" ]; then
|
||
|
cat <<__EOF__
|
||
|
This installation doesn't support $libc on $os / $arch
|
||
|
|
||
|
$critical_error
|
||
|
__EOF__
|
||
|
exit 1
|
||
|
fi
|
||
|
return $failed
|
||
|
fi
|
||
|
|
||
|
# Try to run the binary ($setup_bin)
|
||
|
# The executable is here but we can't execute it from CD
|
||
|
setup="$HOME/.setup$$"
|
||
|
cp "$setup_bin" "$setup"
|
||
|
chmod 700 "$setup"
|
||
|
if [ "$fatal" != "" ]; then
|
||
|
"$setup" $*
|
||
|
failed=$?
|
||
|
else
|
||
|
"$setup" $* 2>/dev/null
|
||
|
failed=$?
|
||
|
fi
|
||
|
rm -f "$setup"
|
||
|
return $failed
|
||
|
}
|
||
|
|
||
|
|
||
|
# Try to run the setup program
|
||
|
status=0
|
||
|
rm -f "$setup"
|
||
|
try_run setup.gtk $* || try_run setup -fatal $* || {
|
||
|
echo "The setup program seems to have failed on $arch/$libc"
|
||
|
echo
|
||
|
echo $critical_error
|
||
|
status=1
|
||
|
}
|
||
|
exit $status
|