[game-data-packager] 01/01: make internal 'depends:' work cross-distro
Alexandre Detiste
detiste-guest at moszumanska.debian.org
Wed Jan 6 10:09:26 UTC 2016
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 <alexandre.detiste at gmail.com>
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
More information about the Pkg-games-commits
mailing list