[game-data-packager] 01/01: add shortcut "mutually_exclusive"
Alexandre Detiste
detiste-guest at moszumanska.debian.org
Fri Nov 6 01:24:40 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 be876c0fc024dd93d4b1690740a5587bff550957
Author: Alexandre Detiste <alexandre.detiste at gmail.com>
Date: Fri Nov 6 02:23:50 2015 +0100
add shortcut "mutually_exclusive"
---
data/arx.yaml | 14 +++++++++-----
data/dune2.yaml | 9 +++------
data/operation-stealth.wip | 3 +--
data/rtcw.yaml | 20 +++++---------------
data/wolf3d.yaml | 9 +++------
game_data_packager/__init__.py | 6 ++++--
game_data_packager/build.py | 22 ++++++----------------
7 files changed, 31 insertions(+), 52 deletions(-)
diff --git a/data/arx.yaml b/data/arx.yaml
index f5f9295..788d8a7 100644
--- a/data/arx.yaml
+++ b/data/arx.yaml
@@ -22,8 +22,8 @@ packages:
install_to: usr/share/games/arx
debian:
replaces: arx-fatalis-demo-data
- conflicts: arx-fatalis-data
provides: arx-fatalis-data
+ mutually_exclusive: True
steam:
id: 1700
path: "common/Arx Fatalis"
@@ -77,8 +77,9 @@ packages:
install_to: usr/share/games/arx
demo_for: arx-fatalis-en-data
debian:
- conflicts: arx-fatalis-data, arx-fatalis-demo-data
+ conflicts: arx-fatalis-data
provides: arx-fatalis-demo-data
+ mutually_exclusive: True
install:
- arx.ttf?latin
- data.pak?demo_latin
@@ -94,8 +95,9 @@ packages:
# XXX need to package arx-fatalis-fr-data
demo_for: arx-fatalis-en-data
debian:
- conflicts: arx-fatalis-data, arx-fatalis-demo-data
+ conflicts: arx-fatalis-data
provides: arx-fatalis-demo-data
+ mutually_exclusive: True
install:
- arx.ttf?latin
- data.pak?demo_latin
@@ -111,8 +113,9 @@ packages:
# XXX need to package arx-fatalis-de-data
demo_for: arx-fatalis-en-data
debian:
- conflicts: arx-fatalis-data, arx-fatalis-demo-data
+ conflicts: arx-fatalis-data
provides: arx-fatalis-demo-data
+ mutually_exclusive: True
install:
- arx.ttf?latin
- data.pak?demo_latin
@@ -128,8 +131,9 @@ packages:
# XXX need to package arx-fatalis-ja-data
demo_for: arx-fatalis-en-data
debian:
- conflicts: arx-fatalis-data, arx-fatalis-demo-data
+ conflicts: arx-fatalis-data
provides: arx-fatalis-demo-data
+ mutually_exclusive: True
install:
- arx.ttf?ja
- data.pak?demo_ja
diff --git a/data/dune2.yaml b/data/dune2.yaml
index 9a507b9..d8d9df0 100644
--- a/data/dune2.yaml
+++ b/data/dune2.yaml
@@ -54,8 +54,7 @@ packages:
dune2-v17-us-data:
longname: "Dune II (v1.07/US)"
provides: dune2-data
- debian:
- conflicts: dune2-data
+ mutually_exclusive: True
install_to: usr/share/games/dunelegacy
install:
- ATRE.PAK
@@ -76,8 +75,7 @@ packages:
longname: "Dune II (v1.07/EU)"
langs: [en,de,fr]
provides: dune2-data
- debian:
- conflicts: dune2-data
+ mutually_exclusive: True
install_to: usr/share/games/dunelegacy
langs: [en,de,fr]
install:
@@ -102,8 +100,7 @@ packages:
longname: "Dune II (v1.07/HitSquad)"
langs: [en,de,fr]
provides: dune2-data
- debian:
- conflicts: dune2-data
+ mutually_exclusive: True
install_to: usr/share/games/dunelegacy
install:
- ATRE.PAK
diff --git a/data/operation-stealth.wip b/data/operation-stealth.wip
index 517dae6..e059d7b 100644
--- a/data/operation-stealth.wip
+++ b/data/operation-stealth.wip
@@ -69,8 +69,7 @@ packages:
operation-stealth-fr-data:
lang: fr
- debian:
- provides: operation-stealth-data
+ provides: operation-stealth-data
gameid: os-fr
install:
- egoubase?fr
diff --git a/data/rtcw.yaml b/data/rtcw.yaml
index 60cf9f7..a943819 100644
--- a/data/rtcw.yaml
+++ b/data/rtcw.yaml
@@ -27,9 +27,7 @@ help_text: |
packages:
rtcw-en-data:
provides: rtcw-data
- debian:
- conflicts: rtcw-data
- replaces: rtcw-data
+ mutually_exclusive: True
steam:
id: 9010
path: "common/Return to Castle Wolfenstein"
@@ -76,9 +74,7 @@ packages:
rtcw-de-data:
lang: de
provides: rtcw-data
- debian:
- conflicts: rtcw-data
- replaces: rtcw-data
+ mutually_exclusive: True
gog:
url: return_to_castle_wolfenstein
game: return_to_castle_wolfenstein_game
@@ -125,9 +121,7 @@ packages:
rtcw-es-data:
lang: es
provides: rtcw-data
- debian:
- conflicts: rtcw-data
- replaces: rtcw-data
+ mutually_exclusive: True
version: 1.42b
install_to: usr/share/games/rtcw
install:
@@ -165,9 +159,7 @@ packages:
rtcw-fr-data:
lang: fr
provides: rtcw-data
- debian:
- conflicts: rtcw-data
- replaces: rtcw-data
+ mutually_exclusive: True
version: 1.42b
install_to: usr/share/games/rtcw
install:
@@ -207,9 +199,7 @@ packages:
rtcw-it-data:
lang: it
provides: rtcw-data
- debian:
- conflicts: rtcw-data
- replaces: rtcw-data
+ mutually_exclusive: True
version: 1.42b
install_to: usr/share/games/rtcw
install:
diff --git a/data/wolf3d.yaml b/data/wolf3d.yaml
index b886163..6ccb8d8 100644
--- a/data/wolf3d.yaml
+++ b/data/wolf3d.yaml
@@ -50,8 +50,7 @@ packages:
* Episode 5: Trail of the Madman
* Episode 6: Confrontation
provides: wolf3d-data
- debian:
- conflicts: wolf3d-data
+ mutually_exclusive: True
install_to: usr/share/games/wolf3d
install:
- audiohed.wl6?1.0
@@ -76,8 +75,7 @@ packages:
* Episode 5: Trail of the Madman
* Episode 6: Confrontation
provides: wolf3d-data
- debian:
- conflicts: wolf3d-data
+ mutually_exclusive: True
fedora:
engine: wolf4sdl-registered-id
install_to: usr/share/wolf3d/registered-id
@@ -112,8 +110,7 @@ packages:
* Episode 5: Trail of the Madman
* Episode 6: Confrontation
provides: wolf3d-data
- debian:
- conflicts: wolf3d-data
+ mutually_exclusive: True
fedora:
engine: wolf4sdl-registered-id
install_to: usr/share/wolf3d/registered-id
diff --git a/game_data_packager/__init__.py b/game_data_packager/__init__.py
index e2f0cdb..b9448fa 100644
--- a/game_data_packager/__init__.py
+++ b/game_data_packager/__init__.py
@@ -199,6 +199,7 @@ class GameDataPackage(object):
self.expansion_for = None
# use this to group together dubs
self.provides = None
+ self.mutually_exclusive = False
# expansion for a package outside of this yaml file;
# may be another GDP package or a package not made by GDP
self.expansion_for_ext = None
@@ -782,7 +783,7 @@ class GameData(object):
def _populate_package(self, package, d):
for k in ('expansion_for', 'expansion_for_ext', 'longname', 'symlinks', 'install_to',
'install_to_docdir', 'install_contents_of', 'debian', 'description',
- 'rip_cd', 'architecture', 'aliases', 'better_version', 'langs',
+ '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'):
if k in d:
@@ -798,8 +799,9 @@ class GameData(object):
assert package.component == 'local' or 'license' in d
assert package.section in ('games', 'doc'), 'unsupported'
assert type(package.langs) is list
+ assert type(package.mutually_exclusive) is bool
- if 'provides' in d:
+ if 'provides' in d or package.mutually_exclusive:
assert type(package.provides) is str
if 'install_to' in d:
diff --git a/game_data_packager/build.py b/game_data_packager/build.py
index 9522796..07f6955 100644
--- a/game_data_packager/build.py
+++ b/game_data_packager/build.py
@@ -1436,6 +1436,8 @@ class PackagingTask(object):
spec.write('BuildArch: noarch\n')
if package.provides:
spec.write('Provides: %s\n' % package.provides)
+ if package.mutually_exclusive:
+ spec.write('Conflicts: %s\n' % package.provides)
if package.expansion_for:
spec.write('Requires: %s\n' % package.expansion_for)
else:
@@ -1673,6 +1675,9 @@ class PackagingTask(object):
if package.provides:
provides.add(package.provides)
+ if package.mutually_exclusive:
+ conflicts.add(package.provides)
+ replaces.add(package.provides)
engine = package.engine or self.game.engine
if '>=' in engine:
@@ -1697,13 +1702,7 @@ class PackagingTask(object):
"A package shouldn't extraneously provide itself"
# Shortcut: if A Replaces B, A automatically Conflicts B
- replace = package.debian.get('replaces')
- if replace:
- if isinstance(replace, str):
- conflicts.add(replace)
- elif isinstance(replace, list):
- for x in replace:
- conflicts.add(x)
+ conflicts |= replaces
if depends:
control['Depends'] = ', '.join(sorted(depends))
@@ -2274,15 +2273,6 @@ class PackagingTask(object):
lgogdownloaded = set()
for package in possible:
- abort = False
- for previous in ready:
- if previous.debian.get('conflicts') == package.name:
- logger.error('will not produce "%s" because it '
- 'conflicts with "%s"', package.name, previous.name)
- abort = True
- if abort:
- continue
-
logger.debug('will produce %s', package.name)
result = self.fill_gaps(package=package, download=download,
log=package.name not in possible_with_lgogdownloader,
--
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