This is an automated email from the git hooks/post-receive script. smcv pushed a commit to branch quake in repository game-data-packager.
commit ca8c0376662780eb85b445ffa6fe9e5510c010d8 Author: Alexandre Detiste <alexandre.deti...@gmail.com> Date: Thu Dec 10 00:48:57 2015 +0100 add support for Enemy Territory: Quake Wars based on Quake 4 support --- Makefile | 20 ++++++++++ README.etqw-data | 1 + debian/changelog | 9 +++++ debian/control | 54 +++++++++++++++++++++++++ debian/etqw-server.README.Debian | 34 ++++++++++++++++ debian/etqw-server.default | 9 +++++ debian/etqw-server.install | 2 + debian/etqw-server.lintian-overrides | 2 + debian/etqw-server.manpages | 1 + debian/etqw-server.postinst | 30 ++++++++++++++ debian/etqw-server.postrm | 16 ++++++++ debian/etqw-server.service | 24 +++++++++++ debian/etqw.install | 4 ++ debian/etqw.links | 1 + debian/etqw.lintian-overrides | 2 + debian/etqw.manpages | 1 + debian/rules | 2 + etqw-dedicated.6 | 54 +++++++++++++++++++++++++ etqw.6 | 60 ++++++++++++++++++++++++++++ etqw.desktop | 9 +++++ etqw.in | 77 ++++++++++++++++++++++++++++++++++++ 21 files changed, 412 insertions(+) diff --git a/Makefile b/Makefile index 1e17590..19a857e 100644 --- a/Makefile +++ b/Makefile @@ -7,10 +7,12 @@ obj = \ build/quake2 \ build/quake3 \ build/quake4 \ + build/etqw \ build/quake-server \ build/quake2-server \ build/quake3-server \ build/quake4-dedicated \ + build/etqw-dedicated \ build/24/quake.png \ build/24/quake-armagon.png \ build/24/quake-dissolution.png \ @@ -76,6 +78,15 @@ build/quake4: quake4.in Makefile < $< > $@ chmod +x $@ +build/etqw: etqw.in Makefile + install -d build + sed \ + -e 's!@binary@!etqw.x86!' \ + -e 's!@self@!etqw!' \ + -e 's!@role@!client!' \ + < $< > $@ + chmod +x $@ + build/quake4-smp: quake4-smp.in Makefile install -d build sed \ @@ -121,6 +132,15 @@ build/quake4-dedicated: quake4.in Makefile < $< > $@ chmod +x $@ +build/etqw-dedicated: etqw.in Makefile + install -d build + sed \ + -e 's!@binary@!etqwded.x86!' \ + -e 's!@self@!etqw-dedicated!' \ + -e 's!@role@!server!' \ + < $< > $@ + chmod +x $@ + build/tmp/recolour-dissolution.svg: quake1+2.svg Makefile install -d build/tmp sed -e 's/#c17d11/#999984/' \ diff --git a/README.etqw-data b/README.etqw-data new file mode 100644 index 0000000..6f72d9d --- /dev/null +++ b/README.etqw-data @@ -0,0 +1 @@ +Use game-data-packager to build and install the etqw-data package. diff --git a/debian/changelog b/debian/changelog index 74142ec..06fc700 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,12 @@ +quake (17) UNRELEASED; urgency=medium + + [ Alexandre Detiste ] + * Add support for "Enemy Territory: Quake Wars" using the + propietary binaries (there is no open-source engine) + and following the same patterns as used for Quake 4. + + -- Simon McVittie <s...@debian.org> Thu, 10 Dec 2015 00:44:21 +0100 + quake (16) unstable; urgency=medium * Move Build-Depends-Indep to Build-Depends; they are needed diff --git a/debian/control b/debian/control index c2dbbcf..0e4f969 100644 --- a/debian/control +++ b/debian/control @@ -200,3 +200,57 @@ Description: dedicated server for Quake 4 quake4-censored-de-data (for the incompatible version sold in Germany). Creating those packages requires data files from a Quake 4 installation or DVD. + +Package: etqw +Architecture: i386 +Depends: + ${misc:Depends}, + etqw-bin | game-data-packager (>= 43), +Suggests: + etqw-pb-bin, +Description: science-fiction-themed multiplayer first person shooter + Enemy Territory: Quake Wars is a multiplayer first-person shooter game + by Splash Damage and id Software, released in 2007. + This package contains a launcher script and menu entry to play + ETQW using the proprietary x86 binaries provided by id Software. + . + Please note that the ETQW engine is not Free Software, and Debian + cannot fix any bugs or security flaws in the engine or game code. + . + To make this package useful, you will need to create and install some + non-distributable packages by using the game-data-packager package: + etqw-bin, and etqw-data. + Creating those packages requires data files from an "Enemy Territory: + Quake Wars" installation or DVD. + +Package: etqw-server +Architecture: i386 +Depends: + ${misc:Depends}, + adduser, + etqw-bin | game-data-packager (>= 43), + etqw-data | game-data-packager (>= 43), +Recommends: + systemd-sysv, +Suggests: + etqw-pb-bin, +Description: dedicated server for Enemy Territory: Quake Wars + This package contains a launcher script and systemd unit to run a + Enemy Territory: Quake Wars server using the proprietary + x86 binaries provided by id Software. + . + Please note that the ETQW engine is not Free Software, and Debian + cannot fix any bugs or security flaws in the engine or game code. + . + To mitigate any security flaws that might exist in this server, + the systemd unit is not enabled by default, and must be enabled + with systemctl if it should start at boot time. The systemd unit + uses various security hardening options to prevent the server from + escalating its privileges. There is no sysvinit script, + since sysvinit does not provide similar security hardening. + . + To make this package useful, you will need to create and install some + non-distributable packages by using the game-data-packager package: + etqw-bin, and etqw-data. + Creating those packages requires data files from an "Enemy Territory: + Quake Wars" installation or DVD. diff --git a/debian/etqw-server.README.Debian b/debian/etqw-server.README.Debian new file mode 100644 index 0000000..7c9d07c --- /dev/null +++ b/debian/etqw-server.README.Debian @@ -0,0 +1,34 @@ +Enemy Territory: Quake Wars dedicated server for Debian +======================================================= + +The etqw-server systemd unit runs a dedicated server as +the user "etqw-server". This is a simple setup suitable for running one +server on a machine. + +The etqw-server user's home directory is /var/games/etqw-server, +so game files can be found in /var/games/etqw-server/.etqw . +For convenience, /var/games/etqw-server/etqw is a symlink to +that directory. + +The /etc/etqw-server directory is symlinked into the game engine's +search path as etc/etqw-server, so you can place files there and execute +them with commands like "exec etc/etqw-server/ctf.cfg". +By default, the init script will use etc/etqw-server/server.cfg. + +To set options that can only be configured via the command-line, +such as net_port, set the variable DAEMON_OPTS +in /etc/default/etqw-server. + +The server can be managed in the usual way, e.g. via service(8) +and update-rc.d(8) commands like + + service etqw-server stop + service etqw-server start + update-rc.d etqw-server disable + update-rc.d etqw-server enable + +Because ETQW is proprietary software and might have security flaws +that Debian cannot fix, the dedicated server is disabled by default. +To mitigate any security flaws that might exist in it, the systemd unit +is configured with various security-hardening options, and a +corresponding sysvinit script is not provided. diff --git a/debian/etqw-server.default b/debian/etqw-server.default new file mode 100644 index 0000000..815b72a --- /dev/null +++ b/debian/etqw-server.default @@ -0,0 +1,9 @@ +# Defaults for ETQW systemd unit + +# Options that are passed to the daemon. +# +# In addition to these options, the server will execute commands from +# /etc/etqw-server/server.cfg using "+exec etc/etqw-server/server.cfg". +# For most options it's better to edit server.cfg instead, but some options +# only work on the command-line. +DAEMON_OPTS="" diff --git a/debian/etqw-server.install b/debian/etqw-server.install new file mode 100644 index 0000000..85e1b29 --- /dev/null +++ b/debian/etqw-server.install @@ -0,0 +1,2 @@ +README.etqw-data usr/share/doc/etqw-server +build/etqw-dedicated usr/games diff --git a/debian/etqw-server.lintian-overrides b/debian/etqw-server.lintian-overrides new file mode 100644 index 0000000..7106c59 --- /dev/null +++ b/debian/etqw-server.lintian-overrides @@ -0,0 +1,2 @@ +# verbatim quote +etqw-server binary: spelling-error-in-copyright ment meant diff --git a/debian/etqw-server.manpages b/debian/etqw-server.manpages new file mode 100644 index 0000000..b217565 --- /dev/null +++ b/debian/etqw-server.manpages @@ -0,0 +1 @@ +etqw-dedicated.6 diff --git a/debian/etqw-server.postinst b/debian/etqw-server.postinst new file mode 100644 index 0000000..cfde5fb --- /dev/null +++ b/debian/etqw-server.postinst @@ -0,0 +1,30 @@ +#!/bin/sh + +set -e + +case "$1" in + configure) + if ! getent passwd etqw-server >/dev/null; then + adduser --disabled-password --quiet --system \ + --home /var/games/etqw-server --no-create-home \ + --gecos "ETQW dedicated server" \ + --ingroup games etqw-server + fi + install -d /var/games + install -d /var/games/etqw-server + chown etqw-server:games /var/games/etqw-server + install -d /var/games/etqw-server/.etqw + chown etqw-server:games /var/games/etqw-server/.etqw + if ! [ -e /var/games/etqw-server/etqw ]; then + ln -s .etqw /var/games/etqw-server/etqw + fi + ;; + abort-upgrade|abort-remove|abort-deconfigure) + ;; + *) + echo "postinst called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +#DEBHELPER# diff --git a/debian/etqw-server.postrm b/debian/etqw-server.postrm new file mode 100644 index 0000000..ae2aeda --- /dev/null +++ b/debian/etqw-server.postrm @@ -0,0 +1,16 @@ +#!/bin/sh + +set -e + +#DEBHELPER# + +if [ "$1" = "purge" ] ; then + # Lock account on purge + if [ -f /etc/shadow ]; then + usermod -L -e 1 etqw-server + else + usermod -L etqw-server + fi + rm -r /var/games/etqw-server + rmdir --ignore-fail-on-non-empty /var/games +fi diff --git a/debian/etqw-server.service b/debian/etqw-server.service new file mode 100644 index 0000000..1d54a61 --- /dev/null +++ b/debian/etqw-server.service @@ -0,0 +1,24 @@ +[Unit] +Description=Enemy Territory: Quake Wars game server +After=network.target + +[Service] +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 +Restart=on-failure +RestartPreventExitStatus=72 +# hardening +CapabilityBoundingSet= +NoNewPrivileges=true +PrivateDevices=true +PrivateTmp=true +ProtectHome=true +ProtectSystem=full +# this game uses proprietary x86-only binaries, even on amd64 +Personality=x86 + +[Install] +WantedBy=multi-user.target diff --git a/debian/etqw.install b/debian/etqw.install new file mode 100644 index 0000000..6b248d9 --- /dev/null +++ b/debian/etqw.install @@ -0,0 +1,4 @@ +build/etqw usr/games +README.etqw-data usr/lib/etqw +need-data.sh usr/lib/etqw +etqw.desktop usr/share/applications diff --git a/debian/etqw.links b/debian/etqw.links new file mode 100644 index 0000000..e2edf72 --- /dev/null +++ b/debian/etqw.links @@ -0,0 +1 @@ +usr/lib/etqw/README.etqw-data usr/share/doc/etqw/README.etqw-data diff --git a/debian/etqw.lintian-overrides b/debian/etqw.lintian-overrides new file mode 100644 index 0000000..a94a554 --- /dev/null +++ b/debian/etqw.lintian-overrides @@ -0,0 +1,2 @@ +# verbatim quote +etqw binary: spelling-error-in-copyright ment meant diff --git a/debian/etqw.manpages b/debian/etqw.manpages new file mode 100644 index 0000000..2db1779 --- /dev/null +++ b/debian/etqw.manpages @@ -0,0 +1 @@ +etqw.6 diff --git a/debian/rules b/debian/rules index 6da310a..70cc344 100755 --- a/debian/rules +++ b/debian/rules @@ -5,8 +5,10 @@ override_dh_installinit: dh_installinit -pquake4-server --noscripts + dh_installinit -petqw-server --noscripts dh_installinit --remaining-packages override_dh_systemd_enable: dh_systemd_enable -pquake4-server --no-enable + dh_systemd_enable -petqw-server --no-enable dh_systemd_enable --remaining-packages diff --git a/etqw-dedicated.6 b/etqw-dedicated.6 new file mode 100644 index 0000000..80da01d --- /dev/null +++ b/etqw-dedicated.6 @@ -0,0 +1,54 @@ +.TH ETQW-DEDICATED 6 2015-12-09 + +.SH NAME +etqw-dedicated \- Enemy Territory: Quake Wars server + +.SH SYNOPSIS +.B etqw-dedicated +.BR "" [ \-h | \-\-help ] +.BR "" [ +set +.IR option " " value ]... + +.SH DESCRIPTION +.B etqw-dedicated +is the dedicated server for Enemy Territory: Quake Wars server, +a first-person shooter game. + +.SH OPTIONS +The wrapper script used for ETQW in Debian accepts one option: +.TP +\fB\-h\fR, \fB\-\-help\fR +Display a short help summary +.PP +Any console command can also be prefixed with \fB+\fR and used as a +command-line option (press Ctrl+Alt and the key above Tab to access the +in-game console). + +.SH FILES +.TP +\fI~/.etqw\fR +Configuration and state for ETQW + +.SH ENVIRONMENT +The wrapper script used to launch ETQW allows it to be debugged +by setting environment variables. +.TP +\fBETQW_DEBUGGER=\fIcommand\fR +A debugger or other prefix to prepend to the ETQW command line, such +as \fBstrace\fR; overridden by \fBETQW_BACKTRACE\fR +.TP +\fBETQW_BACKTRACE=1\fR +Use \fBgdb\fR(1) to get a backtrace if ETQW crashes (the \fBgdb\fR +package must be installed) + +.SH AUTHOR +ETQW was written by Splash Damage and originally published by Activision. +It is proprietary software. +.PP +This manual page was written by Simon McVittie for the Debian project (but +may be used by others). Permission is granted to copy, distribute and/or +modify this document under the terms of the GNU General Public License, +Version 2 or any later version published by the Free Software Foundation. +.PP +On Debian systems, the complete text of the GNU General Public License +can be found in /usr/share/common-licenses/GPL-2. diff --git a/etqw.6 b/etqw.6 new file mode 100644 index 0000000..fcb4197 --- /dev/null +++ b/etqw.6 @@ -0,0 +1,60 @@ +.TH ETQW 6 2015-12-10 + +.SH NAME +etqw \- Enemy Territory: Quake Wars client + +.SH SYNOPSIS +.B etqw +.BR "" [ \-h | \-\-help ] +.BR "" [ +set +.IR option " " value ]... + +.SH DESCRIPTION +.B etqw +is the client for "Enemy Territory: Quake Wars", a multiplayer +first-person shooter game. + +.SH OPTIONS +The wrapper script used for ETQW in Debian accepts these options: +.TP +\fB\-h\fR, \fB\-\-help\fR +Display a short help summary +.TP +\fB\-\-smp\fR +Use the multi-threaded version of the client and the modified +copy of SDL that is bundled with it. The default is to use the +single-threaded client and the system copy of SDL. Both versions +are included in the etqw-bin package. +.PP +Any console command can also be prefixed with \fB+\fR and used as a +command-line option (press Ctrl+Alt and the key above Tab to access the +in-game console). + +.SH FILES +.TP +\fI~/.etqwcl\fR +Configuration and state for ETQW + +.SH ENVIRONMENT +The wrapper script used to launch ETQW allows it to be debugged +by setting environment variables. +.TP +\fBETQW_DEBUGGER=\fIcommand\fR +A debugger or other prefix to prepend to the ETQW command line, such +as \fBstrace\fR; overridden by \fBETQW_BACKTRACE\fR +.TP +\fBETQW_BACKTRACE=1\fR +Use \fBgdb\fR(1) to get a backtrace if ETQW crashes (the \fBgdb\fR +package must be installed) + +.SH AUTHOR +ETQW was written by Splash Damage and originally published by Activision. +It is proprietary software. +.PP +This manual page was written by Simon McVittie for the Debian project (but +may be used by others). Permission is granted to copy, distribute and/or +modify this document under the terms of the GNU General Public License, +Version 2 or any later version published by the Free Software Foundation. +.PP +On Debian systems, the complete text of the GNU General Public License +can be found in /usr/share/common-licenses/GPL-2. diff --git a/etqw.desktop b/etqw.desktop new file mode 100644 index 0000000..415a358 --- /dev/null +++ b/etqw.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Version=1.0 +Name=Enemy Territory: Quake Wars +Exec=/usr/games/etqw +Icon=etqw +Terminal=false +Type=Application +Categories=Game;ActionGame; +Keywords=first person shooter;fps;3d; diff --git a/etqw.in b/etqw.in new file mode 100644 index 0000000..de6d8e7 --- /dev/null +++ b/etqw.in @@ -0,0 +1,77 @@ +#!/bin/sh + +# etqw or etqw-dedicated +self=@self@ +# client or server +role=@role@ +# etqw.x86, etqw-rthread.x86 or etqwded.x86 +binary=@binary@ + +pkglibdir="/usr/lib/etqw" + +help() { + cat <<EOF +Enemy Territory: Quake Wars ${role} wrapper for Debian + +Usage: ${self} [OPTION]... + + -h, --help\t\tDisplay this help +EOF + + if [ "$role" = client ] && [ -x "$pkglibdir/quake4smp.x86" ]; then + cat <<EOF + --smp\t\tUse the multi-threaded version of the client +EOF + fi + + cat <<EOF + +<internal command>\tPass commands to the engine +EOF +} + +while [ "$1" != "" ]; do + case "$1" in + -h|--help) + help + exit 0 + ;; + --smp) + if [ "$role" = client ] && [ -x "$pkglibdir/etqw-rthread.x86" ]; then + binary=etqw-rthread.x86 + fi + ;; + *) + break + ;; + esac + shift +done + +# sanity check: the engine doesn't cope well with missing data +for i in pak008 game000 pak000 zpak_english000; do + if [ -f $pkglibdir/base/$i.pk4 ]; then + : + else + if [ "$role" = client ]; then + $pkglibdir/need-data.sh "Enemy Territory: Quake Wars" "$(cat $pkglibdir/README.etqw-data)" + else + echo "ETQW data missing, see /usr/share/doc/etqw-server/README.etqw-data" + fi + exit 72 # EX_OSFILE + fi +done + +cvars="+set com_allowconsole 1" + +# ETQW expects to run in its installation directory +cd "$pkglibdir" +# The SMP binary needs a modified bundled copy of SDL. +export LD_LIBRARY_PATH="${pkglibdir}${LD_LIBRARY_PATH:+":${LD_LIBRARY_PATH}"}" + +if test -n "$QUAKE4_BACKTRACE"; then + exec gdb -return-child-result -batch -ex run -ex 'thread apply all bt full' -ex kill -ex quit --args "${pkglibdir}/${binary}" ${cvars} "$@" +else + exec ${QUAKE4_DEBUGGER} "${pkglibdir}/${binary}" ${cvars} "$@" +fi + +# vim:set sw=2 sts=2 et: -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/game-data-packager.git _______________________________________________ Pkg-games-commits mailing list Pkg-games-commits@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-games-commits