[game-data-packager] 12/20: Use additional Python code to move the doom-common games into YAML

Simon McVittie smcv at debian.org
Mon Jan 12 01:07:08 UTC 2015


This is an automated email from the git hooks/post-receive script.

smcv pushed a commit to branch master
in repository game-data-packager.

commit 4bb38a99b6405968309cd7c24028b90f12ef57e4
Author: Simon McVittie <smcv at debian.org>
Date:   Sun Jan 11 23:04:41 2015 +0000

    Use additional Python code to move the doom-common games into YAML
---
 Makefile                                           |  36 ++----
 .../doom-common.README.Debian.in                   |   0
 .../control.in => data/doom-common.control.in      |   0
 .../copyright.in => data/doom-common.copyright.in  |   0
 .../applications => data}/doom-common.desktop.in   |   0
 .../preinst.in => data/doom-common.preinst.in      |   0
 data/doom.yaml                                     | 129 ++++++++++++++++++++
 {doom-common => data}/doom2.xpm                    |   0
 data/doom2.yaml                                    | 108 +++++++++++++++++
 data/final-doom.yaml                               |  93 +++++++++++++++
 .../DEBIAN/control.in => data/heretic.control.in   |   0
 data/heretic.yaml                                  |  98 +++++++++++++++
 hexen/DEBIAN/control.in => data/hexen.control.in   |   0
 data/hexen.yaml                                    | 119 +++++++++++++++++++
 doom-common.mk                                     |  77 ------------
 lib/doom-common                                    |  41 -------
 lib/game_data_packager/__init__.py                 |  87 +++++++++-----
 lib/game_data_packager/check_syntax.py             |  14 +--
 lib/game_data_packager/games/doom_common.py        | 132 +++++++++++++++++++++
 supported/doom                                     |  20 +---
 supported/doom2                                    |  16 +--
 supported/heretic                                  |  16 +--
 supported/hexen                                    |  16 +--
 supported/plutonia                                 |  17 +--
 supported/tnt                                      |  18 +--
 25 files changed, 761 insertions(+), 276 deletions(-)

