[game-data-packager] 01/02: add support for UnAce (non-free)

Alexandre Detiste detiste-guest at moszumanska.debian.org
Sun Apr 12 10:01:43 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 f89757128c3a4591eef2c5a7d62d8ce66f757609
Author: Alexandre Detiste <alexandre.detiste at gmail.com>
Date:   Sun Apr 12 11:54:18 2015 +0200

    add support for UnAce (non-free)
    
    adding support for unace (free), if ever needed,
    should be as simple as:
    
    - elif fmt == 'unace-nonfree':
    + elif fmt in ('unace', 'unace-nonfree'):
---
 debian/control                 |  4 +++-
 game_data_packager/__init__.py | 33 +++++++++++++++++++++++++--------
 2 files changed, 28 insertions(+), 9 deletions(-)

diff --git a/debian/control b/debian/control
index 87df2c3..08e93f0 100644
--- a/debian/control
+++ b/debian/control
@@ -41,12 +41,14 @@ Suggests:
 	innoextract,
 # for Doom3
 	p7zip-full,
-# for Jedi Academy (demo)
+# for Jedi Academy (demo), Arx Fatalis
 	unshield,
 # for Descent 1
 	arj,
 # for Arx Fatalis
 	cabextract,
+# for Arx Fatalis
+	unace-nonfree,
 Architecture: all
 Multi-Arch: foreign
 Description: Installer for game data files
diff --git a/game_data_packager/__init__.py b/game_data_packager/__init__.py
index 8ae1edc..fd02872 100644
--- a/game_data_packager/__init__.py
+++ b/game_data_packager/__init__.py
@@ -1493,6 +1493,16 @@ class GameData(object):
                     subprocess.check_call(['cabextract', '-q', '-L',
                                 os.path.abspath(found_name)], cwd=tmpdir)
                     self.consider_file_or_dir(tmpdir)
+                elif fmt == 'unace-nonfree':
+                    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',
+                            provider_name + '.d')
+                    mkdir_p(tmpdir)
+                    subprocess.check_call(['unace', 'x',
+                             os.path.abspath(found_name)], cwd=tmpdir)
+                    self.consider_file_or_dir(tmpdir)
                 elif fmt == 'innoextract':
                     to_unpack = provider.unpack.get('unpack', provider.provides)
                     logger.debug('Extracting %r from %s',
@@ -2512,15 +2522,22 @@ class GameData(object):
 
         fmt = wanted.unpack['format']
 
-        if fmt not in ('cat', 'dos2unix', 'tar.gz', 'tar.bz2', 'tar.xz', 'zip'):
-            if which(fmt) is None:
-                logger.warning('cannot unpack "%s": tool "%s" is not ' +
-                        'installed', wanted.name, fmt)
-                self.missing_tools.add(fmt)
-                self.unpack_failed.add(wanted.name)
-                return False
+        # builtins
+        if fmt in ('cat', 'dos2unix', 'tar.gz', 'tar.bz2', 'tar.xz', 'zip'):
+            return True
 
-        return True
+        if which(fmt) is not None:
+            return True
+
+        # unace-nonfree package diverts /usr/bin/unace from unace package
+        if fmt == 'unace-nonfree' and is_installed('unace-nonfree'):
+            return True
+
+        logger.warning('cannot unpack "%s": tool "%s" is not ' +
+                       'installed', wanted.name, fmt)
+        self.missing_tools.add(fmt)
+        self.unpack_failed.add(wanted.name)
+        return False
 
     def log_missing_tools(self):
         if not self.missing_tools:

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