This is an automated email from the git hooks/post-receive script. detiste-guest pushed a commit to branch master in repository game-data-packager.
commit f4c2ba7d513a401829f06a18f06b64ffe28af8b9 Author: Alexandre Detiste <[email protected]> Date: Sun May 31 12:19:29 2015 +0200 doom-common: rework main_wad str in main_wads dict that brings unified support for: - doom2-masterlevels-wad (empty dict) - strife (dict with 1 pwad) - compet_n (dict with 6 pwads) - <default> (dict with pwad = unique installed file) --- data/compet_n.yaml | 23 ++++++++++-- data/doom2.yaml | 3 +- data/strife.yaml | 2 ++ debian/changelog | 1 + doc/tags.txt | 2 +- game_data_packager/games/doom_common.py | 62 ++++++++++++++------------------- 6 files changed, 52 insertions(+), 41 deletions(-) diff --git a/data/compet_n.yaml b/data/compet_n.yaml index 0aac7a6..d2af67f 100644 --- a/data/compet_n.yaml +++ b/data/compet_n.yaml @@ -20,6 +20,25 @@ packages: expansion_for_ext: doom2-wad debian: recommends: doom2-wad | freedoom, doom-wad | freedoom + main_wads: + av.wad: + name: Alien Vendetta (2nd Ed.) + args: av.wad -deh av.deh + class_ep.wad: + name: The Classic Episode (1st Ed.) + args: -iwad doom.wad -warp 2 1 + hr.wad: + name: Hell Revealed + args: hrmus.wad + mm.wad: + name: Memento Mori + args: mmmus.wad + mm2.wad: + name: Memento Mori II + args: mm2mus.wad + requiem.wad: + name: Requiem + args: req21fix.wad reqmus.wad install_to: usr/share/games/doom install: - av.deh @@ -55,11 +74,11 @@ files: mm2.txt: install_to: $docdir mm2info.wad: - look_for: [mm2info.dat] + look_for: [mm2info.wad,mm2info.dat] requiem.txt: install_to: $docdir req21fix.wad: - look_for: [req21_competn.wad] + look_for: [req21fix.wad,req21_competn.wad] av_new.zip: download: http://doomedsda.us/lmps/84/av_new.zip diff --git a/data/doom2.yaml b/data/doom2.yaml index e88920a..3630a26 100644 --- a/data/doom2.yaml +++ b/data/doom2.yaml @@ -2,7 +2,6 @@ # Version reference: # http://doom.wikia.com/wiki/DOOM2.WAD # http://doomwiki.org/wiki/DOOM2.WAD -shortname: doom2 longname: "Doom 2: Hell on Earth" copyright: © 1994 id Software try_repack_from: @@ -43,7 +42,7 @@ packages: doom2-masterlevels-wad: longname: Master Levels for DOOM II expansion_for: doom2-wad - create_desktop_file: false + main_wads: {} steam: id: 9160 path: "common/Master Levels of Doom" diff --git a/data/strife.yaml b/data/strife.yaml index 1923478..e4d34b7 100644 --- a/data/strife.yaml +++ b/data/strife.yaml @@ -20,6 +20,8 @@ help_text: | packages: strife-data: + main_wads: + strife1.wad: {} steam: id: 317040 path: common/Strife diff --git a/debian/changelog b/debian/changelog index 2f9971d..c86843c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -10,6 +10,7 @@ game-data-packager (42) UNRELEASED; urgency=medium * add support for Simon the Sorcerer 1 & 2 * add support for Gobliiins (full game & demo) * add support for Leisure Suit Larry 1,2,3,5&6 + * add support for Compet-N PWAD's (Closes: #776061) -- Simon McVittie <[email protected]> Sun, 03 May 2015 14:34:00 +0200 diff --git a/doc/tags.txt b/doc/tags.txt index 17645dd..6802afe 100644 --- a/doc/tags.txt +++ b/doc/tags.txt @@ -33,7 +33,7 @@ packages: replaces: component: string copyright: string - create_desktop_file: bool (doom) + main_wads: dict (doom) gameid: (scummvm) install_to: string install_to_docdir: string (prefix) diff --git a/game_data_packager/games/doom_common.py b/game_data_packager/games/doom_common.py index ea98df5..c3fc744 100644 --- a/game_data_packager/games/doom_common.py +++ b/game_data_packager/games/doom_common.py @@ -21,31 +21,15 @@ import logging import os import subprocess -from .. import GameData, GameDataPackage +from .. import GameData from ..paths import DATADIR -from ..util import (TemporaryUmask, copy_with_substitutions, mkdir_p) +from ..util import (copy_with_substitutions, mkdir_p) logger = logging.getLogger('game-data-packager.games.doom-common') def install_data(from_, to): subprocess.check_call(['cp', '--reflink=auto', from_, to]) -class WadPackage(GameDataPackage): - def __init__(self, name): - super(WadPackage, self).__init__(name) - - @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): """Special subclass of GameData for games descended from Doom. These games install their own icon and .desktop file, and share a @@ -88,36 +72,36 @@ class DoomGameData(GameData): } for package in self.packages.values(): - assert package.main_wad is not None engine = package.engine or self.engine engine = engine.split('|')[-1].strip() package.program = package_map.get(engine, engine) - package.create_desktop_file = self.data['packages'][package.name].get( - 'create_desktop_file', True) + package.main_wads = self.data['packages'][package.name].get( + 'main_wads', {list(package.install)[0]: {}}) + assert type(package.main_wads) == dict + for main_wad in package.main_wads.values(): + assert type(main_wad) == dict package.data_type = 'PWAD' if (package.expansion_for or package.expansion_for_ext) else 'IWAD' - def construct_package(self, binary): - return WadPackage(binary) - def fill_extra_files(self, package, destdir): super(DoomGameData, self).fill_extra_files(package, destdir) - if not package.create_desktop_file: - return - main_wad = package.main_wad - wad_base = os.path.splitext(main_wad)[0] + for main_wad, quirks in package.main_wads.items(): + 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 - for basename in (package.name, self.shortname, 'doom-common'): + desktop_file = package.name + if len(package.main_wads) > 1: + desktop_file += '-' + wad_base + + for basename in (wad_base, package.name, self.shortname, 'doom-common'): from_ = os.path.join(DATADIR, basename + '.png') if os.path.exists(from_): install_data(from_, - os.path.join(pixdir, '%s.png' % wad_base)) + os.path.join(pixdir, '%s.png' % desktop_file)) break else: raise AssertionError('doom-common.png should have existed') @@ -128,7 +112,7 @@ class DoomGameData(GameData): 'usr/share/icons/hicolor/scalable/apps') mkdir_p(svgdir) install_data(from_, - os.path.join(svgdir, '%s.svgz' % wad_base)) + os.path.join(svgdir, '%s.svgz' % desktop_file)) docdir = os.path.join(destdir, 'usr/share/doc/%s' % package.name) mkdir_p(docdir) @@ -141,9 +125,13 @@ class DoomGameData(GameData): desktop['Desktop Entry'] = {} entry = desktop['Desktop Entry'] entry['Name'] = package.longname or self.longname + if 'name' in quirks: + entry['Name'] += ' - ' + quirks['name'] entry['GenericName'] = self.genre + ' game' entry['TryExec'] = package.program - if package.expansion_for: + if 'args' in quirks: + args = '-file ' + main_wad + ' ' + quirks['args'] + elif package.expansion_for: for f in self.packages[package.expansion_for].install: if f.endswith('.wad'): iwad = f @@ -155,22 +143,24 @@ class DoomGameData(GameData): else: args = '-iwad /usr/share/games/doom/' + main_wad entry['Exec'] = package.program + ' ' + args - entry['Icon'] = wad_base + entry['Icon'] = desktop_file entry['Terminal'] = 'false' entry['Type'] = 'Application' entry['Categories'] = 'Game' + entry['Keyword'] = wad_base - with open(os.path.join(appdir, '%s.desktop' % package.name), + with open(os.path.join(appdir, '%s.desktop' % desktop_file), 'w', encoding='utf-8') as output: desktop.write(output, space_around_delimiters=False) lintiandir = os.path.join(destdir, 'usr/share/lintian/overrides') mkdir_p(lintiandir) + with open(os.path.join(lintiandir, package.name), 'a', encoding='utf-8') as o: o.write('%s: desktop-command-not-in-package ' 'usr/share/applications/%s.desktop %s\n' - % (package.name, package.name, package.program)) + % (package.name, desktop_file, package.program)) debdir = os.path.join(destdir, 'DEBIAN') mkdir_p(debdir) -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/game-data-packager.git _______________________________________________ Pkg-games-commits mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-games-commits

