[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