diff --git a/Makefile b/Makefile
index 8e2bdce..b7c329b 100644
--- a/Makefile
+++ b/Makefile
@@ -8,19 +8,11 @@ default: $(DIRS)
 	install -m644 data/*.yaml out/
 	install -m644 data/*.control.in out/
 	install -m644 data/*.copyright out/
-	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 GAME=heretic VERSION=$(VERSION) \
-		CONTROLIN=heretic/DEBIAN/control.in \
-		LONG="Heretic: Shadow of the Serpent Riders"
-	make -f doom-common.mk IWAD=hexen GAME=hexen VERSION=$(VERSION) \
-		CONTROLIN=hexen/DEBIAN/control.in \
-		LONG="Hexen: Beyond Heretic"
+	install -m644 data/*.copyright.in out/
+	install -m644 data/*.desktop.in out/
+	install -m644 data/*.preinst.in out/
+	install -m644 data/*.README.Debian.in out/
+	install -m644 data/*.xpm out/
 	make -f quake.mk LONG="Quake" VERSION=$(VERSION) PACKAGE=quake-registered \
 		FOLDER=id1
 	make -f quake.mk LONG="Quake music" VERSION=$(VERSION) \
@@ -56,21 +48,13 @@ clean:
 	rm -f ./out/*.control
 	rm -f ./out/*.control.in
 	rm -f ./out/*.copyright
+	rm -f ./out/*.copyright.in
+	rm -f ./out/*.desktop.in
+	rm -f ./out/*.preinst.in
+	rm -f ./out/*.README.Debian.in
+	rm -f ./out/*.xpm
 	rm -f ./out/*.yaml
 	rm -rf lib/game_data_packager/__pycache__
-	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 GAME=heretic VERSION=$(VERSION) \
-		CONTROLIN=heretic/DEBIAN/control.in \
-		LONG="Heretic: Shadow of the Serpent Riders" clean
-	make -f doom-common.mk IWAD=hexen GAME=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) \
diff --git a/doom-common/usr/share/doc/doom-common/README.Debian.in b/data/doom-common.README.Debian.in
similarity index 100%
rename from doom-common/usr/share/doc/doom-common/README.Debian.in
rename to data/doom-common.README.Debian.in
diff --git a/doom-common/DEBIAN/control.in b/data/doom-common.control.in
similarity index 100%
rename from doom-common/DEBIAN/control.in
rename to data/doom-common.control.in
diff --git a/doom-common/usr/share/doc/doom-common/copyright.in b/data/doom-common.copyright.in
similarity index 100%
rename from doom-common/usr/share/doc/doom-common/copyright.in
rename to data/doom-common.copyright.in
diff --git a/doom-common/usr/share/applications/doom-common.desktop.in b/data/doom-common.desktop.in
similarity index 100%
rename from doom-common/usr/share/applications/doom-common.desktop.in
rename to data/doom-common.desktop.in
diff --git a/doom-common/DEBIAN/preinst.in b/data/doom-common.preinst.in
similarity index 100%
rename from doom-common/DEBIAN/preinst.in
rename to data/doom-common.preinst.in
diff --git a/data/doom.yaml b/data/doom.yaml
new file mode 100644
index 0000000..afd45d3
--- /dev/null
+++ b/data/doom.yaml
@@ -0,0 +1,129 @@
+%YAML 1.2
+---
+# Version reference:
+# http://doom.wikia.com/wiki/DOOM1.WAD
+# http://doomwiki.org/wiki/DOOM1.WAD
+# http://doom.wikia.com/wiki/DOOM.WAD
+# http://doomwiki.org/wiki/DOOM.WAD
+shortname: doom
+longname: Doom (including Ultimate Doom)
+
+plugin: doom_common
+
+help_text: |
+  Please provide the DOOM.WAD from either Doom 1.9 (episodes 1-3)
+  or The Ultimate Doom (episodes 1-4). For the shareware version of Doom,
+  activate the non-free archive component in /etc/apt/sources.list and
+  "apt-get install doom-wad-shareware" instead.
+
+  Patching older versions, or updating Doom 1.9 to The Ultimate Doom,
+  is not currently supported. If you have an older version, it might
+  be possible to patch it manually using dosbox.
+
+packages:
+  doom-wad:
+    install_to: usr/share/games/doom
+    longname: Doom
+    type: full
+    install:
+    - doom.wad
+
+files:
+  # full version
+  doom.wad:
+    alternatives:
+    - doom.wad_1.9ud
+    - doom.wad_1.9
+    # presumably some of the other alternatives would be OK too
+
+  # Best available full version: The Ultimate Doom
+  doom.wad_1.9ud:
+    distinctive_name: false
+    size: 12408292
+    sha1: 9b07b02ab3c275a6a7570c3f73cc20d63a0e3833
+    md5: c4fe9fd920207691a9f493668e0a2083
+    look_for:
+    - doom.wad
+
+  # Other 1.9 variants
+  doom.wad_1.9:
+    distinctive_name: false
+    size: 11159840
+    sha1: 7742089b4468a736cadb659a7deca3320fe6dcbd
+    md5: 1cd63c5ddff1bf8ce844237f580e9cf3
+    look_for:
+    - doom.wad
+  doom.wad_xbox:
+    distinctive_name: false
+    size: 12538385
+    md5: 0c8758f102ccafe26a3040bee8ba5021
+    sha1: 1d1d4f69fe14fa255228d8243470678b1b4efdc5
+    look_for:
+    - doom.wad
+  doom.wad_psn:
+    distinctive_name: false
+    size: 12474561
+    md5: e4f120eab6fb410a5b6e11c947832357
+    sha1: 117015379c529573510be08cf59810aa10bb934e
+    look_for:
+    - doom.wad
+  doom.wad_bfg:
+    distinctive_name: false
+    size: 12487824
+    md5: fb35c4a5a9fd49ec29ab6e900572c524
+    sha1: e5ec79505530e151ff0e6f517f3ce1fd65969c46
+    look_for:
+    - doom.wad
+  # despite its name this is full Doom
+  doom1.wad_pocketpc:
+    distinctive_name: false
+    size: 14445632
+    md5: 3e410ecd27f61437d53fa5c279536e88
+    sha1: 1d3c00534c452e266012e28ddc399ffe4d9ac8ed
+    look_for:
+    - doom1.wad
+
+  # Older versions
+  doom.wad_0.2:
+    distinctive_name: false
+    size: 496250
+    md5: 740901119ba2953e3c7f3764eca6e128
+    sha1: 89d934616c57fe974b06c2b37a9837853a89dbbc
+  doom.wad_0.4:
+    distinctive_name: false
+    size: 2675669
+    md5: b6afa12a8b22e2726a8ff5bd249223de
+    sha1: 5f78b23fbffc828f5863ecff7e908d556241ff45
+  doom.wad_0.5:
+    distinctive_name: false
+    size: 3522207
+    md5: 9c877480b8ef33b7074f1f0c07ed6487
+    sha1: d3648d720b5324ce3c7bf58cf019e395911d677e
+  doom.wad_beta:
+    distinctive_name: false
+    size: 5468456
+    md5: 049e32f18d9c9529630366cfc72726ea
+    sha1: 692994db9579be4201730b9ac77797fae2111bde
+  doom.wad_1.1:
+    distinctive_name: false
+    size: 10396254
+    md5: 981b03e6d1dc033301aa3095acc437ce
+    sha1: df0040ccb29cc1622e74ceb3b7793a2304cca2c8
+  doom.wad_1.2:
+    distinctive_name: false
+    size: 10399316
+    md5: 792fd1fea023d61210857089a7c1e351
+    sha1: b5f86a559642a2b3bdfb8a75e91c8da97f057fe6
+  doom.wad_1.666:
+    distinctive_name: false
+    size: 11159840
+    md5: 54978d12de87f162b9bcc011676cb3c0
+    sha1: 2e89b86859acd9fc1e552f587b710751efcffa8e
+  doom.wad_1.8:
+    distinctive_name: false
+    size: 11159840
+    md5: 11e1cd216801ea2657723abc86ecb01f
+    sha1: 2c8212631b37f21ad06d18b5638c733a75e179ff
+
+...
+# vim:set sw=2 sts=2 et:
diff --git a/doom-common/doom2.xpm b/data/doom2.xpm
similarity index 100%
rename from doom-common/doom2.xpm
rename to data/doom2.xpm
diff --git a/data/doom2.yaml b/data/doom2.yaml
new file mode 100644
index 0000000..cb05841
--- /dev/null
+++ b/data/doom2.yaml
@@ -0,0 +1,108 @@
+%YAML 1.2
+---
+# Version reference:
+# http://doom.wikia.com/wiki/DOOM2.WAD
+# http://doomwiki.org/wiki/DOOM2.WAD
+shortname: doom2
+longname: "Doom 2: Hell on Earth"
+
+plugin: doom_common
+
+help_text: |
+  Please provide the DOOM2.WAD from Doom 2 version 1.9.
+
+  Patching older versions is not currently supported. If you have
+  an older version, it might be possible to patch it manually using dosbox.
+
+packages:
+  doom2-wad:
+    install_to: usr/share/games/doom
+    type: full
+    install:
+    - doom2.wad
+
+files:
+  doom2.wad:
+    alternatives:
+    - doom2.wad_1.9
+    # FIXME: do older wads work?
+
+  doom2.wad_1.9:
+    size: 14604584
+    look_for: [doom2.wad]
+    distinctive_name: false
+  doom2.wad_bfg:
+    size: 14691821
+    look_for: [doom2.wad]
+    distinctive_name: false
+  doom2.wad_1.666g:
+    size: 14824716
+    look_for: [doom2.wad]
+    distinctive_name: false
+  doom2.wad_1.666:
+    size: 14943400
+    look_for: [doom2.wad]
+    distinctive_name: false
+  doom2.wad_1.7:
+    size: 14612688
+    look_for: [doom2.wad]
+    distinctive_name: false
+  doom2.wad_1.7a:
+    size: 14612688
+    look_for: [doom2.wad]
+    distinctive_name: false
+  doom2.wad_1.8:
+    size: 14612688
+    look_for: [doom2.wad]
+    distinctive_name: false
+  doom2.wad_xbox360_bfg:
+    size: 14677988
+    look_for: [doom2.wad]
+    distinctive_name: false
+  doom2.wad_xbla:
+    size: 14685034
+    look_for: [doom2.wad]
+    distinctive_name: false
+  doom2.wad_xbox_roe:
+    size: 14683458
+    look_for: [doom2.wad]
+    distinctive_name: false
+  doom2.wad_psn:
+    size: 14599800
+    look_for: [doom2.wad]
+    distinctive_name: false
+  doom2.wad_tapwave_zodiac:
+    size: 14639397
+    look_for: [doom2.wad]
+    distinctive_name: false
+
+md5sums: |
+  25e1459ca71d321525f84628f45ca8cd  doom2.wad_1.9
+  c3bea40570c23e511a7ed3ebcd9865f7  doom2.wad_bfg
+  d9153ced9fd5b898b36cc5844e35b520  doom2.wad_1.666g
+  30e3c2d0350b67bfbf47271970b74b2f  doom2.wad_1.666
+  ea74a47a791fdef2e9f2ea8b8a9da13b  doom2.wad_1.7
+  d7a07e5d3f4625074312bc299d7ed33f  doom2.wad_1.7a
+  c236745bb01d89bbb866c8fed81b6f8c  doom2.wad_1.8
+  f617591a6c5d07037eb716dc4863e26b  doom2.wad_xbox360_bfg
+  43c2df32dc6c740cb11f34dc5ab693fa  doom2.wad_xbla
+  a793ebcdd790afad4a1f39cc39a893bd  doom2.wad_xbox_roe
+  4c3db5f23b145fccd24c9b84aba3b7dd  doom2.wad_psn
+  9640fc4b2c8447bbd28f2080725d5c51  doom2.wad_tapwave_zodiac
+
+sha1sums: |
+  7ec7652fcfce8ddc6e801839291f0e28ef1d5ae7  doom2.wad_1.9
+  79c283b18e61b9a989cfd3e0f19a42ea98fda551  doom2.wad_1.8
+  70192b8d5aba65c7e633a7c7bcfe7e3e90640c97  doom2.wad_1.7a
+  78009057420b792eacff482021db6fe13b370dcc  doom2.wad_1.7
+  6d559b7ceece4f5ad457415049711992370d520a  doom2.wad_1.666
+  a4ce5128d57cb129fdd1441c12b58245be55c8ce  doom2.wad_1.666g
+  a59548125f59f6aa1a41c22f615557d3dd2e85a9  doom2.wad_bfg
+  b7ba1c68631023ea1aab1d7b9f7f6e9afc508f39  doom2.wad_xbox360_bfg
+  55e445badd63d8841ebea887910c26c62c7f525e  doom2.wad_xbla
+  1c91d86cd8a2f3817227986503a6672a5e1613f0  doom2.wad_xbox_roe
+  ca8db908a7c9fbac764f34c148f0bcc78d18553e  doom2.wad_psn
+  2cda310805397ae44059bbcaed3cd602f4864a82  doom2.wad_tapwave_zodiac
+
+...
+# vim:set sw=2 sts=2 et:
diff --git a/data/final-doom.yaml b/data/final-doom.yaml
new file mode 100644
index 0000000..707f36e
--- /dev/null
+++ b/data/final-doom.yaml
@@ -0,0 +1,93 @@
+%YAML 1.2
+---
+# Version reference:
+# http://doomwiki.org/wiki/TNT.WAD
+# http://doomwiki.org/wiki/PLUTONIA.WAD
+shortname: final-doom
+longname: Final Doom
+
+plugin: doom_common
+
+help_text: |
+  Please provide TNT.WAD and/or PLUTONIA.WAD from Final Doom.
+
+packages:
+  tnt-wad:
+    # these are IWADs so technically they behave like full games:
+    # you don't need Doom or Doom II to play them
+    longname: "Final Doom: TNT: Evilution"
+    type: full
+    install:
+    - tnt.wad
+    install_to: usr/share/games/doom
+
+  plutonia-wad:
+    longname: "Final Doom: The Plutonia Experiment"
+    type: full
+    install:
+    - plutonia.wad
+    install_to: usr/share/games/doom
+
+files:
+  tnt.wad:
+    alternatives:
+    - tnt.wad_id_anthology
+    - tnt.wad_1.9
+    - tnt.wad_psn
+
+  tnt.wad_id_anthology:
+    distinctive_name: false
+    size: 18654796
+    sha1: 4a65c8b960225505187c36040b41a40b152f8f3e
+    md5: 1d39e405bf6ee3df69a8d2646c8d5c49
+    look_for:
+    - tnt.wad
+
+  tnt.wad_1.9:
+    distinctive_name: false
+    size: 18195736
+    sha1: 9fbc66aedef7fe3bae0986cdb9323d2b8db4c9d3
+    md5: 4e158d9953c79ccf97bd0663244cc6b6
+    look_for:
+    - tnt.wad
+
+  tnt.wad_psn:
+    distinctive_name: false
+    size: 18222568
+    sha1: 139e26d801a64b404b8d898defca10227a61867b
+    md5: be626c12b7c9d94b1dfb9c327566b4ff
+    look_for:
+    - tnt.wad
+
+  plutonia.wad:
+    alternatives:
+    - plutonia.wad_id_anthology
+    - plutonia.wad_1.9
+    - plutonia.wad_psn
+
+  plutonia.wad_id_anthology:
+    distinctive_name: false
+    size: 18240172
+    sha1: f131cbe1946d7fddb3caec4aa258c83399c21e60
+    md5: 3493be7e1e2588bc9c8b31eab2587a04
+    look_for:
+    - plutonia.wad
+
+  plutonia.wad_1.9:
+    distinctive_name: false
+    size: 17420824
+    sha1: 90361e2a538d2388506657252ae41aceeb1ba360
+    md5: 75c8cf89566741fa9d22447604053bd7
+    look_for:
+    - plutonia.wad
+
+  plutonia.wad_psn:
+    distinctive_name: false
+    size: 17417800
+    sha1: 327f8c41ebd4138354e9fca63cebbbd1b9489749
+    md5: b77ca6a809c4fae086162dad8e7a1335
+    look_for:
+    - plutonia.wad
+
+...
+# vim:set sw=2 sts=2 et:
diff --git a/heretic/DEBIAN/control.in b/data/heretic.control.in
similarity index 100%
rename from heretic/DEBIAN/control.in
rename to data/heretic.control.in
diff --git a/data/heretic.yaml b/data/heretic.yaml
new file mode 100644
index 0000000..15f6cfa
--- /dev/null
+++ b/data/heretic.yaml
@@ -0,0 +1,98 @@
+%YAML 1.2
+---
+# Version reference:
+# http://doomwiki.org/wiki/HERETIC.WAD
+# http://doomwiki.org/wiki/HERETIC1.WAD
+shortname: heretic
+longname: "Heretic: Shadow of the Serpent Riders"
+
+plugin: doom_common
+doom_engine: heretic
+
+help_text: |
+  Please provide HERETIC.WAD from Heretic 1.3.
+
+  The shareware version is not yet supported.
+
+  Patching older versions is not currently supported. If you have
+  an older version, it might be possible to patch it manually using dosbox.
+
+packages:
+  heretic-wad:
+    install_to: usr/share/games/heretic
+    type: full
+    install:
+    - heretic.wad
+
+  # Not supported yet
+  #heretic-shareware-wad:
+  #  install_to: usr/share/games/heretic
+  #  type: demo
+
+files:
+  # FIXME: this needs the 'cat' unpack format
+  #htic_v12.zip:
+  #  download:
+  #    idstuff-mirrors:
+  #      path: heretic/htic_v12.zip
+  #  provides: [htic_v12.1, htic_v12.2]
+  #  unpack:
+  #    format: zip
+  #
+  #htic_v12.1:
+  #  provides: [htic_v12.1, htic_v12.2]
+  #  unpack:
+  #    format: zip
+  #
+  #htic_v12_1_2.zip:
+  #  provides: [heretic1.wad_1.2]
+  #  unpack:
+  #    format: zip
+
+  heretic.wad:
+    distinctive_name: false
+    alternatives:
+    - heretic.wad_1.3
+    # FIXME: do older wads work?
+
+  heretic.wad_1.3:
+    distinctive_name: false
+    size: 14189976
+    look_for: [heretic.wad]
+
+  heretic.wad_1.2:
+    distinctive_name: false
+    size: 11095516
+    look_for: [heretic.wad]
+
+  heretic.wad_1.0:
+    distinctive_name: false
+    size: 11096488
+    look_for: [heretic.wad]
+
+  heretic1.wad_1.2:
+    distinctive_name: false
+    size: 5120920
+    look_for: [heretic1.wad]
+
+  heretic1.wad_1.0:
+    distinctive_name: false
+    size: 5120300
+    look_for: [heretic1.wad]
+
+md5sums: |
+  420b23b3d8f2cbd164c121369eaa2b09  htic_v12.zip
+  3117e399cdb4298eaa3941625f4b2923  heretic.wad_1.0
+  1e4cb4ef075ad344dd63971637307e04  heretic.wad_1.2
+  66d686b1ed6d35ff103f15dbd30e0341  heretic.wad_1.3
+  ae779722390ec32fa37b0d361f7d82f8  heretic1.wad_1.2
+  023b52175d2f260c3bdc5528df5d0a8c  heretic1.wad_1.0
+
+sha1sums: |
+  b5a6cc79cde48d97905b44282e82c4c966a23a87  heretic.wad_1.0
+  a54c5d30629976a649119c5ce8babae2ddfb1a60  heretic.wad_1.2
+  f489d479371df32f6d280a0cb23b59a35ba2b833  heretic.wad_1.3
+  b4c50ca9bea07f7c35250a1a11906091971c05ae  heretic1.wad_1.2
+
+...
+# vim:set sw=2 sts=2 et:
diff --git a/hexen/DEBIAN/control.in b/data/hexen.control.in
similarity index 100%
rename from hexen/DEBIAN/control.in
rename to data/hexen.control.in
diff --git a/data/hexen.yaml b/data/hexen.yaml
new file mode 100644
index 0000000..f32f85b
--- /dev/null
+++ b/data/hexen.yaml
@@ -0,0 +1,119 @@
+%YAML 1.2
+---
+# Version reference:
+# http://doomwiki.org/wiki/HEXEN.WAD
+shortname: hexen
+longname: "Hexen: Beyond Heretic"
+
+help_text: |
+  Please provide HEXEN.WAD from Hexen 1.1.
+
+  The shareware version is not yet supported.
+
+  The expansion "Deathkings of the Dark Citadel" is not yet supported.
+
+  Patching older versions is not currently supported. If you have
+  an older version, it might be possible to patch it manually using dosbox.
+
+plugin: doom_common
+doom_engine: hexen
+
+packages:
+  hexen-wad:
+    install_to: usr/share/games/hexen
+    type: full
+    install:
+    - hexen.wad
+
+  # not supported yet
+  #hexen-deathkings-data:
+  #  install_to: usr/share/games/hexen
+  #  type: expansion
+  #  install:
+  #  - hexdd.wad
+
+  # not supported yet
+  #hexen-demo-data:
+  #  install_to: usr/share/games/hexen
+  #  type: demo
+  #  install:
+  #  - hexen.wad_demo
+
+files:
+
+  hexen.wad:
+    alternatives:
+    - hexen.wad_1.1
+
+  hexdd.wad:
+    alternatives:
+    - hexdd.wad_1.1
+    - hexdd.wad_1.0
+
+  hexen-demo.wad:
+    alternatives:
+    - hexen.wad_demo_1.0
+
+  hexen.wad_demo_1.0:
+    distinctive_name: false
+    size: 10644136
+    look_for: [hexen.wad]
+
+  hexen.wad_demo_beta:
+    distinctive_name: false
+    size:  10615976
+    look_for: [hexen.wad]
+
+  hexdd.wad_1.1:
+    size: 4440584
+    look_for: [hexdd.wad]
+
+  hexdd.wad_1.0:
+    distinctive_name: false
+    size: 4429700
+    look_for: [hexdd.wad]
+
+  hexen.wad_1.1:
+    distinctive_name: false
+    size: 20083672
+    look_for: [hexen.wad]
+
+  hexen.wad_1.0:
+    distinctive_name: false
+    size:  20128392
+    look_for: [hexen.wad]
+
+  hexen.wad_beta:
+    distinctive_name: false
+    size: 20428208
+    look_for: [hexen.wad]
+
+  hexndemo.zip:
+    download:
+      idstuff-mirrors:
+        path: hexen
+    md5: b30672df8b41fd35fafe40ce0c3855c3
+    sha1: 02c3a8ac4417e17a3519524d96696111fe1c278c
+    sha256: 469ee3a254959d2fca624aec7391292fbd1ac3ebd9074b65f05cbc74de3c4572
+    size: 5664734
+    provides: [hexen.wad_demo_1.0]
+    unpack:
+      format: zip
+
+md5sums: |
+  9178a32a496ff5befebfe6c47dac106c  hexen.wad_demo_beta
+  876a5a44c7b68f04b3bb9bc7a5bd69d6  hexen.wad_demo_1.0
+  c88a2bb3d783e2ad7b599a8e301e099e  hexen.wad_beta
+  b2543a03521365261d0a0f74d5dd90f0  hexen.wad_1.0
+  abb033caf81e26f12a2103e1fa25453f  hexen.wad_1.1
+  1077432e2690d390c256ac908b5f4efa  hexdd.wad_1.0
+  78d5898e99e220e4de64edaa0e479593  hexdd.wad_1.1
+
+sha1sums: |
+  fa89a2475855e43c7f7e3198d6e4c4bee23bfab9  hexen.wad_demo_1.0
+  4b53832f0733c1e29e5f1de2428e5475e891af29  hexen.wad_1.1
+  c3065527d62b05a930fe75fe8181a64fb1982976  hexdd.wad_1.0
+  081f6a2024643b54ef4a436a85508539b6d20a1e  hexdd.wad_1.1
+
+...
+# vim:set sw=2 sts=2 et:
diff --git a/doom-common.mk b/doom-common.mk
deleted file mode 100644
index b8ac970..0000000
--- a/doom-common.mk
+++ /dev/null
@@ -1,77 +0,0 @@
-# "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
diff --git a/lib/doom-common b/lib/doom-common
deleted file mode 100644
index 9491169..0000000
--- a/lib/doom-common
+++ /dev/null
@@ -1,41 +0,0 @@
-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"
-}
diff --git a/lib/game_data_packager/__init__.py b/lib/game_data_packager/__init__.py
index 02f1d11..ad7c074 100644
--- a/lib/game_data_packager/__init__.py
+++ b/lib/game_data_packager/__init__.py
@@ -271,6 +271,7 @@ class GameDataPackage(object):
 class GameData(object):
     def __init__(self,
             shortname,
+            yaml_data,
             workdir=None):
         # The name of the game for command-line purposes, e.g. quake3
         self.shortname = shortname
@@ -298,8 +299,7 @@ class GameData(object):
         # Steam ID and path
         self.steam = {}
 
-        self.yaml = yaml.load(open(os.path.join(DATADIR,
-            shortname + '.yaml')))
+        self.yaml = yaml_data
 
         self.argument_parser = None
 
@@ -316,7 +316,7 @@ class GameData(object):
                 raise AssertionError('try_repack_from should be str or list')
 
         if 'package' in self.yaml:
-            package = GameDataPackage(self.yaml['package'])
+            package = self.construct_package(self.yaml['package'])
             self.packages[self.yaml['package']] = package
             assert 'packages' not in self.yaml
         else:
@@ -359,7 +359,7 @@ class GameData(object):
                 assert 'sha1sums' not in data, binary
                 assert 'sha256sums' not in data, binary
 
-                package = GameDataPackage(binary)
+                package = self.construct_package(binary)
                 self.packages[binary] = package
                 self._populate_package(package, data)
 
@@ -1000,20 +1000,29 @@ class GameData(object):
 
         return complete
 
+    def fill_docs(self, package, docdir):
+        shutil.copyfile(os.path.join(DATADIR, package.name + '.copyright'),
+                os.path.join(docdir, 'copyright'))
+
+    def fill_extra_files(self, package, destdir):
+        pass
+
     def fill_dest_dir(self, package, destdir):
         if not self.check_complete(package, log=True):
             return False
 
         docdir = os.path.join(destdir, 'usr/share/doc', package.name)
         mkdir_p(docdir)
-        shutil.copyfile(os.path.join(DATADIR, package.name + '.copyright'),
-                os.path.join(docdir, 'copyright'))
         shutil.copyfile(os.path.join(DATADIR, 'changelog.gz'),
                 os.path.join(docdir, 'changelog.gz'))
 
+        self.fill_docs(package, docdir)
+
         debdir = os.path.join(destdir, 'DEBIAN')
         mkdir_p(debdir)
 
+        self.fill_extra_files(package, destdir)
+
         for ms in ('preinst', 'postinst', 'prerm', 'postrm'):
             maintscript = os.path.join(DATADIR, package.name + '.' + ms)
             if os.path.isfile(maintscript):
@@ -1080,20 +1089,27 @@ class GameData(object):
                 shell=True, cwd=destdir)
         os.chmod(os.path.join(destdir, 'DEBIAN/md5sums'), 0o644)
 
-        control_in = open(os.path.join(DATADIR,
-            package.name + '.control.in'))
+        control_in = open(self.get_control_template(package))
         control = Deb822(control_in)
+        self.modify_control_template(control, package, destdir)
+        control.dump(fd=open(os.path.join(debdir, 'control'), 'wb'),
+                encoding='utf-8')
+        os.chmod(os.path.join(debdir, 'control'), 0o644)
+
+        return True
+
+    def modify_control_template(self, control, package, destdir):
         size = subprocess.check_output(['du', '-sk', '--exclude=./DEBIAN',
             '.'], cwd=destdir).decode('utf-8').rstrip('\n')
+        assert control['Package'] in ('PACKAGE', package.name)
+        control['Package'] = package.name
         control['Installed-Size'] = size
         package.version = control['Version'].replace('VERSION',
                 GAME_PACKAGE_VERSION)
         control['Version'] = package.version
-        control.dump(fd=open(os.path.join(debdir, 'control'), 'wb'),
-                encoding='utf-8')
-        os.chmod(os.path.join(debdir, 'control'), 0o644)
 
-        return True
+    def get_control_template(self, package):
+        return os.path.join(DATADIR, package.name + '.control.in')
 
     def add_parser(self, parsers):
         parser = parsers.add_parser(self.shortname,
@@ -1303,31 +1319,48 @@ class GameData(object):
                             logger.debug('possible Steam installation at %s', path)
                             yield path
 
-def run_command_line():
-    workdir = os.environ['WORKDIR']
-    logger.debug('Arguments: %r', sys.argv)
-
-    parser = argparse.ArgumentParser(prog='game-data-packager',
-            description='Package game files.')
+    def construct_package(self, binary):
+        return GameDataPackage(binary)
 
+def load_yaml_games(workdir=None):
     games = {}
 
     for yamlfile in glob.glob(os.path.join(DATADIR, '*.yaml')):
-        g = os.path.basename(yamlfile)
-        g = g[:len(g) - 5]
-
         try:
-            plugin = importlib.import_module('game_data_packager.games.%s' % g)
-            game_data_constructor = plugin.GAME_DATA_SUBCLASS
-        except (ImportError, AttributeError) as e:
-            logger.debug('No special code for %s: %s', g, e)
-            game_data_constructor = GameData
+            g = os.path.basename(yamlfile)
+            g = g[:len(g) - 5]
+
+            yaml_data = yaml.load(open(yamlfile))
+
+            plugin = yaml_data.get('plugin', g)
+
+            try:
+                plugin = importlib.import_module('game_data_packager.games.%s' %
+                        plugin)
+                game_data_constructor = plugin.GAME_DATA_SUBCLASS
+            except (ImportError, AttributeError) as e:
+                logger.debug('No special code for %s: %s', g, e)
+                game_data_constructor = GameData
 
-        games[g] = game_data_constructor(g, workdir=workdir)
+            games[g] = game_data_constructor(g, yaml_data, workdir=workdir)
+        except:
+            print('Error loading %s:\n' % yaml)
+            raise
+
+    return games
+
+def run_command_line():
+    workdir = os.environ['WORKDIR']
+    logger.debug('Arguments: %r', sys.argv)
+
+    parser = argparse.ArgumentParser(prog='game-data-packager',
+            description='Package game files.')
 
     game_parsers = parser.add_subparsers(dest='shortname',
             title='supported games', metavar='GAME')
 
+    games = load_yaml_games(workdir)
+
     for g in sorted(games.keys()):
         games[g].add_parser(game_parsers)
 
diff --git a/lib/game_data_packager/check_syntax.py b/lib/game_data_packager/check_syntax.py
index e4de1ed..6c1f86f 100644
--- a/lib/game_data_packager/check_syntax.py
+++ b/lib/game_data_packager/check_syntax.py
@@ -15,17 +15,7 @@
 # You can find the GPL license text on a Debian system under
 # /usr/share/common-licenses/GPL-2.
 
-import glob
-import os
-import os.path
-
-from . import GameData
-from .paths import DATADIR
+from . import load_yaml_games
 
 if __name__ == '__main__':
-    for yaml in glob.glob(DATADIR + '/*.yaml'):
-        try:
-            GameData(os.path.splitext(os.path.basename(yaml))[0])
-        except:
-            print('Error loading %s:\n' % yaml)
-            raise
+    load_yaml_games()
diff --git a/lib/game_data_packager/games/doom_common.py b/lib/game_data_packager/games/doom_common.py
new file mode 100644
index 0000000..4b46e2b
--- /dev/null
+++ b/lib/game_data_packager/games/doom_common.py
@@ -0,0 +1,132 @@
+#!/usr/bin/python3
+# vim:set fenc=utf-8:
+#
+# Copyright © 2015 Simon McVittie <smcv at debian.org>
+#
+# 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; either version 2
+# of the License, or (at your option) any later version.
+#
+# 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.
+#
+# You can find the GPL license text on a Debian system under
+# /usr/share/common-licenses/GPL-2.
+
+import logging
+import os
+import subprocess
+
+from .. import GameData, GameDataPackage
+from ..paths import DATADIR
+from ..util import TemporaryUmask, mkdir_p
+
+logger = logging.getLogger('game-data-packager.games.doom-common')
+
+def install_data(from_, to):
+    subprocess.check_call(['cp', '--reflink=auto', from_, to])
+
+def subst(from_, to, **kwargs):
+    for line in from_:
+        for k, v in kwargs.items():
+            line = line.replace(k, v)
+        to.write(line)
+
+class WadPackage(GameDataPackage):
+    @property
+    def main_wad(self):
+        for f in self.install:
+            if f == 'voices.wad':
+                # ignore Strife voices
+                continue
+
+            if f.endswith('.wad'):
+                return f
+        else:
+            raise AssertionError('Wad packages must install one .wad file')
+
+class DoomGameData(GameData):
+    def __init__(self, shortname, yaml_data, workdir=None):
+        super(DoomGameData, self).__init__(shortname, yaml_data,
+                workdir=workdir)
+
+        self.engine = self.yaml.get('doom_engine', 'doom')
+
+        for package in self.packages.values():
+            assert package.main_wad is not None
+
+    def construct_package(self, binary):
+        return WadPackage(binary)
+
+    def get_control_template(self, package):
+        for name in (package.name, self.shortname, 'doom-common'):
+            path = os.path.join(DATADIR, '%s.control.in' % name)
+            if os.path.exists(path):
+                return path
+        else:
+            raise AssertionError('doom-common.control.in should exist')
+
+    def modify_control_template(self, control, package, destdir):
+        super(DoomGameData, self).modify_control_template(control, package,
+                destdir)
+
+        wad_base = os.path.splitext(package.main_wad)[0]
+
+        desc = control['Description']
+        desc = desc.replace('ENGINE', self.engine)
+        desc = desc.replace('GAME', wad_base)
+        desc = desc.replace('LONG', (package.longname or self.longname))
+        control['Description'] = desc
+
+    def fill_docs(self, package, docdir):
+        main_wad = package.main_wad
+
+        subst(
+                open(os.path.join(DATADIR, 'doom-common.README.Debian.in')),
+                open(os.path.join(docdir, 'README.Debian'), 'w'),
+                PACKAGE=package.name,
+                GAME=(package.longname or self.longname))
+        subst(
+                open(os.path.join(DATADIR, 'doom-common.copyright.in')),
+                open(os.path.join(docdir, 'copyright'), 'w'),
+                PACKAGE=package.name,
+                IWAD=main_wad)
+
+    def fill_extra_files(self, package, destdir):
+        super(DoomGameData, self).fill_extra_files(package, destdir)
+
+        main_wad = package.main_wad
+        wad_base = os.path.splitext(main_wad)[0]
+
+        with TemporaryUmask(0o022):
+            pixdir = os.path.join(destdir, 'usr/share/pixmaps')
+            mkdir_p(pixdir)
+            # FIXME: would be nice if non-Doom games could replace this
+            # Cacodemon with something appropriate
+            install_data(os.path.join(DATADIR, 'doom2.xpm'),
+                    os.path.join(pixdir, '%s.xpm' % wad_base))
+
+            docdir = os.path.join(destdir, 'usr/share/doc/%s' % package.name)
+            mkdir_p(docdir)
+
+            appdir = os.path.join(destdir, 'usr/share/applications')
+            mkdir_p(appdir)
+            subst(
+                    open(os.path.join(DATADIR, 'doom-common.desktop.in')),
+                    open(os.path.join(appdir, '%s.desktop' % package.name),
+                        'w'),
+                    GAME=wad_base,
+                    LONG=(package.longname or self.longname),
+                    ENGINE=self.engine)
+
+            debdir = os.path.join(destdir, 'DEBIAN')
+            mkdir_p(debdir)
+            subst(
+                    open(os.path.join(DATADIR, 'doom-common.preinst.in')),
+                    open(os.path.join(debdir, 'preinst'), 'w'),
+                    IWAD=main_wad)
+            os.chmod(os.path.join(debdir, 'preinst'), 0o755)
+
+GAME_DATA_SUBCLASS = DoomGameData
diff --git a/supported/doom b/supported/doom
index 5ce09b6..33f79f7 100644
--- a/supported/doom
+++ b/supported/doom
@@ -1,22 +1,4 @@
-
 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
+. $LIBDIR/via-python
diff --git a/supported/doom2 b/supported/doom2
index 32b3e74..d2c97c5 100644
--- a/supported/doom2
+++ b/supported/doom2
@@ -1,18 +1,4 @@
-
 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
+. $LIBDIR/via-python
diff --git a/supported/heretic b/supported/heretic
index 8a86092..45a8e15 100644
--- a/supported/heretic
+++ b/supported/heretic
@@ -1,18 +1,4 @@
 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
+. $LIBDIR/via-python
diff --git a/supported/hexen b/supported/hexen
index 793e6dd..c009f0e 100644
--- a/supported/hexen
+++ b/supported/hexen
@@ -1,18 +1,4 @@
 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
+. $LIBDIR/via-python
diff --git a/supported/plutonia b/supported/plutonia
index de45d7a..494b25d 100644
--- a/supported/plutonia
+++ b/supported/plutonia
@@ -1,19 +1,8 @@
 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/via-python
 
+go () {
+    gdp_data_driven final-doom "$@"
 }
-
-. $LIBDIR/doom-common
diff --git a/supported/tnt b/supported/tnt
index 570c2d5..36b50f8 100644
--- a/supported/tnt
+++ b/supported/tnt
@@ -1,20 +1,8 @@
-
 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/via-python
 
+go () {
+    gdp_data_driven final-doom "$@"
 }
-
-. $LIBDIR/doom-common

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/game-data-packager.git



More information about the Pkg-games-commits mailing list