[game-data-packager] 01/01: move asserts for 'debian:' dict to 'make check', trim mod_template
Alexandre Detiste
detiste-guest at moszumanska.debian.org
Fri Nov 6 09:42:39 UTC 2015
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 3c5ed0186c870f1a7827fb7e4f650cbdc7549e8d
Author: Alexandre Detiste <alexandre.detiste at gmail.com>
Date: Fri Nov 6 10:39:09 2015 +0100
move asserts for 'debian:' dict to 'make check', trim mod_template
this way errors are catched early, not when the package is
almost built
---
data/compet-n.yaml | 2 +-
data/doom.yaml | 2 +-
data/doom2.yaml | 2 +-
data/final-doom.yaml | 4 +--
data/quake2.yaml | 4 +--
data/rott.yaml | 2 ++
game_data_packager/__init__.py | 15 +++++++++
game_data_packager/build.py | 70 +++++++++++++-----------------------------
8 files changed, 45 insertions(+), 56 deletions(-)
diff --git a/data/compet-n.yaml b/data/compet-n.yaml
index d945b3b..8f2a135 100644
--- a/data/compet-n.yaml
+++ b/data/compet-n.yaml
@@ -20,7 +20,7 @@ packages:
# mostly, for 5 of 6 PWADS
expansion_for_ext: doom2-wad
debian:
- recommends: doom2-wad | freedoom, doom-wad | freedoom
+ recommends: ["doom2-wad | freedoom", "doom-wad | freedoom"]
main_wads:
av.wad:
name: Alien Vendetta (2nd Ed.)
diff --git a/data/doom.yaml b/data/doom.yaml
index ec5942a..504a45b 100644
--- a/data/doom.yaml
+++ b/data/doom.yaml
@@ -24,7 +24,7 @@ help_text: |
packages:
doom-wad:
debian:
- conflicts: freedoom (<< 0.6.4-4), freedm (<< 0.6.4-4)
+ conflicts: [freedoom (<< 0.6.4-4), freedm (<< 0.6.4-4)]
steam:
id: 2280
path: "common/Ultimate Doom"
diff --git a/data/doom2.yaml b/data/doom2.yaml
index 3fa6e38..e5cba44 100644
--- a/data/doom2.yaml
+++ b/data/doom2.yaml
@@ -21,7 +21,7 @@ packages:
langs: [en,fr]
debian:
provides: doom-wad
- conflicts: freedoom (<< 0.6.4-4), freedm (<< 0.6.4-4)
+ conflicts: ["freedoom (<< 0.6.4-4)", "freedm (<< 0.6.4-4)"]
steam:
id: 2300
path: "common/Doom 2"
diff --git a/data/final-doom.yaml b/data/final-doom.yaml
index a42e67e..1cdd0fe 100644
--- a/data/final-doom.yaml
+++ b/data/final-doom.yaml
@@ -27,7 +27,7 @@ packages:
aliases: [tnt, t]
debian:
provides: doom-wad
- conflicts: freedoom (<< 0.6.4-4), freedm (<< 0.6.4-4)
+ conflicts: ["freedoom (<< 0.6.4-4)", "freedm (<< 0.6.4-4)"]
install:
- tnt.wad
- tnt31.wad
@@ -42,7 +42,7 @@ packages:
aliases: [plutonia, p]
debian:
provides: doom-wad
- conflicts: freedoom (<< 0.6.4-4), freedm (<< 0.6.4-4)
+ conflicts: ["freedoom (<< 0.6.4-4)", "freedm (<< 0.6.4-4)"]
install:
- plutonia.wad
optional:
diff --git a/data/quake2.yaml b/data/quake2.yaml
index f2066c2..dec7a76 100644
--- a/data/quake2.yaml
+++ b/data/quake2.yaml
@@ -112,7 +112,7 @@ packages:
id: 2330
path: "common/Quake 2/xatrix"
debian:
- build-depends: gcc, make, libc6-dev
+ build-depends: [gcc, make, libc6-dev]
provides: quake2-xatrix
conflicts: quake2-xatrix
replaces: quake2-xatrix
@@ -165,7 +165,7 @@ packages:
gog:
url: quake_ii_quad_damage
debian:
- build-depends: gcc, make, libc6-dev
+ build-depends: [gcc, make, libc6-dev]
provides: quake2-rogue
conflicts: quake2-rogue
replaces: quake2-rogue
diff --git a/data/rott.yaml b/data/rott.yaml
index 8acbbc6..db108fb 100644
--- a/data/rott.yaml
+++ b/data/rott.yaml
@@ -26,6 +26,8 @@ packages:
# it includes the HUNT Begin levels not present in the commercial game
description: |
Use the 'rott-shareware' command to play this game.
+ debian:
+ suggests: rott-registered-data
install:
- DEMO1_3.DMO
- DEMO2_3.DMO
diff --git a/game_data_packager/__init__.py b/game_data_packager/__init__.py
index b9448fa..d6c00eb 100644
--- a/game_data_packager/__init__.py
+++ b/game_data_packager/__init__.py
@@ -801,8 +801,23 @@ class GameData(object):
assert type(package.langs) is list
assert type(package.mutually_exclusive) is bool
+ if 'debian' in d:
+ assert type(package.debian) is dict
+ for k, v in package.debian.items():
+ assert k in ('breaks', 'conflicts', 'depends', 'provides',
+ 'recommends', 'replaces', 'suggests',
+ 'build-depends'), (package.name, package.debian)
+ assert type(v) in (str, list), (package.name, package.debian)
+ if type(v) == str:
+ assert ',' not in v, (package.name, package.debian)
+ package.debian[k] = list([v])
+ assert package.name not in v, \
+ "A package shouldn't extraneously %s itself" % k
+
if 'provides' in d or package.mutually_exclusive:
assert type(package.provides) is str
+ assert package.name != package.provides, \
+ "A package shouldn't extraneously provide itself"
if 'install_to' in d:
if package.install_to.startswith('$assets/'):
diff --git a/game_data_packager/build.py b/game_data_packager/build.py
index 07f6955..9e33798 100644
--- a/game_data_packager/build.py
+++ b/game_data_packager/build.py
@@ -1652,72 +1652,44 @@ class PackagingTask(object):
else:
control['Architecture'] = self.get_architecture(package.architecture)
- def read_control_set(package, field):
- result = set()
- value = package.debian.get(field.lower())
- if isinstance(value, str):
- result.add(value)
- elif isinstance(value, list):
- for x in value:
- result.add(x)
- elif value is not None:
- raise AssertionError('%s: debian.%s should be str or list' %
- (package.name, field.lower()))
- return result
-
- depends = read_control_set(package, 'Depends')
- recommends = read_control_set(package, 'Recommends')
- suggests = read_control_set(package, 'Suggests')
- provides = read_control_set(package, 'Provides')
- replaces = read_control_set(package, 'Replaces')
- conflicts = read_control_set(package, 'Conflicts')
- breaks = read_control_set(package, 'Breaks')
+ dep = dict()
+ for field in ('breaks', 'conflicts', 'depends', 'provides',
+ 'recommends', 'replaces', 'suggests'):
+ dep[field] = set(package.debian.get(field,[]))
if package.provides:
- provides.add(package.provides)
+ dep['provides'].add(package.provides)
if package.mutually_exclusive:
- conflicts.add(package.provides)
- replaces.add(package.provides)
+ dep['conflicts'].add(package.provides)
+ dep['replaces'].add(package.provides)
engine = package.engine or self.game.engine
- if '>=' in engine:
- breaks.add(engine.replace('>=', '<<'))
+ if engine and '>=' in engine:
+ dep['breaks'].add(engine.replace('>=', '<<'))
engine = engine.split()[0]
if package.expansion_for:
# check if default heuristic has been overriden in yaml
- for p in depends:
+ for p in dep['depends']:
if package.expansion_for == p.split()[0]:
break
else:
- depends.add(package.expansion_for)
+ dep['depends'].add(package.expansion_for)
+
if package.engine:
- recommends.add(engine)
+ dep['recommends'].add(engine)
elif not package.expansion_for and self.game.engine:
- recommends.add(engine)
+ dep['recommends'].add(engine)
for other_package in self.game.packages.values():
if other_package.expansion_for == package.name:
- suggests.add(other_package.name)
- assert package.name not in provides, \
- "A package shouldn't extraneously provide itself"
+ dep['suggests'].add(other_package.name)
# Shortcut: if A Replaces B, A automatically Conflicts B
- conflicts |= replaces
-
- if depends:
- control['Depends'] = ', '.join(sorted(depends))
- if recommends:
- control['Recommends'] = ', '.join(sorted(recommends))
- if suggests:
- control['Suggests'] = ', '.join(sorted(suggests))
- if provides:
- control['Provides'] = ', '.join(sorted(provides))
- if replaces:
- control['Replaces'] = ', '.join(sorted(replaces))
- if conflicts:
- control['Conflicts'] = ', '.join(sorted(conflicts))
- if breaks:
- control['Breaks'] = ', '.join(sorted(breaks))
+ dep['conflicts'] |= dep['replaces']
+
+ for k, v in dep.items():
+ if v:
+ control[k.title()] = ', '.join(sorted(v))
if 'Description' not in control:
short_desc, long_desc = self.generate_description(package)
@@ -2192,7 +2164,7 @@ class PackagingTask(object):
for package in set(possible):
if 'build-depends' in package.debian:
- for tool in package.debian['build-depends'].split(','):
+ for tool in package.debian['build-depends']:
tool = tool.strip()
if not which(tool) and not PACKAGE_CACHE.is_installed(tool):
logger.error('package "%s" is needed to build "%s"' %
--
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