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 39cc0829aedb8ec5bde297642b5892210b002584 Author: Alexandre Detiste <[email protected]> Date: Wed Jan 6 11:08:44 2016 +0100 make internal 'depends:' work cross-distro --- data/larry1.yaml | 2 +- data/rott.yaml | 3 +-- data/spear-of-destiny.yaml | 7 +++++-- game_data_packager/__init__.py | 29 ++++++++++++++++++++++++++--- game_data_packager/build.py | 6 +++++- 5 files changed, 38 insertions(+), 9 deletions(-) diff --git a/data/larry1.yaml b/data/larry1.yaml index 7db2d5f..da3326f 100644 --- a/data/larry1.yaml +++ b/data/larry1.yaml @@ -60,7 +60,7 @@ packages: longname: "Leisure Suit Larry Hits and Misses booklet" copyright: © 1987-1994 Sierra On-Line section: doc - expansion_for: larry1-en-data + expansion_for: larry1-data debian: depends: larry1-data | larry1-vga-data | larry2-data | larry3-data | larry5-data | larry6-data install: diff --git a/data/rott.yaml b/data/rott.yaml index 40479fc..a8fd174 100644 --- a/data/rott.yaml +++ b/data/rott.yaml @@ -48,8 +48,7 @@ packages: This doesn't include the shareware episode "The HUNT Begins". Use the 'rott-commercial' command to play this game. - debian: - depends: rott-data + depends: rott-data fedora: engine: rott-registered url_misc: https://3drealms.com/catalog/rise-triad-dark-war_44/ diff --git a/data/spear-of-destiny.yaml b/data/spear-of-destiny.yaml index 72b802b..38e8a6a 100644 --- a/data/spear-of-destiny.yaml +++ b/data/spear-of-destiny.yaml @@ -60,12 +60,12 @@ packages: description: | This package provides the assets shared by the 3 mission packs of Spear of Destiny, the sequel of Wolfenstein 3D, but has no use alone. - debian: - depends: spear-of-destiny-mission1-data | spear-of-destiny-mission2-data | spear-of-destiny-mission3-data + depends: spear-of-destiny-mission1-data | spear-of-destiny-mission2-data | spear-of-destiny-mission3-data install_to: usr/share/games/wolf3d fedora: engine: wolf4sdl-spear install_to: usr/share/spear/full + depends: spear-of-destiny-mission-pack install: - audiohed.sod - audiot.sod @@ -83,6 +83,7 @@ packages: install_to: usr/share/games/wolf3d fedora: install_to: usr/share/spear/full + provides: spear-of-destiny-mission-pack install: - gamemaps.sd1 - maphead.sd1 @@ -100,6 +101,7 @@ packages: install_to: usr/share/games/wolf3d fedora: install_to: usr/share/spear/full + provides: spear-of-destiny-mission-pack install: - gamemaps.sd2 - maphead.sd2 @@ -113,6 +115,7 @@ packages: install_to: usr/share/games/wolf3d fedora: install_to: usr/share/spear/full + provides: spear-of-destiny-mission-pack install: - gamemaps.sd3 - maphead.sd3 diff --git a/game_data_packager/__init__.py b/game_data_packager/__init__.py index bf8528a..5649aec 100644 --- a/game_data_packager/__init__.py +++ b/game_data_packager/__init__.py @@ -57,6 +57,7 @@ class WantedFile(HashedFile): self.alternatives = [] self.doc = False self.group_members = None + self._depends = set() self._distinctive_name = None self.distinctive_size = False self.download = None @@ -207,6 +208,11 @@ class GameDataPackage(object): # may be another GDP package or a package not made by GDP self.expansion_for_ext = None + # distro-agnostic depedencies inside the same .yaml file + # that can't be handled with expansion_for heuristics + # *) on Fedora this maps to 'Requires:' + self._depends = set() + # The optional marketing name of this version self.longname = None @@ -329,6 +335,16 @@ class GameDataPackage(object): return None @property + def depends(self): + return self._depends + @depends.setter + def depends(self, value): + if type(value) is str: + self._depends = set([value]) + else: + self._depends = set(value) + + @property def install_contents_of(self): return self._install_contents_of @install_contents_of.setter @@ -409,6 +425,7 @@ class GameDataPackage(object): 'better_version', 'copyright', 'copyright_notice', + 'depends', 'description', 'disks', 'engine', @@ -792,7 +809,7 @@ class GameData(object): def _populate_package(self, package, d): for k in ('expansion_for', 'expansion_for_ext', 'longname', 'symlinks', 'install_to', - 'install_contents_of', 'debian', 'description', + 'install_contents_of', 'debian', 'description', 'depends', 'rip_cd', 'architecture', 'aliases', 'better_version', 'langs', 'mutually_exclusive', 'copyright', 'engine', 'lang', 'component', 'section', 'disks', 'provides', 'steam', 'gog', 'dotemu', 'origin', 'url_misc', 'wiki', 'copyright_notice', @@ -802,16 +819,22 @@ class GameData(object): for port in ('debian', 'rpm'): if FORMAT == port and port in d: - for k in ('engine', 'install_to', 'description'): + for k in ('engine', 'install_to', 'description', 'depends', 'provides'): if k in d[port]: setattr(package, k, d[port][k]) for port in ('arch', 'fedora', 'suse'): if DISTRO == port and port in d: - for k in ('engine', 'install_to', 'description'): + for k in ('engine', 'install_to', 'description', 'depends', 'provides'): if k in d[port]: setattr(package, k, d[port][k]) + # Fedora doesn't handle alternatives, everything must be handled with + # virtual packages + if FORMAT == 'rpm': + for dep in package.depends: + assert '|' not in dep, (package.name, package.depends) + assert self.copyright or package.copyright, package.name assert package.component in ('main', 'contrib', 'non-free', 'local') assert package.component == 'local' or 'license' in d diff --git a/game_data_packager/build.py b/game_data_packager/build.py index 9c48648..fb9e200 100644 --- a/game_data_packager/build.py +++ b/game_data_packager/build.py @@ -1508,6 +1508,8 @@ class PackagingTask(object): engine = package.engine or self.game.engine if engine and len(engine.split()) == 1: spec.write('Requires: %s\n' % engine) + for p in package.depends: + spec.write('Requires: %s\n' % p) if not compress or not self.compress_deb or package.rip_cd: spec.write('%define _binary_payload w0.gzdio\n') elif self.compress_deb == ['-Zgzip', '-z1']: @@ -1712,10 +1714,12 @@ class PackagingTask(object): control['Architecture'] = self.get_architecture(package.architecture) dep = dict() - for field in ('breaks', 'conflicts', 'depends', 'provides', + for field in ('breaks', 'conflicts', 'provides', 'recommends', 'replaces', 'suggests'): dep[field] = set(package.debian.get(field,[])) + dep['depends'] = package.depends + if package.mutually_exclusive: dep['conflicts'] |= package.demo_for if package.better_version: -- 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

