[game-data-packager] 01/01: add stubby multi-CD support (#800590)

Alexandre Detiste detiste-guest at moszumanska.debian.org
Sun Oct 11 07:50:32 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 76d26194fb44f410cee826539c57ccd08c241e4d
Author: Alexandre Detiste <alexandre.detiste at gmail.com>
Date:   Sun Oct 11 09:49:44 2015 +0200

    add stubby multi-CD support (#800590)
---
 data/brokensword1.yaml         |  1 +
 data/feeble-files.yaml         |  1 +
 data/grimfandango.yaml         |  1 +
 data/zork-inquisitor.yaml      |  1 +
 game_data_packager/__init__.py | 36 ++++++++++++++++++++++++++++++++----
 5 files changed, 36 insertions(+), 4 deletions(-)

diff --git a/data/brokensword1.yaml b/data/brokensword1.yaml
index 7087d2c..2bee258 100644
--- a/data/brokensword1.yaml
+++ b/data/brokensword1.yaml
@@ -4,6 +4,7 @@ copyright: © 1996 Revolution Software
 plugin: scummvm_common
 gameid: sword1
 wiki: Broken_Sword_1
+disks: 2
 
 # http://wiki.scummvm.org/index.php/Datafiles#Broken_Sword:_The_Shadow_of_the_Templars
 
diff --git a/data/feeble-files.yaml b/data/feeble-files.yaml
index 4ac0719..51f51e3 100644
--- a/data/feeble-files.yaml
+++ b/data/feeble-files.yaml
@@ -4,6 +4,7 @@ copyright: © 1997 Adventure Soft
 plugin: scummvm_common
 wiki: Feeble_Files
 gameid: feeble
+disks: 4
 
 help_text: |
   The videos from the original English version are not yet supported;
diff --git a/data/grimfandango.yaml b/data/grimfandango.yaml
index 44e506f..a661fcc 100644
--- a/data/grimfandango.yaml
+++ b/data/grimfandango.yaml
@@ -4,6 +4,7 @@ copyright: © 1998 LucasArts Entertainment Company LLC
 plugin: residualvm_common
 gameid: grim
 wiki: Grim_Fandango
+disks: 2
 
 # xz compression reduces the full game from 1.3GB to 1.1GB, or the demo
 # from 71MB to 51MB... but it takes 10 minutes to do it (on a Core i7),
diff --git a/data/zork-inquisitor.yaml b/data/zork-inquisitor.yaml
index e6045db..43b82a1 100644
--- a/data/zork-inquisitor.yaml
+++ b/data/zork-inquisitor.yaml
@@ -4,6 +4,7 @@ franchise: Zork
 copyright: © 1997 Activision
 plugin: scummvm_common
 wiki: "Zork:_Grand_Inquisitor"
+disks: 2
 
 help_text: |
   For all versions: you need to first install the package fonts-liberation.
diff --git a/game_data_packager/__init__.py b/game_data_packager/__init__.py
index 57f5287..70c6923 100644
--- a/game_data_packager/__init__.py
+++ b/game_data_packager/__init__.py
@@ -191,6 +191,10 @@ class GameDataPackage(object):
         # CD audio stuff from YAML
         self.rip_cd = {}
 
+        # possible override for disks: tag at top level
+        # e.g.: Feeble Files had 2-CD releases too
+        self.disks = None
+
         # Debian architecture(s)
         self.architecture = 'all'
 
@@ -326,6 +330,9 @@ class GameData(object):
         # Subset of packages.values() with nonempty rip_cd
         self.rip_cd_packages = set()
 
+        # Number of CD the full game was sold on
+        self.disks = None
+
         self.help_text = ''
 
         # Extra directories where we might find game files
@@ -354,7 +361,7 @@ class GameData(object):
         # list: arbitrary options (e.g. -z9 -Zgz -Sfixed)
         self.compress_deb = True
 
-        for k in ('longname', 'copyright', 'compress_deb', 'help_text', 
+        for k in ('longname', 'copyright', 'compress_deb', 'help_text', 'disks',
                   'engine', 'genre', 'missing_langs', 'franchise', 'wiki', 'wikibase',
                   'steam', 'gog', 'dotemu', 'origin', 'url_misc', 'wikipedia'):
             if k in self.data:
@@ -459,19 +466,36 @@ class GameData(object):
                               dotemu_pp, dotemu_id)
 
     def edit_help_text(self):
-        if len(self.packages) > 1:
+        if len(self.packages) > 1 or self.disks:
             prepend = '\npackages possible for this game:\n'
             help = []
+            has_multi_cd = False
             for package in self.packages.values():
+                disks = package.disks or self.disks or 1
+                longname = package.longname or self.longname
+                if disks > 1:
+                    has_multi_cd = True
+                    longname += ' (%dCD)' % disks
                 game_type = { 'demo' : 1,
                               'full' : 2,
                               'expansion' : 3}.get(package.type)
                 help.append({ 'type' : game_type,
                               'year' : package.copyright or self.copyright,
                               'name' : package.name,
-                              'longname': package.longname or self.longname})
+                              'longname': longname})
             for h in sorted(help, key=lambda k: (k['type'], k['year'][2:6], k['name'])):
                 prepend += "  %-40s %s\n" % (h['name'],h['longname'])
+            if has_multi_cd and self.shortname != 'zork-inquisitor':
+                prepend += "\nWARNING: for multi-cd games, you'll first need to ensure that all the data\n"
+                prepend += "         is accessible simultaneously, e.g. copy data from CD1 to CD3 in /tmp/cd{1-3}\n"
+                prepend += "         and let CD4 *mounted* in the drive.\n\n"
+                prepend += "         It's important to first mkdir '/tmp/cd1 /tmp/cd2 /tmp/cd3' because for some\n"
+                prepend += "         games there are different files accross the disks with the same name that\n"
+                prepend += "         would be overwriten.\n\n"
+                prepend += "         If /tmp/ is on a tmpfs and you don't have something like 16GB of RAM,\n"
+                prepend += "         you'll likely need to store the files somewhere else.\n\n"
+                prepend += "         The game can then be packaged this way:\n"
+                prepend += "         $ game-data-packager {game} /tmp/cd1 /tmp/cd2 /tmp/cd3 /media/cdrom0\n\n"
             self.help_text = prepend + '\n' + self.help_text
 
         if self.missing_langs:
@@ -546,7 +570,7 @@ class GameData(object):
         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',
-                'copyright', 'engine', 'lang', 'component', 'section',
+                'copyright', 'engine', 'lang', 'component', 'section', 'disks',
                 'steam', 'gog', 'dotemu', 'origin', 'url_misc', 'wiki'):
             if k in d:
                 setattr(package, k, d[k])
@@ -562,6 +586,8 @@ class GameData(object):
                 "install_to %s is extraneous" % package.name
 
         if 'demo_for' in d:
+            if package.disks is None:
+                package.disks = 1
             if type(d['demo_for']) is str:
                 package.demo_for.add(d['demo_for'])
             else:
@@ -576,6 +602,8 @@ class GameData(object):
                 package.longname = self.longname + ' (%s)' % package.lang
 
         if 'expansion_for' in d:
+            if package.disks is None:
+                package.disks = 1
             assert package.name != d['expansion_for'], \
                    "a game can't be an expansion for itself"
             if 'demo_for' in d:

-- 
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