[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