[game-data-packager] 02/02: zip files: 7z & unar can also handle old PKZIP1.0 archives

Alexandre Detiste detiste-guest at moszumanska.debian.org
Mon Jun 22 11:08:56 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 949b3c041330a1eb29614bc0d4f2abc84343f18d
Author: Alexandre Detiste <alexandre.detiste at gmail.com>
Date:   Mon Jun 22 13:08:17 2015 +0200

    zip files: 7z & unar can also handle old PKZIP1.0 archives
---
 data/wolf3d.yaml               |  4 ++--
 game_data_packager/__init__.py | 15 ++++++++-------
 2 files changed, 10 insertions(+), 9 deletions(-)

diff --git a/data/wolf3d.yaml b/data/wolf3d.yaml
index 75c048e..b616264 100644
--- a/data/wolf3d.yaml
+++ b/data/wolf3d.yaml
@@ -117,8 +117,8 @@ files:
       encoding: cp437
       # 'zip' trigger this: NotImplementedError: compression type 6 (implode)
       unpack:
-      - maphead.wl6
-      - gamemaps.wl6
+      - MAPHEAD.WL6
+      - GAMEMAPS.WL6
 
   audiohed.wl6_1.0:
     install_as: audiohed.wl6
diff --git a/game_data_packager/__init__.py b/game_data_packager/__init__.py
index 12fcd0d..d5a53c2 100644
--- a/game_data_packager/__init__.py
+++ b/game_data_packager/__init__.py
@@ -1685,7 +1685,7 @@ class GameData(object):
                     # for at least Theme Hospital the files we want are
                     # actually in subdirectories, so we search recursively
                     self.consider_file_or_dir(tmpdir)
-                elif fmt == 'unzip':
+                elif fmt == 'unzip' and which('unzip'):
                     to_unpack = provider.unpack.get('unpack', provider.provides)
                     logger.debug('Extracting %r from %s',
                             to_unpack, found_name)
@@ -1693,15 +1693,13 @@ class GameData(object):
                             provider_name + '.d')
                     mkdir_p(tmpdir)
                     quiet = ['-q'] if VERBOSE else ['-qq']
-                    subprocess.check_call(['unzip', '-j', '-C', '-LL'] +
+                    subprocess.check_call(['unzip', '-j', '-C'] +
                                 quiet + [os.path.abspath(found_name)] +
                             list(to_unpack), cwd=tmpdir)
                     # -j junk paths
                     # -C use case-insensitive matching
-                    # -LL forces conversion to lowercase
-                    for f in to_unpack:
-                        self.consider_file(os.path.join(tmpdir, f), True)
-                elif fmt == '7z':
+                    self.consider_file_or_dir(tmpdir)
+                elif fmt in ('7z', 'unzip'):
                     to_unpack = provider.unpack.get('unpack', provider.provides)
                     logger.debug('Extracting %r from %s',
                             to_unpack, found_name)
@@ -1715,7 +1713,7 @@ class GameData(object):
                                 [os.path.abspath(found_name)] +
                                 list(to_unpack), cwd=tmpdir)
                     self.consider_file_or_dir(tmpdir)
-                elif fmt == 'unar':
+                elif fmt in ('unar', 'unzip'):
                     to_unpack = provider.unpack.get('unpack', provider.provides)
                     logger.debug('Extracting %r from %s', to_unpack, found_name)
                     tmpdir = os.path.join(self.get_workdir(), 'tmp',
@@ -2806,6 +2804,9 @@ class GameData(object):
         if which(fmt) is not None:
             return True
 
+        if fmt == 'unzip' and (which('7z') or which('unar')):
+            return True
+
         # unace-nonfree package diverts /usr/bin/unace from unace package
         if (fmt == 'unace-nonfree' and
                 PACKAGE_CACHE.is_installed('unace-nonfree')):

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