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 26e1f2ef03efc4ac57a7e2cbf2b023caae2a5176 Author: Alexandre Detiste <[email protected]> Date: Mon Mar 30 15:30:50 2015 +0200 add support for (multipart) ARJ archives --- data/descent1.yaml | 39 ++++++++++++++++++++------------------- debian/control | 2 ++ game_data_packager/__init__.py | 27 +++++++++++++++++++++++++-- 3 files changed, 47 insertions(+), 21 deletions(-) diff --git a/data/descent1.yaml b/data/descent1.yaml index d2d7bd6..c48ec63 100644 --- a/data/descent1.yaml +++ b/data/descent1.yaml @@ -68,25 +68,26 @@ files: descent.pig_full: install_as: descent.pig - #desc14sw.exe: - # provides: - # - descent1.sow - # - descent2.sow - # format: zip - #descent1.sow: - # prodives: - # - descent.hog - # - readme.txt - # - refcard.txt - # - descent.pig_part1 - # format: arj - #descent2.sow: - # # needs to be unpacked after descent1.sow in the same working folder - # # in order to add data to existing descent.pig - # # without that, we get a descent.pig with 1416672 NULL at the start - # prodives: - # - descent.pig_part2 - # format: arj + desc14sw.exe: + provides: + - descent1.sow + - descent2.sow + unpack: + format: zip + descent1.sow: + provides: + - descent.hog + - descent.pig + - readme.txt + - refcard.txt + unpack: + format: arj + other_parts: [descent2.sow] + unpack: + - DESCENT.HOG + - DESCENT.PIG + - README.TXT + - REFCARD.TXT descent.faq: install_to: $docdir diff --git a/debian/control b/debian/control index 19eea13..3fac8c4 100644 --- a/debian/control +++ b/debian/control @@ -43,6 +43,8 @@ Suggests: p7zip-full, # for Jedi Academy (demo) unshield, +# for Descent 1 + arj, 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 39b4c1d..dc46216 100644 --- a/game_data_packager/__init__.py +++ b/game_data_packager/__init__.py @@ -1501,7 +1501,6 @@ class GameData(object): self.consider_file(os.path.join(tmpdir, f.lstrip('/')), True) elif fmt == 'unshield': other_parts = provider.unpack['other_parts'] - print(other_parts) for p in other_parts: self.fill_gap(package, self.files[p], download=False, log=True) if p not in self.found: @@ -1523,7 +1522,31 @@ class GameData(object): tmp = os.path.join(tmpdir, f) os.utime(tmp, (orig_time, orig_time)) self.consider_file(tmp, True) - + elif fmt == 'arj': + other_parts = set(provider.unpack.get('other_parts')) + other_parts.discard(None) + for p in other_parts: + self.fill_gap(package, self.files[p], download=False, log=True) + if p not in self.found: + # can't concatenate: one of the bits is missing + break + else: + 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(['arj', 'e', + os.path.abspath(found_name)] + + list(to_unpack), cwd=tmpdir) + for p in other_parts: + subprocess.check_call(['arj', 'e', '-jya', + os.path.join(os.path.dirname(found_name),p)] + + list(to_unpack), cwd=tmpdir) + for f in to_unpack: + tmp = os.path.join(tmpdir, f) + self.consider_file(tmp, True) elif fmt == 'cat': self.cat_files(package, provider, wanted) -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/game-data-packager.git _______________________________________________ Pkg-games-commits mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-games-commits

