Commit c779d048 authored by Simon McVittie's avatar Simon McVittie

Run game servers using the Python launcher

parent 71fd2d1d
......@@ -38,14 +38,6 @@ launcher_desktops := \
quake_layer_sizes = 16 22 32 48 256
quake_text = \
out/quake-server \
out/quake2-server \
out/quake3-server \
out/quake4-dedicated \
out/etqw-dedicated \
$(NULL)
quake_icons = \
out/24/quake.png \
out/24/quake-armagon.png \
......@@ -75,7 +67,7 @@ quake_icons = \
$(NULL)
default: $(png) $(svgz) $(json_from_data) $(launcher_json) \
$(copyright) $(dot_in) $(desktop) $(quake_text) $(quake_icons) \
$(copyright) $(dot_in) $(desktop) $(quake_icons) \
out/bash_completion out/changelog.gz \
out/game-data-packager out/vfs.zip out/memento-mori-2.svg
......@@ -190,64 +182,6 @@ out/48/quake3-team-arena.png: out/256/quake3-team-arena.png Makefile out/CACHEDI
install -d out/48
convert -resize 48x48 $< $@
out/quake2-server: runtime/quake2.in out/CACHEDIR.TAG
sed -e 's/@self@/quake2-server/g' \
-e 's/@role@/dedicated server/g' \
-e 's/@options@/+set dedicated 1/g' \
-e 's/@alternative@/quake2-engine-server/g' \
< $< > $@
chmod +x $@
out/quake-server: runtime/quake.in out/CACHEDIR.TAG
sed -e 's/@self@/quake-server/g' \
-e 's/@role@/server/g' \
-e 's/@options@/-dedicated/g' \
-e 's/@alternative@/quake-engine-server/g' \
< $< > $@
chmod +x $@
out/quake3-server: runtime/quake3.in Makefile out/CACHEDIR.TAG
sed \
-e 's!@IOQ3BINARY@!ioq3ded!' \
-e 's!@IOQ3SELF@!quake3-server!' \
-e 's!@IOQ3ROLE@!server!' \
< $< > $@
chmod +x $@
out/quake4-dedicated: runtime/quake4.in Makefile out/CACHEDIR.TAG
sed \
-e 's!@id@!quake4!' \
-e 's!@icon@!/usr/share/icons/hicolor/48x48/apps/quake4.png!' \
-e 's!@longname@!Quake 4!' \
-e 's!@shortname@!Quake 4!' \
-e 's!@binary@!q4ded.x86!' \
-e 's!@smpbinary@!!' \
-e 's!@self@!quake4-dedicated!' \
-e 's!@role@!server!' \
-e 's!@pkglibdir@!/usr/lib/quake4!' \
-e 's!@paks@!pak001 pak021 pak022 zpak_english!' \
-e 's!@basegame@!q4base!' \
-e 's!@dotdir@!quake4!' \
< $< > $@
chmod +x $@
out/etqw-dedicated: runtime/quake4.in Makefile out/CACHEDIR.TAG
sed \
-e 's!@id@!etqw!' \
-e 's!@icon@!/usr/share/pixmaps/etqw.png!' \
-e 's!@longname@!Enemy Territory: Quake Wars!' \
-e 's!@shortname@!ETQW!' \
-e 's!@binary@!etqwded.x86!' \
-e 's!@smpbinary@!!' \
-e 's!@self@!etqw-dedicated!' \
-e 's!@role@!server!' \
-e 's!@pkglibdir@!/usr/lib/etqw!' \
-e 's!@paks@!pak008 game000 pak000 zpak_english000!' \
-e 's!@basegame@!base!' \
-e 's!@dotdir@!etqw!' \
< $< > $@
chmod +x $@
out/tmp/recolour-dissolution.svg: data/quake1+2.svg Makefile out/CACHEDIR.TAG
install -d out/tmp
sed -e 's/#c17d11/#999984/' \
......@@ -438,6 +372,21 @@ install:
install -m0644 runtime/confirm-binary-only.txt $(DESTDIR)$(runtimedir)/
install -m0644 runtime/missing-data.txt $(DESTDIR)$(runtimedir)/
install -m0644 $(launcher_json) $(DESTDIR)$(runtimedir)/
install -d $(DESTDIR)${gamedatadir}/quake/
install -m644 out/installed-version.py $(DESTDIR)${gamedatadir}/quake/gdp_launcher_version.py
install -m755 runtime/gdp_launcher_base.py $(DESTDIR)${gamedatadir}/quake/quake-server
install -d $(DESTDIR)${gamedatadir}/quake2/
install -m644 out/installed-version.py $(DESTDIR)${gamedatadir}/quake2/gdp_launcher_version.py
install -m755 runtime/gdp_launcher_base.py $(DESTDIR)${gamedatadir}/quake2/quake2-server
install -d $(DESTDIR)${gamedatadir}/quake3/
install -m644 out/installed-version.py $(DESTDIR)${gamedatadir}/quake3/gdp_launcher_version.py
install -m755 runtime/gdp_launcher_base.py $(DESTDIR)${gamedatadir}/quake3/quake3-server
install -d $(DESTDIR)${gamedatadir}/quake4/
install -m644 out/installed-version.py $(DESTDIR)${gamedatadir}/quake4/gdp_launcher_version.py
install -m755 runtime/gdp_launcher_base.py $(DESTDIR)${gamedatadir}/quake4/quake4-dedicated
install -d $(DESTDIR)${libdir}/etqw/
install -m644 out/installed-version.py $(DESTDIR)${libdir}/etqw/gdp_launcher_version.py
install -m755 runtime/gdp_launcher_base.py $(DESTDIR)${libdir}/etqw/etqw-dedicated
install -d $(DESTDIR)/etc/apparmor.d/
install -m0644 etc/apparmor.d/* $(DESTDIR)/etc/apparmor.d/
......@@ -462,15 +411,15 @@ install:
install -m0644 out/doom-common.png $(DESTDIR)/usr/share/pixmaps/doom2-masterlevels.png
install -d $(DESTDIR)$(bindir)
ln -s ${runtimedir}/gdp-launcher $(DESTDIR)$(bindir)/quake
install -m755 out/quake-server $(DESTDIR)$(bindir)
ln -s ${gamedatadir}/quake/quake-server $(DESTDIR)$(bindir)/
ln -s ${runtimedir}/gdp-launcher $(DESTDIR)$(bindir)/quake2
install -m755 out/quake2-server $(DESTDIR)$(bindir)
ln -s ${gamedatadir}/quake2/quake2-server $(DESTDIR)$(bindir)/
ln -s ${runtimedir}/gdp-launcher $(DESTDIR)$(bindir)/quake3
install -m755 out/quake3-server $(DESTDIR)$(bindir)
ln -s ${gamedatadir}/quake3/quake3-server $(DESTDIR)$(bindir)/
ln -s ${runtimedir}/gdp-launcher $(DESTDIR)$(bindir)/quake4
install -m755 out/quake4-dedicated $(DESTDIR)$(bindir)
ln -s ${gamedatadir}/quake4/quake4-dedicated $(DESTDIR)$(bindir)/
ln -s ${runtimedir}/gdp-launcher $(DESTDIR)$(bindir)/etqw
install -m755 out/etqw-dedicated $(DESTDIR)$(bindir)
ln -s ${libdir}/etqw/etqw-dedicated $(DESTDIR)$(bindir)/
install -d $(DESTDIR)$(datadir)/applications
install -m644 out/etqw.desktop $(DESTDIR)$(datadir)/applications
install -m644 out/quake*.desktop $(DESTDIR)$(datadir)/applications
......
......@@ -257,6 +257,7 @@ Depends:
etqw-data | game-data-packager (>= 44),
lsb-base (>= 3.0-6),
${misc:Depends},
${python3:Depends},
Recommends:
systemd-sysv,
Suggests:
......@@ -355,6 +356,7 @@ Depends:
quake-registered | quake-shareware | game-data-packager,
quakespasm | quake-engine-server,
${misc:Depends},
${python3:Depends},
Description: classic first person shooter - server and init script
This package contains a launcher script and init script to run a
Quake 1 server automatically, with any suitable engine.
......@@ -399,6 +401,7 @@ Depends:
quake2-full-data | quake2-demo-data | game-data-packager (>= 34),
yamagi-quake2-core | quake2-engine-server,
${misc:Depends},
${python3:Depends},
Suggests:
quake2-groundzero-data,
quake2-reckoning-data,
......@@ -446,6 +449,7 @@ Depends:
lsb-base (>= 3.0-6),
quake3-data | game-data-packager (>= 23),
${misc:Depends},
${python3:Depends},
Recommends:
game-data-packager (>= 39),
Suggests:
......@@ -488,6 +492,7 @@ Depends:
quake4-bin | game-data-packager (>= 43),
quake4-data | quake4-censored-de-data | game-data-packager (>= 43),
${misc:Depends},
${python3:Depends},
Recommends:
systemd-sysv,
Description: dedicated server for Quake 4
......
runtime/README.etqw-data usr/share/doc/etqw-server
usr/games/etqw-dedicated
usr/lib/etqw/etqw-dedicated
usr/lib/etqw/gdp_launcher_version.py
usr/share/games/game-data-packager-runtime/launch-etqw-dedicated.json
usr/share/man/man6/etqw-dedicated.6
......@@ -8,7 +8,7 @@ Type=simple
User=etqw-server
Environment=DAEMON_OPTS=
EnvironmentFile=-/etc/default/etqw-server
ExecStart=/usr/games/etqw-dedicated $DAEMON_OPTS +exec etc/etqw-server/server.cfg
ExecStart=/usr/games/etqw-dedicated --allow-binary-only $DAEMON_OPTS +exec etc/etqw-server/server.cfg
Restart=on-failure
RestartPreventExitStatus=72
# hardening
......
usr/games/etqw
usr/share/applications/etqw.desktop
usr/share/games/game-data-packager-runtime/launch-etqw.json
usr/share/man/man6/etqw.6
debian/tmp/etc/apparmor.d
usr/games/doom2-masterlevels
usr/share/applications/doom2-masterlevels.desktop
usr/share/games/game-data-packager-runtime
usr/share/games/game-data-packager-runtime/confirm-binary-only.txt
usr/share/games/game-data-packager-runtime/gdp-launcher
usr/share/games/game-data-packager-runtime/gdp_launcher_base.py
usr/share/games/game-data-packager-runtime/gdp_launcher_version.py
usr/share/games/game-data-packager-runtime/gdp-openurl
usr/share/games/game-data-packager-runtime/launch-unreal-gold.json
usr/share/games/game-data-packager-runtime/launch-unreal.json
usr/share/games/game-data-packager-runtime/missing-data.txt
usr/share/games/game-data-packager-runtime/unreal-gold.desktop
usr/share/games/game-data-packager-runtime/unreal.desktop
usr/share/man/man6/doom2-masterlevels.6
usr/share/pixmaps/doom2-masterlevels.png
debian/quake-server@.service lib/systemd/system
debian/q1/server.cfg /etc/quake-server
usr/games/quake-server
usr/share/games/game-data-packager-runtime/launch-quake-server.json
usr/share/games/quake/gdp_launcher_version.py
usr/share/games/quake/quake-server
usr/share/man/man6/quake-server.6
usr/games/quake
usr/share/applications/quake-*.desktop
usr/share/applications/quake.desktop
usr/share/games/game-data-packager-runtime/launch-quake.json
usr/share/icons/hicolor/*/apps/quake-*.png
usr/share/icons/hicolor/*/apps/quake-*.svg
usr/share/icons/hicolor/*/apps/quake.png
......
......@@ -2,4 +2,7 @@ debian/q2/debian_server.cfg /etc/quake2-server
debian/q2/demo/debian_server.cfg /etc/quake2-server/demo
debian/quake2-server@.service lib/systemd/system
usr/games/quake2-server
usr/share/games/game-data-packager-runtime/launch-quake2-server.json
usr/share/games/quake2/gdp_launcher_version.py
usr/share/games/quake2/quake2-server
usr/share/man/man6/quake2-server.6
usr/games/quake2
usr/share/applications/quake2*.desktop
usr/share/games/game-data-packager-runtime/launch-quake2.json
usr/share/icons/hicolor/*/apps/quake2*.png
usr/share/icons/hicolor/*/apps/quake2*.svg
usr/share/man/man6/quake2.6
......@@ -2,4 +2,7 @@ debian/q3/server.cfg etc/quake3-server
debian/quake3-server@.service lib/systemd/system
runtime/README.quake3-data usr/share/doc/quake3-server
usr/games/quake3-server
usr/share/games/game-data-packager-runtime/launch-quake3-server.json
usr/share/games/quake3/gdp_launcher_version.py
usr/share/games/quake3/quake3-server
usr/share/man/man6/quake3-server.6
usr/games/quake3
usr/share/applications/quake3*.desktop
usr/share/games/game-data-packager-runtime/launch-quake3.json
usr/share/icons/hicolor/*/apps/quake3*.png
usr/share/man/man6/quake3.6
debian/apparmor.d/usr.lib.quake4.q4ded.x86 etc/apparmor.d
debian/q4/server.cfg etc/quake4-server
runtime/README.quake4-data usr/share/doc/quake3-server
runtime/README.quake4-data usr/share/doc/quake4-server
usr/games/quake4-dedicated
usr/share/games/game-data-packager-runtime/launch-quake4-dedicated.json
usr/share/games/quake4/gdp_launcher_version.py
usr/share/games/quake4/quake4-dedicated
usr/share/man/man6/quake4-dedicated.6
......@@ -8,7 +8,7 @@ Type=simple
User=quake4-server
Environment=DAEMON_OPTS=
EnvironmentFile=-/etc/default/quake4-server
ExecStart=/usr/games/quake4-dedicated $DAEMON_OPTS +exec etc/quake4-server/server.cfg
ExecStart=/usr/games/quake4-dedicated --allow-binary-only $DAEMON_OPTS +exec etc/quake4-server/server.cfg
Restart=on-failure
RestartPreventExitStatus=72
# hardening
......
debian/apparmor.d/usr.lib.quake4.quake4.x86 etc/apparmor.d
usr/games/quake4
usr/share/applications/quake4.desktop
usr/share/games/game-data-packager-runtime/launch-quake4.json
usr/share/icons/hicolor/*/apps/quake4*.png
usr/share/icons/hicolor/*/apps/quake4*.svg
usr/share/man/man6/quake4.6
---
binary_only: true
engine: $prefix/lib/etqw/etqwded.x86
required_files:
- base/pak008.pk4
- base/game000.pk4
- base/pak000.pk4
- base/zpak_english000.pk4
dot_directory: ~/.etqw
base_directories:
- $prefix/lib/etqw
working_directory: $prefix/lib/etqw
library_path:
- $prefix/lib/etqw
argv: +set com_allowconsole 1
...
---
dot_directory: null
base_directories:
- /usr/share/games/quake
required_files:
- id1/pak0.pak
engines:
- $prefix/lib/quake/quake-engine-server
- quakespasm
- darkplaces
argv: >
-dedicated
-basedir $${base_directory}
expansions:
armagon:
aliases: hipnotic
extra_argv: >
-hipnotic
extra_required_files:
- hipnotic/pak0.pak
dissolution:
aliases: rogue
extra_argv: >
-rogue
extra_required_files:
- rogue/pak0.pak
dopa:
extra_argv: >
-game dopa
extra_required_files:
- dopa/pak0.pak
...
---
dot_directory: null
base_directories:
- /usr/share/games/quake2
required_files:
- baseq2/pak0.pak
engines:
- $prefix/lib/quake2/quake2-engine-server
- $prefix/lib/yamagi-quake2/quake2-server
- yquake2-server
argv: >
+set dedicated 1
+set basedir $${base_directory}
expansions:
reckoning:
aliases: xatrix
extra_argv: >
+set game xatrix
extra_required_files:
- xatrix/pak0.pak
groundzero:
aliases: rogue
extra_argv: >
+set game rogue
extra_required_files:
- rogue/pak0.pak
demo:
base_directories:
- /usr/share/games/quake2-demo
---
dot_directory: ~/.q3a
engines:
- $prefix/lib/ioquake3/ioq3ded
- ioq3ded
argv: >
+set fs_basepath $assets/quake3
base_directories:
- $assets/quake3-data
required_files:
- baseq3/pak0.pk3
- baseq3/pak1.pk3
- baseq3/pak2.pk3
- baseq3/pak3.pk3
- baseq3/pak4.pk3
- baseq3/pak5.pk3
- baseq3/pak6.pk3
- baseq3/pak7.pk3
- baseq3/pak8.pk3
expansions:
team-arena:
symlink_into_dot_directory:
- missionpack
aliases: teamarena
base_directories:
- $assets/quake3-data
- $assets/quake3-team-arena-data
extra_argv: >
+set fs_game missionpack +set fs_basepath /usr/lib/quake3/ta
extra_required_files:
- missionpack/pak0.pk3
- missionpack/pak1.pk3
- missionpack/pak2.pk3
- missionpack/pak3.pk3
demo:
dot_directory: ~/.q3ademo
base_directories:
- $prefix/lib/quake3/demo
required_files:
- demoq3/pak0.pk3
argv: >
+set com_homepath .q3ademo
+set com_basegame demoq3
+set sv_pure 0
+set vm_ui 0
+set vm_cgame 0
+set vm_game 0
+set fs_basepath $${base_directory}
---
binary_only: true
engine: $prefix/lib/quake4/q4ded.x86
required_files:
- q4base/pak001.pk4
- q4base/pak021.pk4
- q4base/pak022.pk4
- q4base/zpak_english.pk4
dot_directory: ~/.quake4
base_directories:
- $prefix/lib/quake4
working_directory: $prefix/lib/quake4
library_path:
- $prefix/lib/quake4
argv: +set com_allowconsole 1
...
#! /bin/sh
# quake.sh - launcher script for quake 1
self="@self@"
role="@role@"
options="@options@"
data_location=/usr/share/games/quake
engine_path=/usr/lib/quake/@alternative@
no_data_title="Quake"
no_data_msg="Missing data; see /usr/share/doc/${self}/README.Debian"
main() {
case "$(basename "$0")" in
(*armagon*|*hipnotic*)
set _ "$@" -hipnotic
shift
;;
(*dissolution*|*rogue*)
set _ "$@" -rogue
shift
;;
(*dopa*)
set _ "$@" -game dopa
shift
;;
esac
while [ $# -gt 0 ]; do
case "$1" in
-h|--help)
show_help
exit 2
;;
-v|--version)
show_version
exit 2
;;
--engine)
engine_path="$2"
shift
;;
--engine=*)
engine_path="$1"
engine_path="${engine_path#--engine=}"
;;
*)
break
;;
esac
shift
done
if ! [ -f "${data_location}/id1/pak0.pak" ]; then
if test "${role}" = server; then
echo "$no_data_msg" >&2
exit 72 # EX_OSFILE
else
exec "$data_location"/need-data.sh "$no_data_title" "$no_data_msg"
fi
fi
exec ${engine_path} -basedir ${data_location} ${options} "$@"
}
show_help() {
echo "Usage: ${self} [-h|--help] [-v|--version] [ARG1] [ARG2] ..."
echo "Launch Quake ${role}."
echo
echo "This script supports these options:"
echo " -h, --help show this help information"
echo " -v, --version show version information"
echo " --engine BINARY use BINARY as the Quake engine, e.g."
echo " quake --engine=/usr/games/darkplaces"
echo
echo "Any further arguments will be passed directly to the Quake engine."
}
show_version() {
echo "Debian Quake 1 wrapper script"
echo "Please consult your apt database for the version number of this script."
echo "Looking for data at: '$data_location'"
echo "Using engine: '$engine_path'"
}
main "$@"
#! /bin/sh
# @self@ - launcher script for Quake II @role@
self="@self@"
role="@role@"
options="@options@"
data_location=/usr/share/games/quake2
engine_path=/usr/lib/quake2/@alternative@
no_data_title="Quake II"
no_data_msg="Missing data; see /usr/share/doc/${self}/README.Debian"
use_data_location="$data_location"
main() {
case "$(basename "$0")" in
(*reckoning*|*xatrix*)
set _ "$@" +set game xatrix
shift
;;
(*groundzero*|*rogue*)
set _ "$@" +set game rogue
shift
;;
esac
while [ $# -gt 0 ]; do
case "$1" in
-h|--help)
show_help
exit 2
;;
-v|--version)
show_version
exit 2
;;
--engine)
engine_path="$2"
shift
;;
--engine=*)
engine_path="$1"
engine_path="${engine_path#--engine=}"
;;
--demo)
use_data_location="$data_location-demo"
;;
*)
break
;;
esac
shift
done
if ! [ -f "${use_data_location}/baseq2/pak0.pak" ]; then
# try to fall back to the demo data - might work?
use_data_location="$data_location-demo"
fi
if ! [ -f "${use_data_location}/baseq2/pak0.pak" ]; then
if test "${role}" = server; then
echo "$no_data_msg" >&2
exit 72 # EX_OSFILE
else
exec "$data_location"/need-data.sh "$no_data_title" "$no_data_msg"
fi
fi
exec ${engine_path} ${options} +set basedir "$use_data_location" "$@"
}
show_help() {
echo "Usage: ${self} [-h|--help] [-v|--version] [ARG1] [ARG2] ..."
echo "Launch Quake II ${role}."
echo
echo "This script supports these options:"
echo " -h, --help show this help information"
echo " -v, --version show version information"
echo " --engine BINARY use BINARY as the Quake II engine, e.g."
echo " quake2 --engine=/usr/lib/yagami-quake2/quake2"
echo " --demo use the demo data, even if the full game is"
echo " also installed"
echo
echo "Any further arguments will be passed directly to the engine."
}
show_version() {
echo "Debian Quake II wrapper script"
echo "Please consult your apt database for the version number of this script."
echo "Looking for data at: '$data_location'"
echo "Using engine: '$engine_path'"
}
main "$@"
#!/bin/sh
# quake3 or quake3-server or whatever
IOQ3SELF=@IOQ3SELF@
# "server" or "client"
IOQ3ROLE=@IOQ3ROLE@
# ioquake3 or ioq3ded
IOQ3BINARY=@IOQ3BINARY@
# q3a or openarena
IOQ3DOTDIR=q3a
ENGINE="/usr/lib/ioquake3/${IOQ3BINARY}"
BASEGAME="baseq3"
BASEPATH="/usr/share/games/quake3"
DEBUGGER="$QUAKE3_DEBUGGER"
DEMO=
PAKS="0 1 2 3 4 5 6 7 8"
QUIET=
EXCUSE="\
Quake III Arena ${IOQ3ROLE} wrapper for Debian\n\
\n\
Usage: ${IOQ3SELF} [OPTION]...\n\
\n\
-h, --help\t\tDisplay this help\n\
-q, --quiet\t\tDisable console output\n\
+<internal command>\tPass commands to the engine\n"
CVARS="+set com_standalone 0"
case "$(basename "$0")" in
(*team-arena*|*teamarena*)
set _ "$@" +set fs_game missionpack
shift
;;
(*demo*)
set _ --demo "$@"
shift
;;
esac
while [ "$1" != "" ]; do
case "$1" in
-h|--help)
echo ${EXCUSE}
exit 0
;;
-q|--quiet)
CVARS="$CVARS +set ttycon 0"
QUIET=1
;;
--demo)
BASEPATH="/usr/lib/quake3/demo"
DEMO=1
;;
*)
break
;;
esac
shift
done
if [ -n "$DEMO" ]; then
BASEPATH="/usr/lib/quake3/demo"
elif [ -e "/usr/lib/quake3/ta/missionpack/pak0.pk3" ]; then
BASEPATH="/usr/lib/quake3/ta"
elif [ -e "/usr/lib/quake3/base/baseq3/pak0.pk3" ]; then
BASEPATH="/usr/lib/quake3/base"
elif [ -e "$BASEPATH/baseq3/pak0.pk3" ]; then
:
elif [ -e "/usr/lib/quake3/demo/demoq3/pak0.pk3" ]; then
BASEPATH="/usr/lib/quake3/demo"
DEMO=1
fi
if [ -n "$DEMO" ]; then
CVARS="$CVARS +set com_homepath .q3ademo +set com_basegame demoq3"
CVARS="$CVARS +set sv_pure 0 +set vm_ui 0 +set vm_cgame 0 +set vm_game 0"
paks="0"
basegame=demoq3
fi
CVARS="$CVARS +set fs_basepath $BASEPATH"
# sanity check: the engine doesn't cope well with missing data
for i in $paks; do
if test -f $BASEPATH/$basegame/pak$i.pk3; then
:
else
if test "$IOQ3ROLE" = client; then
$BASEPATH/need-data.sh "Quake III Arena" "`cat $BASEPATH/README.quake3-data`"
else
echo "Quake III Arena data missing, see /usr/share/doc/quake3-server/README.quake3-data"
fi
exit 72 # EX_OSFILE
fi
done
if test "z$QUIET" = z1; then
exec >/dev/null 2>&1;
fi
if test -n "$QUAKE3_BACKTRACE"; then
exec gdb -return-child-result -batch -ex run -ex 'thread apply all bt full' -ex kill -ex quit --args ${ENGINE} ${CVARS} "$@"
else
exec ${DEBUGGER} ${ENGINE} ${CVARS} "$@"
fi
#!/bin/sh
# Quake 4 or Enemy Territory: Quake Wars
longname="@longname@"
# Quake 4 or ETQW
shortname="@shortname@"
# quake4 or etqw
id="@id@"
# quake4, etqw or *-dedicated
self="@self@"
# client or server
role="@role@"
# *.x86 (not SMP)
binary="@binary@"
# quake4smp.x86 or etqw-rthread.x86
smpbinary="@smpbinary@"
# q4base or base
basegame=