[game-data-packager] 01/01: add support for Jedy Academy demo

Alexandre Detiste detiste-guest at moszumanska.debian.org
Mon Mar 30 12:21:28 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 394c330e0c0341d4c85769f3ca769ad11f37d61b
Author: Alexandre Detiste <alexandre.detiste at gmail.com>
Date:   Mon Mar 30 14:18:38 2015 +0200

    add support for Jedy Academy demo
    
    needs to that issue to be solved first (easy):
    https://github.com/JACoders/OpenJK/issues/618
---
 data/ja.yaml                   | 74 ++++++++++++++++++++++++++++++++++++++++++
 game_data_packager/__init__.py | 34 +++++++++++++++++--
 2 files changed, 106 insertions(+), 2 deletions(-)

diff --git a/data/ja.yaml b/data/ja.yaml
index 5cd40d8..86be008 100644
--- a/data/ja.yaml
+++ b/data/ja.yaml
@@ -32,6 +32,17 @@ help_text: |
   and base/siege_destroyer.pk3, or a directory containing them.
 
 packages:
+  jedi-academy-demo-data:
+    engine: openjk-academy
+    demo_for: jedi-academy-data
+    debian:
+      conflicts: jedi-academy-data
+    install_to: usr/share/games/jedi-academy-data/base
+    install:
+    - assets0.pk3_demo
+    optional:
+    - license.txt
+
   jedi-academy-data:
     debian:
       version: '1.01'
@@ -76,6 +87,51 @@ files:
     unpack:
       format: zip
 
+  JediAcademyDemo.exe:
+    download: http://download.fileplanet.com/ftp1/092003/JediAcademyDemo.exe
+    unpack:
+      format: 7z
+      unpack:
+      - /Disk1/data1.cab
+      - /Disk1/data1.hdr
+      - /Disk1/data2.cab
+    provides:
+    - data1.cab
+    - data1.hdr
+    - data2.cab
+
+  data1.cab:
+    unpack:
+      format: unshield
+      other_parts: [data1.hdr, data2.cab]
+      #strace -e open unshield x Disk1/data1.cab 2>&1 >/dev/null | grep Disk1 | sort -u
+      #open("Disk1/data1.cab", O_RDONLY)       = 4
+      #open("Disk1/data1.hdr", O_RDONLY)       = 4
+      #open("Disk1/data2.cab", O_RDONLY)       = 4
+      unpack:
+      - Game_Files/assets0.pk3
+      - English_Files/license.txt
+    provides:
+    - assets0.pk3_demo
+    - license.txt
+
+  assets0.pk3_demo:
+    install_as: assets0.pk3
+    look_for: assets0.pk3
+
+  license.txt:
+    install_to: $docdir
+    license: true
+    distinctive_name: false
+
+cksums: |
+  _ 195892094 JediAcademyDemo.exe
+  _ 2883388   data1.cab
+  _ 22740     data1.hdr
+  _ 191976107 data2.cab
+  _ 188127360 assets0.pk3_demo
+  _ 6242      license.txt
+
 md5sums: |
   e17ee714ce9632f401960abb1b22fa4a  base/assets0.pk3
   3f47006dde61f171769666f31065a34c  base/assets1.pk3
@@ -85,6 +141,12 @@ md5sums: |
   85b76849fea33bea2f37727e8a33e373  base/bonus.pk3
   ea334db95f4436ceab5c6670d1695f67  jasiegedestroyer.exe
   31d6b95740930ce4b8f1da7d7326c7aa  base/siege_destroyer.pk3
+  cae3213d54df238f611f4b630f4d4743  JediAcademyDemo.exe
+  8ad81b71336465f0e77432ffacacfdf2  data1.cab
+  e5d1e819214ee6ce4e3d001b6c2e0689  data1.hdr
+  149bb051007547ff8aae15fec6305a32  data2.cab
+  6f8a641f2ac6415359d988578a58d973  assets0.pk3_demo
+  e006adc9086c848c16f1f4309d5773b2  license.txt
 
 sha1sums: |
   d2f73d9c53b20f1d7c8e2b778c3c5255272223b6  base/assets0.pk3
