85 lines
2.3 KiB
Bash
Executable File
85 lines
2.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# verbose
|
|
#set -x
|
|
|
|
set -o pipefail
|
|
shopt -s failglob
|
|
set -u
|
|
|
|
log () {
|
|
echo "steamcmd.sh[$$]: $*" >&2 || :
|
|
}
|
|
# This version interprets backslash escapes like echo -e
|
|
log_e () {
|
|
echo -e "steamcmd.sh[$$]: $*" >&2 || :
|
|
}
|
|
|
|
STEAMROOT="$(cd "$(dirname "$0")" && echo $PWD)"
|
|
if [ -z "${STEAMROOT}" ]; then
|
|
log $"Couldn't find Steam root directory from "$0", aborting!"
|
|
exit 1
|
|
fi
|
|
STEAMCMD=`basename "$0" .sh`
|
|
|
|
UNAME=`uname`
|
|
if [ "$UNAME" == "Linux" ]; then
|
|
STEAMEXE="${STEAMROOT}/linux32/${STEAMCMD}"
|
|
PLATFORM="linux32"
|
|
export LD_LIBRARY_PATH="$STEAMROOT/$PLATFORM:${LD_LIBRARY_PATH-}"
|
|
else # if [ "$UNAME" == "Darwin" ]; then
|
|
STEAMEXE="${STEAMROOT}/${STEAMCMD}"
|
|
if [ ! -x ${STEAMEXE} ]; then
|
|
STEAMEXE="${STEAMROOT}/Steam.AppBundle/Steam/Contents/MacOS/${STEAMCMD}"
|
|
fi
|
|
export DYLD_LIBRARY_PATH="$STEAMROOT:${DYLD_LIBRARY_PATH-}"
|
|
export DYLD_FRAMEWORK_PATH="$STEAMROOT:${DYLD_FRAMEWORK_PATH-}"
|
|
fi
|
|
|
|
ulimit -n 2048
|
|
|
|
MAGIC_RESTART_EXITCODE=42
|
|
|
|
: "${DEBUGGER=}"
|
|
if [ "$DEBUGGER" == "gdb" ] || [ "$DEBUGGER" == "cgdb" ]; then
|
|
ARGSFILE=$(mktemp $USER.steam.gdb.XXXX)
|
|
|
|
# Set the LD_PRELOAD varname in the debugger, and unset the global version.
|
|
: "${LD_PRELOAD=}"
|
|
if [ "$LD_PRELOAD" ]; then
|
|
echo set env LD_PRELOAD=$LD_PRELOAD >> "$ARGSFILE"
|
|
echo show env LD_PRELOAD >> "$ARGSFILE"
|
|
unset LD_PRELOAD
|
|
fi
|
|
|
|
# Ditto with LD_LIBRARY_PATH, avoids this below:
|
|
# gdb: /home/plagman/src/valve/Steam/main/client/ubuntu12_32/steam-runtime/pinned_libs_64/libcurl.so.4: version `CURL_OPENSSL_4' not found (required by /usr/lib/libdebuginfod.so.1)
|
|
: "${LD_LIBRARY_PATH=}"
|
|
if [ "$LD_LIBRARY_PATH" ]; then
|
|
echo set env LD_LIBRARY_PATH=$LD_LIBRARY_PATH >> "$ARGSFILE"
|
|
echo show env LD_LIBRARY_PATH >> "$ARGSFILE"
|
|
unset LD_LIBRARY_PATH
|
|
fi
|
|
|
|
# Enable index file caching for reasonable launch time under gdb
|
|
echo set index-cache enabled on >> "$ARGSFILE"
|
|
echo show index-cache stats >> "$ARGSFILE"
|
|
|
|
: "${DEBUGGER_ARGS=}"
|
|
log "gdb/cgdb launch with ARGSFILE: $ARGSFILE"
|
|
log $DEBUGGER -x "$ARGSFILE" $DEBUGGER_ARGS --args "$STEAMEXE" "$@"
|
|
|
|
$DEBUGGER -x "$ARGSFILE" $DEBUGGER_ARGS --args "$STEAMEXE" "$@"
|
|
rm "$ARGSFILE"
|
|
else
|
|
$DEBUGGER "$STEAMEXE" "$@"
|
|
fi
|
|
|
|
STATUS=$?
|
|
|
|
if [ $STATUS -eq $MAGIC_RESTART_EXITCODE ]; then
|
|
log "Restarting steamcmd by request..."
|
|
exec "$0" "$@"
|
|
fi
|
|
exit $STATUS
|