[game-data-packager] 01/01: first class innoextract support: extract only needed files

Alexandre Detiste detiste-guest at moszumanska.debian.org
Sat May 16 11:44:48 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 6ea03877f9b7eeb3231832ab917f723db2f74f46
Author: Alexandre Detiste <alexandre.detiste at gmail.com>
Date:   Sat May 16 13:37:43 2015 +0200

    first class innoextract support: extract only needed files
    
    for all known archives
    
    some archives needs special keywords
    
    * 'prefix: <path>'
    this got prepended to all the files in
    the unpack: list not starting with a '/'
    
    usefull for bundles od games with games
    sharing same file names
    
    (ex: Space Quest & King's Quest bundles)
    
    * 'unpack: [$provides, ..., ...]'
    to append some files to look for to
    the default list
    
    (ex: King's Quest 4's manual.pdf)
    
    * 'unpack: [..., ...]'
    to discard & replace default unpack list
    (Zork)
---
 data/arx.yaml                  | 23 ++++------------
 data/descent1.yaml             |  9 ------
 data/descent2.yaml             | 24 ++--------------
 data/kingsquest1.yaml          |  2 +-
 data/kingsquest2.yaml          |  2 +-
 data/kingsquest3.yaml          |  3 +-
 data/kingsquest4.yaml          |  7 +++--
 data/kingsquest5.yaml          |  3 +-
 data/kingsquest6.yaml          |  3 +-
 data/simon2.yaml               |  2 --
 data/spacequest1.yaml          |  2 +-
 data/spacequest2.yaml          |  2 +-
 data/spacequest3.yaml          |  2 +-
 data/spacequest4.yaml          | 62 +++++++++++++++++++++---------------------
 data/spacequest5.yaml          |  2 +-
 data/theme-hospital.yaml       |  5 ++--
 data/waxworks.yaml             |  2 --
 data/zork.yaml                 |  3 +-
 game_data_packager/__init__.py | 18 +++++++-----
 19 files changed, 68 insertions(+), 108 deletions(-)

diff --git a/data/arx.yaml b/data/arx.yaml
index dfd67ca..b138d86 100644
--- a/data/arx.yaml
+++ b/data/arx.yaml
@@ -154,16 +154,9 @@ files:
   setup_arx_fatalis.exe:
     unpack:
       format: innoextract
-      include:
-      - graph
-      - misc
-      - data.pak
-      - data2.pak
-      - loc.pak
-      - sfx.pak
-      - speech.pak
-      - manual.pdf
-      - map.pdf
+      unpack:
+      - $provides
+      - arx.ttf
     provides:
     - data2.pak
     - graph/interface/misc/arkane.bmp
@@ -209,13 +202,9 @@ files:
     download: http://arx.vg/ArxFatalis_1.21_MULTILANG.exe
     unpack:
       format: innoextract
-      include:
-      - graph
-      - misc
-      - data2.pak
-      - loc.pak
-      - manual.pdf
-      - map.pdf
+      unpack:
+      - $provides
+      - arx.ttf
     provides:
     - data2.pak
     - graph/interface/misc/arkane.bmp
diff --git a/data/descent1.yaml b/data/descent1.yaml
index 2d4897b..e20ad86 100644
--- a/data/descent1.yaml
+++ b/data/descent1.yaml
@@ -112,13 +112,6 @@ files:
   setup_descent_1_2.exe:
     unpack:
       format: innoextract
-      # include:
-      # - FIXME
-      # adding a list of files/paths to extract
-      # would provide a great speed-up and reduce /tmp
-      # usage, as descent2 assests dwarfs descent1 ones
-      # 25M     descent/setup_descent_2.1.0.8.exe
-      # 529M    descent_2/setup_descent2_2.1.0.10.exe
     provides:
     - descent.hog
     - descent.pig
@@ -136,8 +129,6 @@ files:
   setup_descent_2.1.0.8.exe:
     unpack:
       format: innoextract
-      include:
-      - $provides
     provides:
     - descent.hog
     - descent.pig
diff --git a/data/descent2.yaml b/data/descent2.yaml
index 98279c5..a8892fa 100644
--- a/data/descent2.yaml
+++ b/data/descent2.yaml
@@ -82,7 +82,7 @@ files:
   setup_descent_1_2.exe:
     unpack:
       format: innoextract
-      # include: FIXME
+      unpack: [FIXME]
     provides:
     - alien1.pig
     - alien2.pig
@@ -111,31 +111,11 @@ files:
   setup_descent2_2.1.0.10.exe:
     unpack:
       format: innoextract
-      # must specify all needed files to avoid to extract huge file:
+      # archive also include huge file:
       # - "app/DESCENT_II.gog" (427 MiB)
       # described in DESCENT_II.inst as beeing an audio-cd rip,
       # which is itself used in dosboxDescent2_client.conf
       # 'imgmount d "..\DESCENT_II.inst" -t iso -fs iso'
-      include:
-      - ALIEN1.PIG
-      - ALIEN2.PIG
-      - descent2.dem
-      - DESCENT2.HAM
-      - DESCENT2.HOG
-      - DESCENT2.S11
-      - DESCENT2.S22
-      - FIRE.PIG
-      - GROUPA.PIG
-      - ICE.PIG
-      - WATER.PIG
-      - INTRO-H.MVL
-      - OTHER-H.MVL
-      - ROBOTS-H.MVL
-      - ROBOTS-L.MVL
-      - MISSIONS
-      - Manual.pdf
-      - readme.txt
-      - RefCard.pdf
     provides:
     - alien1.pig
     - alien2.pig
diff --git a/data/kingsquest1.yaml b/data/kingsquest1.yaml
index 7f5f23e..29f3af9 100644
--- a/data/kingsquest1.yaml
+++ b/data/kingsquest1.yaml
@@ -28,7 +28,7 @@ files:
   setup_kings_quest_1_2_3.exe:
     unpack:
       format: innoextract
-      include: ["kings quest 1"]
+      prefix: "Kings Quest 1"
     provides:
     - logdir
     - object
diff --git a/data/kingsquest2.yaml b/data/kingsquest2.yaml
index de85ba7..4b6f83f 100644
--- a/data/kingsquest2.yaml
+++ b/data/kingsquest2.yaml
@@ -27,7 +27,7 @@ files:
   setup_kings_quest_1_2_3.exe:
     unpack:
       format: innoextract
-      include: ["kings quest 2"]
+      prefix: "Kings Quest 2"
     provides:
     - logdir
     - object
diff --git a/data/kingsquest3.yaml b/data/kingsquest3.yaml
index 9c8f3fc..3522929 100644
--- a/data/kingsquest3.yaml
+++ b/data/kingsquest3.yaml
@@ -29,7 +29,7 @@ files:
   setup_kings_quest_1_2_3.exe:
     unpack:
       format: innoextract
-      include: ["kings quest 3"]
+      prefix: "Kings Quest 3"
     provides:
     - logdir
     - object
@@ -39,6 +39,7 @@ files:
     - vol.0
     - vol.1
     - vol.2
+    - vol.3
     - words.tok
     - manual.pdf
 
diff --git a/data/kingsquest4.yaml b/data/kingsquest4.yaml
index 60cb730..d9ff786 100644
--- a/data/kingsquest4.yaml
+++ b/data/kingsquest4.yaml
@@ -24,9 +24,10 @@ files:
   setup_kings_quest_4_5_6.exe:
     unpack:
       format: innoextract
-      include:
-      - "kings quest 4"
-      - manual.pdf
+      prefix: "Kings Quest 4"
+      unpack:
+      - $provides
+      - /app/manual.pdf
     provides:
     - resource.001
     - resource.002
diff --git a/data/kingsquest5.yaml b/data/kingsquest5.yaml
index 0556577..9407396 100644
--- a/data/kingsquest5.yaml
+++ b/data/kingsquest5.yaml
@@ -43,8 +43,7 @@ files:
   setup_kings_quest_4_5_6.exe:
     unpack:
       format: innoextract
-      include:
-      - "kings quest 5"
+      prefix: "Kings Quest 5"
     provides:
     - 0.scr
     - 0.tex
diff --git a/data/kingsquest6.yaml b/data/kingsquest6.yaml
index 0ed3e24..42d26cf 100644
--- a/data/kingsquest6.yaml
+++ b/data/kingsquest6.yaml
@@ -84,8 +84,7 @@ files:
   setup_kings_quest_4_5_6.exe:
     unpack:
       format: innoextract
-      include:
-      - "Kings Quest 6"
+      prefix: "Kings Quest 6"
     provides:
     - 420.hep
     - 420.scr
diff --git a/data/simon2.yaml b/data/simon2.yaml
index 1206bdc..7b06153 100644
--- a/data/simon2.yaml
+++ b/data/simon2.yaml
@@ -24,8 +24,6 @@ files:
   setup_simon_the_sorcerer_2.exe:
     unpack:
       format: innoextract
-      include:
-      - $provides
     provides:
     - gsptr30
     - icon.dat
diff --git a/data/spacequest1.yaml b/data/spacequest1.yaml
index d918440..1c0ea99 100644
--- a/data/spacequest1.yaml
+++ b/data/spacequest1.yaml
@@ -29,7 +29,7 @@ files:
   setup_space_quest_1_2_3.exe:
     unpack:
       format: innoextract
-      include: ["space quest 1"]
+      prefix: "Space Quest 1"
     provides:
     - logdir
     - object
diff --git a/data/spacequest2.yaml b/data/spacequest2.yaml
index 81b7d3a..5cbea67 100644
--- a/data/spacequest2.yaml
+++ b/data/spacequest2.yaml
@@ -27,7 +27,7 @@ files:
   setup_space_quest_1_2_3.exe:
     unpack:
       format: innoextract
-      include: ["space quest 2"]
+      prefix: "Space quest 2"
     provides:
     - logdir
     - object
diff --git a/data/spacequest3.yaml b/data/spacequest3.yaml
index 950bd92..feb427a 100644
--- a/data/spacequest3.yaml
+++ b/data/spacequest3.yaml
@@ -22,7 +22,7 @@ files:
   setup_space_quest_1_2_3.exe:
     unpack:
       format: innoextract
-      include: ["space quest 3"]
+      prefix: "Space Quest 3"
     provides:
     - resource.001
     - resource.002
diff --git a/data/spacequest4.yaml b/data/spacequest4.yaml
index e121c59..5da67ef 100644
--- a/data/spacequest4.yaml
+++ b/data/spacequest4.yaml
@@ -9,13 +9,13 @@ packages:
     debian:
       provides: spacequest4-data
     install:
-    - resource.000
+    - resource.000_dos
     - resource.001
     - resource.002
     - resource.003
     - resource.004
     - resource.005
-    - resource.map
+    - resource.map_dos
     - script.000
     - script.119
     - script.120
@@ -24,7 +24,7 @@ packages:
     - text.000
     - text.405
     - text.410
-    - version
+    - version_dos
     - view.992
     - view.993
     - view.994
@@ -46,16 +46,16 @@ packages:
     - 610.scr
     - 701.hep
     - 701.scr
-    - resource.000_win
+    - resource.000
     - resource.aud
-    - resource.map_win
-    - version_win
+    - resource.map
+    - version
 
 files:
   setup_space_quest.exe:
     unpack:
       format: innoextract
-      include: ["space quest 4"]
+      prefix: "Space Quest 4"
     provides:
     - 335.hep
     - 335.scr
@@ -69,29 +69,29 @@ files:
     - 610.scr
     - 701.hep
     - 701.scr
-    - resource.000_win
+    - resource.000
     - resource.aud
-    - resource.map_win
-    - version_win
+    - resource.map
+    - version
 
-  resource.000_win:
+  resource.000_dos:
     look_for: [resource.000]
     install_as: resource.000
-  resource.map_win:
+  resource.map_dos:
     look_for: [resource.map]
     install_as: resource.map
-  version_win:
+  version_dos:
     look_for: [version]
     install_as: version
 
 cksums: |
-  _ 173330    resource.000
+  _ 173330    resource.000_dos
   _ 1247215   resource.001
   _ 1218373   resource.002
   _ 1240130   resource.003
   _ 1200631   resource.004
   _ 1053294   resource.005
-  _ 5928      resource.map
+  _ 5928      resource.map_dos
   _ 13702     script.000
   _ 762       script.119
   _ 410       script.120
@@ -100,7 +100,7 @@ cksums: |
   _ 1668      text.000
   _ 53        text.405
   _ 53        text.410
-  _ 7         version
+  _ 7         version_dos
   _ 5613      view.992
   _ 5482      view.993
   _ 2245      view.994
@@ -118,18 +118,18 @@ cksums: |
   _ 5954      610.scr
   _ 1704      701.hep
   _ 3884      701.scr
-  _ 5157378   resource.000_win
+  _ 5157378   resource.000
   _ 168882321 resource.aud
-  _ 7054      resource.map_win
-  _ 5         version_win
+  _ 7054      resource.map
+  _ 5         version
 md5sums: |
-  b0fd6032e789321f5c3a60d8bf3d9431  resource.000
+  b0fd6032e789321f5c3a60d8bf3d9431  resource.000_dos
   3739053944c2b9f921a86c22275ea3d7  resource.001
   23d4c18f693823f821fadb02e10ce061  resource.002
   4841fcc5643305b25da109bac17a5946  resource.003
   7ca0a3722b2a51686fbfe576a3415349  resource.004
   2bb5e789e9d18b5171c4acab6d9d2f49  resource.005
-  6ea4f337d8d9a5c306f343e86861e9d8  resource.map
+  6ea4f337d8d9a5c306f343e86861e9d8  resource.map_dos
   8ae526b127371cd7fcd60c1711d2b31f  script.000
   b101aef83fa0deaec997e9b47413c7a1  script.119
   3a2f3311b5ac633e1769f28448c9d176  script.120
@@ -138,7 +138,7 @@ md5sums: |
   ed1b5b427985d1e3b8c26d76fd14be3f  text.000
   a6a2456ab79492026755e9529860aba0  text.405
   9d4805b0941eb48d7317ca15bc8927b9  text.410
-  7233646488ab8085557a4b56de9b1bd9  version
+  7233646488ab8085557a4b56de9b1bd9  version_dos
   de92a199b251f9b9cd261cebbf1e1458  view.992
   2f704aaff9a616347fd4f03befd1ad49  view.993
   0fefac7c1cf28c33b112522c982e5047  view.994
@@ -156,18 +156,18 @@ md5sums: |
   1dfb97351c4cb473b4602d067911f30f  610.scr
   e8a70e1551567f09d7127faf8d2afd3b  701.hep
   0ae01f449de83438d3553388b25e20ba  701.scr
-  33a9e16a2bbe59ce52504e758e08082f  resource.000_win
+  33a9e16a2bbe59ce52504e758e08082f  resource.000
   b983f06438b45297a2c8af534d47a1fa  resource.aud
-  bd29d3fb8ea4a8ee638edaf40aa5f5ed  resource.map_win
-  07f863c37a2ce25df345667e0cfaf63a  version_win
+  bd29d3fb8ea4a8ee638edaf40aa5f5ed  resource.map
+  07f863c37a2ce25df345667e0cfaf63a  version
 sha1sums: |
-  eb63cfd2f02078ce2b26217e65b2df2eed27310d  resource.000
+  eb63cfd2f02078ce2b26217e65b2df2eed27310d  resource.000_dos
   950295fa00d84c02b5d327d207dfd30e3aaf7768  resource.001
   a6e1d0e7a64c981273dcdc8b33cc88c314b810d7  resource.002
   e6f262d2b97b26249893d9e91e8fd3c9287ea5bd  resource.003
   8279e17ec960f1eb47e5f288571b72a83ea83777  resource.004
   66f85f4013e51fb13a5a15b442358246d333da8b  resource.005
-  eb6ba6bdc5258fda436fbc71a117b96e354c5276  resource.map
+  eb6ba6bdc5258fda436fbc71a117b96e354c5276  resource.map_dos
   edc0156c7cff391e91e65a8990c2fac931b09682  script.000
   fccae6759b4763598c530cf8419317275a4ebc7d  script.119
   883324ce2f1ff2f8a4f0fe6e37602a5fa7a545fa  script.120
@@ -176,7 +176,7 @@ sha1sums: |
   7710d5eaf4f4a58c1ce9397543b7734c073627b1  text.000
   81166d456ab7c75f76a32905aaffa639b960db56  text.405
   001f4da8fc8653cd7b441a1b84283e9dc5dd1a96  text.410
-  2bf8784fb8d76c0c4ae58c2005c8da689df1c62c  version
+  2bf8784fb8d76c0c4ae58c2005c8da689df1c62c  version_dos
   a730007962867fe4449aa06a9e1aaf09ffed1790  view.992
   8fbad7e32391993383b2f86ed2522e4b36ff82f1  view.993
   fdd16e054a51a8fda492505074b0ca4ec0b122d0  view.994
@@ -194,9 +194,9 @@ sha1sums: |
   58907df2c17d0fe5104366d762f556e800433008  610.scr
   e887be4b66495b866b33ad84ce1d0a4a672f07d8  701.hep
   2c5b1e07837d8f455c535c596fd8d9e392fb2467  701.scr
-  2caecd07abd928bc9625b6efced020f35b76c6f2  resource.000_win
+  2caecd07abd928bc9625b6efced020f35b76c6f2  resource.000
   5d688842e8286c79d6aa59401a20cfe4bec0820c  resource.aud
-  5917d566075a5ab634cefb03801e90d3b196508e  resource.map_win
-  79c6f884e081a737ac73179c46a983b890b1a8da  version_win
+  5917d566075a5ab634cefb03801e90d3b196508e  resource.map
+  79c6f884e081a737ac73179c46a983b890b1a8da  version
 ...
 
diff --git a/data/spacequest5.yaml b/data/spacequest5.yaml
index 94cbba4..90eefd7 100644
--- a/data/spacequest5.yaml
+++ b/data/spacequest5.yaml
@@ -98,7 +98,7 @@ files:
   setup_space_quest.exe:
     unpack:
       format: innoextract
-      include: ["space quest 5"]
+      prefix: "Space Quest 5"
     provides:
     - 0.fon
     - 10.fon
diff --git a/data/theme-hospital.yaml b/data/theme-hospital.yaml
index 055a9c1..fd48c2d 100644
--- a/data/theme-hospital.yaml
+++ b/data/theme-hospital.yaml
@@ -1901,6 +1901,9 @@ files:
     - sound/ultra.mdi
 
   setup_theme_hospital_2.0.0.5.exe:
+    unpack:
+      format: innoextract
+      unpack: [FIXME]
     provides:
     - anims/320x2401.smk
     - anims/320x2402.smk
@@ -2345,8 +2348,6 @@ files:
     - sound/sndsys.dig
     - sound/ultra.dig
     - sound/ultra.mdi
-    unpack:
-      format: innoextract
 
 cksums: |
   _ 872896    anims/320x2401.smk
diff --git a/data/waxworks.yaml b/data/waxworks.yaml
index caca0f0..65eab7a 100644
--- a/data/waxworks.yaml
+++ b/data/waxworks.yaml
@@ -479,8 +479,6 @@ files:
   setup_waxworks.exe:
     unpack:
       format: innoextract
-      include:
-      - /app
     provides:
     - 001.vga
     - 002.vga
diff --git a/data/zork.yaml b/data/zork.yaml
index e76dfd9..b0c8451 100644
--- a/data/zork.yaml
+++ b/data/zork.yaml
@@ -101,8 +101,7 @@ files:
   setup_zork_anthology.exe:
     unpack:
       format: innoextract
-      include:
-      # '$provides' would match save/zork#.dat too
+      unpack:
       - data/zork1.dat
       - data/zork2.dat
       - data/zork3.dat
diff --git a/game_data_packager/__init__.py b/game_data_packager/__init__.py
index 92c4cef..c8c018f 100644
--- a/game_data_packager/__init__.py
+++ b/game_data_packager/__init__.py
@@ -1584,14 +1584,18 @@ class GameData(object):
                                os.path.abspath(found_name)]
                     version = subprocess.check_output(['innoextract', '-v', '-s'],
                                                       universal_newlines=True)
-                    if version != '1.4':
-                        include = provider.unpack.get('include', [])
-                        if '$provides' in include:
-                            include.remove('$provides')
-                            include += provider.provides
-                        for i in include:
+                    if version != '1.4' and 'FIXME' not in to_unpack:
+                        prefix = provider.unpack.get('prefix', '')
+                        if prefix and not prefix.endswith('/'):
+                            prefix += '/'
+                        if '$provides' in to_unpack:
+                            to_unpack.remove('$provides')
+                            to_unpack += provider.provides
+                        for i in to_unpack:
                             cmdline.append('-I')
-                            cmdline.append(i)
+                            if i[0] != '/':
+                                i = prefix + i
+                            cmdline.append(i.lower())
                     subprocess.check_call(cmdline)
                     # for at least Theme Hospital the files we want are
                     # actually in subdirectories, so we search recursively

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