game-data-packager/0000755000000000000000000000000012242502422011332 5ustar game-data-packager/rott-data/0000755000000000000000000000000012227016024013232 5ustar game-data-packager/rott-data/copyright0000644000000000000000000000154712227016024015174 0ustar The rott-data package was generated using game-data-packager. Copyright © 2008-2013 Jonathan Dowland The files within "/usr/share/games/rott" are subject to the copyright described in /usr/share/doc/rott-data/VENDOR.DOC. The remainder of this package is covered by the following Licence: This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. On Debian GNU/Linux systems, the complete text of the GNU General Public License can be found in /usr/share/common-licenses/GPL-2. game-data-packager/rott-data/control.in0000644000000000000000000000076212226604502015252 0ustar Package: rott-data Section: non-free/games Priority: optional Architecture: all Recommends: rott Installed-Size: 56 Version: VERSION Conflicts: rott (<< 1.1.1-4) Replaces: rott (<< 1.1.1-4) Maintainer: Debian Games Team Description: Game data for Rise of the Triad Rise of the Triad requires game data to play. This package contains the game data from the shareware episode of Rise of the Triad and was generated using the "game-data-packager" program. game-data-packager/rott-data/README.Debian0000644000000000000000000000042712226604502015301 0ustar README.Debian for rott-data --------------------------- This package was generated by the game-data-packager program, to facilitate installation of the Rise of the Triad (rott) data files into a Debian system. -- Jon Dowland , Wed, 16 Dec 2009 16:37:22 +0000 game-data-packager/quake/0000755000000000000000000000000012227016024012441 5ustar game-data-packager/quake/quake-dissolution-music.control0000644000000000000000000000161012226604542020646 0ustar Package: quake-dissolution-music Version: VERSION Section: non-free/games Priority: optional Architecture: all Installed-Size: 500000 Maintainer: Debian Games Team Description: Quake - Dissolution of Eternity soundtrack This package contains the Quake - Dissolution of Eternity (Mission Pack 2) soundtrack by Jeehun Hwang and Rob Patterson, copied from the CD-ROM and encoded in Ogg Vorbis. . Many modified Quake engines can play this version of the soundtrack during gameplay without requiring the CD-ROM to be present. The original game would play these tracks from the CD, but many modern machines either do not have the necessary analogue pass-through cable from the CD drive to the sound card, or do not have an optical drive at all. . This package was generated using the "game-data-packager" program from the Debian package of the same name. game-data-packager/quake/quake-armagon-music.control0000644000000000000000000000157212226604542017725 0ustar Package: quake-armagon-music Version: VERSION Section: non-free/games Priority: optional Architecture: all Installed-Size: 500000 Maintainer: Debian Games Team Description: Quake - Scourge of Armagon soundtrack This package contains the Quake - Scourge of Armagon (Mission Pack 1) soundtrack by Jeehun Hwang and Rob Patterson, copied from the CD-ROM and encoded in Ogg Vorbis. . Many modified Quake engines can play this version of the soundtrack during gameplay without requiring the CD-ROM to be present. The original game would play these tracks from the CD, but many modern machines either do not have the necessary analogue pass-through cable from the CD drive to the sound card, or do not have an optical drive at all. . This package was generated using the "game-data-packager" program from the Debian package of the same name. game-data-packager/quake/quake-music.copyright0000644000000000000000000000170312227016024016620 0ustar The quake-music package was generated using game-data-packager. Copyright © 2008-2013 Jonathan Dowland . The Ogg Vorbis files under "/usr/share/games/quake" are user-supplied files that are not covered by the copyright or licence of this package; they are copyright (c) 1996-1997 id Software, all rights reserved. The remainder of this package is covered by the following Licence: This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. On Debian GNU/Linux systems, the complete text of the GNU General Public License can be found in /usr/share/common-licenses/GPL-2. game-data-packager/quake/quake-music.control0000644000000000000000000000144112226604542016276 0ustar Package: quake-music Version: VERSION Section: non-free/games Priority: optional Architecture: all Installed-Size: 500000 Maintainer: Debian Games Team Description: Quake soundtrack This package contains the Quake soundtrack by Trent Reznor, copied from the CD-ROM and encoded in Ogg Vorbis. Many modified Quake engines can play this version of the soundtrack during gameplay without requiring the CD-ROM to be present. The original game would play these tracks from the CD, but many modern machines either do not have the necessary analogue pass-through cable from the CD drive to the sound card, or do not have an optical drive at all. . This package was generated using the "game-data-packager" program from the Debian package of the same name. game-data-packager/hexen2.mk0000644000000000000000000000271612226604542013072 0ustar # VERSION must be supplied by caller srcdir = $(CURDIR) builddir = $(CURDIR)/build outdir = $(CURDIR)/out PACKAGE=hexen2-data LONG=Hexen 2 HEXEN2DEB = $(outdir)/$(PACKAGE)_$(VERSION)_all.deb $(HEXEN2DEB): \ $(builddir)/$(PACKAGE)/DEBIAN/md5sums \ $(builddir)/$(PACKAGE)/DEBIAN/control \ fixperms install -d $(builddir)/$(PACKAGE)/usr/share/games/hexen2/data1 cd $(builddir) && \ if [ `id -u` -eq 0 ]; then \ dpkg-deb -b $(PACKAGE) $@ ; \ else \ fakeroot dpkg-deb -b $(PACKAGE) $@ ; \ fi $(builddir)/$(PACKAGE)/DEBIAN/md5sums: \ $(builddir)/$(PACKAGE)/usr/share/doc/$(PACKAGE)/changelog.gz \ $(builddir)/$(PACKAGE)/usr/share/doc/$(PACKAGE)/copyright install -d `dirname $@` cd $(builddir)/$(PACKAGE) && find usr/ -type f -print0 |\ xargs -0 md5sum >DEBIAN/md5sums $(builddir)/$(PACKAGE)/usr/share/doc/$(PACKAGE)/changelog.gz: debian/changelog install -d `dirname $@` gzip -c9 debian/changelog > $@ $(builddir)/$(PACKAGE)/usr/share/doc/$(PACKAGE)/copyright: hexen2-data/copyright.in install -d `dirname $@` m4 -DPACKAGE=$(PACKAGE) hexen2-data/copyright.in > $@ $(builddir)/$(PACKAGE)/DEBIAN/control: hexen2-data/DEBIAN/control.in install -d `dirname $@` m4 -DVERSION=$(VERSION) -DPACKAGE=$(PACKAGE) -DLONG="$(LONG)" \ < hexen2-data/DEBIAN/control.in > $@ fixperms: find $(builddir)/$(PACKAGE) -type f -print0 | xargs -0 chmod 644 find $(builddir)/$(PACKAGE) -type d -print0 | xargs -0 chmod 755 clean: rm -rf $(HEXEN2DEB) $(builddir)/$(PACKAGE) game-data-packager/debian/0000755000000000000000000000000012242502425012557 5ustar game-data-packager/debian/compat0000644000000000000000000000000212003265376013763 0ustar 7 game-data-packager/debian/control0000644000000000000000000000275212242465475014205 0ustar Source: game-data-packager Section: contrib/games Priority: optional Maintainer: Debian Games Team Uploaders: Simon McVittie , Jonathan Dowland Build-Depends: debhelper (>= 8.0.0), fakeroot, m4, libdynamite-dev Standards-Version: 3.9.4 Vcs-Git: git://anonscm.debian.org/pkg-games/game-data-packager Vcs-Browser: http://anonscm.debian.org/gitweb/?p=pkg-games/game-data-packager.git Homepage: http://wiki.debian.org/Games/GameDataPackager Package: game-data-packager Depends: fakeroot, ${misc:Depends}, ${shlib:Depends}, # for quake, quake2, rott, wolf3d unzip | p7zip-full, # for wolf3d dynamite (>= 0.1.1-2) Suggests: # for quake music and quake2 music cdparanoia, vorbis-tools, # for quake CD-ROM methods lhasa | jlha-utils | lhz-archiver, # for quake2 mission packs binutils, make, gcc, # for lgeneral lgc-pg Architecture: all Description: Installer for game data files Various games are divided into two logical parts: engine and data. Often the engine and data are licensed in different ways, such that only one half can be distributed in Debian. . game-data-packager is a tool which builds .deb files for game data which cannot be distributed in Debian (such as commercial game data). . At the moment, game-data-packager has support for building .deb files for Doom games (Doom, Doom II and Final Doom); LGeneral; Heretic; Hexen; Hexen II; Rise of the Triad; Quake; Quake II; Quake III Arena and Wolfenstein 3D. game-data-packager/debian/source/0000755000000000000000000000000012226604502014060 5ustar game-data-packager/debian/source/options0000644000000000000000000000002012226604502015466 0ustar tar-ignore=.git game-data-packager/debian/source/format0000644000000000000000000000001512226604502015267 0ustar 3.0 (native) game-data-packager/debian/copyright0000644000000000000000000000102312227016024014504 0ustar This package was debianized by Jon Dowland on Sun Oct 9 16:09:45 BST 2005 Copyright © 2011-2013 Jonathan Dowland It is available from This package is distributed under the terms of version 2 of the GNU general public licence (GPL). On Debian systems the GNU General Public License (GPL) version 2 is located on the filesystem at /usr/share/common-licenses/GPL-2. game-data-packager/debian/NEWS0000644000000000000000000000130312226604502013254 0ustar game-data-packager (23) experimental; urgency=low game-data-packager up to version 22 has used sudo(1) in order to obtain the necessary privileges to install the generated .deb file. This scheme works only if the user has configured their sudoers file appropriately. Therefore, from version 23 onwards, game-data-packager will use su(1) instead. Consequently, a user must supply the root password to install the generated .deb, not their own. We plan to make game-data-packager more flexible by supporting either method of privilege escalation (or other means of installing the generated package) in the future. -- Jon Dowland Wed, 03 Feb 2010 15:11:22 +0000 game-data-packager/debian/rules0000755000000000000000000000115712226604542013650 0ustar #!/usr/bin/make -f # GNU copyright 1997 to 1999 by Joey Hess. #export DH_VERBOSE=1 export DH_OPTIONS %: dh $@ VERSION := $(shell dpkg-parsechangelog | grep ^Version | cut -d' ' -f2-) override_dh_auto_build: $(MAKE) VERSION=$(VERSION) override_dh_auto_clean: $(MAKE) clean VERSION=$(VERSION) @if [ "`echo *.deb`" != "*.deb" ]; then \ echo; \ echo "*************************************************"; \ echo "Cannot create source package with these here:"; \ ls *.deb; \ echo "*************************************************"; \ echo; \ exit 1; \ fi override_dh_installdocs: dh_installdocs -XTODO game-data-packager/debian/game-data-packager.manpages0000644000000000000000000000002512226604542017671 0ustar game-data-packager.6 game-data-packager/debian/dirs0000644000000000000000000000021412003265376013446 0ustar usr/games usr/share/man/man6 usr/share/games/game-data-packager usr/share/games/game-data-packager/supported usr/lib/game-data-packager etc game-data-packager/debian/changelog0000644000000000000000000003267412242502270014443 0ustar game-data-packager (37) unstable; urgency=low * q2rogue, q2xatrix: Correctly remove source tarballs when cleaning up. * Remove some stray placeholder targets that got into the last upload by accident. * Upload to unstable. -- Jonathan Dowland Mon, 18 Nov 2013 21:20:50 +0000 game-data-packager (36) experimental; urgency=low * Add support for Quake 2 Mission Pack: The Reckoning and Quake 2 Mission Pack: Ground Zero. * Tweak long description a bit. -- Jonathan Dowland Wed, 23 Oct 2013 21:43:17 +0100 game-data-packager (35) unstable; urgency=low * Stop conflict/providing/replacing "doom-package": the old one is pre-oldstable now. * fix test_slipstream * document why we suggest/recommend various packages (which targets they are for) * Mention quake mission pack support in the quake long-name * mention the compress/nocompress options in --help * start tracking our TODOs * fix a bug with hexen2 and paths -- Jonathan Dowland Sun, 13 Oct 2013 22:17:02 +0100 game-data-packager (34) experimental; urgency=low [ Fabian Greffrath ] * Reset grep options that could affect output. * Only parse dpkg-parsechangelog in g-d-p's own source directory. * Make the generated package file name better double-click-selectable [tm]. * Force lower case for *.wad files in doom-common. * In quake, link pak[01].pak to absolute paths. [ Stephen Kitt ] * quake: Fix ifind usage in guess_method in cases where the file is absent [ Simon McVittie ] * Canonicalize Vcs-Git, Vcs-Browser * Add a check that we don't try to build a source package containing *.deb * slipstream_dir: cope with files whose names contain spaces * Add support for not compressing the .deb, and by default don't compress it if we're just going to install and delete it (this is much faster) * Add support for auto-downloading the Quake 1 1.06 shareware zip file, either for quake-shareware or as a way to upgrade quake-registered to version 1.06 (pak0.pak is identical in either case) * Add support for packaging Quake 1 music from the CD audio tracks, based on patches by Stephen Kitt * Add support for Quake II (demo and full version) data * Add support for packaging Quake II music from the CD audio tracks * Add support for auto-downloading the Quake III Arena patch * Ensure that LIBDIR, DATADIR are absolute * Upload to experimental -- Simon McVittie Sun, 29 Sep 2013 14:51:01 +0100 game-data-packager (33) unstable; urgency=low [ Jonathan Dowland ] * Remove deprecated dm-upload-allowed field from control file. * add doc/why.mdwn: why add your game/thing to game-data-packager? * new support for lgeneral. Closes: #693930. [ Fabian Greffrath ] * Correctly substitute the LONG name in debian/control for the Doom games family. -- Jonathan Dowland Wed, 22 May 2013 17:03:19 +0100 game-data-packager (32) experimental; urgency=low * hexen2: don't install strings.txt, progs.dat or progs2.dat; they're carried by the uhexen2 package. Thanks Gustavo Panizzo. -- Jon Dowland Wed, 26 Sep 2012 22:04:45 +0100 game-data-packager (31) experimental; urgency=low * Initial Hexen 2 support. * An initial regression test suite in the source. * Fixup 'slipstream' and adjust callers in Doom, Quake and Quake 3. * Some Quake tweaks to make e.g. building a 1.01 package from a directory or a 1.06 shareware package possible. * Re-Add myself to uploaders. * Bump standards version. -- Jon Dowland Tue, 11 Sep 2012 22:00:44 +0100 game-data-packager (30) unstable; urgency=low * Add support for ID Anthology's Final Doom (different sums). Thanks to Simon Howard. * Remove myself from uploaders. * Fixed 'clean' target in Makefile * Thanks to Joey Schmit: * Rewrote debian/rules to use new style debhelper * Bump standards version. * Update debhelper Build-Depends * Changed GAME for Heretic to 'doom' (Closes: #640372) * Add Hexen support * Support using 'lhasa' as an lha implementation. -- Jon Dowland Tue, 19 Jun 2012 08:59:11 +0100 game-data-packager (29) unstable; urgency=low [ Simon McVittie ] * Allow Quake mission packs to have any of several known md5sums - add new function verify_md5sum_alternatives, and a regression test * Allow Quake 1.01 CDs' LHA archives to contain upper-case filenames (jlha seems to produce upper-case from my CD) * Add a dummy shell script to each of quake-armagon and quake-dissolution, which the corresponding .desktop files can use as their TryExec field to hide uninstalled mission packs [ Jon Dowland ] * remove any ./*deb files in clean. They might be left behind if one was created in a branch, and someone switches branches before running clean. -- Jon Dowland Thu, 14 Jul 2011 14:37:26 +0100 game-data-packager (28) unstable; urgency=low * correct spelling of "Stephen" in the changelog. Sorry, Stephen! -- Jon Dowland Sat, 30 Apr 2011 20:04:10 +0100 game-data-packager (27) unstable; urgency=low [ Stephen Kitt ] * Add support for Quake mission packs (Scourge of Armagon and Dissolution of Eternity). [ Jon Dowland ] * Add wolf3d support, Limited to shareware data. Closes: #610388. -- Jon Dowland Sat, 30 Apr 2011 19:39:08 +0100 game-data-packager (26) unstable; urgency=low * Add Heretic support. * Add Quake support. -- Jon Dowland Thu, 07 Apr 2011 22:32:22 +0100 game-data-packager (25) unstable; urgency=low [ Jon Dowland ] * Improve documentation [ Simon McVittie ] * Upload to unstable/contrib, so we can put quake3 there too -- Simon McVittie Wed, 16 Mar 2011 15:50:36 +0000 game-data-packager (24) experimental; urgency=low * add Homepage: to control file * Add Rise of the Triad support -- Jon Dowland Mon, 17 Jan 2011 00:04:01 +0000 game-data-packager (23) experimental; urgency=low [ Jon Dowland ] * Update VCS control fields to reflect moving the packaging to git. * bump standards version. [ Paul Wise ] * Drop empty menu file (Closes: #573458) [ Simon McVittie ] * Merge support for collecting Quake III Arena pk3 files into quake3-data_*_all.deb, based on Jon's earlier code * Add myself to Uploaders -- Simon McVittie Fri, 22 Oct 2010 20:57:40 +0100 game-data-packager (22) unstable; urgency=low * don't mask non-zero exit status of dpkg-deb. Thanks Frédéric Brière. Closes: #532817. * shift '--' off the argument stack when encountered. Thanks Frédéric Brière. Closes: #532812. * Update my e-mail address in control. * dh_prep -> dh_clean (debhelper 7 changes) * bump standards version. * removing doom2.wad alternatives transition: + don't bother registering alternatives anymore, install IWADs direct to /usr/share/games/doom + remove older alternatives in preinst upgrade + doom packages built with g-d-p now conflict with freedoom/freedm < 0.6.4-4 (the version where freedoom transitioned away from alternatives) -- Jon Dowland Sat, 11 Jul 2009 13:06:18 +0100 game-data-packager (21) unstable; urgency=low * Upload to unstable. -- Jon Dowland Sun, 15 Mar 2009 19:25:38 +0000 game-data-packager (20) experimental; urgency=low * Remove debconf remnant. Closes: #500951. Thanks Frédéric Brière. * Remove useless menu. Closes: #500948. Thanks Frédéric Brière. * Update debhelper Build-Depends:. Closes: #500947. Thanks Frédéric Brière. -- Jon Dowland Sun, 18 Jan 2009 17:30:20 +0000 game-data-packager (19) unstable; urgency=low [ Gonéri Le Bouder ] * fix bashism, thanks Andres Mejia (Closes: #501173) -- Jon Dowland Sun, 11 Jan 2009 17:17:42 +0100 game-data-packager (18) unstable; urgency=low * Provides: doom-package. -- Jon Dowland Wed, 06 Aug 2008 19:30:33 +0100 game-data-packager (17) unstable; urgency=low [ Jon Dowland ] * add a generic game-package binary * rename (again) to game-package [ Eddy Petrișor ] * add missing Vcs-Svn headers [ Jon Dowland ] * add support for (ultimate) doom * remove make-wad-package and references to it * remove (unfinished; not working) quake3 support * Stop maintaining an "internal" .deb version for the slipstream files, and instead install the game-package changelog into the .debs that that are built. * adjust priorities of official IWADs to conform to the doom packaging guidelines * clean up the tempdir used by the slipstream functions * rename (again again) to game-data-packager * fix debug() method so it does nothing if DEBUG is undefined * generalize entirely the *-wad directories to doom-common -- Jon Dowland Fri, 18 Jul 2008 01:35:52 +0100 games-package (16) unstable; urgency=low * side-work to develop something for quake3 * renamed to games-package * quake3-data support -- Jon Dowland Sun, 18 Mar 2007 17:33:01 +0000 doom-package (15) unstable; urgency=low * Initial upload. Closes: #280045, #326813. * update comments in make-wad-package (thanks Ben Hutchings) * remove dummy md5sum and doom2.wad file from package (thanks Ben Hutchings) * auto-generate md5sums in the doom2-wad .deb on build * remove binutils dependency * use Build-Depends, not -Indep (thanks Ben Hutchings) * make-wad-package is a bash script (not sh, yet) * clarify copyright (GPL-2) * use fakeroot again (or doom2-wad will unpack with the wrong uid) * manually adjust perms in doom2-wad (unpacked source might be mangled) -- Jon Dowland Sun, 1 Oct 2006 21:07:31 +0100 doom-package (14) unstable; urgency=low * restructure internal package to use dpkg-deb rather than dpkg-buildpackage (similar to the internal work on make-wad-package) * ensure doom2-wad .deb is in section non-free * clarify copyright in doom2-wad -- Jon Dowland Sun, 1 Oct 2006 17:20:35 +0100 doom-package (13) unstable; urgency=low * big restructuring: use dpkg-deb a lot * calculate correct Installed-Size -- Jon Dowland Sat, 30 Sep 2006 19:06:28 +0100 doom-package (12) unstable; urgency=low * do not invoke dpkg, save deb in CWD instead * thus, do not check for or require root * quote a few more variables * change maintainer * update version of internal package * make BINDIR /usr/games -- Jon Dowland Sat, 30 Sep 2006 18:30:48 +0100 doom-package (11) unstable; urgency=low * fix "doom-data" in doom2-wad postinst -- Jon Dowland Thu, 29 Jun 2006 09:06:38 +0100 doom-package (10) unstable; urgency=low * do not use a zero-file to pad .deb for file-size reasons * update doom2-wad version in Makefile * a few further maintainer changes * fix references to "doom-data" in make-wad-package * put manpage in section 6 (in-line with other doom packages) * menu-entry: Games/Arcade (in-line with other doom packages) * parameterize (slightly) doom2-wad package version -- Jon Dowland Tue, 16 May 2006 22:15:37 +0100 doom-package (9) unstable; urgency=low * package renamed from doom-data to doom-package * updated maintainer field * moved to contrib -- Jon Dowland Tue, 3 Jan 2006 21:19:13 +0000 doom-data (8) unstable; urgency=low * reformat ./debian/copyright for line length. (thanks Stephen Quinney) * DH_COMPAT -> ./debian/compat; synchronize level (4) with Depends: (thanks Stephen Quinney) -- Jon Dowland Wed, 14 Dec 2005 16:18:32 +0000 doom-data (7) unstable; urgency=low * we now provide the source to the doom2-wad deb and build it during the package's build stage * add a menu-entry * debhelper 4 compatible (in _both_ rules files!) (thanks Moritz Muehlenhoff) * reflects policy 3.6.2 (thanks Moritz Muehlenhoff) * non package-specific changes to changelog rather than debian/changelog -- Jon Dowland Sat, 5 Nov 2005 16:48:16 +0000 doom-data (6) unstable; urgency=low * remove fakeroot dependency (not needed for now) * manpage,control file: remove reference to floppy disks (we don't handle them yet) * control file: acknowledge that we generate a .deb for the IWAD * make-wad-package: update usage instructions to reflect new name -- Jon Dowland Sun, 16 Oct 2005 22:00:22 +0100 doom-data (5) unstable; urgency=low * quote arguments, for filenames with spaces * fix echo command to honour escape characters * renamed `doom-data' binary to `make-wad-package' * added a manpage for make-wad-package -- Jon Dowland Wed, 12 Oct 2005 20:42:36 +0100 doom-data (4) unstable; urgency=low * move away from using debconf and postinst stages for installing the IWAD data -- Jon Dowland Thu, 6 Oct 2005 20:06:23 +0100 doom-data (3) unstable; urgency=low * Minor spelling correction in postinst -- Jon Dowland Tue, 4 Oct 2005 17:37:00 +0100 doom-data (2) unstable; urgency=low * Provides: doom-wad, so that it can be used to install a doom engine -- Jon Dowland Tue, 4 Oct 2005 17:20:53 +0100 doom-data (1) unstable; urgency=low * Initial package, heavily influenced by quake2-data -- Jon Dowland Thu, 29 Sep 2005 19:19:21 +0100 game-data-packager/debian/game-data-packager.install0000644000000000000000000000154712226604542017556 0ustar lib/* usr/lib/game-data-packager game-data-packager usr/games supported/* usr/share/games/game-data-packager/supported etc/game-data-packager.conf etc etc/idstuff-mirrors etc/game-data-packager etc/quake3-mirrors etc/game-data-packager out/*.deb usr/share/games/game-data-packager out/changelog.gz usr/share/games/game-data-packager out/quake/*.control usr/share/games/game-data-packager/quake out/quake/*.copyright usr/share/games/game-data-packager/quake out/quake/*.md5sums usr/share/games/game-data-packager/quake out/quake2/*.control usr/share/games/game-data-packager/quake2 out/quake2/*.copyright usr/share/games/game-data-packager/quake2 out/quake2/*.md5sums usr/share/games/game-data-packager/quake2 game-data-packager/debian/TODO0000644000000000000000000000103712226604502013251 0ustar TODO: * do away with ./Makefile and build entirely from debian/rules * reconsider: why do this? * re-add quake3 support (currently in a branch) * provide configurable methods for elevating privs * provide configurable methods for elevating privs nicer -i behaviour support (somehow) installing a generated .deb and throwing it away (current behaviour is now, generate and store in $(pwd) if otherwise unspecified; impossible not to preserve generated file) See also: game-data-packager/supported/0000755000000000000000000000000012242502176013365 5ustar game-data-packager/supported/rott0000644000000000000000000000621212226604502014277 0ustar SHORTNAME=rott LONGNAME="Rise of the Triad" ZIPSUM=0fafd6b629eab80278fc726e31f9cf41 rott_usage() { echo "game-data-packager ${SHORTNAME} arguments:" printf "\tgame-data-packager ${SHORTNAME} [ -f path ] | [ -w ] \t\t-f path\t\tpath to your existing copy of 1rott13.zip\n\ \t\t-w\t\tfetch 1rott13.zip from the World Wide Web\n" } verify_args() { case $# in 0) rott_usage exit 0 ;; 1) if [ "$1" != "-w" ]; then usage >&2 rott_usage >&2 exit 1 fi downloadzip ;; 2) if [ "$1" != "-f" ]; then usage >&2 rott_usage >&2 exit 1 fi downloaded=false rottzip="$2" ;; *) usage >&2 rott_usage >&2 exit 1 ;; esac } rottmirrors=$LIBDIR/rott-mirrors downloadzip() { dest="$WORKDIR/1rott13.zip" mirror=$(grep -v ^# "$rottmirrors" | sort -R | head -n1) for try in $mirror; do if wget --progress=dot --directory-prefix "$WORKDIR" -c "$try" then rottzip="$dest" downloaded=true return fi done die "error: could not find 1rott13.zip at our chosen mirror" } checksum() { CHECKSUM=`md5sum "$1" | cut -d' ' -f1` debug "checksum = $CHECKSUM" } DEBBASE="rott-data_${GAME_PACKAGE_VERSION}_all.deb" DEB="$DATADIR/$DEBBASE" go() { verify_args "$@" ZIPFILE=`unravel "$rottzip"` [ -e "$ZIPFILE" ] || die "ERROR: '$ZIPFILE' does not exist." [ -f "$ZIPFILE" ] || die "ERROR: '$ZIPFILE' is not a file." [ -r "$ZIPFILE" ] || die "ERROR: '$ZIPFILE' cannot be read." checksum "$ZIPFILE" if [ "$CHECKSUM" != "$ZIPSUM" ]; then echo "warning: checksum is not what we expected" >&2 fi OUTFILE=`unravel "$OUTDIR"`"/$DEBBASE" cp -p "$DEB" "$OUTFILE" oldpwd=`pwd` cd "$WORKDIR" # list of files from within the ZIP-inside-ZIP required for play files="HUNTBGIN.RTC HUNTBGIN.RTL HUNTBGIN.WAD REMOTE1.RTS DEMO1_3.DMO DEMO2_3.DMO DEMO3_3.DMO DEMO4_3.DMO VENDOR.DOC" otherfiles="MODEM.PCK ORDER.FRM README.EXE SETUP.EXE ROTT.EXE ROTTHELP.EXE ROTTIPX.EXE ROTTSER.EXE SNDSETUP.EXE" gdp_unzip "$ZIPFILE" ROTTSW13.SHR gdp_unzip ROTTSW13.SHR $files rm ROTTSW13.SHR # XXX: we have to re-implement most of slipstream() here, due # to the way we use it slipstream_permcheck "$OUTFILE" slipstream_unpack "$OUTFILE" for file in $files; do # XXX: files are treated as being relative to $WORKDIR, hence # unpacking straight into it. Might be nicer to tidy away the # unpack into a subdir (no risk of stamping over another part # of g-d-p's operation) and specify full paths slipstream_file "$file" "usr/share/games/rott/$file" done slipstream_file "VENDOR.DOC" "usr/share/doc/rott-data/VENDOR.DOC" slipstream_instsize slipstream_repack "$OUTFILE" slipstream_cleanup rm $files if [ "$downloaded" = "true" ]; then rm "$ZIPFILE" fi cd "$oldpwd" } game-data-packager/supported/quake0000644000000000000000000003245312232033416014420 0ustar # vim:set ft=sh: SHORTNAME=quake LONGNAME="Quake (including mission packs)" IDMIRRORFILE=/etc/game-data-packager/idstuff-mirrors if [ "$0" = "./game-data-packager" ]; then IDMIRRORFILE="./etc/idstuff-mirrors" fi quake106_zip_sha256=ec6c9d34b1ae0252ac0066045b6611a7919c2a0d78a3a66d9387a8f597553239 quake_pak0sum_106=5906e5998fc3d896ddaf5e6a62e03abb quake_pak0sum_101=85fc9cee2035b66290da1e33be2ac86b quake_usage() { printf "game-data-packager ${SHORTNAME} [-m|-d|-mp1|-mp2] \n\ game-data-packager ${SHORTNAME} -s []\n\ game-data-packager ${SHORTNAME} -c []\n\ \n\ -m \tpath to a mounted Quake CD-ROM\n\ -d \tpath to an unpacked Quake directory\n\ -s\t\tdownload Quake shareware, version 1.06\n\ -s \tpath to a Quake shareware ZIP\n\ -mp1 \tpath to an unpacked Scourge of Armagon directory\n\ \t\tor a mounted Scourge of Armagon CD\n\ -mp2 \tpath to an unpacked Dissolution of Eternity directory\n\ \t\tor a mounted Dissolution of Eternity CD\n\ \t\tpath to any of the above (game-data-packager will guess)\n\ --music []\trip CD audio from block device , default /dev/cdrom\n\ --music \tcopy pre-ripped 02*.ogg, ..., 11*.ogg from \n\ --mp1-music [|] same as --music but for Scourge of Armagon\n\ --mp2-music [|] same as --music but for Dissolution of Eternity\n\ " } get_mirror () { ( grep -v '^#' "${IDMIRRORFILE}" | sed 's#$#/quake#' ) | sort -R | head -n1 } copyin () { install -d `dirname "$2"` install -m644 "$1" "$2" } mountpoint="" method="guess" verify_args() { case $# in 0) quake_usage exit 0 ;; 1) case "$1" in (-s|--shareware) mountpoint="" method="swzip" ;; (--music|--mp1-music|--mp2-music) mountpoint="/dev/cdrom" method="$1" method="${method#--}" ;; (-*) usage >&2 quake_usage >&2 exit 1 ;; (*) mountpoint="$1" ;; esac ;; 2) mountpoint="$2" if [ "$1" = "-m" ]; then method="cdrom" elif [ "$1" = "-d" ]; then method="dir" elif [ "$1" = "-s" ]; then method="swzip" elif [ "$1" = "-mp1" ]; then method="mp1" elif [ "$1" = "-mp2" ]; then method="mp2" elif [ "$1" = "--music" ] || [ "$1" = "--mp1-music" ] || \ [ "$1" = "--mp2-music" ]; then method="$1" method="${method#--}" else usage >&2 quake_usage >&2 exit 1 fi ;; *) usage >&2 quake_usage >&2 exit 1 ;; esac } go() { verify_args "$@" case "$method" in "guess") guess_method ;; "cdrom") cdrom_method ;; "dir") dir_method ;; "swzip") swzip_method ;; "mp1") mp1_method ;; "mp2") mp2_method ;; "music"|"mp1-music"|"mp2-music") music_method "$method" "$mountpoint" ;; *) die "internal error" ;; esac } guess_method() { if [ -f "$mountpoint" ]; then debug "treating $mountpoint like a shareware ZIP" method="swzip" swzip_method elif [ -f "$(ifind "$mountpoint" "id1/pak0.pak")" ]; then debug "treating $mountpoint like an installed directory" method="dir" dir_method elif [ -f "$mountpoint/q101_int.1" ]; then debug "treating $mountpoint like a CD-ROM" method="cdrom" cdrom_method elif [ -f "$mountpoint/hipnotic/pak0.pak" ]; then debug "treating $mountpoint like a Scourge of Armagon directory or CD" method="mp1" mp1_method elif [ -f "$mountpoint/rogue/pak0.pak" ]; then debug "treating $mountpoint like a Dissolution of Eternity directory or CD" method="mp2" mp2_method elif [ -b "$mountpoint" ]; then printf "Unable to determine which CD-ROM is at $mountpoint.\n\ For Quake 1 please use:\n\ \t$0 $SHORTNAME --music $mountpoint\n\ For Mission Pack 1, Scourge of Armagon please use:\n\ \t$0 $SHORTNAME --mp1-music $mountpoint\n\ For Mission Pack 2, Dissolution of Eternity please use:\n\ \t$0 $SHORTNAME --mp2-music $mountpoint\n\ " >&2 die "Please specify --music, --mp1-music or --mp2-music." else die "couldn't figure out what method to use for mountpoint $mountpoint" fi } unpack_quake106_pak0 () { require_program lha lhasa mirror= set +u zipfile="$1" set -u if [ -n "$zipfile" ]; then : elif [ -f "$WORKDIR/quake106.zip" ]; then zipfile="$WORKDIR/quake106.zip" else zipfile="$WORKDIR/quake106.zip" echo "downloading quake106.zip..." >&2 mirror=`get_mirror` wget -O "$zipfile" "$mirror/quake106.zip" >&2 fi exp=$quake106_zip_sha256 real=`sha256sum -b "$zipfile" | cut -d ' ' -f1` if [ "x$real" != "x$exp" ]; then warn "$zipfile sha256sum does not match expected value" [ -z "$mirror" ] || warn "downloaded: $mirror/quake106.zip" warn "expected: $exp" warn " got: $real" die "please obtain a correct copy of quake106.zip" 1 fi ( cd "$WORKDIR" gdp_unzip_paths "$zipfile" . resource.1 mv resource.1 resource.exe lha xq resource.exe id1/pak0.pak rm resource.exe ) pak0="$WORKDIR/id1/pak0.pak" } # check that the pak0/pak1 for original Quake are recognised. # detect older versions and automatically replace with 1.06 verify_quake() { pak1sum=d76b3e5678f0b64ac74ce5e340e6a685 # 1.06 pak1sum=$pak1sum,d76b3e5678f0b64ac74ce5e340e6a685 # 1.01 verify_file "$pak0" [ "$pak1" = "" ] || verify_file "$pak1" # pak0 for shareware or registered Quake 1.06 is identical, and the # 1.01 to 1.06 patch only upgrades pak0 anyway, so if we find # that we have a 1.01 pak0, we can quietly upgrade it to 1.06 # by downloading the shareware version. sum=`md5sum "$pak0" | cut -d' ' -f1` case "$sum" in ($quake_pak0sum_106) # OK ;; (*) # Not 1.06. Upgrade it using the shareware version. echo "Your copy of Quake is not 1.06. Upgrading it by" \ "downloading quake106.zip" >&2 require_program lha lhasa unpack_quake106_pak0 ;; esac [ "$pak1" = "" ] || verify_md5sum_alternatives "$pak1" "$pak1sum" } cdrom_method() { bit1="$mountpoint/q101_int.1" bit2="$mountpoint/q101_int.2" bit1sum=752f49131bb3ba832346e873c1bcfdc6 bit2sum=9ed67b39020575771e29645d977c9216 require_program lha lhasa verify_file "$bit1" verify_file "$bit2" verify_md5sum "$bit1" "$bit1sum" verify_md5sum "$bit2" "$bit2sum" cat "$bit1" "$bit2" > "$WORKDIR/unpackme.exe" ( cd "$WORKDIR" lha xq unpackme.exe rm unpackme.exe ) pak0="$WORKDIR/id1/pak0.pak" if ! test -f "$pak0"; then pak0="$WORKDIR/ID1/PAK0.PAK" fi pak1="$WORKDIR/id1/pak1.pak" if ! test -f "$pak1"; then pak1="$WORKDIR/ID1/PAK1.PAK" fi suffix=registered folder=id1 verify_quake common_method } dir_method() { pak0=$(ifind "$mountpoint" "id1/pak0.pak" | head -1) pak1=$(ifind "$mountpoint" "id1/pak1.pak" | head -1) suffix=registered folder=id1 if [ -z "$pak0" ]; then die "id1/pak0.pak not found in $mountpoint" 1 fi if [ -z "$pak1" ]; then die "id1/pak1.pak not found in $mountpoint" 1 fi verify_quake common_method } swzip_method() { if [ -n "$mountpoint" ]; then zipfile=$(unravel "$mountpoint") else zipfile="" fi unpack_quake106_pak0 "$zipfile" pak1="" suffix=shareware folder=id1 verify_file "$pak0" verify_md5sum_alternatives "$pak0" "$quake_pak0sum_106" common_method } mp1_method() { pak0="$mountpoint/hipnotic/pak0.pak" # MD5 sum for original CD version pak0sum=0ab83681aaf841c4320269e02941a14a # MD5 sum for glQuake-compatible version (see # http://speeddemosarchive.com/quake/qdq/movies/sds.html for more # info) pak0sum=$pak0sum,f05b7452ae725e060fb3d14f7731fb00 pak1="" suffix=armagon folder=hipnotic verify_file "$pak0" verify_md5sum_alternatives "$pak0" "$pak0sum" common_method } mp2_method() { pak0="$mountpoint/rogue/pak0.pak" # MP2 CD pak0sum=f8898a483b131de21581656c94f3c1a4 # MD5 sum for Steam-supplied version pak0sum=$pak0sum,f71428763229bdb373f00a547296efe3 # MP2 as supplied with MP1 on a single CD pak0sum=$pak0sum,c38a4e04219c317cd1b02f386bdfe11f pak1="" suffix=dissolution folder=rogue verify_file "$pak0" verify_md5sum_alternatives "$pak0" "$pak0sum" common_method } # Requires the following variables on entry: # pak0 - full path of the pak0.pak file to include # pak1 - full path of the pak1.pak file to include (optional) # suffix - package suffix to use # folder - base folder for the PAK files common_method() { DEBBASE="quake-${suffix}_${GAME_PACKAGE_VERSION}_all.deb" OUTFILE=`unravel "$OUTDIR"`"/$DEBBASE" cp -p "$DATADIR/$DEBBASE" "$OUTFILE" # force lower case for our copy of the files ln -s `unravel "$pak0"` "$WORKDIR/pak0.pak" [ "$pak1" = "" ] || ln -s `unravel "$pak1"` "$WORKDIR/pak1.pak" if [ "$pak1" = "" ]; then slipstream "$OUTFILE" "usr/share/games/quake/${folder}" \ "$WORKDIR/pak0.pak" else slipstream "$OUTFILE" "usr/share/games/quake/${folder}" \ "$WORKDIR/pak0.pak" "$WORKDIR/pak1.pak" fi [ -d "$WORKDIR/${folder}" ] && rm -rf "$WORKDIR/${folder}" [ ! -f "$WORKDIR/pak1.pak" ] || rm "$WORKDIR/pak1.pak" rm "$WORKDIR/pak0.pak" rm -f "$WORKDIR/quake106.zip" } music_method () { case "$1" in (mp1-music) suffix="armagon-music" folder="hipnotic" # this is just for error messages, we will actually copy # whatever we find max=09 ;; (mp2-music) suffix="dissolution-music" folder="rogue" max=09 ;; (*) suffix="music" folder="id1" max=11 ;; esac audio="$2" deb="quake-${suffix}" DESTDIR="$WORKDIR/slipstream.unpacked" if [ -z "$OUTDIR" ]; then OUTFILE="$WORKDIR/out.deb" else OUTFILE=`unravel "$OUTDIR"`"/${deb}_${GAME_PACKAGE_VERSION}_all.deb" fi install -d "$DESTDIR/usr/share/games/quake/$folder" # DarkPlaces wants one of # {sound/cdtracks,music,music/cdtracks}/track{02,002}.ogg # QuakeSpasm specifically wants music/track02.ogg # => we use music/track02.ogg if [ -d "$audio" ]; then if ! ( [ -f "$audio"/02*.ogg ] || [ -f "$audio"/track02*.ogg ] ); then die "expected a directory containing [track]02*.ogg, ..., [track]${max}*.ogg" 1 fi t=02 while [ -f "$audio/$t"*.ogg ]; do copyin "$audio/$t"*.ogg \ "$DESTDIR/usr/share/games/quake/${folder}/music/track${t}.ogg" t=$(( ${t#0} + 1 )) if [ $t -lt 10 ]; then t=0$t fi done t=02 while [ -f "$audio/track$t"*.ogg ]; do copyin "$audio/track$t"*.ogg \ "$DESTDIR/usr/share/games/quake/${folder}/music/track${t}.ogg" t=$(( ${t#0} + 1 )) if [ $t -lt 10 ]; then t=0$t fi done else packages="cdparanoia vorbis-tools" require_program cdparanoia $packages require_program oggenc $packages t=02 while cdparanoia -d "$audio" $t "${WORKDIR}/tmp.wav"; do oggenc -o "$DESTDIR/usr/share/games/quake/$folder/music/track${t}.ogg" "${WORKDIR}/tmp.wav" rm -f "${WORKDIR}/tmp.wav" t=$(( ${t#0} + 1 )) if [ $t -lt 10 ]; then t=0$t fi done fi copyin "$DATADIR/changelog.gz" \ "$DESTDIR/usr/share/doc/${deb}/changelog.gz" copyin "$DATADIR/quake/${deb}.copyright" \ "$DESTDIR/usr/share/doc/${deb}/copyright" # slipstream_instsize, slipstream_repack assume that slipstream.unpacked # and DEBIAN are in the same place copyin "$DATADIR/quake/${deb}.control" \ "$WORKDIR/DEBIAN/control" copyin "$DATADIR/quake/${deb}.md5sums" \ "$WORKDIR/DEBIAN/md5sums" # we still need to md5sum the actual tracks - their contents # depend on the user's copy of oggenc ( cd "$DESTDIR" && md5sum usr/share/games/quake/*/music/*.ogg \ >> ../DEBIAN/md5sums ) debug "building .deb: $OUTFILE" ( cd "$WORKDIR" && slipstream_instsize ) ( cd "$WORKDIR" && slipstream_repack "$OUTFILE" ) rm -fr "$WORKDIR/DEBIAN" rm -fr "$DESTDIR" } game-data-packager/supported/q2rogue0000644000000000000000000000410112242466706014700 0ustar SHORTNAME=q2rogue LONGNAME="Quake II Mission Pack: Ground Zero" pak0sum=5e2ecbe9287152a1e6e0d77b3f47dcb2 # steam as of ~Oct 2013 url=http://deponie.yamagi.org/quake2/quake2-rogue-1.07.tar.xz sum=d696bbac1e408062ff7885f67965c4a4 . $LIBDIR/q2mp-common go() { q2mp_prereqs checksum="true" xpath="" q2mp_process_opts "$@" if [ -z "$xpath" ]; then xpath="$WORKDIR/$SHORTNAME.tar.xz" wget -O "$xpath" "$url" fi if [ "$checksum" = "true" ]; then verify_md5sum "$xpath" "$sum" fi q2mp_build_gameso "$xpath" verify_directory "$root" verify_directory "$root/rogue" verify_file "$root/rogue/pak0.pak" for i in logo rend reu1_ reu2_ reu3_ reu4_ rintro; do verify_file "$root/rogue/video/$i.cin" done # slipstream_instsize, slipstream_repack assume this naming DESTDIR="$WORKDIR/slipstream.unpacked" mkdir -p "$WORKDIR/DEBIAN" "$DESTDIR/usr/share/doc/quake2-rogue" \ "$DESTDIR/usr/share/games/quake2/rogue/video" # the source code component mv "$WORKDIR/$SHORTNAME/release/game.so" "$DESTDIR/usr/share/games/quake2/rogue" mv "$WORKDIR/$SHORTNAME/LICENSE" "$DESTDIR/usr/share/doc/quake2-rogue/LICENSE" rm -rf "$WORKDIR/$SHORTNAME" if [ -f "$WORKDIR/$SHORTNAME.tar.xz" ]; then rm -f "$WORKDIR/$SHORTNAME.tar.xz" fi # the data components cp -p "$root/rogue/pak0.pak" "$DESTDIR/usr/share/games/quake2/rogue" for i in logo rend reu1_ reu2_ reu3_ reu4_ rintro; do cp -p "$root/rogue/video/$i.cin" "$DESTDIR/usr/share/games/quake2/rogue/video" done ARCH=`dpkg-architecture -qDEB_BUILD_ARCH` echo "Architecture: $ARCH" > "$WORKDIR/DEBIAN/control" cat "$DATADIR/quake2/quake2-rogue.control" >> "$WORKDIR/DEBIAN/control" cp -p "$DATADIR/quake2/quake2-rogue.copyright" "$DESTDIR/usr/share/doc/quake2-rogue/copyright" if [ "" = "$OUTDIR" ]; then OUTFILE="$WORKDIR/out.deb" else OUTFILE=`unravel "$OUTDIR"`"/quake2-rogue_${GAME_PACKAGE_VERSION}_${ARCH}.deb" fi debug "building .deb: $OUTFILE" ( cd "$WORKDIR" && slipstream_instsize ) ( cd "$WORKDIR" && slipstream_repack "$OUTFILE" ) rm -rf "$DESTDIR" } game-data-packager/supported/heretic0000644000000000000000000000060312226604542014734 0ustar SHORTNAME=heretic LONGNAME="Heretic: Shadow of the Serpent Riders" check_for_v19() { case "$CHECKSUM" in "66d686b1ed6d35ff103f15dbd30e0341") debug "heretic.wad is a version 1.3 IWAD" ;; *) warn "the heretic.wad file is not version 1.3" warn "(or has been modified)" warn "you may have some problems playing some PWADs or demos" ;; esac } . $LIBDIR/doom-common game-data-packager/supported/tnt0000644000000000000000000000056112226604542014121 0ustar SHORTNAME=tnt LONGNAME="Final Doom: TNT: Evilution" check_for_v19() { case "$CHECKSUM" in "4e158d9953c79ccf97bd0663244cc6b6") debug "tnt.wad has a known checksum" ;; "1d39e405bf6ee3df69a8d2646c8d5c49") debug "tnt.wad has a known checksum (alt version)" ;; *) warn "the tnt.wad file has an unknown checksum" ;; esac } . $LIBDIR/doom-common game-data-packager/supported/hexen0000644000000000000000000000055512226604542014426 0ustar SHORTNAME=hexen LONGNAME="Hexen: Beyond Heretic" check_for_v19() { case "$CHECKSUM" in "abb033caf81e26f12a2103e1fa25453f") debug "hexen.wad is a version 1.1 IWAD" ;; *) warn "the hexen.wad file is not version 1.1" warn "(or has been modified)" warn "you may have some problems playing some PWADs or demos" ;; esac } . $LIBDIR/doom-common game-data-packager/supported/quake20000644000000000000000000004154412232033416014503 0ustar # vim:set ft=sh sw=4 sts=4 et: SHORTNAME=quake2 LONGNAME="Quake II" Q2MIRRORFILE=/etc/game-data-packager/quake2-mirrors IDMIRRORFILE=/etc/game-data-packager/idstuff-mirrors if [ "$0" = "./game-data-packager" ]; then Q2MIRRORFILE="./etc/quake2-mirrors" IDMIRRORFILE="./etc/idstuff-mirrors" fi demofile=q2-314-demo-x86.exe demofilesha256=7ace5a43983f10d6bdc9d9b6e17a1032ba6223118d389bd170df89b945a04a1e demodeb="quake2-demo-data" patchfile=q2-3.20-x86-full-ctf.exe patchfilesha256=f82197c8c8089202a4b3a85d8833b0c2e827a709d205c760369407c212488baa fulldeb="quake2-full-data" musicdeb="quake2-music" quake2_usage() { printf "\ game-data-packager ${SHORTNAME} arguments:\n\ \n\ to make quake2-demo-data:\n\ game-data-packager ${SHORTNAME} [--demo] []\n\ \t: path to ${demofile}\n\ \n\ to make quake2-full-data:\n\ game-data-packager ${SHORTNAME} [--full] [] []\n\ \t: path to CD-ROM mount point or baseq2 directory\n\ \t: path to ${patchfile}\n\ \n\ to make quake2-music:\n\ game-data-packager ${SHORTNAME} [--music] []\n\ game-data-packager ${SHORTNAME} [--music] []\n\ \t: block device for Quake II CD-ROM, default is /dev/cdrom\n\ \t: directory containing [track]02*.ogg, ..., [track]11*.ogg\n\ \n\ to re-package installed data (full game or demo):\n\ game-data-packager ${SHORTNAME} --auto\n\ " } get_mirror () { ( if [ -s "${Q2MIRRORFILE}" ]; then grep -v '^#' "${Q2MIRRORFILE}" fi grep -v '^#' "${IDMIRRORFILE}" | sed 's#$#/quake2#' ) | sort -R | head -n1 } copyin () { install -d `dirname "$2"` install -m644 "$1" "$2" } go () { mode=help need_patchfile= need_demofile= retail_files_missing= cdpath= filepath= mirror= audiocd=/dev/cdrom oggs= # slipstream_instsize, slipstream_repack assume this naming DESTDIR="$WORKDIR/slipstream.unpacked" for arg in "$@"; do case "$arg" in (--auto) mode=auto ;; (--full) mode=full ;; (--demo) mode=demo ;; (--music) mode=music ;; (-*) quake2_usage die "unsupported option: $arg" 2 ;; (*) if [ -d "$arg" ]; then for candidate in "$arg/pak0.pak" \ "$arg/baseq2/pak0.pak" \ "$arg/install/data/baseq2/pak0.pak" \ "$arg/Install/Data/baseq2/pak0.pak" \ "$arg/setup/Data/baseq2/pak0.pak" \ ; do if [ -f "$candidate" ]; then echo "using $arg as the location of the full Quake II" \ "CD or installation" cdpath="$arg" mode=full fi done if [ $mode = auto ] || [ $mode = music ]; then if [ -f "$arg"/02*.ogg ]; then echo "using $arg as the location of a" \ "Quake II soundtrack" oggs="$arg" mode=music break fi fi if [ $mode = auto ]; then die "unable to work out what to do with directory $arg" fi elif [ -f "$arg" ]; then real=`sha256sum -b "$arg" | cut -d ' ' -f1` case "$real" in ($patchfilesha256) echo "detected that $arg is the patch, will package the full game" mode=full ln -snf "`unravel "$arg"`" "$WORKDIR/$patchfile" ;; ($demofilesha256) echo "detected that $arg is the demo, will package that" mode=demo ln -snf "`unravel "$arg"`" "$WORKDIR/$demofile" ;; (*) die "$arg does not match the SHA256 of known Quake II files" 2 ;; esac elif [ -b "$arg" ]; then echo "using $arg as CD-ROM block device to rip music" audiocd="$arg" mode=music else die "unable to work out what to do with $arg" fi ;; esac done if [ $mode = help ]; then quake2_usage exit 0 fi debug "running in mode: $mode" if [ $mode != demo ] && [ $mode != music ]; then # Try to construct the full version. We process the files that # can only come from a full installation or retail CD first # (pak0.pak and the videos): if we can't find them, we must give up. # First look for them in /usr/share/games (repacking an existing # installation) while read line; do file="${line##* }" exp="${line%% *}" debug "checking for /$file" if [ -f "/$file" ]; then debug "... found installed" real=`md5sum "/$file" | cut -d ' ' -f1` if [ "x$exp" = "x$real" ]; then debug "... correct md5sum" copyin "/$file" "$DESTDIR/$file" continue else warn "unexpected file contents:" warn " /$file" warn " expected: $exp" warn " got: $real" fi fi # OK, so we don't have the installed file. Look for it on the # CD or whatever if [ -n "$cdpath" ]; then inbaseq2="${file##usr/share/games/quake2/baseq2/}" found="" for candidate in "$cdpath/$inbaseq2" \ "$cdpath/baseq2/$inbaseq2" \ "$cdpath/install/data/baseq2/$inbaseq2" \ "$cdpath/Install/Data/baseq2/$inbaseq2" \ "$cdpath/setup/Data/baseq2/$inbaseq2" \ ; do debug "... trying $candidate" if [ -f "$candidate" ]; then debug "... found" found="$candidate" break fi done if [ -n "$found" ]; then real=`md5sum "$found" | cut -d ' ' -f1` if [ "x$exp" = "x$real" ]; then debug "... correct md5sum" copyin "$found" "$DESTDIR/$file" continue else warn "unexpected file contents:" warn " $found" warn " expected: $exp" warn " got: $real" fi fi fi # OK, I give up. retail_files_missing=1 done < "$DATADIR/quake2/cd.md5sums" fi if [ -n "${retail_files_missing}" ]; then case $mode in (auto) debug "some retail file was missing, doing the demo instead" mode=demo ;; (full) die "could not find required files for quake2-full-data" 1 ;; esac elif [ $mode = auto ]; then debug "looks like we have the full version of Quake II" mode=full fi if [ ${mode} = full ]; then deb="$fulldeb" debug "continuing to package full Quake II" if [ -e /usr/share/games/quake2/baseq2/pak1.pak ]; then # Try to reconstitute the patch from installed files. If we can do # that, we won't have to download it. echo "found Quake II data in /usr/share/games/quake2..." while read line; do file="${line##* }" exp="${line%% *}" if ! [ -f "/$file" ]; then warn "required file not found:" warn " /$file" warn "will download the patch instead" need_patchfile=1 break fi real=`md5sum "/$file" | cut -d ' ' -f1` if [ "x$exp" = "x$real" ]; then copyin "/$file" "$DESTDIR/$file" else warn "unexpected file contents:" warn " /$file" warn " expected: $exp" warn " got: $real" warn "will download the patch instead" need_patchfile=1 break fi done < "$DATADIR/quake2/patch.md5sums" else need_patchfile=1 fi if [ -n "${need_patchfile}" ]; then if ! [ -e "$WORKDIR/$patchfile" ]; then echo "downloading $patchfile..." [ -n "$mirror" ] || mirror=`get_mirror` wget -O "$WORKDIR/$patchfile" "$mirror/$patchfile" fi exp=$patchfilesha256 real=`sha256sum -b "$WORKDIR/$patchfile" | cut -d ' ' -f1` if [ "x$real" != "x$exp" ]; then warn "$patchfile sha256sum does not match expected value" [ -z "$mirror" ] || warn "downloaded: $mirror/$demofile" warn "expected: $exp" warn " got: $real" die "please obtain a correct copy of $patchfile" 1 fi while read line; do file="${line##* }" case "$file" in (usr/share/games/quake2/baseq2/*|usr/share/games/quake2/ctf/*) src="${file#usr/share/games/quake2/}" ;; (usr/share/doc/quake2-full-data/*) src="DOCS/${file#usr/share/doc/quake2-full-data/}" ;; (*) die "internal error: unexpected path $file found in patch.md5sums" exit 1 ;; esac debug "extracting $src" gdp_unzip_paths "$WORKDIR/$patchfile" "$WORKDIR" "$src" exp="${line%% *}" real=`md5sum "$WORKDIR/$src" | cut -d ' ' -f1` if [ "x$real" != "x$exp" ]; then # we checked the patch file's SHA256, so this shouldn't # ever happen... warn "$file md5sum from $patchfile does not match expected value" warn "expected: $exp" warn " got: $real" die "this shouldn't have happened" fi copyin "$WORKDIR/$src" "$DESTDIR/$file" done < "$DATADIR/quake2/patch.md5sums" fi elif [ ${mode} = demo ]; then deb="$demodeb" if [ -e /usr/share/games/quake2-demo/baseq2/pak0.pak ]; then # Try to reconstitute the demo from installed files. If we can do # that, we won't have to download it. echo "found demo data in /usr/share/games/quake2-demo..." while read line; do file="${line##* }" exp="${line%% *}" if ! [ -f "/$file" ]; then warn "required file not found:" warn " /$file" warn "will unpack ${demofile} instead" need_demofile=1 break fi real=`md5sum "/$file" | cut -d ' ' -f1` if [ "x$exp" = "x$real" ]; then copyin "/$file" "$DESTDIR/$file" else warn "unexpected file contents:" warn " /$file" warn " expected: $exp" warn " got: $real" warn "will download the demo instead" need_demofile=1 break fi done < "$DATADIR/quake2/demo.md5sums" else need_demofile=1 fi if [ -n "${need_demofile}" ]; then if ! [ -e "$WORKDIR/$demofile" ]; then echo "downloading $demofile..." [ -n "$mirror" ] || mirror=`get_mirror` wget -O "$WORKDIR/$demofile" "$mirror/$demofile" fi exp=$demofilesha256 real=`sha256sum -b "$WORKDIR/$demofile" | cut -d ' ' -f1` if [ "x$real" != "x$exp" ]; then warn "$demofile sha256sum does not match expected value" [ -z "$mirror" ] || warn "downloaded: $mirror/$demofile" warn "expected: $exp" warn " got: $real" die "please obtain a correct copy of $demofile" 1 fi while read line; do file="${line##* }" case "$file" in (usr/share/games/quake2-demo/baseq2/*) src="Install/Data/${file#usr/share/games/quake2-demo/}" ;; (usr/share/doc/quake2-demo-data/*) src="Install/Data/DOCS/${file#usr/share/doc/quake2-demo-data/}" ;; (*) die "internal error: unexpected path $file found in demo.md5sums" ;; esac debug "extracting $src" gdp_unzip_paths "$WORKDIR/$demofile" "$WORKDIR" "$src" exp="${line%% *}" real=`md5sum "$WORKDIR/$src" | cut -d ' ' -f1` if [ "x$real" != "x$exp" ]; then # we checked the patch file's SHA256, so this shouldn't # ever happen... warn "$file md5sum from $demofile does not match expected value" warn "expected: $exp" warn " got: $real" die "this shouldn't happen" fi copyin "$WORKDIR/$src" "$DESTDIR/$file" done < "$DATADIR/quake2/demo.md5sums" fi elif [ $mode = music ]; then deb="$musicdeb" install -d "$DESTDIR/usr/share/games/quake2/baseq2/music" if [ -n "$oggs" ]; then t=02 while [ -f "$oggs/$t"*.ogg ]; do copyin "$oggs/$t"*.ogg \ "$DESTDIR/usr/share/games/quake2/baseq2/music/${t}.ogg" t=$(( ${t#0} + 1 )) if [ $t -lt 10 ]; then t=0$t fi done else packages="cdparanoia vorbis-tools" require_program "cdparanoia" $packages require_program "oggenc" $packages t=02 while cdparanoia -d "$audiocd" $t "${WORKDIR}/tmp.wav"; do oggenc -o "$DESTDIR/usr/share/games/quake2/baseq2/music/${t}.ogg" "${WORKDIR}/tmp.wav" rm -f "${WORKDIR}/tmp.wav" t=$(( ${t#0} + 1 )) if [ $t -lt 10 ]; then t=0$t fi done fi else die "internal error: impossible mode $mode" 1 fi if [ "" = "$OUTDIR" ]; then OUTFILE="$WORKDIR/out.deb" else OUTFILE=`unravel "$OUTDIR"`"/${deb}_${GAME_PACKAGE_VERSION}_all.deb" fi copyin "$DATADIR/changelog.gz" \ "$DESTDIR/usr/share/doc/$deb/changelog.gz" copyin "$DATADIR/quake2/${deb}.copyright" \ "$DESTDIR/usr/share/doc/${deb}/copyright" # slipstream_instsize, slipstream_repack assume that slipstream.unpacked # and DEBIAN are in the same place copyin "$DATADIR/quake2/${deb}.control" \ "$WORKDIR/DEBIAN/control" copyin "$DATADIR/quake2/${deb}.md5sums" \ "$WORKDIR/DEBIAN/md5sums" if [ $mode = music ]; then # we still need to md5sum the actual tracks - their contents # depend on the user's copy of oggenc ( cd "$DESTDIR" && md5sum usr/share/games/quake2/baseq2/music/*.ogg \ >> ../DEBIAN/md5sums ) else # sanity check ( cd "$DESTDIR" && md5sum --check --quiet ../DEBIAN/md5sums ) fi debug "building .deb: $OUTFILE" ( cd "$WORKDIR" && slipstream_instsize ) ( cd "$WORKDIR" && slipstream_repack "$OUTFILE" ) rm -fr "$WORKDIR/$demofile" rm -fr "$WORKDIR/$patchfile" rm -fr "$WORKDIR/baseq2" rm -fr "$WORKDIR/ctf" rm -fr "$WORKDIR/DOCS" rm -fr "$WORKDIR/Install" rm -fr "$WORKDIR/repack" rm -fr "$DESTDIR" } game-data-packager/supported/plutonia0000644000000000000000000000060412226604542015145 0ustar SHORTNAME=plutonia LONGNAME="Final Doom: The Plutonia Experiment" check_for_v19() { case "$CHECKSUM" in "75c8cf89566741fa9d22447604053bd7") debug "plutonia.wad has a known checksum" ;; "3493be7e1e2588bc9c8b31eab2587a04") debug "plutonia.wad has a known checksum (alt version)" ;; *) warn "plutonia.wad has an unknown checksum" ;; esac } . $LIBDIR/doom-common game-data-packager/supported/doom0000644000000000000000000000072212226604502014245 0ustar SHORTNAME=doom LONGNAME="Doom (including Ultimate Doom)" check_for_v19() { case "$CHECKSUM" in "c4fe9fd920207691a9f493668e0a2083") debug "doom.wad is a v1.9 IWAD (ultimate doom)" ;; "1cd63c5ddff1bf8ce844237f580e9cf3") debug "doom.wad is a v1.9 IWAD (registered)" ;; *) warn "the doom.wad file is not version 1.9" warn "(or has been modified)" warn "you may have some problems with PWADs and demos" ;; esac } . $LIBDIR/doom-common game-data-packager/supported/doom20000644000000000000000000000050012232033457014323 0ustar SHORTNAME=doom2 LONGNAME="Doom II: Hell on Earth" check_for_v19() { case "$CHECKSUM" in "25e1459ca71d321525f84628f45ca8cd") debug "doom2.wad is a v1.9 IWAD" ;; *) warn "the doom2.wad file is not version 1.9" warn "you may have some problems with PWADs and demos" ;; esac } . $LIBDIR/doom-common game-data-packager/supported/wolf3d0000644000000000000000000000672712232033416014515 0ustar SHORTNAME=wolf3d LONGNAME="Wolfenstein 3D" ZIPSUM=a29432cd4a5184d552d8e5da8f80a531 wolf3d_usage() { echo "game-data-packager ${SHORTNAME} arguments:" printf "\tgame-data-packager ${SHORTNAME} [ -f path ] | [ -w ] \t\t-f path\t\tpath to your existing copy of 1wolf14.zip\n\ \t\t-w\t\tfetch 1wolf14.zip from the World Wide Web\n" } verify_args() { case $# in 0) wolf3d_usage exit 0 ;; 1) if [ "$1" != "-w" ]; then usage >&2 wolf3d_usage >&2 exit 1 fi downloadzip ;; 2) if [ "$1" != "-f" ]; then usage >&2 wolf3d_usage >&2 exit 1 fi downloaded=false wolf3dzip="$2" ;; *) usage >&2 wolf3d_usage >&2 exit 1 ;; esac } wolf3dmirrors=$LIBDIR/wolf3d-mirrors downloadzip() { dest="$WORKDIR/1wolf14.zip" mirror=$(grep -v ^# "$wolf3dmirrors" | sort -R | head -n1) for try in $mirror; do if wget --progress=dot --directory-prefix "$WORKDIR" -c "$try" then wolf3dzip="$dest" downloaded=true return fi done die "error: could not find 1wolf14.zip at our chosen mirror" } checksum() { CHECKSUM=`md5sum "$1" | cut -d' ' -f1` debug "checksum = $CHECKSUM" } SUFFIX=wl1 DEBBASE="wolf3d-data-${SUFFIX}_${GAME_PACKAGE_VERSION}_all.deb" DEB="$DATADIR/$DEBBASE" go() { require_program id-shr-extract dynamite verify_args "$@" ZIPFILE=`unravel "$wolf3dzip"` [ -e "$ZIPFILE" ] || die "ERROR: '$ZIPFILE' does not exist." [ -f "$ZIPFILE" ] || die "ERROR: '$ZIPFILE' is not a file." [ -r "$ZIPFILE" ] || die "ERROR: '$ZIPFILE' cannot be read." checksum "$ZIPFILE" if [ "$CHECKSUM" != "$ZIPSUM" ]; then echo "warning: checksum is not what we expected" >&2 fi OUTFILE=`unravel "$OUTDIR"`"/$DEBBASE" cp -p "$DEB" "$OUTFILE" oldpwd=`pwd` cd "$WORKDIR" gdp_unzip "$ZIPFILE" W3DSW14.SHR id-shr-extract W3DSW14.SHR >/dev/null rm order.frm w3dhelp.exe W3DSW14.SHR wolf3d.exe wlfiles=" audiohed.wl1:58aa1b9892d5adfa725fab343d9446f8 audiot.wl1:4b6109e957b584e4ad7f376961f3887e gamemaps.wl1:30fecd7cce6bc70402651ec922d2da3d maphead.wl1:7b6dd4e55c33c33a41d1600be5df3228 vgadict.wl1:76a6128f3c0dd9b77939ce8313992746 vgagraph.wl1:74decb641b1a4faed173e10ab744bff0 vgahead.wl1:61bf1616e78367853c91f2c04e2c1cb7 vswap.wl1:6efa079414b817c97db779cecfb081c9 vendor.doc:eccc7fc421f3d1f00e6eabd6848637f6 " # XXX: we have to re-implement most of slipstream() here, due # to the way we use it slipstream_permcheck "$OUTFILE" slipstream_unpack "$OUTFILE" for fc in $wlfiles; do # XXX: files are treated as being relative to $WORKDIR, hence # unpacking straight into it. Might be nicer to tidy away the # unpack into a subdir (no risk of stamping over another part # of g-d-p's operation) and specify full paths file=$(echo "$fc" | cut -d: -f1) checksum "$file" if [ "$CHECKSUM" != $(echo "$fc" | cut -d: -f2) ]; then echo "warning: checksum is not what we expected for $file" >&2 fi slipstream_file "$file" "usr/share/games/wolf3d/$file" rm "$file" done slipstream_instsize slipstream_repack "$OUTFILE" slipstream_cleanup if [ "$downloaded" = "true" ]; then rm "$ZIPFILE" fi cd "$oldpwd" } game-data-packager/supported/q2xatrix0000644000000000000000000000414112242466375015104 0ustar # vim: set ft=sh: SHORTNAME="q2xatrix" LONGNAME="Quake II Mission Pack: The Reckoning" pak0sum=5e2ecbe9287152a1e6e0d77b3f47dcb2 # steam as of ~Oct 2013 url=http://deponie.yamagi.org/quake2/quake2-xatrix-2.00.tar.xz sum=728199ad0038024dd8e20750bc9eb55d . $LIBDIR/q2mp-common go() { q2mp_prereqs checksum="true" xpath="" q2mp_process_opts "$@" if [ -z "$xpath" ]; then xpath="$WORKDIR/$SHORTNAME.tar.xz" wget -O "$xpath" "$url" fi if [ "$checksum" = "true" ]; then verify_md5sum "$xpath" "$sum" fi q2mp_build_gameso "$xpath" verify_directory "$root" verify_directory "$root/xatrix" verify_file "$root/xatrix/pak0.pak" for i in idlog logo xin xout xu1 xu2 xu3 xu4; do verify_file "$root/xatrix/video/$i.cin" done # slipstream_instsize, slipstream_repack assume this naming DESTDIR="$WORKDIR/slipstream.unpacked" mkdir -p "$WORKDIR/DEBIAN" "$DESTDIR/usr/share/doc/quake2-xatrix" \ "$DESTDIR/usr/share/games/quake2/xatrix/video" # the source code component mv "$WORKDIR/$SHORTNAME/release/game.so" "$DESTDIR/usr/share/games/quake2/xatrix" mv "$WORKDIR/$SHORTNAME/LICENSE" "$DESTDIR/usr/share/doc/quake2-xatrix/LICENSE" rm -rf "$WORKDIR/$SHORTNAME" if [ -f "$WORKDIR/$SHORTNAME.tar.xz" ]; then rm -f "$WORKDIR/$SHORTNAME.tar.xz" fi # the data components cp -p "$root/xatrix/pak0.pak" "$DESTDIR/usr/share/games/quake2/xatrix" for i in idlog logo xin xout xu1 xu2 xu3 xu4; do cp -p "$root/xatrix/video/$i.cin" "$DESTDIR/usr/share/games/quake2/xatrix/video" done ARCH=`dpkg-architecture -qDEB_BUILD_ARCH` echo "Architecture: $ARCH" > "$WORKDIR/DEBIAN/control" cat "$DATADIR/quake2/quake2-xatrix.control" >> "$WORKDIR/DEBIAN/control" cp -p "$DATADIR/quake2/quake2-xatrix.copyright" "$DESTDIR/usr/share/doc/quake2-xatrix/copyright" if [ "" = "$OUTDIR" ]; then OUTFILE="$WORKDIR/out.deb" else OUTFILE=`unravel "$OUTDIR"`"/quake2-xatrix_${GAME_PACKAGE_VERSION}_${ARCH}.deb" fi debug "building .deb: $OUTFILE" ( cd "$WORKDIR" && slipstream_instsize ) ( cd "$WORKDIR" && slipstream_repack "$OUTFILE" ) rm -rf "$DESTDIR" } game-data-packager/supported/hexen20000644000000000000000000000152512232034035014475 0ustar SHORTNAME=hexen2 LONGNAME="Hexen II" hexen2_usage() { echo "game-data-packager ${SHORTNAME} arguments:" printf "\tgame-data-packager ${SHORTNAME} path \t\tpath\t\tpath to a hexen2 directory\n" } go() { if [ $# -lt 1 ]; then hexen2_usage die "wrong number of arguments" fi dir=`unravel "$1"` verify_directory "$dir" verify_directory "$dir/data1" for f in pak0.pak pak1.pak; do verify_file "$dir/data1/$f" done verify_md5sum "$dir/data1/pak0.pak" c9675191e75dd25a3b9ed81ee7e05eff verify_md5sum "$dir/data1/pak1.pak" c2ac5b0640773eed9ebe1cda2eca2ad0 DEBBASE="${SHORTNAME}-data_${GAME_PACKAGE_VERSION}_all.deb" DEB="$DATADIR/$DEBBASE" OUTFILE=`unravel "$OUTDIR"`"/$DEBBASE" cp -p "$DEB" "$OUTFILE" slipstream "$OUTFILE" "usr/share/games/hexen2/data1" \ "$dir/data1/pak0.pak" \ "$dir/data1/pak1.pak" } game-data-packager/supported/quake30000644000000000000000000000713312226604542014507 0ustar # vim:set ft=sh: SHORTNAME=quake3 LONGNAME="Quake III Arena" POINTFILE=linuxq3apoint-1.32b-3.x86.run Q3MIRRORFILE=/etc/game-data-packager/quake3-mirrors IDMIRRORFILE=/etc/game-data-packager/idstuff-mirrors if [ "$0" = "./game-data-packager" ]; then Q3MIRRORFILE="./etc/quake3-mirrors" IDMIRRORFILE="./etc/idstuff-mirrors" fi quake3_usage() { echo "quake3 game arguments:" printf "\tmountpoint - Quake III Arena CD mount-point or baseq3/pak0.pk3 filename\n" printf "\tpoint release - ${POINTFILE}\n" } get_mirror () { ( if [ -s "${Q3MIRRORFILE}" ]; then grep -v '^#' "${Q3MIRRORFILE}" fi grep -v '^#' "${IDMIRRORFILE}" | sed 's#$#/quake3/linux#' ) | sort -R | head -n1 } parse_args() { if [ $# -eq 1 ] && [ -f ${IDMIRRORFILE} ]; then CDROM="$1" POINT="false" elif [ $# -eq 2 ]; then CDROM="$1" POINT="$2" else usage >&2 quake3_usage >&2 exit 1 fi } fetch_point_release() { if [ "x$POINT" != xfalse ]; then cp -p "$POINT" "$WORKDIR/$POINTFILE" return fi if ! mirror=`get_mirror`; then echo "${POINTFILE} or a download mirror in $Q3MIRRORFILE or $IDMIRRORFILE is required" >&2 exit 1 fi wget -O $WORKDIR/$POINTFILE $mirror/$POINTFILE } find_pak0() { # identify where pak0.pk3 is (underneath the CD-ROM mount-point) # and set the relevant variable if [ -f "$CDROM" ] && [ "${CDROM%pak0.pk3}" != "$CDROM" ]; then PAKFILE="$CDROM" elif [ -f "$CDROM/Quake3/baseq3/pak0.pk3" ]; then PAKFILE="$CDROM/Quake3/baseq3/pak0.pk3" elif [ -f "$CDROM/baseq3/pak0.pk3" ]; then PAKFILE="$CDROM/baseq3/pak0.pk3" else PAKFILE=`find "$CDROM" -type f -name "pak0.pk3" | head -1` fi if [ "" = "$PAKFILE" ]; then echo "couldn't find pak0.pk3 under $CDROM." >&2 exit 1 fi cp -p "$PAKFILE" "$WORKDIR/pak0.pk3" } # TODO: roll a more advanced check_sums into the game-package-shared check_sums() { POINTMD5=c71fdddccb20e8fc393d846e9c61d685 SUM=`md5sum "$WORKDIR/$POINTFILE" | cut -d' ' -f1` if [ "$SUM" != "$POINTMD5" ]; then echo "error: $POINTFILE sum ($SUM) does not match expected sum" >&2 echo "($POINTMD5)" >&2 exit 1 fi PAK0MD5=1197ca3df1e65f3c380f8abc10ca43bf SUM=`md5sum $WORKDIR/pak0.pk3 | cut -d' ' -f1` if [ "$SUM" != "$PAK0MD5" ]; then echo "error: pak0.pk3 sum ($SUM) does not match expected sum" >&2 echo "($PAK0MD5)" >&2 exit 1 fi } unpack_point() { mkdir "$WORKDIR/unpacked" ( cd "$WORKDIR/unpacked" dd if=$WORKDIR/$POINTFILE ibs=1 obs=1024 skip=8251 | tar zxf - ) # now interested in $WORKDIR/unpacked/baseq3/pak[1-8].pk3 } DEBBASE="${SHORTNAME}-data_${GAME_PACKAGE_VERSION}_all.deb" BASEQ3=/usr/share/games/quake3/baseq3 DEB="$DATADIR/$DEBBASE" go() { parse_args $* fetch_point_release find_pak0 check_sums unpack_point DEST="${BASEQ3#/}" # smcv FIXME: copied from lib/doom-common if [ "" = "$OUTDIR" ]; then OUTFILE="$WORKDIR/out.deb" else OUTFILE=`unravel "$OUTDIR"`"/$DEBBASE" fi # smcv FIXME: end cp -p "$DEB" "$OUTFILE" slipstream "$OUTFILE" "$DEST" pak0.pk3 \ unpacked/baseq3/pak1.pk3 \ unpacked/baseq3/pak2.pk3 \ unpacked/baseq3/pak3.pk3 \ unpacked/baseq3/pak4.pk3 \ unpacked/baseq3/pak5.pk3 \ unpacked/baseq3/pak6.pk3 \ unpacked/baseq3/pak7.pk3 \ unpacked/baseq3/pak8.pk3 rm -fr $WORKDIR/unpacked rm -f $WORKDIR/pak0.pk3 $WORKDIR/linuxq3apoint-1.32b-3.x86.run } game-data-packager/supported/lgeneral0000644000000000000000000000506512232033416015102 0ustar # vim:set ft=sh: SHORTNAME=lgeneral LONGNAME="LGeneral" TGZSUM=40c4be23f60d1dc732aabe13b58fc5e3 lgeneral_usage() { echo "game-data-packager ${SHORTNAME} arguments:" printf "\tgame-data-packager ${SHORTNAME} [ -f path ] | [ -w ] \t\t-f file\t\tpath to your tar.gz compressed Panzer General DAT directory\n\ \t\t-w\t\tfetch compressed pg-data.tar.gz from the web\n" } verify_args() { case $# in 0) lgeneral_usage exit 0 ;; 1) if [ "$1" != "-w" ]; then usage >&2 lgeneral_usage >&2 exit 1 fi downloadtgz ;; 2) if [ "$1" != "-f" ]; then usage >&2 lgeneral_usage >&2 exit 1 fi downloaded=false lgeneraltgz="$2" ;; *) usage >&2 lgeneral_usage >&2 exit 1 ;; esac } lgeneralmirrors=$LIBDIR/lgeneral-mirrors downloadtgz() { dest="$WORKDIR/pg-data.tar.gz" mirror=$(grep -v ^# "$lgeneralmirrors" | sort -R | head -n1) for try in $mirror; do if wget --progress=dot --directory-prefix "$WORKDIR" -c "$try" then lgeneraltgz="$dest" downloaded=true return fi done die "error: could not find pg-data.tar.gz at our chosen mirror" } DEBBASE="lgeneral-data-nonfree_${GAME_PACKAGE_VERSION}_all.deb" DEB="$DATADIR/$DEBBASE" go() { verify_args "$@" require_program lgc-pg lgc-pg TGZFILE=`unravel "$lgeneraltgz"` verify_file "$TGZFILE" verify_md5sum_alternatives "$TGZFILE" "$TGZSUM" \ "warning: checksum is not what we expected" OUTFILE=`unravel "$OUTDIR"`"/$DEBBASE" cp -p "$DEB" "$OUTFILE" oldpwd=`pwd` cd "$WORKDIR" # create directory structure required by lgc-pg mkdir -p lgeneral/gfx/flags \ lgeneral/gfx/terrain \ lgeneral/gfx/units \ lgeneral/maps/pg \ lgeneral/nations \ lgeneral/scenarios/pg \ lgeneral/sounds/pg \ lgeneral/units # extract pg-data and convert to lgeneral's native file format tar xfz "$TGZFILE" lgc-pg -s pg-data/ -d lgeneral/ slipstream_dir "$OUTFILE" "usr/share/games/" "lgeneral/" if [ "$downloaded" = "true" ]; then rm "$TGZFILE" rm -rf pg-data/ rm -rf lgeneral/ elif [ "$downloaded" = "false" ]; then rm -rf pg-data/ rm -rf lgeneral/ fi cd "$oldpwd" } game-data-packager/doc/0000755000000000000000000000000012242465530012107 5ustar game-data-packager/doc/adding_a_game.mdwn0000644000000000000000000001551412226604502015517 0ustar ## Adding a game to `game-data-packager` ### Step 1: the template `.deb` file #### overview `game-data-packager` works by injecting user-supplied files into a template debian package. The first step towards adding support for a new game is to prepare the files for the template debian package. The template packages that are distributed within gdp are built using the `Makefile` in the root of the source package. You need to add commands necessary to build your package to the `default` target, and any clean up instructions to the `clean` target. In practice, most supported games delegate the work required for building and cleaning up the template packages to a second makefile, and call make from within the master makefile. The files for the template package are generated and assembled within the subdirectory `build/`. The final template package is saved into the subdirectory `out/`. These packages are invariably built using `dpkg-deb` and the `-b` argument. #### things to include in the template package Debian policy requires the following to be present within the metadata section of a binary package * the control file * a copyright file, in `/usr/share/doc/package/copyright` Policy dictates the following fields within the control file: * `Version` field. We recommend using the version of gdp which generated the template package. * `Maintainer`. We recommend using the same maintainer as for gdp, which is the Debian Games Team. * `Description`. Both the single line synopsis and the extended description that follows. * Any required dependencies. For game data packages, we use `Recommends` to recommend a corresponding engine package, where appropriate. We also suggest including the following * `md5sums` file, so that the user can check whether a package's installed files have been modified if they so desire. * a `changelog`. We suggest copying the gdp `changelog` into the template package. * a `README.Debian` file, explaining that the package was auto-generated by gdp. Finally, it might be worth considering the following * do you need to register any alternatives? For example, the open source `freedoom` package provides a Doom 2 IWAD file, and registers an alternative for the name `doom2.wad`. Therefore, the generated `doom2-wad` package does the same. * Should the data package register any menus, or carry a `.desktop` file? In some cases, it makes sense to do this from the data package, rather than from the engine package. * you may also wish to provide an icon file, but bear in mind that if you distribute the icon file inside gdp's source, it needs to meet the DFSG. gdp could generate the icon file at run-time in some cases. #### simple example The simplest template package for a supported game is currently quake3. The source files for the quake 3 template package are in the `quake3-data` directory. They are: quake3-data/copyright.in quake3-data/DEBIAN/control The default target in the quake3 makefile, `quake3.mk`, uses the `m4` pre-processor tool to substitute in some values to these files. The `copyright` file from gdp's own source is also copied into the package build directory. The makefile also generates an `md5sums` file for the package. #### complex example A more complex example is for the suite of doom engine games. There are currently four supported doom engine games: Doom, Doom 2 and the two Final Dooms. Rather than maintain separate makefiles and template files, a common makefile (`doom-common.mk`) and common template files (`doom-common`) are used. Where the resulting templates differ, makefile variables are used. For example, the commands in the master `Makefile` for Doom and Doom 2 are make -f doom-common.mk IWAD=doom LONG="Doom" VERSION=$(VERSION) make -f doom-common.mk IWAD=doom2 \ LONG="Doom 2: Hell on Earth" VERSION=$(VERSION) The exact same sub-makefiles are used in both cases, with different variables substituted in. ### Step 2: the gdp "supported" file Once you have a template package file, you then need to write a gdp "supported" file. This is a shell script that gdp calls into when the user invokes gdp with your game as an argument. #### minimum requirements for a "supported" file A "supported" file must define the following variables: * `SHORTNAME`: this is the name which a user must provide as an argument to gdp in order to invoke your code. * `LONGNAME`: this is used by gdp when printing a usage message. It can be used to disambiguate or expand upon the short name, which might not be enough to explain what it is. You must define a `go` shell subroutine. This is the main routine which gdp will invoke from your code. This routine is explained in the next section. #### the `go` subroutine You must define a `go` shell subroutine. This is the main routine which gdp will invoke from your code. You can rely on the following to have happened when `go` is called: * gdp will have sanity-checked any command-line arguments supplied to it and set variables accordingly (more on these later) * gdp will have created a temporary working directory and stored its name in the `WORKDIR` variable * gdp will have been invoked with your `SHORTNAME` as an argument * gdp will have sourced the shared library of routines `game-data-package-shared` Your `go` routine is expected to perform the following work: * inspect any remaining command line arguments (passed in the `$@` variable) and verify that they are correct * write a complete template package into the file `$WORKDIR/out.deb`, or into the directory `$OUTDIR`, if `$OUTDIR` is defined, to a filename of your choice * (this is sub-optimal. a future patch to gdp should tidy this up) In order to achieve this work, your `go` routine can call on the functions defined in `lib/game-data-package-shared`, which will already have been sourced. These are documented within the file. A brief overview: * a selection of perl-esque helper routines for argument verification, noisy reporting and quitting: `debug`, `warn`, `die`, * some verify/assertion routines: `verify_md5sum`, `verify_directory`, etc. * a family of `slipstream` routines, which insert new files into an existing `.deb` file * routines for unpacking files (abstracting the exact backend used to do so): `gdp_unzip` Future patches to gdp will add more common routines for handling the downloading of files from the Internet, including handling mirror lists, verification, resuming, etc. ### Step 3: installing the new files into the package The final step is quite small and easy :-) Add the files which you need to distribute in the gdp binary package to the `debian/game-data-packager.install` file. At a minimum, this will be your "supported" file, but also most likely a template debian package and possibly other supporting files. game-data-packager/doc/todo.mdwn0000644000000000000000000000027412242465530013746 0ustar * Hexen 2: portals of prævus support * remove out/changelog.gz (copied to /usr/share/games/game-data-packager), instead use the one in ./debian/ or /usr/share/doc/game-data-packager game-data-packager/doc/why.mdwn0000644000000000000000000000222412226604542013605 0ustar Why put your packaging needs into game-data-packager? 1. game-data-packager (gdp) runs as a normal user. postinst scripts run as root. This reduces the impact of a security flaw in the scripts. 2. the .deb packages that gdp generates can be archived by the end user and installed on multiple machines, or re-installed (rather than regenerated) after a clean install. 3. postinst scripts need to run in a non-interactive context which makes prompting the user difficult (or requires you to abuse debconf). gdp scripts can expect an interactive terminal for prompting. 4. download requirements in gdp can be much more complex than you may be comfortable implementing in a postinst script: multiple mirrors, mirror selection, parallel downloads, retries, user-supplied local copies of files to download, proxy specification, etc. 5. common needs between packages (e.g. download logic, patch logic, etc.) can be in shared routines. 6. other non-live stuff can be shared (icons, package descriptions, etc.) in some cases (e.g. variants of the same game such as the Doom family) 7. the .deb files that gdp generates have a correct Installed-Size. game-data-packager/tests/0000755000000000000000000000000012232033416012475 5ustar game-data-packager/tests/testfile0000644000000000000000000000000512030666741014243 0ustar hellogame-data-packager/tests/lib/0000755000000000000000000000000012232033416013243 5ustar game-data-packager/tests/lib/verify_md5sum0000755000000000000000000000031412030666741015776 0ustar #!/bin/sh set -u set -e [ $# -eq 2 ] || { echo "usage: $0 testfile md5sum" >&2 exit 1 } file="$1" sum="$2" . ./lib/game-data-packager-shared verify_md5sum "$file" "$sum" >/dev/null 2>&1 exit 0 game-data-packager/tests/lib/require_program0000755000000000000000000000027612232033416016401 0ustar #!/bin/sh set -u set -e [ $# -gt 1 ] || { echo "usage: $0 program package [ package… ]" >&2 exit 1 } . ./lib/game-data-packager-shared require_program $@ >/dev/null 2>&1 exit 0 game-data-packager/tests/lib/verify_directory0000755000000000000000000000026112030666741016571 0ustar #!/bin/sh set -u set -e [ $# -eq 1 ] || { echo "usage: $0 dir" >&2 exit 1 } dir="$1" . ./lib/game-data-packager-shared verify_directory "$dir" >/dev/null 2>&1 exit 0 game-data-packager/tests/lib/verify_file0000755000000000000000000000025712030666741015511 0ustar #!/bin/sh set -u set -e [ $# -eq 1 ] || { echo "usage: $0 file" >&2 exit 1 } file="$1" . ./lib/game-data-packager-shared verify_file "$file" >/dev/null 2>&1 exit 0 game-data-packager/tests/lib/die0000755000000000000000000000026712030666741013750 0ustar #!/bin/sh set -u set -e [ $# -eq 2 ] || { echo "usage: $0 string retcode" >&2 exit 1 } string="$1" retcode="$2" . ./lib/game-data-packager-shared die "$string" "$retcode" game-data-packager/tests/runtests0000755000000000000000000000722412232033416014317 0ustar #!/bin/sh . ./lib/game-data-packager-shared if [ ! -f /usr/share/shunit2/shunit2 ]; then echo "you need to install shunit2 to run tests" >&2 exit 1 fi ## verify_file(file) ## ensures file is a file, or complains on stderr ## and causes the program to exit. test_verify_file_yes() { ./tests/lib/verify_file "tests/runtests" assertEquals $? 0 } test_verify_file_no() { ./tests/lib/verify_file "tests/does_not_exist" assertNotEquals $? 0 } ## verify_directory(dir) ## ensures dir is a directory, or complains on stderr ## and causes the program to exit. test_verify_dir_yes() { ./tests/lib/verify_directory "tests" assertEquals $? 0 } test_verify_dir_yes() { ./tests/lib/verify_directory "tests/does_not_exist" assertNotEquals $? 0 } ## verify_md5sum(file,sum) ## calculates the md5sum of file and compares it to sum. ## if the sum doesn't match, complains on stderr and causes the program ## to exit. test_md5sum_yes() { ./tests/lib/verify_md5sum "tests/testfile" "5d41402abc4b2a76b9719d911017c592" assertEquals $? 0 } test_md5sum_no() { ./tests/lib/verify_md5sum "tests/testfile" "incorrect" assertNotEquals $? 0 } ## die(string,retcode) ## end the program, complaining with string on stderr ## and returning retcode if supplied, 2 if not. test_die() { # XXX: capture stderr and ensure it matches diestring ./tests/lib/die "diestring" 6 assertEquals $? 6 ./tests/lib/die "diestring" 42 assertEquals $? 42 } test_require_program() { ./tests/lib/require_program "sh" dash assertEquals $? 0 ./tests/lib/require_program "does-not-exist" nopackage assertEquals $? 2 } ## slipstream(deb,relpath,file1,file2...) ## insert file1,file2... into the deb, under the ## path 'relpath', relative to the package root, e.g.: ## slipstream(deb, 'usr/share/doc', 'README', 'copyright') ## => /usr/share/doc/README ## => /usr/share/doc/copyright ## prerequisites: ## * $WORKDIR must be defined to a directory within which ## slipstream can do it's work (somewhere writeable) test_slipstream() { debsrc="./tests/empty.deb" wd=`mktemp -td game-data-packager.tests.XXXXXX` deb="$wd/empty.deb" file="`readlink -f tests/testfile`" cp -p "$debsrc" "$deb" WORKDIR="$wd" COMPRESS=no slipstream "$deb" "foo/bar/baz" "$file" dpkg-deb -c "$deb" | grep "/foo/bar/baz/testfile$" >/dev/null assertEquals $? 0 rm "$deb" rmdir "$wd" } ### procedures we are still to write tests for: ## slipstream_permcheck(deb) ## ensures that the file deb can be written to and ## that the current working directory is writeable ## slipstream_unpack(deb) ## unpacks the deb file into "./slipstream_unpacked" ## and the control data into "./DEBIAN" ## slipstream_file(file,destpath) ## copies the file into "./slipstream_unpacked/$destpath", ## calculates the files md5sum and adds it to the md5sums ## file in the control area. ## slipstream_instsize ## calculates the installed size of the deb, (based on ## the contents of the ./slipstream_unpacked directory) ## and writes the result to the control file in the ## control area. ## slipstream_repack(deb) ## writes a new debian package over deb, packing ## the files from ./slipstream_unpacked inside, ## using the control area in ./DEBIAN ## slipstream_cleanup() ## removes the ./slipstream_unpacked directory. ## install_deb(deb) ## uses sudo and dpkg to install the supplied .deb file ## unravel(path) ## convert 'path' from relative to absolute ## if it does not begin with a slash. . /usr/share/shunit2/shunit2 game-data-packager/tests/empty/0000755000000000000000000000000012226604542013642 5ustar game-data-packager/tests/empty/DEBIAN/0000755000000000000000000000000012226604542014564 5ustar game-data-packager/tests/empty/DEBIAN/control0000644000000000000000000000041512226604542016167 0ustar Package: emptypackage Section: non-free/games Priority: optional Architecture: all Installed-Size: 0 Version: 1 Maintainer: Debian Games Team Description: an empty .deb file used as part of the game-data-packager test harness game-data-packager/doom-common.mk0000644000000000000000000000515312226604542014123 0ustar # "IWAD", "VERSION" and "LONG" are passed in by the parent make; # e.g. # IWAD=doom2, VERSION=22, LONG="Doom 2: Hell on Earth" # or # IWAD=doom, VERSION=22, LONG="Ultimate Doom" $(IWAD)DEB=out/$(IWAD)-wad_$(VERSION)_all.deb $(IWAD)TARGETS := $(addprefix build/, $(IWAD)DIRS $(IWAD)-wad/DEBIAN/control $(IWAD)-wad/usr/share/doc/$(IWAD)-wad/changelog.gz $(IWAD)-wad/usr/share/pixmaps/$(IWAD).xpm $(IWAD)-wad/DEBIAN/preinst $(IWAD)-wad/usr/share/applications/$(IWAD)-wad.desktop $(IWAD)-wad/usr/share/doc/$(IWAD)-wad/README.Debian $(IWAD)-wad/usr/share/doc/$(IWAD)-wad/copyright $(IWAD)-wad/DEBIAN/md5sums) # defined as a variable so it can be overriden by the caller, e.g. heretic GAME = doom CONTROLIN = doom-common/DEBIAN/control.in DIRS := \ $(IWAD)-wad/DEBIAN \ $(IWAD)-wad/usr/share/pixmaps \ $(IWAD)-wad/usr/share/applications \ $(IWAD)-wad/usr/share/doc/$(IWAD)-wad \ $(IWAD)-wad/usr/share/doc \ $(IWAD)-wad/usr/share/games/game-data-packager \ $(IWAD)-wad/usr/share/games/$(GAME) \ $(IWAD)-wad/usr/share/games \ $(IWAD)-wad/usr/share \ $(IWAD)-wad/usr \ $(IWAD)-wad $($(IWAD)DEB): $($(IWAD)TARGETS) fixperms cd build/ && fakeroot dpkg-deb -b $(IWAD)-wad ../$@ build/$(IWAD)DIRS: mkdir -p $(addprefix "build/", $(DIRS)) build/$(IWAD)-wad/usr/share/doc/$(IWAD)-wad/copyright: m4 -DPACKAGE=$(IWAD)-wad -DIWAD=$(IWAD).wad \ doom-common/usr/share/doc/doom-common/copyright.in \ > $@ build/$(IWAD)-wad/usr/share/doc/$(IWAD)-wad/README.Debian: m4 -DPACKAGE=$(IWAD)-wad -DGAME="$(LONG)" \ doom-common/usr/share/doc/doom-common/README.Debian.in \ > $@ build/$(IWAD)-wad/usr/share/applications/$(IWAD)-wad.desktop: m4 -DGAME=$(IWAD) -DLONG="$(LONG)" -DENGINE=$(GAME) \ doom-common/usr/share/applications/doom-common.desktop.in \ > $@ build/$(IWAD)-wad/DEBIAN/preinst: m4 -DIWAD=$(IWAD).wad \ doom-common/DEBIAN/preinst.in > $@ build/$(IWAD)-wad/DEBIAN/control: $(CONTROLIN) m4 -DPACKAGE=$(IWAD)-wad -DGAME=$(IWAD) -DVERSION=$(VERSION) \ -DLONG="$(LONG)" -DENGINE=$(GAME) $(CONTROLIN) > $@ build/$(IWAD)-wad/usr/share/doc/$(IWAD)-wad/changelog.gz: gzip -c9 debian/changelog > $@ build/$(IWAD)-wad/usr/share/pixmaps/$(IWAD).xpm: cp -p doom-common/doom2.xpm $@ build/$(IWAD)-wad/DEBIAN/md5sums: cd build/$(IWAD)-wad && find usr/ -type f -print0 |\ xargs -r0 md5sum >DEBIAN/md5sums fixperms: find build/$(IWAD)-wad -type f -print0 | xargs -r0 chmod 644 find build/$(IWAD)-wad -type d -print0 | xargs -r0 chmod 755 chmod 755 build/$(IWAD)-wad/DEBIAN/preinst clean: rm -f $($(IWAD)DEB) $($(IWAD)TARGETS) -for dir in $(addprefix "build/", $(DIRS)); do \ [ -d $$dir ] && rmdir $$dir; done PHONY: fixperms clean game-data-packager/heretic/0000755000000000000000000000000012226604542012765 5ustar game-data-packager/heretic/DEBIAN/0000755000000000000000000000000012226604542013707 5ustar game-data-packager/heretic/DEBIAN/control.in0000644000000000000000000000074612226604542015726 0ustar Package: PACKAGE Section: non-free/games Priority: optional Architecture: all Recommends: heretic-engine Provides: heretic-wad Installed-Size: 56 Version: VERSION Maintainer: Debian Games Team Description: IWAD from Raven Software's heretic computer game Heretic requires both a heretic-engine and a heretic-wad to play. This package contains the IWAD from ID Software's game "GAME" and was generated using the "game-data-packager" program. game-data-packager/hexen/0000755000000000000000000000000012226604542012451 5ustar game-data-packager/hexen/DEBIAN/0000755000000000000000000000000012226604542013373 5ustar game-data-packager/hexen/DEBIAN/control.in0000644000000000000000000000073212226604542015405 0ustar Package: PACKAGE Section: non-free/games Priority: optional Architecture: all Recommends: hexen-engine Provides: hexen-wad Installed-Size: 56 Version: VERSION Maintainer: Debian Games Team Description: IWAD from Raven Software's hexen computer game Hexen requires both a hexen-engine and a hexen-wad to play. This package contains the IWAD from ID Software's game "GAME" and was generated using the "game-data-packager" program. game-data-packager/quake2/0000755000000000000000000000000012242465475012542 5ustar game-data-packager/quake2/quake2-full-data.control0000644000000000000000000000120112226604542017165 0ustar Package: quake2-full-data Version: VERSION Section: non-free/games Priority: optional Architecture: all Recommends: quake2 | quake2-server Provides: quake2-data Conflicts: quake2-data Replaces: quake2-data Installed-Size: 500000 Maintainer: Debian Games Team Description: Quake II data files Quake II requires an engine and game data to play. This package contains the data from the full version of id Software's game "Quake II", and was generated using the "game-data-packager" program from the Debian package of the same name. . To play Quake II using this data, install the quake2 package. game-data-packager/quake2/patch.md5sums0000644000000000000000000004602012226604542015152 0ustar be525e9186c1a503a890cb0cf00dde0b usr/share/doc/quake2-full-data/Commercial Exploitation.doc af91bb4178e223adaa258d50ce2541b0 usr/share/doc/quake2-full-data/Manual.html ece2e3e69d0965c26d89f2e7136ca0c8 usr/share/doc/quake2-full-data/QII License Information.doc e609fa212754b209bb6a5699bc375ef5 usr/share/doc/quake2-full-data/Quake II License.doc aa982a9b086cb2ec3ef474485f35037f usr/share/doc/quake2-full-data/Release Notes.doc 64cf07696d2f0e0f69a4c133c2dbf3a5 usr/share/doc/quake2-full-data/commexp.txt c17a9ef88a73d57a6935cdef8a160579 usr/share/doc/quake2-full-data/license.txt 09bfc1ee52836250d5a7071d5cca6179 usr/share/doc/quake2-full-data/licinfo.txt 664db6482beaa2c129fb2fdaa024b27c usr/share/doc/quake2-full-data/readme.doc 9e6ed9910b11d4dbb7d0527f1ff140a1 usr/share/doc/quake2-full-data/readme.txt cf55adc0ff845a4c1298457d18a32c21 usr/share/doc/quake2-full-data/release.txt b2c3358d7be61f05651c88d9ef97d6aa usr/share/games/quake2/baseq2/maps.lst 42663ea709b7cd3eb9b634b36cfecb1a usr/share/games/quake2/baseq2/pak1.pak c8217cc5557b672a87fc210c2347d98d usr/share/games/quake2/baseq2/pak2.pak 14d330fe2a9af05a6254b2c2bda9f384 usr/share/games/quake2/baseq2/players/crakhor/a_grenades.md2 30c768e9efd766b977cf09efe169d469 usr/share/games/quake2/baseq2/players/crakhor/w_bfg.md2 6083f459e8a4436d9c53aa9e56b8aea2 usr/share/games/quake2/baseq2/players/crakhor/w_blaster.md2 f374193db83cce95d2994ee4ddbb8aa5 usr/share/games/quake2/baseq2/players/crakhor/w_chainfist.md2 0dadb2a3db589b16108519f72ca9276c usr/share/games/quake2/baseq2/players/crakhor/w_chaingun.md2 760332f4732df928850ee11b0339eba8 usr/share/games/quake2/baseq2/players/crakhor/w_disrupt.md2 beb85d38cd38200f932ab1bd49da2ad7 usr/share/games/quake2/baseq2/players/crakhor/w_etfrifle.md2 ebf78a4bac3751312b567e4338543025 usr/share/games/quake2/baseq2/players/crakhor/w_glauncher.md2 0ff87ffebae73170d8c1ce80b21d4bf4 usr/share/games/quake2/baseq2/players/crakhor/w_grapple.md2 21c61d7b08ba7439d4c04acdf4188147 usr/share/games/quake2/baseq2/players/crakhor/w_hyperblaster.md2 78bfd0e09d09a1c8eb68ede057c94a0a usr/share/games/quake2/baseq2/players/crakhor/w_machinegun.md2 77c6ee11392be666a06de53ec626ebdb usr/share/games/quake2/baseq2/players/crakhor/w_phalanx.md2 ab3779c7b64d5407c3003b6877f805ad usr/share/games/quake2/baseq2/players/crakhor/w_plasma.md2 84a112fe3e53111bde93daba9af2ce12 usr/share/games/quake2/baseq2/players/crakhor/w_plauncher.md2 8eb180849cb82aa7f2c11f48939c496c usr/share/games/quake2/baseq2/players/crakhor/w_railgun.md2 45686bcf0256db68e31d625f81e08a01 usr/share/games/quake2/baseq2/players/crakhor/w_ripper.md2 61bbf8e9a1fed45ef6c9eda9b2831f4c usr/share/games/quake2/baseq2/players/crakhor/w_rlauncher.md2 ef962916f8286a8ac41a789691e7301d usr/share/games/quake2/baseq2/players/crakhor/w_shotgun.md2 3b33ccd6743b80073f4876f10f4f777a usr/share/games/quake2/baseq2/players/crakhor/w_sshotgun.md2 8b26b6a4863b7e2c30b4dcd7867a6d10 usr/share/games/quake2/baseq2/players/cyborg/a_grenades.md2 b2f11bdabf2b09eb66075a18315dc1cf usr/share/games/quake2/baseq2/players/cyborg/bump1.wav 3cbdf3527ca1bd4ae8ede5e2d7d08dd1 usr/share/games/quake2/baseq2/players/cyborg/death1.wav 5d45198b91768b300eb812cd13c9e8ea usr/share/games/quake2/baseq2/players/cyborg/death2.wav f9aee3bd80a468a333fdd0c886dfd779 usr/share/games/quake2/baseq2/players/cyborg/death3.wav 093fd87e237c7631b19f0d93e01100c4 usr/share/games/quake2/baseq2/players/cyborg/death4.wav d456b69f89e817dc418fc2f2b31be087 usr/share/games/quake2/baseq2/players/cyborg/drown1.wav e0d17ec11d2d9a2f6c58c6d287674e81 usr/share/games/quake2/baseq2/players/cyborg/fall1.wav 772fba8054bfe34d0d14be259e57db93 usr/share/games/quake2/baseq2/players/cyborg/fall2.wav 9014a110ccd4a86bc7fa9e32e96f4a96 usr/share/games/quake2/baseq2/players/cyborg/gurp1.wav b5699e778086ffcf4fb3d8d7e6d8c552 usr/share/games/quake2/baseq2/players/cyborg/gurp2.wav 3abaf0d5951560f08271542d9dbc4dc2 usr/share/games/quake2/baseq2/players/cyborg/jump1.wav e9424f28e3b36c8de2f2899755a845cf usr/share/games/quake2/baseq2/players/cyborg/oni911.pcx 7b6efcd5a23445644ef6fb77e16a05b2 usr/share/games/quake2/baseq2/players/cyborg/oni911_i.pcx 61bf93c3191a21b52c6a6881a20d8553 usr/share/games/quake2/baseq2/players/cyborg/pain100_1.wav 4468325ba9f977c507289f1d581dfc3b usr/share/games/quake2/baseq2/players/cyborg/pain100_2.wav a4e56dfd05b20782c81f3eda87320865 usr/share/games/quake2/baseq2/players/cyborg/pain25_1.wav 3807c207936e9b547fea16be7f54386f usr/share/games/quake2/baseq2/players/cyborg/pain25_2.wav 9af5ee44b6ff7b213b17b2a0688027d2 usr/share/games/quake2/baseq2/players/cyborg/pain50_1.wav 461a32c9acf2b7199c0013a9b1235258 usr/share/games/quake2/baseq2/players/cyborg/pain50_2.wav 657511d0b3c5fae1bbb9a26096c1b0c5 usr/share/games/quake2/baseq2/players/cyborg/pain75_1.wav a3b382dab260dfa68c46b62d6aa49771 usr/share/games/quake2/baseq2/players/cyborg/pain75_2.wav de6d6afe1209f5e404267063b12b3bb6 usr/share/games/quake2/baseq2/players/cyborg/ps9000.pcx 001f9d9a6b34c702f7561fa931a20fd3 usr/share/games/quake2/baseq2/players/cyborg/ps9000_i.pcx 43298b5020639a55db7d1e15d006495e usr/share/games/quake2/baseq2/players/cyborg/tris.md2 992145603059a94688f36200e131d5eb usr/share/games/quake2/baseq2/players/cyborg/tyr574.pcx bb75a77e28a1ab81d518680bd7ebc86c usr/share/games/quake2/baseq2/players/cyborg/tyr574_i.pcx 234b1c49e4cc1dc86e9e46e4ab105479 usr/share/games/quake2/baseq2/players/cyborg/w_bfg.md2 68a19777b8a25f1657e321d78b949347 usr/share/games/quake2/baseq2/players/cyborg/w_blaster.md2 48890c7dae7053a8e9089abcaaa95cf9 usr/share/games/quake2/baseq2/players/cyborg/w_chainfist.md2 fb92d87e2255d767e692dd4d5dda490b usr/share/games/quake2/baseq2/players/cyborg/w_chaingun.md2 a471b38d21d586da0a1064bfdeca9d04 usr/share/games/quake2/baseq2/players/cyborg/w_disrupt.md2 48747d1bc3d81e698cf1fa6ee05607ea usr/share/games/quake2/baseq2/players/cyborg/w_etfrifle.md2 3c22c7dcfc75ce786bd7e5d5c61defb4 usr/share/games/quake2/baseq2/players/cyborg/w_glauncher.md2 6081b82197fa8105e8380445a6422904 usr/share/games/quake2/baseq2/players/cyborg/w_grapple.md2 eaa308d4893857646dba28cba84b35f9 usr/share/games/quake2/baseq2/players/cyborg/w_hyperblaster.md2 f0db74b83301a5b6d5414abc115f268b usr/share/games/quake2/baseq2/players/cyborg/w_machinegun.md2 f99b7aa61adbfc59038a414e81b9af53 usr/share/games/quake2/baseq2/players/cyborg/w_phalanx.md2 b70e91170b6923f83e089a865b26591e usr/share/games/quake2/baseq2/players/cyborg/w_plasma.md2 80caf9d707d2e681e0c54dda1f4fabf9 usr/share/games/quake2/baseq2/players/cyborg/w_plauncher.md2 b5a6a8e1235e0129ba6474983aef9989 usr/share/games/quake2/baseq2/players/cyborg/w_railgun.md2 b00cd4cce1cb9fdd9a6eeb1837f79778 usr/share/games/quake2/baseq2/players/cyborg/w_ripper.md2 9656c56907b8284bbbf30fe60443b211 usr/share/games/quake2/baseq2/players/cyborg/w_rlauncher.md2 e9a5e9b2df9bf2fa5e53794f929419af usr/share/games/quake2/baseq2/players/cyborg/w_shotgun.md2 46967dbfad628470a7bc344b20086d53 usr/share/games/quake2/baseq2/players/cyborg/w_sshotgun.md2 7a1e0e90a91338c5fa3f3733e6f0691c usr/share/games/quake2/baseq2/players/cyborg/weapon.md2 0758d59ebfcb5931bda2b0985faf98a9 usr/share/games/quake2/baseq2/players/cyborg/weapon.pcx 0758d59ebfcb5931bda2b0985faf98a9 usr/share/games/quake2/baseq2/players/cyborg/weapon.pcx.pcx 3caf27fabfc11a5ee6c4b1c29ce12a9d usr/share/games/quake2/baseq2/players/female/a_grenades.md2 55a4e452af3d421ab4f6b3497706cae2 usr/share/games/quake2/baseq2/players/female/athena.pcx 7245940c17b3afd002e65afbe79d218c usr/share/games/quake2/baseq2/players/female/athena_i.pcx b3396956b5e178638110dc95b855b288 usr/share/games/quake2/baseq2/players/female/brianna.pcx cdd8629513c6c45b2540cb519e985a49 usr/share/games/quake2/baseq2/players/female/brianna_i.pcx 5a8ab463b5d9bc80fad22d3391b0b09e usr/share/games/quake2/baseq2/players/female/cobalt.pcx 5e1788c5cdd379217f2f8be625073da4 usr/share/games/quake2/baseq2/players/female/cobalt_i.pcx 2ead5a8b2b647d6cfc8b461c60da9096 usr/share/games/quake2/baseq2/players/female/death1.wav 7e5bc1e979422e551786343e49d587a8 usr/share/games/quake2/baseq2/players/female/death2.wav 3759e298e7744bff928ea992dd8e4a67 usr/share/games/quake2/baseq2/players/female/death3.wav 2ae0c9acf42e52ef829995950f2069a9 usr/share/games/quake2/baseq2/players/female/death4.wav f26db3a913b6d88a93a89968eb4eede4 usr/share/games/quake2/baseq2/players/female/drown.wav 9c03b38b6e3fcd5548664310fd8650fe usr/share/games/quake2/baseq2/players/female/ensign.pcx 1f7aa7364f1990f3fdec49510e828a1d usr/share/games/quake2/baseq2/players/female/ensign_i.pcx dfda3c3e0cf1ffe4c856724af363fad7 usr/share/games/quake2/baseq2/players/female/fall1.wav 4b50b8ec2644d0e69311b49ef56d8a5b usr/share/games/quake2/baseq2/players/female/fall2.wav 7bd437017d09f2a7b9555036809a7697 usr/share/games/quake2/baseq2/players/female/gurp1.wav c3c2d82563576e7fc7096a2fe2786f06 usr/share/games/quake2/baseq2/players/female/gurp2.wav 95bcfe6a4e4dc5ab8bfdbaea76807742 usr/share/games/quake2/baseq2/players/female/jezebel.pcx b7f862734bbb31404322d4932908e86b usr/share/games/quake2/baseq2/players/female/jezebel_i.pcx 3628485bc515bd527bbe7e318a713a68 usr/share/games/quake2/baseq2/players/female/jump1.wav d6214e7b3546ea04838ab3e3806fce88 usr/share/games/quake2/baseq2/players/female/jungle.pcx cd2d2f629d051b00e2d4b2b0ef4ae31a usr/share/games/quake2/baseq2/players/female/jungle_i.pcx e86de1939672ab98cd2161db163b0537 usr/share/games/quake2/baseq2/players/female/lotus.pcx 03c18db9988e87c576308d28a93a9458 usr/share/games/quake2/baseq2/players/female/lotus_i.pcx 241eb12ed56a20eb1c53d8bd2d7e7a71 usr/share/games/quake2/baseq2/players/female/pain100_1.wav 538694819553ff50bce8888b5056c928 usr/share/games/quake2/baseq2/players/female/pain100_2.wav bf03ccdad210756600a94b2dc0e80aa9 usr/share/games/quake2/baseq2/players/female/pain25_1.wav 67596d7a46283dd12378a3fa17081de1 usr/share/games/quake2/baseq2/players/female/pain25_2.wav 440e887fd6f8cd37de9c894ec399b3fc usr/share/games/quake2/baseq2/players/female/pain50_1.wav b78b8303d5a972eeab44f80b951b722b usr/share/games/quake2/baseq2/players/female/pain50_2.wav a182517b0f96aa72cfae9bafd77a459f usr/share/games/quake2/baseq2/players/female/pain75_1.wav 3ac3a69c0d8a43ad53f910bde1401432 usr/share/games/quake2/baseq2/players/female/pain75_2.wav af481347560c60880570696910c19bd7 usr/share/games/quake2/baseq2/players/female/stiletto.pcx 483e6c39fadcaf3df78e1741a83f5fe6 usr/share/games/quake2/baseq2/players/female/stiletto_i.pcx 24148fcc60c08e8325f8eee82f23c88d usr/share/games/quake2/baseq2/players/female/tris.md2 b5e2d772f3c469f96cdb7be947e5522e usr/share/games/quake2/baseq2/players/female/venus.pcx d12db2c18be1206bd53eb64d486ce655 usr/share/games/quake2/baseq2/players/female/venus_i.pcx c2ca5827551749ea7959d3326be7154d usr/share/games/quake2/baseq2/players/female/voodoo.pcx 7d199b6f0f36655fbea4338ee85a7c89 usr/share/games/quake2/baseq2/players/female/voodoo_i.pcx ace25cc0e1481a671f1cfff27ad73485 usr/share/games/quake2/baseq2/players/female/w_bfg.md2 7d38c30abb113cdfcea142b8aacf25c4 usr/share/games/quake2/baseq2/players/female/w_blaster.md2 d58bf8f9701422f21cf5133b6266b6b0 usr/share/games/quake2/baseq2/players/female/w_chainfist.md2 86103877e85726cb3af3a808f8088137 usr/share/games/quake2/baseq2/players/female/w_chaingun.md2 b37f73c57cbbf24e86f50465b845cdf2 usr/share/games/quake2/baseq2/players/female/w_disrupt.md2 c1e2e35d6a5d43e879c7a715497871a6 usr/share/games/quake2/baseq2/players/female/w_etfrifle.md2 eabe7f32985a66f32a710dc65d9ac630 usr/share/games/quake2/baseq2/players/female/w_glauncher.md2 47e6bbf70c729754c66de7c3de7f9874 usr/share/games/quake2/baseq2/players/female/w_grapple.md2 30eb0a369e941c767044c74d0ced815e usr/share/games/quake2/baseq2/players/female/w_hyperblaster.md2 be6523a01f07a909f2297d4701d0c6cb usr/share/games/quake2/baseq2/players/female/w_machinegun.md2 b71a2557746052945fa90f7e13a3e2b2 usr/share/games/quake2/baseq2/players/female/w_phalanx.md2 814ece94ac2d5bc3a002d6ae3daa5860 usr/share/games/quake2/baseq2/players/female/w_plasma.md2 f4e0e9f8c6cc9d5b4fd7947360a3fe1d usr/share/games/quake2/baseq2/players/female/w_plauncher.md2 ec79193998da672c5f17aec8a781ceac usr/share/games/quake2/baseq2/players/female/w_railgun.md2 bfcac9f7d7e9a69e45355faae9364589 usr/share/games/quake2/baseq2/players/female/w_ripper.md2 877ab9be5145d030cd5f682e61695007 usr/share/games/quake2/baseq2/players/female/w_rlauncher.md2 3b9968c41e9fef1c8ce34305cc38d6f1 usr/share/games/quake2/baseq2/players/female/w_shotgun.md2 fbc4b51287c4b006b5a4d52a422db229 usr/share/games/quake2/baseq2/players/female/w_sshotgun.md2 3b9968c41e9fef1c8ce34305cc38d6f1 usr/share/games/quake2/baseq2/players/female/weapon.md2 0758d59ebfcb5931bda2b0985faf98a9 usr/share/games/quake2/baseq2/players/female/weapon.pcx 8b26b6a4863b7e2c30b4dcd7867a6d10 usr/share/games/quake2/baseq2/players/male/a_grenades.md2 998f5a453be87f1301823ad4f2e3c818 usr/share/games/quake2/baseq2/players/male/bump1.wav 8b27adf487714b21c900af1474cecf9e usr/share/games/quake2/baseq2/players/male/cipher.pcx d0c3e03850569d223a9705cd5aba608e usr/share/games/quake2/baseq2/players/male/cipher_i.pcx f192147481f31b16524d0bd4f9a7db5d usr/share/games/quake2/baseq2/players/male/claymore.pcx e80f697c4ee4680b5c667b83b4a1b48c usr/share/games/quake2/baseq2/players/male/claymore_i.pcx c1a37ac609cd280dde4eb40c6554cc4c usr/share/games/quake2/baseq2/players/male/death1.wav e3596b73010d485fd4eb30930024c215 usr/share/games/quake2/baseq2/players/male/death2.wav bbed4c80620d0889c265b6a3d9ba1201 usr/share/games/quake2/baseq2/players/male/death3.wav 6f064673e3889697a2fe282c98348690 usr/share/games/quake2/baseq2/players/male/death4.wav b0ed6afa04b2e57f59727ff6eb85c7d1 usr/share/games/quake2/baseq2/players/male/drown1.wav 7a2943c4824d0365a57b2bf3e0e81128 usr/share/games/quake2/baseq2/players/male/fall1.wav 28c39bb738169587d5e971181ccf16b1 usr/share/games/quake2/baseq2/players/male/fall2.wav a25da9175683d7516631da1961c5f3ef usr/share/games/quake2/baseq2/players/male/flak.pcx ed16d176fb1a3b6a1ea2fed2f863bd2a usr/share/games/quake2/baseq2/players/male/flak_i.pcx 34eaa46104de21bd7c4f8e8f48fac32e usr/share/games/quake2/baseq2/players/male/grunt.pcx 0a57ea0f39fb763e0338e736bd59bc22 usr/share/games/quake2/baseq2/players/male/grunt_i.pcx 53644df5f8c2d1ace04f3fa555c79ae0 usr/share/games/quake2/baseq2/players/male/gurp1.wav 7829cd11b6dc9bad808c293293ec907c usr/share/games/quake2/baseq2/players/male/gurp2.wav f4a15fdb5036f2020c2a23462a4a8ae2 usr/share/games/quake2/baseq2/players/male/howitzer.pcx 3c9211a549d9bc126c168ea49a94741d usr/share/games/quake2/baseq2/players/male/howitzer_i.pcx ee794f58cbced0643e2143d08d14d3a6 usr/share/games/quake2/baseq2/players/male/jump1.wav ba536b3b53506f47bbecd8699f78e755 usr/share/games/quake2/baseq2/players/male/major.pcx 905dee6998c121babc9e62751e52703b usr/share/games/quake2/baseq2/players/male/major_i.pcx 0ebaa3df3adb2f12a983a94ea82c15f0 usr/share/games/quake2/baseq2/players/male/nightops.pcx 83c2754d59312ace64b5cf3ad11f9a71 usr/share/games/quake2/baseq2/players/male/nightops_i.pcx d492e20850243948166e91471d0b7839 usr/share/games/quake2/baseq2/players/male/pain100_1.wav 99438e6a46feabab8bec63411bba1dd6 usr/share/games/quake2/baseq2/players/male/pain100_2.wav 6a24f43061f8db2961b4adde76bf016d usr/share/games/quake2/baseq2/players/male/pain25_1.wav 825558a1abb9d5138952f6ec210efcef usr/share/games/quake2/baseq2/players/male/pain25_2.wav 1096f5798b8ac7b8a4dede4d189ee2c1 usr/share/games/quake2/baseq2/players/male/pain50_1.wav 49ac063de6c8f8d791428333b76d7363 usr/share/games/quake2/baseq2/players/male/pain50_2.wav 35d962b7fd722802bd445c7489b460d9 usr/share/games/quake2/baseq2/players/male/pain75_1.wav a11b2ba8ddde40cd9b44c7e2211ab627 usr/share/games/quake2/baseq2/players/male/pain75_2.wav 10d6b2cf74286f7396fc1ac73840437c usr/share/games/quake2/baseq2/players/male/pointman.pcx 494824048e031d490e691ca9fefa8eb2 usr/share/games/quake2/baseq2/players/male/pointman_i.pcx f600b69cb8a5d1b09bf2af436a7049a9 usr/share/games/quake2/baseq2/players/male/psycho.pcx 817a284dbbc63870c99e35f1c874f04c usr/share/games/quake2/baseq2/players/male/psycho_i.pcx 1950086c138cd3c9d38660dc60fc9a6e usr/share/games/quake2/baseq2/players/male/rampage.pcx 0c1e9f726b37ef6d633343c39ad0d441 usr/share/games/quake2/baseq2/players/male/rampage_i.pcx f2a90e8e9c7756c7bc8a5c9ab22c7f86 usr/share/games/quake2/baseq2/players/male/razor.pcx 68d88b858c7bfdd847217bf9e4ce694b usr/share/games/quake2/baseq2/players/male/razor_i.pcx 2e6dc986cf21d5eee1e2ffc5ba81f241 usr/share/games/quake2/baseq2/players/male/recon.pcx 0351e8eee92b10c286f1516384b150cb usr/share/games/quake2/baseq2/players/male/recon_i.pcx 05d6229df32e289c8e2e95d9aa627d51 usr/share/games/quake2/baseq2/players/male/scout.pcx 328b0bd036961fcf20d352eeef9d1059 usr/share/games/quake2/baseq2/players/male/scout_i.pcx 5c9c6ecd148ddfd14a5191d92d42bd0c usr/share/games/quake2/baseq2/players/male/sniper.pcx e0e503251db60e1c867f1675d287a2fc usr/share/games/quake2/baseq2/players/male/sniper_i.pcx 930dd7b37f9a40dc0ed02aaa86039710 usr/share/games/quake2/baseq2/players/male/tris.md2 bfbba21b67600e4e7a02ce4cb92dd0b9 usr/share/games/quake2/baseq2/players/male/viper.pcx 05cc280cee4ce1cb61bed6fa87eae5f1 usr/share/games/quake2/baseq2/players/male/viper_i.pcx 234b1c49e4cc1dc86e9e46e4ab105479 usr/share/games/quake2/baseq2/players/male/w_bfg.md2 68a19777b8a25f1657e321d78b949347 usr/share/games/quake2/baseq2/players/male/w_blaster.md2 48890c7dae7053a8e9089abcaaa95cf9 usr/share/games/quake2/baseq2/players/male/w_chainfist.md2 fb92d87e2255d767e692dd4d5dda490b usr/share/games/quake2/baseq2/players/male/w_chaingun.md2 a471b38d21d586da0a1064bfdeca9d04 usr/share/games/quake2/baseq2/players/male/w_disrupt.md2 48747d1bc3d81e698cf1fa6ee05607ea usr/share/games/quake2/baseq2/players/male/w_etfrifle.md2 3c22c7dcfc75ce786bd7e5d5c61defb4 usr/share/games/quake2/baseq2/players/male/w_glauncher.md2 6081b82197fa8105e8380445a6422904 usr/share/games/quake2/baseq2/players/male/w_grapple.md2 eaa308d4893857646dba28cba84b35f9 usr/share/games/quake2/baseq2/players/male/w_hyperblaster.md2 f0db74b83301a5b6d5414abc115f268b usr/share/games/quake2/baseq2/players/male/w_machinegun.md2 f99b7aa61adbfc59038a414e81b9af53 usr/share/games/quake2/baseq2/players/male/w_phalanx.md2 b70e91170b6923f83e089a865b26591e usr/share/games/quake2/baseq2/players/male/w_plasma.md2 80caf9d707d2e681e0c54dda1f4fabf9 usr/share/games/quake2/baseq2/players/male/w_plauncher.md2 b5a6a8e1235e0129ba6474983aef9989 usr/share/games/quake2/baseq2/players/male/w_railgun.md2 b00cd4cce1cb9fdd9a6eeb1837f79778 usr/share/games/quake2/baseq2/players/male/w_ripper.md2 9656c56907b8284bbbf30fe60443b211 usr/share/games/quake2/baseq2/players/male/w_rlauncher.md2 e9a5e9b2df9bf2fa5e53794f929419af usr/share/games/quake2/baseq2/players/male/w_shotgun.md2 46967dbfad628470a7bc344b20086d53 usr/share/games/quake2/baseq2/players/male/w_sshotgun.md2 e9a5e9b2df9bf2fa5e53794f929419af usr/share/games/quake2/baseq2/players/male/weapon.md2 0758d59ebfcb5931bda2b0985faf98a9 usr/share/games/quake2/baseq2/players/male/weapon.pcx 59b0e6e7cd5e8b1eb2c3c5208adebce9 usr/share/games/quake2/ctf/ctf2.ico 1f6bd3d4c08f7ed8c037b12fcffd2eb5 usr/share/games/quake2/ctf/pak0.pak 9e5a0bc728d8e06a65244f8065d68c09 usr/share/games/quake2/ctf/readme.txt de2e8781bca657e62d4ad5e4b763cc7a usr/share/games/quake2/ctf/server.cfg game-data-packager/quake2/quake2-demo-data.control0000644000000000000000000000110312226604542017150 0ustar Package: quake2-demo-data Version: VERSION Section: non-free/games Priority: optional Architecture: all Recommends: quake2 | quake2-server Installed-Size: 500000 Maintainer: Debian Games Team Description: Quake II demo data files Quake II requires an engine and game data to play. This package contains the data from the demo version of id Software's game "Quake II", and was generated using the "game-data-packager" program from the Debian package of the same name. . To play Quake II using this data, install the quake2 package. game-data-packager/quake2/quake2-rogue.control0000644000000000000000000000106112242465475016451 0ustar Package: quake2-rogue Version: VERSION Section: non-free/games Priority: optional Recommends: quake2 | quake2-server Installed-Size: 500000 Maintainer: Debian Games Team Description: Quake II: Ground Zero data files Quake II: Ground Zero is a Mission Pack for Quake II created by Rogue Entertainment. This package was generated using the "game-data-packager" program from the Debian package of the same name. . To play Quake II using this data, install the quake2 package and pass "+set game rogue" as arguments. game-data-packager/quake2/cd.md5sums0000644000000000000000000000166612226604542014450 0ustar 1ec55a724dc3109fd50dde71ab581d70 usr/share/games/quake2/baseq2/pak0.pak 36fdaddd1c1b56ba10472466e4486ff8 usr/share/games/quake2/baseq2/video/end.cin cbab517cddc03ec676d7153eeb13417b usr/share/games/quake2/baseq2/video/eou1_.cin 37201aa9c798982e7739dfdbad61c004 usr/share/games/quake2/baseq2/video/eou2_.cin f2b7fac58d5aa24bcf76ec942253dfcc usr/share/games/quake2/baseq2/video/eou3_.cin b0e360a5c4a55789e00d3f2223e23dc4 usr/share/games/quake2/baseq2/video/eou4_.cin 76651dc4f2d92ed278ee8e2cac7c7600 usr/share/games/quake2/baseq2/video/eou5_.cin 0b14fff288b8d260f812e830ce6bff7c usr/share/games/quake2/baseq2/video/eou6_.cin a342a79fadfe9efa2ce549842168ec7c usr/share/games/quake2/baseq2/video/eou7_.cin 24a5178220322b3a4fb42f6b0757b821 usr/share/games/quake2/baseq2/video/eou8_.cin 0747670d94cc873f8ce522d7652143a1 usr/share/games/quake2/baseq2/video/idlog.cin 72846e547415856028006aaa4089c9c9 usr/share/games/quake2/baseq2/video/ntro.cin game-data-packager/quake2/quake2-music.control0000644000000000000000000000150612226604542016444 0ustar Package: quake2-music Version: VERSION Section: non-free/games Priority: optional Architecture: all Installed-Size: 500000 Maintainer: Debian Games Team Description: Quake II soundtrack This package contains the Quake II soundtrack by Sonic Mayhem, Jer Sypult and Bill Brown, copied from the CD-ROM and encoded in Ogg Vorbis. Many modified Quake II engines can play this version of the soundtrack during gameplay without requiring the CD-ROM to be present. The original game would play these tracks from the CD, but many modern machines either do not have the necessary analogue pass-through cable from the CD drive to the sound card, or do not have an optical drive at all. . This package was generated using the "game-data-packager" program from the Debian package of the same name. game-data-packager/quake2/quake2-xatrix.copyright0000644000000000000000000000200212242465475017173 0ustar The quake2-xatrix package was generated using game-data-packager. Copyright © 2008-2013 Jonathan Dowland . The files under "/usr/share/games/quake2/xatrix" are user-supplied files that are not covered by the copyright or license of this package; they are copyright © 1998 Xatrix Entertainment, all rights reserved. See /usr/share/doc/quake2-xatrix/LICENSE for the full terms. The remainder of this package is covered by the following License: This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. On Debian GNU/Linux systems, the complete text of the GNU General Public License can be found in /usr/share/common-licenses/GPL-2. game-data-packager/quake2/quake2-music.copyright0000644000000000000000000000202112227016024016756 0ustar The quake2-music package was generated using game-data-packager. Copyright © 2008-2013 Jonathan Dowland . The Ogg Vorbis files under "/usr/share/games/quake2" are user-supplied files that are not covered by the copyright or licence of this package; they are copyright (c) 1997 id Software, all rights reserved. See /usr/share/doc/quake2-full-data/license.txt in the quake2-full-data package. The remainder of this package is covered by the following Licence: This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. On Debian GNU/Linux systems, the complete text of the GNU General Public License can be found in /usr/share/common-licenses/GPL-2. game-data-packager/quake2/demo.md5sums0000644000000000000000000004340312226604542015001 0ustar af91bb4178e223adaa258d50ce2541b0 usr/share/doc/quake2-demo-data/Manual.html 0fff07160047d23e53b68c490ea1bbbc usr/share/doc/quake2-demo-data/license.txt b443713f8ad0b1c8825554f346850f9e usr/share/doc/quake2-demo-data/quake2_manual/bottom.html 13cae63eea980606ffa9766b388e05ae usr/share/doc/quake2-demo-data/quake2_manual/credits.html 525c98cd717fc7e6ea18b5fd758a2f97 usr/share/doc/quake2-demo-data/quake2_manual/customer_support.html 488755080b3e7c45cd3b03ecf4e2409c usr/share/doc/quake2-demo-data/quake2_manual/enemy_barracuda_shark.html 9454f9e5b2f74a79c0e2efcbf91ca950 usr/share/doc/quake2-demo-data/quake2_manual/enemy_berserker.html c65aa12bd5f0c0bd7644274d78e31537 usr/share/doc/quake2-demo-data/quake2_manual/enemy_brains.html c1c29d257524b45c4b8dc75a40e2b9a9 usr/share/doc/quake2-demo-data/quake2_manual/enemy_enforcer.html 82864bdf550162141890363f0a4dfe4b usr/share/doc/quake2-demo-data/quake2_manual/enemy_flyer.html d228c03aa0f13048913883a26f25717c usr/share/doc/quake2-demo-data/quake2_manual/enemy_gladiator.html 801aafc6c11961445a3183d74a66aa6b usr/share/doc/quake2-demo-data/quake2_manual/enemy_gunner.html c17c9e278b647a87a59f912c79bdc3b2 usr/share/doc/quake2-demo-data/quake2_manual/enemy_icarus.html bc4c7345800243c7b53c62b78eb7d68f usr/share/doc/quake2-demo-data/quake2_manual/enemy_iron_maiden.html 1c45f8475c9118a6ac5aa5fb6688787c usr/share/doc/quake2-demo-data/quake2_manual/enemy_light_guard.html a7ff8a179e1cfb46723c840e5644395c usr/share/doc/quake2-demo-data/quake2_manual/enemy_machinegun_guard.html 458f646a387a616ae2697758c67bfd54 usr/share/doc/quake2-demo-data/quake2_manual/enemy_medic.html b9da61101f90fa77b3f869679f1dc067 usr/share/doc/quake2-demo-data/quake2_manual/enemy_mutant.html 908bc1b0fad3b2eda46c2b0e0c106b5b usr/share/doc/quake2-demo-data/quake2_manual/enemy_parasite.html 1917276059f6da285a3b91c55aa9d349 usr/share/doc/quake2-demo-data/quake2_manual/enemy_shotgun_guard.html 866caef591a5e4efe104f3b483ad90ac usr/share/doc/quake2-demo-data/quake2_manual/enemy_tank.html b1bd9d55d14f4ad4e850d23790af3758 usr/share/doc/quake2-demo-data/quake2_manual/enemy_tank_commander.html 3edb50eac560537c7f5b901a5fe4243a usr/share/doc/quake2-demo-data/quake2_manual/enemy_technician.html f131d96cdd72798f970c2a4ce0d2065f usr/share/doc/quake2-demo-data/quake2_manual/images/adrenaline.gif c558e8dc151a6c23b8ab421083ed48a8 usr/share/doc/quake2-demo-data/quake2_manual/images/amor_body.gif 7575e8057fc282b08d0772b6603984de usr/share/doc/quake2-demo-data/quake2_manual/images/armor_combat.gif 9ae555dc632015dbad5be3b4450ceeda usr/share/doc/quake2-demo-data/quake2_manual/images/armor_jacket.gif 99debda0e35e96dda9d254824c425e3a usr/share/doc/quake2-demo-data/quake2_manual/images/armor_shard.gif 19b1fc6f32b2fe95981fe8e0a1ea61fd usr/share/doc/quake2-demo-data/quake2_manual/images/bandoleer.gif da58ad0dfad2782305cad17d3e6eaf12 usr/share/doc/quake2-demo-data/quake2_manual/images/barracuda_shark.gif 68fc6e4c00844ba34b87f43de3c4fbac usr/share/doc/quake2-demo-data/quake2_manual/images/berserker.gif 6834f0b61f8d817d0dc79569845e3046 usr/share/doc/quake2-demo-data/quake2_manual/images/bfg.gif 5a6551fb3ec299f890d898594346db6f usr/share/doc/quake2-demo-data/quake2_manual/images/blaster.gif 23859933f199db9b2347e707638aac22 usr/share/doc/quake2-demo-data/quake2_manual/images/bluekey.gif ea8eb458d370e567066df689522d2b1a usr/share/doc/quake2-demo-data/quake2_manual/images/bottom_id_link_transparent.gif e6643ac33290a735ca5d2894c1b906e9 usr/share/doc/quake2-demo-data/quake2_manual/images/brains.gif c1d15da296ad651f16fc3f57560d1f5b usr/share/doc/quake2-demo-data/quake2_manual/images/breather.gif 1a8b9798ac6738c718b5cc904692d17e usr/share/doc/quake2-demo-data/quake2_manual/images/bullets.gif 21f07db8c561fe3a897e3731871957d3 usr/share/doc/quake2-demo-data/quake2_manual/images/buttons.jpg c25bd13199f71501b7c4b363dcf37cfe usr/share/doc/quake2-demo-data/quake2_manual/images/cells.gif 97a0afa9d61a192d12500b331a0c8d76 usr/share/doc/quake2-demo-data/quake2_manual/images/chaingun.gif f08f699ed909f3a7331cd406e96841b2 usr/share/doc/quake2-demo-data/quake2_manual/images/commandant_james.gif d1369409fd57537f7eb304eb200c5931 usr/share/doc/quake2-demo-data/quake2_manual/images/credits_main.gif 949210e74761ff8e933f1cec3291666e usr/share/doc/quake2-demo-data/quake2_manual/images/door.jpg 3ef44435fafc00bbeeb149caa88af413 usr/share/doc/quake2-demo-data/quake2_manual/images/elevator_base_exit_sign.jpg adc7c35ae1e479c298d89656159c2ce2 usr/share/doc/quake2-demo-data/quake2_manual/images/enemy_groupshot.gif 6dd52e61c2a2a465bdac6ff87a4797f5 usr/share/doc/quake2-demo-data/quake2_manual/images/energy_armour.gif a94e962385e7e2d811c09e95413a7ef5 usr/share/doc/quake2-demo-data/quake2_manual/images/enforcer.gif 63398d74292880bb1203cd45df6c1c5a usr/share/doc/quake2-demo-data/quake2_manual/images/envirosuit.gif ee18f90587d73d1f645691f360f87798 usr/share/doc/quake2-demo-data/quake2_manual/images/explosive_barrels.jpg 61e78c0dfad3a69dc8adfa533b1adaa4 usr/share/doc/quake2-demo-data/quake2_manual/images/first_aid.gif 01295003292377b984d29ae3d5fae32f usr/share/doc/quake2-demo-data/quake2_manual/images/flyer.gif 42bd48f70c5ce445f82f12353856464f usr/share/doc/quake2-demo-data/quake2_manual/images/gladiator.gif 53b065c8031059d3fa19a65b761854d9 usr/share/doc/quake2-demo-data/quake2_manual/images/grenade_launcher.gif db2126ae4d004bbc62a13a0ca21e56e5 usr/share/doc/quake2-demo-data/quake2_manual/images/grenades.gif eaa0f07ffd2714e10faf002625ee433a usr/share/doc/quake2-demo-data/quake2_manual/images/gunner.gif a8e203bcc78f0332d0adcdc4ac837775 usr/share/doc/quake2-demo-data/quake2_manual/images/hand_grenade.gif dc442f7cafc105894ee44cf766c9c41b usr/share/doc/quake2-demo-data/quake2_manual/images/heavy_pack.gif 59479569ef1d819cc0feef7a8f965646 usr/share/doc/quake2-demo-data/quake2_manual/images/hyper_blaster.gif c9084fe8dabae2cf4c7989a21cd19e00 usr/share/doc/quake2-demo-data/quake2_manual/images/icarus.gif acca7a57f799011ff568af2c504eaecd usr/share/doc/quake2-demo-data/quake2_manual/images/invulnerability.gif 71f68eb7bb6d45198736022d1ff1a733 usr/share/doc/quake2-demo-data/quake2_manual/images/iron_maiden.gif 16ae7c63436b121cebbbc7cb06f80507 usr/share/doc/quake2-demo-data/quake2_manual/images/lava.jpg 78c52ff576d89f37e8f74eda6c568fdd usr/share/doc/quake2-demo-data/quake2_manual/images/lever.jpg b561aa6f574bcfb9eae772c77aef60b0 usr/share/doc/quake2-demo-data/quake2_manual/images/light_guard.gif 41edc7492a8c853a9406f417ee9b8f31 usr/share/doc/quake2-demo-data/quake2_manual/images/machinegun.gif f4fee55919ff1d155faf15ecdc028392 usr/share/doc/quake2-demo-data/quake2_manual/images/machinegun_guard.gif 6d02566ebb37d18cefaf0fd57ee8860d usr/share/doc/quake2-demo-data/quake2_manual/images/main_cover_image.gif 02e47564117046653ef526f2b7717e90 usr/share/doc/quake2-demo-data/quake2_manual/images/manual_back.jpg 95bc839be47738333414794ce08e6cc0 usr/share/doc/quake2-demo-data/quake2_manual/images/manual_bottom.jpg 0c52056fd89a18e7ffc0c077eccac5c7 usr/share/doc/quake2-demo-data/quake2_manual/images/manual_cover_image.jpg c4b3944d6df965fb59b1d79f71b60682 usr/share/doc/quake2-demo-data/quake2_manual/images/manual_top.jpg 460a57fc857179b148474d36a1baf199 usr/share/doc/quake2-demo-data/quake2_manual/images/medic.gif f711c67053878f445e013fddaad9b638 usr/share/doc/quake2-demo-data/quake2_manual/images/medkit.gif e2e02777a2baa8673927043a257cabb2 usr/share/doc/quake2-demo-data/quake2_manual/images/mega_health.gif 4a322e326a53e986093f9c01c877a7a4 usr/share/doc/quake2-demo-data/quake2_manual/images/menu.gif 7d7e39181822e05cedd6aa075eb162ed usr/share/doc/quake2-demo-data/quake2_manual/images/multiplayer_main.jpg 5d4835320037ba4d95da66c8d2549624 usr/share/doc/quake2-demo-data/quake2_manual/images/multiplayer_menu1.gif 4949949a172cb34ea2732b3127173e1f usr/share/doc/quake2-demo-data/quake2_manual/images/multiplayer_screen1.gif ec5ec6f011301c102e6e4fe9cf8dcdb7 usr/share/doc/quake2-demo-data/quake2_manual/images/mutant.gif 275afc9861a9658c7c046342a2f7b23e usr/share/doc/quake2-demo-data/quake2_manual/images/no_data.jpg a3ee36171d113a289fc5d2e75db54494 usr/share/doc/quake2-demo-data/quake2_manual/images/options_menu.gif 1e4fc2ecc3f02ffd74fab4cd47a014f6 usr/share/doc/quake2-demo-data/quake2_manual/images/parasite.gif 0637fab6270d7a717ca6cc3f95aebb34 usr/share/doc/quake2-demo-data/quake2_manual/images/player_properties_screen1.gif 5fd03a3df80e4172f9374ecbaa81bd53 usr/share/doc/quake2-demo-data/quake2_manual/images/quad_damage.gif 67819596d45e9c813b1ffac952171278 usr/share/doc/quake2-demo-data/quake2_manual/images/rail_gun.gif a725bf6c45780713436766b2525a70fd usr/share/doc/quake2-demo-data/quake2_manual/images/rocket_launcher.gif 247ef5880017bcd4e798c0cdc6bfda04 usr/share/doc/quake2-demo-data/quake2_manual/images/rockets.gif 371e4e7533d3dba76cc4ec87173ed324 usr/share/doc/quake2-demo-data/quake2_manual/images/secret_door.jpg 5de3f7d97f7db24fa2f5ff3ad224c967 usr/share/doc/quake2-demo-data/quake2_manual/images/shells.gif e9696363faaa96d5d6a409ccc8e8f015 usr/share/doc/quake2-demo-data/quake2_manual/images/shotgun.gif 6064616bad96220615e110dd664f111f usr/share/doc/quake2-demo-data/quake2_manual/images/shotgun_guard.gif 164bc256f4f8617fd61b4c36d0429d7c usr/share/doc/quake2-demo-data/quake2_manual/images/silencer.gif 06dc2b46cae94542e3e4140615d85064 usr/share/doc/quake2-demo-data/quake2_manual/images/slime.jpg f122ab7eeab31b4da0c2baffceb5cf11 usr/share/doc/quake2-demo-data/quake2_manual/images/start_network_server_screen1.gif a189c129ad4c299009eac1178815ba3a usr/share/doc/quake2-demo-data/quake2_manual/images/stimpack.gif 2b8ae1a4e1d3123db66a76a08323e6b7 usr/share/doc/quake2-demo-data/quake2_manual/images/story_main.jpg 347cc3b0fe0aa4bd04f4ce40252af4cf usr/share/doc/quake2-demo-data/quake2_manual/images/strogg_environ_1.jpg 4eb8b956d495b0401a48769ac4f17c0e usr/share/doc/quake2-demo-data/quake2_manual/images/strogg_environ_2.jpg 6b297939ebb9eec6bc83c5fdc92023ea usr/share/doc/quake2-demo-data/quake2_manual/images/strogg_environ_3.jpg 73eebf0184fc436f9fe41508978581dd usr/share/doc/quake2-demo-data/quake2_manual/images/supershotgun.gif 00c5ebfbc38fb3b8f555f73079aec5a0 usr/share/doc/quake2-demo-data/quake2_manual/images/tank.gif 9ca52658cebfa202d42a150247305a70 usr/share/doc/quake2-demo-data/quake2_manual/images/tank_commander.gif 0d3f3d2a5cf21f32fcd70454996c0191 usr/share/doc/quake2-demo-data/quake2_manual/images/technician.gif f2c45a04108af0d6fc38ebba1e1b7d37 usr/share/doc/quake2-demo-data/quake2_manual/images/top_nav_imagemap.gif 56ec448b8292f79ce3793d1a8ec9cdd2 usr/share/doc/quake2-demo-data/quake2_manual/images/unit_exit_door.jpg bee2b0739a9a9c3e29608b5bdf19b0fa usr/share/doc/quake2-demo-data/quake2_manual/images/water.jpg 0c4bdc0f1fd174f2c010cc31a3f3e236 usr/share/doc/quake2-demo-data/quake2_manual/intel_brief.html d9f0b73e894cd8faebb4dceec6b81011 usr/share/doc/quake2-demo-data/quake2_manual/intel_brief2.html 95357eb18bf19e34cb872035cf0d1136 usr/share/doc/quake2-demo-data/quake2_manual/intel_brief3.html 76d5e436af64cdd403ea006331052003 usr/share/doc/quake2-demo-data/quake2_manual/intel_brief4.html 66e2ae70f279ff65a341f12607e2190c usr/share/doc/quake2-demo-data/quake2_manual/intel_brief5.html 5da237d3d8a09e1803015c00d2018fca usr/share/doc/quake2-demo-data/quake2_manual/intel_brief6.html 84fb833ed252a8a2416d4b9a34946fc6 usr/share/doc/quake2-demo-data/quake2_manual/intel_brief7.html 3d79ac1d55e1b721ad99dd3182277512 usr/share/doc/quake2-demo-data/quake2_manual/intel_brief8.html bccace2d488b98b6ef28d3c635fce54c usr/share/doc/quake2-demo-data/quake2_manual/intel_brief_enemy.html 6ab83a71a2ef04113ea7822c0d4107a3 usr/share/doc/quake2-demo-data/quake2_manual/main.html 40adc537d74bffd613fbbe364eb17b7d usr/share/doc/quake2-demo-data/quake2_manual/multiplayer.html 49f1cb26ce4bd2a2f8c65e50cea8a7cd usr/share/doc/quake2-demo-data/quake2_manual/page_index.html e5164543d1d90c04b4ba430ed805b63e usr/share/doc/quake2-demo-data/quake2_manual/setup_controls_screenmenus.html 1b4895f3b8311e41df116ffd4194ab73 usr/share/doc/quake2-demo-data/quake2_manual/story.html 43ed8b9aab50fe9cd02c142dcceb030d usr/share/doc/quake2-demo-data/quake2_manual/technical_information.html 4c08bae1efd913cda8c52cae2c05330f usr/share/doc/quake2-demo-data/quake2_manual/top_nav.html c3ff4ac8608dc4f5891214b8f6d1f0ad usr/share/doc/quake2-demo-data/readme.txt 5aab43e52b123e88b8b5b62952e5ac2a usr/share/doc/quake2-demo-data/release.txt 27d77240466ec4f3253256832b54db8a usr/share/games/quake2-demo/baseq2/pak0.pak 55a4e452af3d421ab4f6b3497706cae2 usr/share/games/quake2-demo/baseq2/players/female/athena.pcx 7245940c17b3afd002e65afbe79d218c usr/share/games/quake2-demo/baseq2/players/female/athena_i.pcx b3396956b5e178638110dc95b855b288 usr/share/games/quake2-demo/baseq2/players/female/brianna.pcx cdd8629513c6c45b2540cb519e985a49 usr/share/games/quake2-demo/baseq2/players/female/brianna_i.pcx 5a8ab463b5d9bc80fad22d3391b0b09e usr/share/games/quake2-demo/baseq2/players/female/cobalt.pcx 5e1788c5cdd379217f2f8be625073da4 usr/share/games/quake2-demo/baseq2/players/female/cobalt_i.pcx 0efb2ca50721f99c7b76cb64563b40ae usr/share/games/quake2-demo/baseq2/players/female/doomgal.pcx 86e4e383de2a892a57e8a9ba4f2ccece usr/share/games/quake2-demo/baseq2/players/female/doomgal_i.pcx 9c03b38b6e3fcd5548664310fd8650fe usr/share/games/quake2-demo/baseq2/players/female/ensign.pcx 1f7aa7364f1990f3fdec49510e828a1d usr/share/games/quake2-demo/baseq2/players/female/ensign_i.pcx 95bcfe6a4e4dc5ab8bfdbaea76807742 usr/share/games/quake2-demo/baseq2/players/female/jezebel.pcx b7f862734bbb31404322d4932908e86b usr/share/games/quake2-demo/baseq2/players/female/jezebel_i.pcx d6214e7b3546ea04838ab3e3806fce88 usr/share/games/quake2-demo/baseq2/players/female/jungle.pcx cd2d2f629d051b00e2d4b2b0ef4ae31a usr/share/games/quake2-demo/baseq2/players/female/jungle_i.pcx e86de1939672ab98cd2161db163b0537 usr/share/games/quake2-demo/baseq2/players/female/lotus.pcx 03c18db9988e87c576308d28a93a9458 usr/share/games/quake2-demo/baseq2/players/female/lotus_i.pcx af481347560c60880570696910c19bd7 usr/share/games/quake2-demo/baseq2/players/female/stiletto.pcx 483e6c39fadcaf3df78e1741a83f5fe6 usr/share/games/quake2-demo/baseq2/players/female/stiletto_i.pcx 24148fcc60c08e8325f8eee82f23c88d usr/share/games/quake2-demo/baseq2/players/female/tris.md2 b5e2d772f3c469f96cdb7be947e5522e usr/share/games/quake2-demo/baseq2/players/female/venus.pcx d12db2c18be1206bd53eb64d486ce655 usr/share/games/quake2-demo/baseq2/players/female/venus_i.pcx c2ca5827551749ea7959d3326be7154d usr/share/games/quake2-demo/baseq2/players/female/voodoo.pcx 7d199b6f0f36655fbea4338ee85a7c89 usr/share/games/quake2-demo/baseq2/players/female/voodoo_i.pcx 3b9968c41e9fef1c8ce34305cc38d6f1 usr/share/games/quake2-demo/baseq2/players/female/weapon.md2 0758d59ebfcb5931bda2b0985faf98a9 usr/share/games/quake2-demo/baseq2/players/female/weapon.pcx 8b27adf487714b21c900af1474cecf9e usr/share/games/quake2-demo/baseq2/players/male/cipher.pcx d0c3e03850569d223a9705cd5aba608e usr/share/games/quake2-demo/baseq2/players/male/cipher_i.pcx f192147481f31b16524d0bd4f9a7db5d usr/share/games/quake2-demo/baseq2/players/male/claymore.pcx e80f697c4ee4680b5c667b83b4a1b48c usr/share/games/quake2-demo/baseq2/players/male/claymore_i.pcx a25da9175683d7516631da1961c5f3ef usr/share/games/quake2-demo/baseq2/players/male/flak.pcx ed16d176fb1a3b6a1ea2fed2f863bd2a usr/share/games/quake2-demo/baseq2/players/male/flak_i.pcx 34eaa46104de21bd7c4f8e8f48fac32e usr/share/games/quake2-demo/baseq2/players/male/grunt.pcx 0a57ea0f39fb763e0338e736bd59bc22 usr/share/games/quake2-demo/baseq2/players/male/grunt_i.pcx f4a15fdb5036f2020c2a23462a4a8ae2 usr/share/games/quake2-demo/baseq2/players/male/howitzer.pcx 3c9211a549d9bc126c168ea49a94741d usr/share/games/quake2-demo/baseq2/players/male/howitzer_i.pcx ba536b3b53506f47bbecd8699f78e755 usr/share/games/quake2-demo/baseq2/players/male/major.pcx 905dee6998c121babc9e62751e52703b usr/share/games/quake2-demo/baseq2/players/male/major_i.pcx 0ebaa3df3adb2f12a983a94ea82c15f0 usr/share/games/quake2-demo/baseq2/players/male/nightops.pcx 83c2754d59312ace64b5cf3ad11f9a71 usr/share/games/quake2-demo/baseq2/players/male/nightops_i.pcx 10d6b2cf74286f7396fc1ac73840437c usr/share/games/quake2-demo/baseq2/players/male/pointman.pcx 494824048e031d490e691ca9fefa8eb2 usr/share/games/quake2-demo/baseq2/players/male/pointman_i.pcx f600b69cb8a5d1b09bf2af436a7049a9 usr/share/games/quake2-demo/baseq2/players/male/psycho.pcx 817a284dbbc63870c99e35f1c874f04c usr/share/games/quake2-demo/baseq2/players/male/psycho_i.pcx 1950086c138cd3c9d38660dc60fc9a6e usr/share/games/quake2-demo/baseq2/players/male/rampage.pcx 0c1e9f726b37ef6d633343c39ad0d441 usr/share/games/quake2-demo/baseq2/players/male/rampage_i.pcx f2a90e8e9c7756c7bc8a5c9ab22c7f86 usr/share/games/quake2-demo/baseq2/players/male/razor.pcx 68d88b858c7bfdd847217bf9e4ce694b usr/share/games/quake2-demo/baseq2/players/male/razor_i.pcx 2e6dc986cf21d5eee1e2ffc5ba81f241 usr/share/games/quake2-demo/baseq2/players/male/recon.pcx 0351e8eee92b10c286f1516384b150cb usr/share/games/quake2-demo/baseq2/players/male/recon_i.pcx 05d6229df32e289c8e2e95d9aa627d51 usr/share/games/quake2-demo/baseq2/players/male/scout.pcx 328b0bd036961fcf20d352eeef9d1059 usr/share/games/quake2-demo/baseq2/players/male/scout_i.pcx 211e2aeccb610a1d9499b391eb052e52 usr/share/games/quake2-demo/baseq2/players/male/skin.pcx 5c9c6ecd148ddfd14a5191d92d42bd0c usr/share/games/quake2-demo/baseq2/players/male/sniper.pcx e0e503251db60e1c867f1675d287a2fc usr/share/games/quake2-demo/baseq2/players/male/sniper_i.pcx 930dd7b37f9a40dc0ed02aaa86039710 usr/share/games/quake2-demo/baseq2/players/male/tris.md2 bfbba21b67600e4e7a02ce4cb92dd0b9 usr/share/games/quake2-demo/baseq2/players/male/viper.pcx 05cc280cee4ce1cb61bed6fa87eae5f1 usr/share/games/quake2-demo/baseq2/players/male/viper_i.pcx e9a5e9b2df9bf2fa5e53794f929419af usr/share/games/quake2-demo/baseq2/players/male/weapon.md2 0758d59ebfcb5931bda2b0985faf98a9 usr/share/games/quake2-demo/baseq2/players/male/weapon.pcx game-data-packager/quake2/quake2-demo-data.copyright0000644000000000000000000000206612227016024017502 0ustar The quake2-demo-data package was generated using game-data-packager. Copyright © 2008-2013 Jonathan Dowland . The files under "/usr/share/games/quake2-demo" and "/usr/share/doc/quake2-demo-data" (except for this copyright file) are user-supplied files that are not covered by the copyright or licence of this package; they are copyright (c) 1997 id Software, all rights reserved. See /usr/share/doc/quake2-demo-data/license.txt. The remainder of this package is covered by the following Licence: This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. On Debian GNU/Linux systems, the complete text of the GNU General Public License can be found in /usr/share/common-licenses/GPL-2. game-data-packager/quake2/quake2-rogue.copyright0000644000000000000000000000177612242465475017016 0ustar The quake2-rogue package was generated using game-data-packager. Copyright © 2008-2013 Jonathan Dowland . The files under "/usr/share/games/quake2/rogue" are user-supplied files that are not covered by the copyright or license of this package; they are copyright © 1998 Rogue Entertainment, all rights reserved. See /usr/share/doc/quake2-rogue/LICENSE for the full terms. The remainder of this package is covered by the following License: This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. On Debian GNU/Linux systems, the complete text of the GNU General Public License can be found in /usr/share/common-licenses/GPL-2. game-data-packager/quake2/quake2-full-data.copyright0000644000000000000000000000206112227016024017513 0ustar The quake2-full-data package was generated using game-data-packager. Copyright © 2008-2013 Jonathan Dowland . The files under "/usr/share/games/quake2" and "/usr/share/doc/quake2-full-data" (except for this copyright file) are user-supplied files that are not covered by the copyright or licence of this package; they are copyright (c) 1997 id Software, all rights reserved. See /usr/share/doc/quake2-full-data/license.txt. The remainder of this package is covered by the following Licence: This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. On Debian GNU/Linux systems, the complete text of the GNU General Public License can be found in /usr/share/common-licenses/GPL-2. game-data-packager/quake2/quake2-xatrix.control0000644000000000000000000000107012242465475016647 0ustar Package: quake2-xatrix Version: VERSION Section: non-free/games Priority: optional Recommends: quake2 | quake2-server Installed-Size: 500000 Maintainer: Debian Games Team Description: Quake II: The Reckoning data files Quake II: The Reckoning is a Mission Pack for Quake II created by Xatrix Entertainment. This package was generated using the "game-data-packager" program from the Debian package of the same name. . To play Quake II using this data, install the quake2 package and pass "+set game xatrix" as arguments. game-data-packager/quake2.mk0000644000000000000000000000223512242465475013075 0ustar # VERSION, PACKAGE must be supplied by caller srcdir = ${CURDIR} builddir = ${CURDIR}/build outdir = ${CURDIR}/out all: do-${PACKAGE} do-quake2-demo-data: do-common install -m644 quake2/demo.md5sums ${outdir}/quake2/ cat quake2/demo.md5sums >> ${outdir}/quake2/${PACKAGE}.md5sums do-quake2-full-data: do-common install -m644 quake2/cd.md5sums ${outdir}/quake2/ install -m644 quake2/patch.md5sums ${outdir}/quake2/ cat \ quake2/cd.md5sums \ quake2/patch.md5sums \ >> ${outdir}/quake2/${PACKAGE}.md5sums do-quake2-music: do-common : do-quake2-xatrix: do-common : do-quake2-rogue: do-common : do-common: install -d ${outdir}/quake2 install -m644 quake2/${PACKAGE}.copyright ${outdir}/quake2/ m4 -DVERSION=${VERSION} < quake2/${PACKAGE}.control > ${outdir}/quake2/${PACKAGE}.control chmod 0644 ${outdir}/quake2/${PACKAGE}.control ( \ md5sum ${outdir}/changelog.gz | \ sed 's# .*# usr/share/doc/${PACKAGE}/changelog.gz#'; \ md5sum ${outdir}/quake2/${PACKAGE}.copyright | \ sed 's# .*# usr/share/doc/${PACKAGE}/copyright#'; \ ) > ${outdir}/quake2/${PACKAGE}.md5sums chmod 0644 ${outdir}/quake2/${PACKAGE}.md5sums clean: rm -rf ${outdir}/quake2 game-data-packager/hexen2-data/0000755000000000000000000000000012226604542013442 5ustar game-data-packager/hexen2-data/copyright.in0000644000000000000000000000166212226604542016007 0ustar The PACKAGE package was generated using game-data-packager. Copyright © 2008-2012 Jon Dowland . The files under "/usr/share/games/hexen2" are user-supplied files that are not covered by the copyright or licence of this package; they are Copyright © 1997 Id Software, Activision, Raven Software. The remainder of this package is covered by the following Licence: This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. On Debian GNU/Linux systems, the complete text of the GNU General Public License can be found in /usr/share/common-licenses/GPL-2. game-data-packager/hexen2-data/DEBIAN/0000755000000000000000000000000012226604542014364 5ustar game-data-packager/hexen2-data/DEBIAN/control.in0000644000000000000000000000112212226604542016370 0ustar Package: hexen2-data Version: VERSION Section: non-free/games Priority: optional Architecture: all Recommends: hexen2-engine Installed-Size: 500000 Maintainer: Debian Games Team Description: Hexen 2 commercial data files Hexen 2 requires an engine and game data to play. This package contains the commercial data from Raven Software's game "LONG", and was generated using the "game-data-packager" program from the Debian package of the same name. . To play Hexen using this data, install a package providing the "hexen2-engine" virtual package. game-data-packager/etc/0000755000000000000000000000000012226604542012115 5ustar game-data-packager/etc/game-data-packager.conf0000644000000000000000000000027112226604502016353 0ustar # game-data-packager.conf # arguments accept "yes" or "no" INSTALL="no" # install the generated package on the local system PRESERVE="yes" # not preserve the generated package file(s) game-data-packager/etc/quake3-mirrors0000644000000000000000000000041412226604542014723 0ustar # TODO: there's a whole bunch of FreeBSD mirrors we can use, too # and gentoo ones # presumably we could ftp://ftp.padua.org/pub/msdos/mirrors/ftp.idsoftware.com/quake3/linux/ ftp://ftp.fh-niederrhein.de/pub/win9x/gamesup/q3/ http://gentoo.virginmedia.com/distfiles/ game-data-packager/etc/idstuff-mirrors0000644000000000000000000000032712226604542015201 0ustar # Mirrors of id Software's complete "idstuff" hierarchy, # usable for various games. ftp://ftp.fu-berlin.de/pc/msdos/games/idgames/idstuff ftp://ftp.idsoftware.com/idstuff ftp://ftp.demon.nl/pub/idsoftware/idstuff/ game-data-packager/lib/0000755000000000000000000000000012242502133012077 5ustar game-data-packager/lib/lgeneral-mirrors0000644000000000000000000000011412226604542015313 0ustar http://sourceforge.net/projects/lgeneral/files/lgeneral-data/pg-data.tar.gz game-data-packager/lib/rott-mirrors0000644000000000000000000000032112226604542014512 0ustar # ftp://ftp.3drealms.com/share/1rott13.zip ftp://ftp.3drealms.com/pub/share/1rott13.zip http://pkg-games.alioth.debian.org/game-data/1rott13.zip # http://localhost/1rott13.zip http://localhost/foo/1rott13.zip game-data-packager/lib/game-data-packager-shared0000644000000000000000000002522212242465475016705 0ustar supported() { echo "the following games are supported:" echo printf "\t name\tdescription\n" printf "\t ----\t-----------\n" find $SUPPORTED -type f | grep -v '\.svn' | grep -v 'swp$' | sort | while read file; do . $file printf "\t%8s\t%s\n" "$SHORTNAME" "$LONGNAME" done } options() { echo "game-data-packager arguments:" echo " -i install the generated package" echo " -n do not install the generated package (requires -d, default)" echo " -d OUTDIR write the generated .deb(s) to OUTDIR" echo " -z | --compress compress generated .deb (default unless -i is used)" echo " --no-compress do not compress generated .deb (default with -i)" } usage() { echo "usage:" printf "\tgame-data-packager [game-data-packager-args] game [game-args]\n" echo options echo supported echo echo "run game-data-packager [game] to see game-specific arguments." echo } set +u if [ -n "$DEBUG" ]; then debug() { echo "DEBUG: $*" >&2 } else debug() { :; } fi set -u warn() { echo "WARNING: $*" >&2 } ## die(string,retcode) ## end the program, complaining with string on stderr ## and returning retcode if supplied, 2 if not. die() { if [ $# -lt 2 ]; then RET=2 else RET=$2 fi echo $0: $1 >&2 exit $RET } ## verify_md5sum(file,sum) ## calculates the md5sum of file and compares it to sum. ## if the sum doesn't match, complains on stderr and causes the program ## to exit. verify_md5sum() { FILE=$1 GOODSUM=$2 SUM=`md5sum $FILE|cut -d' ' -f1` [ "$SUM" = "$GOODSUM" ] || die "$FILE's md5 checksum is unknown" } ## verify_md5sum_alternatives(file,sums,warn) ## calculates the md5sum of file and compares it to sums (comma-separated). ## if the sum doesn't match any of them, complains on stderr and causes ## the program to exit. ## If warn is supplied, warn the user if the first sum doesn't match. verify_md5sum_alternatives() { FILE=$1 GOODSUMS=$2 SUM=`md5sum $FILE|cut -d' ' -f1` case ",$GOODSUMS," in (,$SUM,*) ;; (*,$SUM,*) if [ $# -gt 2 ]; then warn "$3" fi ;; (*) die "$FILE's md5 checksum $SUM is unknown" ;; esac } ## verify_directory(dir) ## ensures dir is a directory, or complains on stderr ## and causes the program to exit. verify_directory() { DIR=$1 [ -d "$DIR" ] || die "$DIR is not a directory" } ## verify_file(file) ## ensures file is a file, or complains on stderr ## and causes the program to exit. verify_file() { FILE=$1 [ -f "$FILE" ] || die "$FILE is not a file" [ -r "$FILE" ] || die "$FILE is not readable" } ## slipstream(deb,relpath,file1,file2...) ## insert file1,file2... into the deb, under the ## path 'relpath', relative to the package root, e.g.: ## slipstream(deb, 'usr/share/doc', 'README', 'copyright') ## => /usr/share/doc/README ## => /usr/share/doc/copyright ## prerequisites: ## * $WORKDIR must be defined to a directory within which ## slipstream can do it's work (somewhere writeable) # TODO: this assumes every file is going to go in the same RELPATH. hmm. slipstream() { DEB="$1" # the .deb file we are going to mangle RELPATH="$2" # relative path in the unpacked .deb shift 2 OLDWD=`pwd` cd "$WORKDIR" slipstream_permcheck "$DEB" slipstream_unpack "$DEB" if [ ! -d "$RELPATH" ]; then mkdir -p "./slipstream.unpacked/$RELPATH" fi while [ "$#" -gt 0 ]; do file="$1" destpath="${RELPATH}/${file##*/}" slipstream_file "$file" "$destpath" shift done slipstream_instsize slipstream_repack "$DEB" slipstream_cleanup cd "$OLDWD" } ## slipstream_dir(deb,relpath,directory) ## insert a directory with game data instead of single files slipstream_dir() { DEB="$1" # the .deb file we are going to mangle RELPATH="$2" # relative path in the unpacked .deb DIR="$3" # directory with game data find $DIR -type f | ( OLDWD=`pwd` cd "$WORKDIR" slipstream_permcheck "$DEB" slipstream_unpack "$DEB" while read f; do destpath="$RELPATH$f" targetdir=`dirname "$destpath"` mkdir -p "./slipstream.unpacked/$targetdir" cp -p "$f" "./slipstream.unpacked/$targetdir" chmod 644 "./slipstream.unpacked/$destpath" # add a line to md5sums cd slipstream.unpacked md5sum "$destpath" >> "../DEBIAN/md5sums" cd .. done slipstream_instsize slipstream_repack "$DEB" slipstream_cleanup cd "$OLDWD" ) } ## slipstream_permcheck(deb) ## ensures that the file deb can be written to and ## that the current working directory is writeable slipstream_permcheck() { DEB="$1" # ensure we can write to $DEB if [ ! -w "$DEB" ]; then ls -l "$DEB" die "wrong permissions on $DEB (I can't write to it)" fi # ensure we can write to the workdir if [ ! -w . ]; then die "cannot write to $PWD" fi } ## slipstream_unpack(deb) ## unpacks the deb file into "./slipstream_unpacked" ## and the control data into "./DEBIAN" slipstream_unpack() { DEB="$1" dpkg-deb -e "$DEB" "./DEBIAN" dpkg-deb -x "$DEB" "./slipstream.unpacked" } ## slipstream_file(file,destpath) ## copies the file into "./slipstream_unpacked/$destpath", ## calculates the files md5sum and adds it to the md5sums ## file in the control area. slipstream_file() { file="$1" destpath="$2" cp -p "$file" "./slipstream.unpacked/$destpath" chmod 644 "./slipstream.unpacked/$destpath" # add a line to md5sums cd slipstream.unpacked md5sum "$destpath" >> "../DEBIAN/md5sums" cd .. } ## slipstream_instsize ## calculates the installed size of the deb, (based on ## the contents of the ./slipstream_unpacked directory) ## and writes the result to the control file in the ## control area. slipstream_instsize() { # figure out the new installed-size INSTSIZE=`du -sk ./slipstream.unpacked | cut -f1` sed -i "s/^Installed-Size.*/Installed-Size: $INSTSIZE/" \ "./DEBIAN/control" } ## slipstream_repack(deb) ## writes a new debian package over deb, packing ## the files from ./slipstream_unpacked inside, ## using the control area in ./DEBIAN slipstream_repack() { DEB="$1" # the .deb file we are going to mangle # repack mv DEBIAN slipstream.unpacked # XXX: store output in a temporary file, then cat the file if # dpkg-deb fails for some reason. (this is all to hide a non- # suppressable "building package foo in ..." message) if [ "$COMPRESS" = "no" ]; then fakeroot dpkg-deb -Znone -b slipstream.unpacked "$DEB" >/dev/null else fakeroot dpkg-deb -b slipstream.unpacked "$DEB" >/dev/null fi } ## slipstream_cleanup() ## removes the ./slipstream_unpacked directory. slipstream_cleanup() { rm -rf ./slipstream.unpacked } # stuff relating to installing the generated packages ######################## ## install_deb(deb) ## uses sudo and dpkg to install the supplied .deb file # TODO: configurable priviledge escalation method (not hardcoded sudo) # TODO: configurable package installation method (not hardcoded dpkg) install_deb() { DEB="$1" echo "using su(1) to obtain root privileges and install the package" su -c "dpkg -i \"$DEB\"" } ## unravel(path) ## convert 'path' from relative to absolute ## if it does not begin with a slash. unravel() { FILE="$1" if echo "$FILE" | grep ^/ >/dev/null; then : else # assume a relative path FILE="$PWD/$FILE" fi echo $FILE } if [ -f ./debian/changelog -a -x ./game-data-packager ]; then GAME_PACKAGE_VERSION=`dpkg-parsechangelog -ldebian/changelog --format \ rfc822 | grep Version | cut -d' ' -f2` else GAME_PACKAGE_VERSION=`dpkg-query --showformat='${Version}\n' \ --show game-data-packager` fi ## gdp_unzip_into (zipfile, extraction directory, [files...]) ## Unpack files (or everything if not given) from zipfile, with hierarchy ## preserved. ## ## e.g. gdp_unzip_into q2-3.20-x86-full-ctf.exe ~/tmp baseq2/pak1.pak ## will extract the zip file member "baseq2/pak1.pak" to ## ~/tmp/baseq2/pak1.pak gdp_unzip_paths () { zipfile="$1" shift target="$1" shift if which 7za >/dev/null; then debug "using 7za" 7za x -o"$target" -y "$zipfile" "$@" >/dev/null elif which 7z >/dev/null; then debug "using 7z" 7z x -o"$target" -y "$zipfile" "$@" >/dev/null else debug "using unzip" unzip -d "$target" -qqo "$zipfile" "$@" fi } ## Deprecated version of gdp_unzip_paths with ambiguous behaviour. ## If the zip file does not contain subdirectories, ## "gdp_unzip x.zip y" is equivalent to "gdp_unzip_paths x.zip . y". ## If the zip file contains a/b/c, it might unpack to either ./a/b/c ## or ./c, depending on the tool used. gdp_unzip() { zipfile="$1" shift if which 7za >/dev/null; then debug "using 7za" 7za e -y "$zipfile" "$@" >/dev/null elif which 7z >/dev/null; then debug "using 7z" 7z e -y "$zipfile" "$@" >/dev/null else debug "using unzip" unzip -qqo "$zipfile" "$@" fi } ## ifind(base,file) ## case-insensitive search for file in base ifind() { base="$1" file="$2" [ -d "$base" ] && find "$base" -iwholename "$base/$file" } package_installed() { dpkg-query -W "$1" >/dev/null 2>&1 } ## require_program(program,package,..) ## make sure 'program' exists and can be executed, if not, instruct ## the user to install package (or packages) and quit gdp. require_program() { program="$1" shift which "$program" >/dev/null || { diestr="'$program' is required for this target.\n" if [ $# -gt 1 ]; then diestr="${diestr}Please install the following packages:\n" while [ $# -gt 0 ]; do package_installed "$1" || diestr="${diestr} • $1\n" shift done die "${diestr}and try again." fi die "${diestr}Please install the package '$1' and try again." } } package_installed() { dpkg-query -W "$1" >/dev/null 2>&1 } ## require_program(program,package,..) ## make sure 'program' exists and can be executed, if not, instruct ## the user to install package (or packages) and quit gdp. require_program() { program="$1" shift which "$program" >/dev/null || { diestr="'$program' is required for this target.\n" if [ $# -gt 1 ]; then diestr="${diestr}Please install the following packages:\n" while [ $# -gt 0 ]; do package_installed "$1" || diestr="${diestr} • $1\n" shift done die "${diestr}and try again." fi die "${diestr}Please install the package '$1' and try again." } } game-data-packager/lib/wolf3d-mirrors0000644000000000000000000000032112226604542014720 0ustar # ftp://ftp.3drealms.com/share/1wolf14.zip ftp://ftp.3drealms.com/pub/share/1wolf14.zip http://pkg-games.alioth.debian.org/game-data/1wolf14.zip # http://localhost/1wolf14.zip http://localhost/foo/1wolf14.zip game-data-packager/lib/q2mp-common0000644000000000000000000000233612242465475014214 0ustar q2mp_prereqs() { packages="make gcc binutils" require_program make $packages require_program cc $packages require_program strip $packages } q2mp_usage() { echo "$SHORTNAME arguments: [ -t tarball ] q2path" echo echo "\t-t tarball use user-supplied source tarball (default is to" echo "\t download)" echo "\t-f force installation when MD5 sum of tarball is unknown" echo "\tq2path path to an unpacked Quake 2 directory containing" echo "\t mission pack data" exit 1 } q2mp_process_opts() { while [ $# -gt 1 ]; do case "$1" in "-t") [ $# -ge 2 ] || q2mp_usage xpath="$2" shift 2 ;; "-f") checksum="false" shift ;; *) q2mp_usage ;; esac done [ $# -eq 1 ] || q2mp_usage root=`unravel "$1"` debug "xpath = '$xpath'" debug "checksum = '$checksum'" debug "root = '$root'" } q2mp_build_gameso() { srcball=`unravel "$1"` verify_file "$srcball" cd "$WORKDIR" mkdir "$SHORTNAME" cd "$SHORTNAME" tar --strip-components=1 -xf "$srcball" make -s -j5 >/dev/null # XXX: parameterize verify_file "release/game.so" strip "release/game.so" } game-data-packager/lib/doom-common0000644000000000000000000000166212226604542014264 0ustar DEBBASE="${SHORTNAME}-wad_${GAME_PACKAGE_VERSION}_all.deb" doom_usage() { echo "${SHORTNAME} arguments:" >&2 printf "\twadfile - path to a ${SHORTNAME}.wad\n" >&2 } verify_args() { if [ $# -ne 1 ]; then echo "error: no wadfile specified" >&2 usage >&2 doom_usage >&2 exit 1 fi } checksum() { CHECKSUM=`md5sum "$1" | cut -d' ' -f1` debug "checksum = $CHECKSUM" } WADDIR="/usr/share/games/doom" DEB="$DATADIR/$DEBBASE" go() { verify_args "$@" WADFILE=`unravel "$1"` [ -f "$WADFILE" ] || die "ERROR: '$WADFILE' does not exist." checksum "$WADFILE" debug "WADFILE=$WADFILE" check_for_v19 DEST=`echo $WADDIR | sed 's,^/,,'` OUTFILE=`unravel "$OUTDIR"`"/$DEBBASE" cp -p "$DEB" "$OUTFILE" # Force lower case for *.wad files WADFILENAME=`basename "$WADFILE" | tr '[:upper:]' '[:lower:]'` ln -sf "$WADFILE" "$WORKDIR/$WADFILENAME" slipstream "$OUTFILE" "$DEST" "$WORKDIR/$WADFILENAME" rm -f "$WORKDIR/$WADFILENAME" } game-data-packager/t/0000755000000000000000000000000012226606365011612 5ustar game-data-packager/t/verify-md5sum-alternatives.sh0000755000000000000000000000073612226604542017365 0ustar #!/bin/sh . lib/game-data-packager-shared echo "foo" > out/foo echo "bar" > out/bar echo "baz" > out/baz foosum=`md5sum out/foo | cut -d' ' -f1` barsum=`md5sum out/bar | cut -d' ' -f1` verify_md5sum_alternatives out/foo $foosum,$barsum verify_md5sum_alternatives out/bar $foosum,$barsum if ( verify_md5sum_alternatives out/baz $foosum,$barsum ); then die "out/baz should have failed the md5sum check!" else echo "^ don't worry, that was meant to fail the md5sum check" fi game-data-packager/quake.mk0000644000000000000000000000525012226604542013003 0ustar # FOLDER, VERSION, PACKAGE and LONG must be supplied by caller srcdir = $(CURDIR) builddir = $(CURDIR)/build outdir = $(CURDIR)/out QUAKEDEB = $(outdir)/$(PACKAGE)_$(VERSION)_all.deb ifeq ($(filter-out quake-music quake-%-music,$(PACKAGE)),) all: do-$(PACKAGE) do-${PACKAGE}: do-common install -m644 quake/quake-music.copyright ${outdir}/quake/${PACKAGE}.copyright ( \ md5sum ${outdir}/changelog.gz | \ sed 's# .*# usr/share/doc/${PACKAGE}/changelog.gz#'; \ md5sum ${outdir}/quake/${PACKAGE}.copyright | \ sed 's# .*# usr/share/doc/${PACKAGE}/copyright#'; \ ) > ${outdir}/quake/${PACKAGE}.md5sums chmod 0644 ${outdir}/quake/${PACKAGE}.md5sums do-common: install -d ${outdir}/quake m4 -DVERSION=${VERSION} < quake/${PACKAGE}.control > ${outdir}/quake/${PACKAGE}.control chmod 0644 ${outdir}/quake/${PACKAGE}.control clean: rm -rf $(outdir)/quake/ else $(QUAKEDEB): \ $(builddir)/$(PACKAGE)/DEBIAN/md5sums \ $(builddir)/$(PACKAGE)/DEBIAN/control \ fixperms install -d $(builddir)/$(PACKAGE)/usr/share/games/quake/$(FOLDER) if [ "$(FOLDER)" = hipnotic ] || [ "$(FOLDER)" = rogue ]; then \ printf '#!/bin/sh\nexit 0\n' > $(builddir)/$(PACKAGE)/usr/share/games/quake/$(FOLDER)-tryexec.sh; \ chmod 0755 $(builddir)/$(PACKAGE)/usr/share/games/quake/$(FOLDER)-tryexec.sh; \ fi cd $(builddir) && \ if [ `id -u` -eq 0 ]; then \ dpkg-deb -b $(PACKAGE) $@ ; \ else \ fakeroot dpkg-deb -b $(PACKAGE) $@ ; \ fi $(builddir)/$(PACKAGE)/DEBIAN/md5sums: \ $(builddir)/$(PACKAGE)/usr/share/doc/$(PACKAGE)/changelog.gz \ $(builddir)/$(PACKAGE)/usr/share/doc/$(PACKAGE)/copyright install -d `dirname $@` cd $(builddir)/$(PACKAGE) && find usr/ -type f -print0 |\ xargs -0 md5sum >DEBIAN/md5sums $(builddir)/$(PACKAGE)/usr/share/doc/$(PACKAGE)/changelog.gz: debian/changelog install -d `dirname $@` gzip -c9 debian/changelog > $@ $(builddir)/$(PACKAGE)/usr/share/doc/$(PACKAGE)/copyright: quake-common/copyright.in install -d `dirname $@` m4 -DPACKAGE=$(PACKAGE) quake-common/copyright.in > $@ $(builddir)/$(PACKAGE)/DEBIAN/control: quake-common/DEBIAN/control.in install -d `dirname $@` m4 -DVERSION=$(VERSION) -DPACKAGE=$(PACKAGE) -DLONG="$(LONG)" \ < quake-common/DEBIAN/control.in > $@ if [ "$(PACKAGE)" = "quake-registered" ]; then \ echo Conflicts: quake-shareware >> $@; \ echo Replaces: quake-shareware >> $@; \ elif [ "$(PACKAGE)" != "quake-shareware" ]; then \ echo Depends: quake-registered >> $@; \ else \ echo Conflicts: quake-registered >> $@; \ fi fixperms: find $(builddir)/$(PACKAGE) -type f -print0 | xargs -0 chmod 644 find $(builddir)/$(PACKAGE) -type d -print0 | xargs -0 chmod 755 clean: rm -rf $(QUAKEDEB) $(builddir)/$(PACKAGE) endif game-data-packager/quake3.mk0000644000000000000000000000252712226604502013066 0ustar # VERSION must be supplied by caller srcdir = $(CURDIR) builddir = $(CURDIR)/build outdir = $(CURDIR)/out QUAKE3DEB = $(outdir)/quake3-data_$(VERSION)_all.deb $(QUAKE3DEB): \ $(builddir)/quake3-data/DEBIAN/md5sums \ $(builddir)/quake3-data/DEBIAN/control \ fixperms_quake3 install -d $(builddir)/quake3-data/usr/share/games/quake3/baseq3 cd $(builddir) && \ if [ `id -u` -eq 0 ]; then \ dpkg-deb -b quake3-data $@ ; \ else \ fakeroot dpkg-deb -b quake3-data $@ ; \ fi $(builddir)/quake3-data/DEBIAN/md5sums: \ $(builddir)/quake3-data/usr/share/doc/quake3-data/changelog.gz \ $(builddir)/quake3-data/usr/share/doc/quake3-data/copyright install -d `dirname $@` cd $(builddir)/quake3-data && find usr/ -type f -print0 |\ xargs -0 md5sum >DEBIAN/md5sums $(builddir)/quake3-data/usr/share/doc/quake3-data/changelog.gz: install -d `dirname $@` gzip -c9 debian/changelog > $@ $(builddir)/quake3-data/usr/share/doc/quake3-data/copyright: install -d `dirname $@` m4 -DPACKAGE=$(PACKAGE) quake3-data/copyright.in > $@ $(builddir)/quake3-data/DEBIAN/control: install -d `dirname $@` m4 -DVERSION=$(VERSION) < quake3-data/DEBIAN/control > $@ fixperms_quake3: find $(builddir)/quake3-data -type f -print0 | xargs -0 chmod 644 find $(builddir)/quake3-data -type d -print0 | xargs -0 chmod 755 clean: rm -rf $(QUAKE3DEB) $(builddir)/quake3-data game-data-packager/quake-common/0000755000000000000000000000000012226604542013736 5ustar game-data-packager/quake-common/copyright.in0000644000000000000000000000166612226604542016307 0ustar The PACKAGE package was generated using game-data-packager. Copyright © 2008-2011 Jon Dowland . The pak files under "/usr/share/games/quake" are user-supplied files that are not covered by the copyright or licence of this package; they are Copyright © 1996-1997 by id Software, all rights reserved. The remainder of this package is covered by the following Licence: This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. On Debian GNU/Linux systems, the complete text of the GNU General Public License can be found in /usr/share/common-licenses/GPL-2. game-data-packager/quake-common/DEBIAN/0000755000000000000000000000000012226604542014660 5ustar game-data-packager/quake-common/DEBIAN/control.in0000644000000000000000000000113212226604542016665 0ustar Package: PACKAGE Provides: quake-data Version: VERSION Section: non-free/games Priority: optional Architecture: all Recommends: quake-engine Installed-Size: 500000 Maintainer: Debian Games Team Description: Quake commercial data files Quake requires an engine and game data to play. This package contains the commercial data from id Software's game "LONG", and was generated using the "game-data-packager" program from the Debian package of the same name. . To play Quake using this data, install a package providing the "quake-engine" virtual package. game-data-packager/wolf3d-data/0000755000000000000000000000000012227016024013440 5ustar game-data-packager/wolf3d-data/copyright0000644000000000000000000000155612227016024015402 0ustar The wolf3d-data package was generated using game-data-packager. Copyright © 2008-2013 Jonathan Dowland . The files within "/usr/share/games/wolf3d" are subject to the copyright described in /usr/share/doc/wolf3d-data/vendor.doc. The remainder of this package is covered by the following Licence: This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. On Debian GNU/Linux systems, the complete text of the GNU General Public License can be found in /usr/share/common-licenses/GPL-2. game-data-packager/wolf3d-data/control.in0000644000000000000000000000072312226604542015461 0ustar Package: wolf3d-data-SUFFIX Provides: wolf3d-data Section: non-free/games Priority: optional Architecture: all Recommends: wolf4sdl Installed-Size: 56 Version: VERSION Maintainer: Debian Games Team Description: Game data for Wolfenstein 3D Wolfenstein 3D requires game data to play. This package contains the game data from the shareware episode of Wolfenstein 3D and was generated using the "game-data-packager" program. game-data-packager/wolf3d-data/README.Debian0000644000000000000000000000033512226604542015511 0ustar This package was generated by the game-data-packager program, to facilitate installation of the Wolfenstein 3D (wolf3d) data files into a Debian system. -- Jon Dowland , Wed, 16 Dec 2009 16:37:22 +0000 game-data-packager/quake3-data/0000755000000000000000000000000012227016024013433 5ustar game-data-packager/quake3-data/copyright.in0000644000000000000000000000167012227016024015777 0ustar The PACKAGE package was generated using game-data-packager. Copyright © 2008-2013 Jonathan Dowland . The pk3 files under "/usr/share/games/quake3" are user-supplied files that are not covered by the copyright or licence of this package; they are copyright (c) 1999 by id Software, all rights reserved. The remainder of this package is covered by the following Licence: This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. On Debian GNU/Linux systems, the complete text of the GNU General Public License can be found in /usr/share/common-licenses/GPL-2. game-data-packager/quake3-data/DEBIAN/0000755000000000000000000000000012226604502014360 5ustar game-data-packager/quake3-data/DEBIAN/control0000644000000000000000000000123112226604502015760 0ustar Package: quake3-data Version: VERSION Section: non-free/games Priority: optional Architecture: all Recommends: quake3 | quake3-server Installed-Size: 500000 Maintainer: Debian Games Team Description: Quake III Arena commercial data files Quake III Arena requires an engine and game data to play. This package contains the commercial data from id Software's game "Quake III Arena", and was generated using the "game-data-packager" program from the Debian package of the same name. . To play Quake III Arena using this data, install the quake3 package, or to run a dedicated server, install the quake3-server package. game-data-packager/game-data-packager.60000644000000000000000000000454212227016024015022 0ustar .\" game-data-packager manpage; based on wtfm_example by branden robinson .\" .\" .\" This program is free software; you can redistribute it and/or modify it .\" under the terms of the GNU General Public License as published by the .\" Free Software Foundation; version 2. .\" .\" This program is distributed in the hope that it will be useful, but .\" WITHOUT ANY WARRANTY; without even the implied warranty of .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General .\" Public License for more details. .\" .\" You should have received a copy of the GNU General Public License along .\" with this library; if not, write to the Free Software Foundation, Inc., .\" 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. .\" .\" See /usr/share/common-licenses/GPL-2 .\" .de URL \\$2 \(laURL: \\$1 \(ra\\$3 .. .if \n[.g] .mso www.tmac .TH game-data-packager 6 2008-07-14 .SH NAME game\-data\-packager \- build a .deb of game data . .SH SYNOPSIS .B game\-data\-packager [ .I -i ] [ .I -d out-directory [ .I -n ] ] [ .I -z | --no-compress ] .I game [ .I game\-options ] .SH DESCRIPTION Many open-source games require game data which is licensed incompatibly with the Debian Free Software Guidelines. .B game\-data\-packager is a tool designed to help you locally assemble Debian packages containing such game data from CD-ROMs, the Internet or elsewhere. .SH OPTIONS .TP .B \-i attempt to install the generated Debian package via .B dpkg(1) and .B su(1) \. .TP .B \-d out-directory writes the generated Debian package to the specified directory. .TP .B \-n Do not attempt to install the generated Debian package. This option must be used in conjunction with .B \-d. .TP .B -z | --compress Compress generated .deb (default unless -i is used) .TP .B --no-compress Do not compress generated .deb (default with -i) .TP .B game The game being packaged. Running .B game\-data\-packager without arguments will display a list of valid games. Running .B game\-data\-packager with just the game and no further arguments will display a list of valid options for that game. .SH SEE ALSO \fIdpkg\fP(1), \fIsu\fP(1) .SH AUTHOR Copyright \(co 2010-2013 Jonathan Dowland \fI\fP .br Thanks to Branden Robinson for his \(oqWrite the Fine Manual\(cq presentation, once found at .URL "http://people.debian.org/~branden/talks/wtfm/" . game-data-packager/wolf3d.mk0000644000000000000000000000222312226604542013070 0ustar BASICFILES = usr/share/doc/wolf3d-data/README.Debian \ usr/share/doc/wolf3d-data/copyright DESTFILES = $(addprefix build/wolf3d-data/, $(BASICFILES)) # VERSION is defined by the parent make SUFFIX = wl1 out/wolf3d-data-$(SUFFIX)_$(VERSION)_all.deb: build/wolf3d-data/DEBIAN/control $(DESTFILES) fakeroot dpkg-deb -b build/wolf3d-data $@ DIRS = build/wolf3d-data \ build/wolf3d-data/DEBIAN \ build/wolf3d-data/usr \ build/wolf3d-data/usr/share \ build/wolf3d-data/usr/share/games \ build/wolf3d-data/usr/share/games/wolf3d \ build/wolf3d-data/usr/share/doc \ build/wolf3d-data/usr/share/doc/wolf3d-data $(DIRS): mkdir $@ $(DESTFILES): $(DIRS) cp -p wolf3d-data/`basename "$@"` $@ build/wolf3d-data/DEBIAN/control: wolf3d-data/control.in $(DIRS) m4 -DPACKAGE=wolf3d-data -DVERSION=$(VERSION) -DSUFFIX=wl1 $< > $@ clean: rm -f build/wolf3d-data/DEBIAN/control out/wolf3d-data-$(SUFFIX)_$(VERSION)_all.deb \ build/wolf3d-data/usr/share/doc/wolf3d-data/copyright \ build/wolf3d-data/usr/share/doc/wolf3d-data/README.Debian for d in $(DIRS); do echo "$$d"; done | sort -r | while read d; do \ [ ! -d "$$d" ] || rmdir "$$d"; done .PHONY: clean $(DESTFILES) game-data-packager/doom-common/0000755000000000000000000000000012003265376013567 5ustar game-data-packager/doom-common/usr/0000755000000000000000000000000012003265376014400 5ustar game-data-packager/doom-common/usr/share/0000755000000000000000000000000012003265376015502 5ustar game-data-packager/doom-common/usr/share/doc/0000755000000000000000000000000012003265376016247 5ustar game-data-packager/doom-common/usr/share/doc/doom-common/0000755000000000000000000000000012227016024020463 5ustar game-data-packager/doom-common/usr/share/doc/doom-common/copyright.in0000644000000000000000000000173112227016024023025 0ustar The PACKAGE package was generated using game-data-packager. Copyright © 2008-2013 Jonathan Dowland . The file "/usr/share/games/doom/IWAD", if present, is a user-supplied file that is not covered by the copyright or licence of this package. For example, the original Doom data is copyright (c) 1999 by id Software, all rights reserved. The remainder of this package is covered by the following Licence: This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. On Debian GNU/Linux systems, the complete text of the GNU General Public License can be found in /usr/share/common-licenses/GPL-2. game-data-packager/doom-common/usr/share/doc/doom-common/README.Debian.in0000644000000000000000000000040212226604502023130 0ustar README.Debian for PACKAGE --------------------------- This package was generated by the game-data-packager program, to facilitate installation of the GAME data files into a Debian system. -- Jon Dowland , Mon, 24 Jan 2011 23:36:40 +0000 game-data-packager/doom-common/usr/share/applications/0000755000000000000000000000000012226604542020167 5ustar game-data-packager/doom-common/usr/share/applications/doom-common.desktop.in0000644000000000000000000000030012226604542024404 0ustar [Desktop Entry] Name=LONG GenericName=First Person Shooter Game TryExec=ENGINE Exec=ENGINE -iwad /usr/share/games/ENGINE/GAME.wad Icon=GAME.xpm Terminal=false Type=Application Categories=Game game-data-packager/doom-common/doom2.xpm0000644000000000000000000003275112003265376015345 0ustar /* XPM */ /* based on the Doom Wikia logo by Fredrik Johansson Separate GPL licence granted: */ static char *Wiki[] = { /* columns rows colors chars-per-pixel */ "62 73 257 2", " c #010000", ". c #0B0200", "X c #08090A", "o c #070215", "O c #061517", "+ c #140D06", "@ c #160603", "# c #110418", "$ c #161610", "% c #130022", "& c #160729", "* c #161528", "= c #130E2D", "- c #0F2328", "; c #270902", ": c #360803", "> c #381405", ", c #2A160F", "< c #26073A", "1 c #251738", "2 c #2A172A", "3 c #352510", "4 c #373639", "5 c #2B2930", "6 c #192A4E", "7 c #2A1648", "8 c #300E4D", "9 c #3A1963", "0 c #3B0E68", "q c #292448", "w c #2A3747", "e c #23365A", "r c #352655", "t c #36304C", "y c #283D63", "u c #333470", "i c #1B1B41", "p c #3A4222", "a c #34444C", "s c #2C4268", "d c #31476D", "f c #344B74", "g c #395379", "h c #2F4672", "j c #4C0100", "k c #460803", "l c #461501", "z c #540000", "x c #5A0000", "c c #540B00", "v c #591802", "b c #4D1914", "n c #492506", "m c #4A3901", "M c #592603", "N c #593600", "B c #4D2C15", "V c #4E2F2B", "C c #630100", "Z c #6C0000", "A c #670900", "S c #681600", "D c #730100", "F c #7A0100", "G c #780900", "H c #781600", "J c #6C2400", "K c #642402", "L c #673800", "P c #772401", "I c #7A3600", "U c #6D2A17", "Y c #693734", "T c #70342A", "R c #401E3A", "E c #441A69", "W c #463351", "Q c #422767", "! c #4B2B76", "~ c #4B3877", "^ c #4D366A", "/ c #54255D", "( c #4F4F06", ") c #564733", "_ c #714B04", "` c #6C472F", "' c #6E7402", "] c #566B0E", "[ c #4A4644", "{ c #524F53", "} c #484876", "| c #465877", " . c #514F6E", ".. c #516354", "X. c #516B75", "o. c #6F5250", "O. c #665168", "+. c #706D6D", "@. c #6D6257", "#. c #365186", "$. c #375BA7", "%. c #3C65A7", "&. c #513B83", "*. c #455A89", "=. c #584787", "-. c #57588C", ";. c #514E8F", ":. c #48668A", ">. c #54688C", ",. c #5B7986", "<. c #4E6A96", "1. c #605597", "2. c #6455A4", "3. c #614EA0", "4. c #68738E", "5. c #6A63AB", "6. c #716BB8", "7. c #4465A4", "8. c #716EC3", "9. c #203986", "0. c #6D8D00", "q. c #7CA800", "w. c #6BB400", "e. c #69C300", "r. c #62828E", "t. c #5E818C", "y. c #830100", "u. c #8A0200", "i. c #860C00", "p. c #871700", "a. c #920300", "s. c #990800", "d. c #961700", "f. c #911512", "g. c #8C2200", "h. c #862802", "j. c #873801", "k. c #932300", "l. c #992801", "z. c #963504", "x. c #943016", "c. c #903324", "v. c #A80600", "b. c #AB1B00", "n. c #A41700", "m. c #B70600", "M. c #B61700", "N. c #A32300", "B. c #AC2400", "V. c #A72B01", "C. c #A83604", "Z. c #B62701", "A. c #B83603", "S. c #AC3215", "D. c #A63724", "F. c #854400", "G. c #895600", "H. c #984500", "J. c #955900", "K. c #8E4411", "L. c #924F2F", "P. c #9B6502", "I. c #A64702", "U. c #A85200", "Y. c #B84506", "T. c #B95501", "R. c #B94A19", "E. c #B1492C", "W. c #A76A01", "Q. c #B47201", "!. c #927D39", "~. c #896257", "^. c #8C7370", "/. c #B95142", "(. c #975D56", "). c #C50700", "_. c #C51600", "`. c #D41300", "'. c #C62700", "]. c #C73803", "[. c #D52800", "{. c #D73802", "}. c #C63413", "|. c #E13302", " X c #D03728", ".X c #C94605", "XX c #C75602", "oX c #D54604", "OX c #D54717", "+X c #D65403", "@X c #CA4F16", "#X c #D1502B", "$X c #D16B02", "%X c #E64805", "&X c #E85309", "*X c #EF5212", "=X c #E95425", "-X c #EA532D", ";X c #ED6B00", ":X c #E76502", ">X c #EA7302", ",X c #F36A04", " YXYXYXYXYXYXYXYXYX", "YXYXYXYXYXYXYXYXYXYX5 ZXNXNXMXBXCXGXFXHXFXCXFXo.D d.v.|.&X m _ 0.] ] M : P l.g.b.d.l.B.F y.S YXYXYXYX", "YXYX$ kXxXxXzX+.> v.s.d.C.C.h.H f.b.n.b.b.M.m.[.S.S.OX*X&X{.{.{.{.%X'.).G h.G S ( 0.0.0.' q.w.l : H n.p.Y.A.A.B.a.y.> YXYXYX", "YXYXYXjXzXAXAXIXzXV v.m.m.n.d.K.Y.B.V.&X%X*X4X#Xx.@XR.v.).).).).).[.&Xm.i.d.G _ 0.0.( , $ 0.iX] > ; u.p.@XC.A.A.'.s.k YXYXYX", "YXYXYX[ zXUXSXIXLXGX^.u.m.v.s.oX3XX@X5XE.5X8XwX4X@XA.k.p.l.V.A.b.OXi.Z A 0.e.0.o + , o e.rX0.Z u.M.}.OX+X.X}.d.a.YXYXYX", "YXYXYXYX+.VXNXmXSXGXDXDX^.C y.G %X3X>X@X$X0X0X5XhXqXhX4X=X-X#Xz.z.C.n.A.d.x v ' w.q.o @ ; # q.q.rXC F Z.#X4X4X&X=X_.a.k YXYX", "YXYXYXYXV MXnXbXmXmXGXCXZX) a.s.N.4X5X:X4XqX7X7X9X7X4X4X9XqX4X0Xc.D.-X|.d.Z G _ pXpX0., , $ aXw.rXy.y.}.4X4X8X*X-X Xa.x YXYX", "YXYXYXYX3 eXMXVXnXnXVXBXGXX.u.m.k.I z.x.6X0X#X5X5X7X8X4X9X0X8XqXwX7X6XZ._.u.D L q.aXaXpXq.iXiXrX0.y.v.4X9X9X9X%X-X6Xd.l.YXYX", "YXYXYXYXD b lXVXnXnXVXBXCX..y.).B.h.S H XOXR.Y.C.7X9X9X7XwX9X9X9X0X0X#XOX_.a.F M rXaXpXiXrX0.iXF.y.}.hX8X8X-X=X-XwXl.l.YXYX", "YXYXYXYXC C Y lXvXmXmXAXO.v u.%X+Xz.k c c.> @ M l.E.E.0XqX9XqX-X9XhXqXwX-X-X-XD.F b ' rXpXiXq.( i.a.-XhX4X4X6X#X6X/.[.F YXYX", "YXYXYXYXZ Z F T lXmXMX4 > N.&X{. { r ! ~ ! { AX{ =.=.=.3.2. .4 =.=.=.=.1.=.@.PX+.! ~ ^ q B S M.k YXYXYX", "YXYXYXYXYXYX> y.Z G G d.p.H g.Z.Z.'.{.N.N.b.OX4X R Q ! Q @.DX{ &.=.=.=.=.} ..^ =.} &.=.~ ^.LX+.^ ~ ~ V l.#Xd.YXYXYXYX", "YXYXYXYXYXYXO F D C l.i.g.p.p.G Z.].B.V.B.{.%X*X4X=X*XP K 5 9 u eXFXo.! ! ~ ~ ! O.lX{ ! ! ! ! ^ uXKXkXu u V x.A.S.A YXYXYXYX", "YXYXYXYXYXYXYX; u.Z D g.d.d.H C G d.p.d.'.Z.M.|.|.-X=X_.g.P 3 Y 7XCX+.&.! ! ! Q @.FX[ ! Q / E Q lXPXzX1 v l.OX[.y.: YXYXYXYX", "YXYXYXYXYXYXYXYXj y.F h.l.Z y.x j x n.M.'.M.M.m.'.*X=X=X@XA.S c ` ` { W Q Q E Q yXPX+.0 E 0 9 W +.~.3 K .X#X4Xd.z YXYXYXYXYX", "YXYXYXYXYXYXYXYXYXD y.D G Z D Z j z Z G b.v.m.m.m._.{.#X=XOXk.S D.B M Y 7 8 9 W jXmXjXt 0 E E W T K.S z.@X=XOXd.YXYXYXYXYXYX", "YXYXYXYXYXYXYXYXYX; y.F Z x x Z C C C C G y.v.v.v.s.M.'.}.=X+Xk.S.D.D.S.U U Y 5 ) ` o.) V Y L.F.C.oXS.z.-XOXZ.c YXYXYXYXYXYX", "YXYXYXYXYXYXYXYXYXYX; u.D Z z z C D Z F F Z y.u.v.M.v.s.Z.N.C.Z.%XY.C.4X5X#XR.D.R.XXY.XX.X@X=X=X4X=X#Xl.[.Z.H YXYXYXYXYXYXYX", "YXYXYXYXYXYXYXYXYXYXX j F Z D z z C C i.d.D C Z p.Z.Z.Z.a.n.C.'.].{.oX:X%X : z D D Z Z Z Z D C x z C C D D F D D D i.D F F F y.F c YXYXYXYXYXYXYXYXYXYXYXYXYXYXYX", "YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX; j y.F F x x C D z C Z Z D Z Z Z Z C D D y.F k > M YXYXYXYXYXYXYXYXYXYXYXYXYXYXYX", "YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX: z z z z Z D D C C C C C C j C b 3 YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX", "YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX: : : > : l b k b b : l 1 YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX" }; game-data-packager/doom-common/DEBIAN/0000755000000000000000000000000012226604542014510 5ustar game-data-packager/doom-common/DEBIAN/preinst.in0000644000000000000000000000046612003265376016533 0ustar #!/bin/sh # preinst script for IWAD set -e case "$1" in upgrade) if dpkg --compare-versions "$2" lt "22"; then update-alternatives --remove IWAD \ /usr/share/games/game-data-packager/IWAD fi ;; install|abort-upgrade) ;; *) echo "unsupported method $1" >&2 exit 1 ;; esac exit 0 game-data-packager/doom-common/DEBIAN/control.in0000644000000000000000000000101112226604542016511 0ustar Package: PACKAGE Section: non-free/games Priority: optional Architecture: all Recommends: doom-engine Provides: doom-wad Installed-Size: 56 Conflicts: freedoom (<< 0.6.4-4), freedm (<< 0.6.4-4) Version: VERSION Maintainer: Debian Games Team Description: IWAD from ID Software's "LONG" computer game Doom requires both a doom-engine and a doom-wad to play. This package contains the IWAD from ID Software's game "LONG" and was generated using the "game-data-packager" program. game-data-packager/lgeneral.mk0000644000000000000000000000307012226604542013464 0ustar # VERSION must be supplied by caller srcdir = $(CURDIR) builddir = $(CURDIR)/build outdir = $(CURDIR)/out LGENERALDEB = $(outdir)/lgeneral-data-nonfree_$(VERSION)_all.deb $(LGENERALDEB): \ $(builddir)/lgeneral-data-nonfree/DEBIAN/md5sums \ $(builddir)/lgeneral-data-nonfree/DEBIAN/control \ fixperms_lgeneral install -d $(builddir)/lgeneral-data-nonfree/usr/share/games/lgeneral cd $(builddir) && \ if [ `id -u` -eq 0 ]; then \ dpkg-deb -b lgeneral-data-nonfree $@ ; \ else \ fakeroot dpkg-deb -b lgeneral-data-nonfree $@ ; \ fi $(builddir)/lgeneral-data-nonfree/DEBIAN/md5sums: \ $(builddir)/lgeneral-data-nonfree/usr/share/doc/lgeneral-data-nonfree/changelog.gz \ $(builddir)/lgeneral-data-nonfree/usr/share/doc/lgeneral-data-nonfree/copyright install -d `dirname $@` cd $(builddir)/lgeneral-data-nonfree && find usr/ -type f -print0 |\ xargs -0 md5sum >DEBIAN/md5sums $(builddir)/lgeneral-data-nonfree/usr/share/doc/lgeneral-data-nonfree/changelog.gz: install -d `dirname $@` gzip -c9 debian/changelog > $@ $(builddir)/lgeneral-data-nonfree/usr/share/doc/lgeneral-data-nonfree/copyright: install -d `dirname $@` m4 -DPACKAGE=$(PACKAGE) lgeneral-data-nonfree/copyright.in > $@ $(builddir)/lgeneral-data-nonfree/DEBIAN/control: install -d `dirname $@` m4 -DVERSION=$(VERSION) < lgeneral-data-nonfree/DEBIAN/control > $@ fixperms_lgeneral: find $(builddir)/lgeneral-data-nonfree -type f -print0 | xargs -0 chmod 644 find $(builddir)/lgeneral-data-nonfree -type d -print0 | xargs -0 chmod 755 clean: rm -rf $(LGENERALDEB) $(builddir)/lgeneral-data-nonfree game-data-packager/Makefile0000644000000000000000000001050312242465475013011 0ustar VERSION := $(shell dpkg-parsechangelog | grep ^Version | cut -d' ' -f2-) DIRS := ./out ./build LDLIBS = -ldynamite default: $(DIRS) gzip -c9 debian/changelog > ./out/changelog.gz chmod 0644 ./out/changelog.gz make -f doom-common.mk IWAD=doom LONG="Doom" VERSION=$(VERSION) make -f doom-common.mk IWAD=doom2 \ LONG="Doom 2: Hell on Earth" VERSION=$(VERSION) make -f doom-common.mk IWAD=tnt \ LONG="Final Doom: TNT: Evilution" VERSION=$(VERSION) make -f doom-common.mk IWAD=plutonia \ LONG="Final Doom: The Plutonia Experiment" VERSION=$(VERSION) make -f doom-common.mk IWAD=heretic VERSION=$(VERSION) \ CONTROLIN=heretic/DEBIAN/control.in \ LONG="Heretic: Shadow of the Serpent Riders" make -f doom-common.mk IWAD=hexen VERSION=$(VERSION) \ CONTROLIN=hexen/DEBIAN/control.in \ LONG="Hexen: Beyond Heretic" make -f quake.mk LONG="Quake" VERSION=$(VERSION) PACKAGE=quake-registered \ FOLDER=id1 make -f quake.mk LONG="Quake music" VERSION=$(VERSION) \ PACKAGE=quake-music FOLDER=id1 make -f quake.mk LONG="Quake shareware" VERSION=$(VERSION) \ PACKAGE=quake-shareware FOLDER=id1 make -f quake.mk LONG="Quake mission pack 1: Scourge of Armagon" \ VERSION=$(VERSION) PACKAGE=quake-armagon FOLDER=hipnotic make -f quake.mk LONG="Quake MP1 music" VERSION=$(VERSION) \ PACKAGE=quake-armagon-music FOLDER=hipnotic make -f quake.mk LONG="Quake mission pack 2: Dissolution of Eternity" \ VERSION=$(VERSION) PACKAGE=quake-dissolution FOLDER=rogue make -f quake.mk LONG="Quake MP2 music" VERSION=$(VERSION) \ PACKAGE=quake-dissolution-music FOLDER=rogue make -f quake2.mk VERSION=$(VERSION) PACKAGE=quake2-demo-data make -f quake2.mk VERSION=$(VERSION) PACKAGE=quake2-full-data make -f quake2.mk VERSION=$(VERSION) PACKAGE=quake2-music make -f quake2.mk VERSION=$(VERSION) PACKAGE=quake2-xatrix make -f quake2.mk VERSION=$(VERSION) PACKAGE=quake2-rogue make -f quake3.mk LONG="Quake III Arena" VERSION=$(VERSION) make -f hexen2.mk VERSION=$(VERSION) make -f rott.mk VERSION=$(VERSION) make -f wolf3d.mk VERSION=$(VERSION) make -f lgeneral.mk LONG="LGeneral" VERSION=$(VERSION) $(DIRS): mkdir -p $@ tests/empty.deb: dpkg-deb -b tests/empty tests/empty.deb clean: rm -f ./out/changelog.gz make -f doom-common.mk IWAD=doom LONG="Doom" VERSION=$(VERSION) clean make -f doom-common.mk IWAD=doom2 \ LONG="Doom 2: Hell on Earth" VERSION=$(VERSION) clean make -f doom-common.mk IWAD=tnt \ LONG="Final Doom: TNT: Evilution" VERSION=$(VERSION) clean make -f doom-common.mk IWAD=plutonia \ LONG="Final Doom: The Plutonia Experiment" VERSION=$(VERSION) clean make -f doom-common.mk IWAD=heretic VERSION=$(VERSION) \ CONTROLIN=heretic/DEBIAN/control.in \ LONG="Heretic: Shadow of the Serpent Riders" clean make -f doom-common.mk IWAD=hexen VERSION=$(VERSION) \ CONTROLIN=hexen/DEBIAN/control.in \ LONG="Hexen: Beyond Heretic" clean make -f quake.mk LONG="Quake" VERSION=$(VERSION) PACKAGE=quake-registered \ FOLDER=id1 clean make -f quake.mk LONG="Quake music" VERSION=$(VERSION) \ PACKAGE=quake-music FOLDER=id1 clean make -f quake.mk LONG="Quake shareware" VERSION=$(VERSION) \ PACKAGE=quake-shareware FOLDER=id1 clean make -f quake.mk LONG="Quake mission pack 1: Scourge of Armagon" \ VERSION=$(VERSION) PACKAGE=quake-armagon FOLDER=hipnotic clean make -f quake.mk LONG="Quake MP1 music" VERSION=$(VERSION) \ PACKAGE=quake-armagon-music FOLDER=hipnotic clean make -f quake.mk LONG="Quake mission pack 2: Dissolution of Eternity" \ VERSION=$(VERSION) PACKAGE=quake-dissolution FOLDER=rogue clean make -f quake.mk LONG="Quake MP2 music" VERSION=$(VERSION) \ PACKAGE=quake-dissolution-music FOLDER=rogue clean make -f quake2.mk VERSION=$(VERSION) PACKAGE=quake2-demo-data clean make -f quake2.mk VERSION=$(VERSION) PACKAGE=quake2-full-data clean make -f quake2.mk VERSION=$(VERSION) PACKAGE=quake2-music clean make -f quake2.mk VERSION=$(VERSION) PACKAGE=quake2-xatrix clean make -f quake2.mk VERSION=$(VERSION) PACKAGE=quake2-rogue clean make -f hexen2.mk VERSION=$(VERSION) clean make -f quake3.mk LONG="Quake III Arena" VERSION=$(VERSION) clean make -f rott.mk VERSION=$(VERSION) clean make -f wolf3d.mk VERSION=$(VERSION) clean make -f lgeneral.mk LONG="LGeneral" VERSION=$(VERSION) clean for d in $(DIRS); do [ ! -d "$$d" ] || rmdir "$$d"; done check: ./t/verify-md5sum-alternatives.sh .PHONY: default clean check game-data-packager/lgeneral-data-nonfree/0000755000000000000000000000000012227016024015465 5ustar game-data-packager/lgeneral-data-nonfree/copyright.in0000644000000000000000000000166312227016024020033 0ustar The PACKAGE package was generated using game-data-packager. Copyright © 2008-2013 Jonathan Dowland . The files under "/usr/share/games/lgeneral" are user-supplied files that are not covered by the copyright or license of this package; they are copyright (c) 1994 by SSI Inc., all rights reserved. The remainder of this package is covered by the following Licence: This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. On Debian GNU/Linux systems, the complete text of the GNU General Public License can be found in /usr/share/common-licenses/GPL-2. game-data-packager/lgeneral-data-nonfree/DEBIAN/0000755000000000000000000000000012226604542016416 5ustar game-data-packager/lgeneral-data-nonfree/DEBIAN/control0000644000000000000000000000105712226604542020024 0ustar Package: lgeneral-data-nonfree Version: VERSION Section: non-free/games Priority: optional Architecture: all Installed-Size: 500000 Maintainer: Debian Games Team Description: Panzer General commercial data files LGeneral requires an engine and game data to play. This package contains the commercial data from SSI's game "Panzer General", and was generated using the "game-data-packager" program from the Debian package of the same name. . To play LGeneral using this data, please install the lgeneral package. game-data-packager/rott.mk0000644000000000000000000000206112226604502012656 0ustar BASICFILES = usr/share/doc/rott-data/README.Debian \ usr/share/doc/rott-data/copyright DESTFILES = $(addprefix build/rott-data/, $(BASICFILES)) # VERSION is defined by the parent make out/rott-data_$(VERSION)_all.deb: build/rott-data/DEBIAN/control $(DESTFILES) fakeroot dpkg-deb -b build/rott-data $@ DIRS = build/rott-data \ build/rott-data/DEBIAN \ build/rott-data/usr \ build/rott-data/usr/share \ build/rott-data/usr/share/games \ build/rott-data/usr/share/games/rott \ build/rott-data/usr/share/doc \ build/rott-data/usr/share/doc/rott-data $(DIRS): mkdir $@ $(DESTFILES): $(DIRS) cp -p rott-data/`basename "$@"` $@ build/rott-data/DEBIAN/control: rott-data/control.in $(DIRS) m4 -DPACKAGE=rott-data -DVERSION=$(VERSION) $< > $@ clean: rm -f build/rott-data/DEBIAN/control out/rott-data_$(VERSION)_all.deb \ build/rott-data/usr/share/doc/rott-data/copyright \ build/rott-data/usr/share/doc/rott-data/README.Debian for d in $(DIRS); do echo "$$d"; done | sort -r | while read d; do \ [ ! -d "$$d" ] || rmdir "$$d"; done .PHONY: clean $(DESTFILES) game-data-packager/game-data-packager0000755000000000000000000000441712227016024014662 0ustar #!/bin/sh set -e set -u # unset grep options that could affect output unset GREP_OPTIONS # defaults INSTALL="no" PRESERVE="yes" COMPRESS="maybe" # test to see whether we are running in 'development mode' if [ "$0" = "./game-data-packager" ]; then SUPPORTED=./supported LIBDIR=./lib DATADIR="./out" . "./etc/game-data-packager.conf" else SUPPORTED=/usr/share/games/game-data-packager/supported LIBDIR=/usr/lib/game-data-packager DATADIR="/usr/share/games/game-data-packager" . "/etc/game-data-packager.conf" fi . $LIBDIR/game-data-packager-shared LIBDIR="`unravel "$LIBDIR"`" DATADIR="`unravel "$DATADIR"`" if [ $# -lt 1 ]; then usage >&2 exit 1 fi OUTDIR="$(pwd)" OUTFILE="" # process command line arguments while [ $# -gt 1 ]; do case "$1" in '-n') INSTALL="no" ;; '-d') PRESERVE="yes" shift if [ $# -lt 2 ]; then echo "missing directory or game argument" >&2 usage >&2 exit 1 fi OUTDIR="$1" ;; '-i') INSTALL="yes" ;; '-z'|'--compress') COMPRESS="yes" ;; '--no-compress') COMPRESS="no" ;; '--') shift break; ;; *) # possibly the game name break; ;; esac shift done # If we're not going to keep the .deb, there's no point in having # a good compression ratio. if [ "$COMPRESS" = "maybe" ]; then COMPRESS="$PRESERVE" fi if [ "$INSTALL" = "no" -a "$PRESERVE" = "no" ]; then echo "if you specify -n, you must also specify -d." >&2 exit 1 fi debug "INSTALL=$INSTALL" debug "PRESERVE=$PRESERVE" # ensure we can write to OUTDIR [ -w "$OUTDIR" ] || die "cannot write generated file to '$OUTDIR'" GAME="$1" shift if [ ! -f "$SUPPORTED/$GAME" ]; then echo "unknown option or game '$GAME'" >&2 usage >&2 exit 1 fi . "$SUPPORTED/$GAME" debug "short: $SHORTNAME" debug "long: $LONGNAME" # setup a working directory WORKDIR=`mktemp -t -d game-data-packager.XXXXXX` debug "WORKDIR=$WORKDIR" cleanup() { if [ "$PRESERVE" != "yes" ] && [ -f "$OUTFILE" ]; then rm "$OUTFILE" fi if [ -d "$WORKDIR" ]; then rmdir "$WORKDIR" fi } trap cleanup EXIT # now the game's handler needs to be executed go "$@" if [ "$PRESERVE" = "yes" ]; then echo "generated \"$OUTFILE\"." fi if [ "$INSTALL" = "yes" ]; then debug "invoking dpkg to install the package" install_deb "$OUTFILE" fi cleanup