gtkradiant/setup/linux/setup.sh
TTimo 12b372f89c ok
git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant@1 8a3a26a2-13c4-0310-b231-cf6edde360e5
2006-02-10 22:01:20 +00:00

124 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