@@ -95,6 +157,12 @@ sha1sums: |
   a39274d4b7303dd38775be53266eca499a4532ec  base/bonus.pk3
   b422049effcda42633b953628dd342187ca0a4f1  jasiegedestroyer.exe
   9d70ccb1cae8e920bce7184fbf457f072074c95b  base/siege_destroyer.pk3
+  942ad7edbe9716fa9dfd043e4bdfe17dd582934a  JediAcademyDemo.exe
+  964b879b3121bed38475a5503282910d55c3e6b2  data1.cab
+  2b3f83dc4dcf5323f74eaecae5a2b6faa82e5a02  data1.hdr
+  ce92ea7e92c77da09d7a21245699ce56b1923d4e  data2.cab
+  93c5a678fc250dacb17be8f09b3a8253d2ec8048  assets0.pk3_demo
+  85d35354ac49f102baed51ff67d5f7abe892785b  license.txt
 
 sha256sums: |
   ffea9e7489bad7175411d122e0652b4272efb67c0e71805d1f4d8058084b5939  base/assets0.pk3
@@ -105,6 +173,12 @@ sha256sums: |
   3df3566aa1f29e71c64f5a67924ea8bd2b6dd03d5b6006e1807e6a80bc6113c5  base/bonus.pk3
   1479d82f2664e5bead9e0a17ebbab9ed3b8f04d5c93ea18cf2cc7786ddf21d43  jasiegedestroyer.exe
   0083d99038e015240119ffbf2c22a0205f52524ac44d0a56478db5c2c3452c60  base/siege_destroyer.pk3
+  133e10900229e6f8691f883b03c7e88e9e7f1e7c136d8ee934208846af534df1  JediAcademyDemo.exe
+  7598d076b4694d614cf3543cb8888941fb50d5d18294494a9cfe570cb09f806b  data1.cab
+  c0a70499f27f2b8d9061933b568a27f2645216bf409e12d6884e4bdd5295db73  data1.hdr
+  9fe56ac86286847ab5a1dfebc1dd1c6d9001ca9d986da0b223ae53b80815fa5a  data2.cab
+  d7d015ef905f7df092eb5b9d011013a80b3eca414aca3e8de50d89a2e8e299ed  assets0.pk3_demo
+  60b35b90f168939db20c3e9ab7b72d657f576e56adba65b01bf2ea6d88f1f6f5  license.txt
 
 # Not used yet
 sha512sums: |
diff --git a/game_data_packager/__init__.py b/game_data_packager/__init__.py
index 33bf581..39b4c1d 100644
--- a/game_data_packager/__init__.py
+++ b/game_data_packager/__init__.py
@@ -1489,11 +1489,41 @@ class GameData(object):
                     tmpdir = os.path.join(self.get_workdir(), 'tmp',
                             provider_name + '.d')
                     mkdir_p(tmpdir)
-                    subprocess.check_call(['7z', 'x', '-bd',
+                    # "Cannot use absolute pathnames for this command"
+                    if to_unpack[0][0] == '/':
+                        subprocess.check_call(['7z', 'x', '-bd',
+                                os.path.abspath(found_name)], cwd=tmpdir)
+                    else:
+                        subprocess.check_call(['7z', 'x', '-bd',
                                 os.path.abspath(found_name)] +
                             list(to_unpack), cwd=tmpdir)
                     for f in to_unpack:
-                        self.consider_file(os.path.join(tmpdir, f), True)
+                        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:
+                            # 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(['unshield', '-j', 'x',
+                                    os.path.abspath(found_name)], cwd=tmpdir)
+                        # this format doesn't store a timestamp, so the extracted
+                        # files will instead inherit the archive's timestamp
+                        orig_time = os.stat(found_name).st_mtime
+                        for f in to_unpack:
+                            tmp = os.path.join(tmpdir, f)
+                            os.utime(tmp, (orig_time, orig_time))
+                            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



More information about the Pkg-games-commits mailing list