[game-data-packager] 32/51: Introduce the concept of ignorable files

Simon McVittie smcv at debian.org
Fri Dec 29 01:23:36 UTC 2017


This is an automated email from the git hooks/post-receive script.

smcv pushed a commit to branch master
in repository game-data-packager.

commit 111d7b3bc9123abe2f0e3335f7c3d85cb15f3551
Author: Simon McVittie <smcv at debian.org>
Date:   Wed Dec 27 18:19:37 2017 +0000

    Introduce the concept of ignorable files
    
    These are discarded by compile_yaml, but can be used by make_template.
    
    Signed-off-by: Simon McVittie <smcv at debian.org>
---
 data/ut99.yaml                      | 240 ++++++++++++++++++------------------
 game_data_packager/data.py          |  31 +++--
 game_data_packager/game.py          |  51 ++++++--
 game_data_packager/make_template.py |  11 +-
 tools/check_equivalence.py          |   3 +-
 tools/compile_yaml.py               |  21 +++-
 6 files changed, 209 insertions(+), 148 deletions(-)

diff --git a/data/ut99.yaml b/data/ut99.yaml
index 78a87b8..1281304 100644
--- a/data/ut99.yaml
+++ b/data/ut99.yaml
@@ -1183,139 +1183,139 @@ groups:
   files in both 436 Linux installers:
     group_members: |
       125160    dd5c28472ea74ee5a52673333ce97caf Credits.tar.gz?436Linux
-      #4106      d92c0dc11fa537bcb32179a569e99751 Glide.ini.tar.gz?436Linux
+      .4106      d92c0dc11fa537bcb32179a569e99751 Glide.ini.tar.gz?436Linux
       4103      62e055d90688ac23b257705cec4e1d2f OpenGL.ini.tar.gz?436Linux
       1815      08c1e23a26a2b398c88262484ccf144c ucc?436Linux
       3378      23cffee6c8d4ef48ac03e88e2e87a0aa icon.bmp?436Linux
       8948      c68255408ebab50ef4d08a04bbc43ed5 icon.xpm?436Linux
-      #246961    6ce66812f952574ed5ba7ce0bd56e83c setup.data/splash.xpm?436Linux
-      #2290      96ec924389bdf38bd6b670a3be5a12b5 setup.sh?436Linux
+      .246961    6ce66812f952574ed5ba7ce0bd56e83c setup.data/splash.xpm
+      .2290      96ec924389bdf38bd6b670a3be5a12b5 setup.sh
 
   files in 436 Linux non-GOTY installer:
     group_members: |
       2232989   245308fb9d88a1ad2312245a997ff5b5 data.tar.gz?436Linux
-      #687336    af9ec9d59c276ed359aee3721fdcc182 NetGamesUSA.com.tar.gz?436Linux
+      .687336    af9ec9d59c276ed359aee3721fdcc182 NetGamesUSA.com.tar.gz?436Linux
       6423      27493ae9f9a19ffa4382af85c8721dd2 README?436Linux
-      #54        f310af1fbd172de2a8037f0fcf1622a2 autorun.inf
-      #1647      7da15a149cd7a20523ffa07bda522960 setup.data/apply-patch.sh
-      #446072    9052ba08c8c6088f670edbd93b648833 setup.data/bin/Linux/x86/glibc-2.1/setup.gtk
-      #796968    78d465ebee2e0ec0815129b3d032a08c setup.data/bin/Linux/x86/loki_patch
-      #731188    a2e4ecda6b9681bffab068d789210c14 setup.data/bin/Linux/x86/setup
-      #672468    857e755dfd86febf20aa1935e9db506f setup.data/bin/Linux/x86/uninstall
+      .54        f310af1fbd172de2a8037f0fcf1622a2 autorun.inf
+      .1647      7da15a149cd7a20523ffa07bda522960 setup.data/apply-patch.sh
+      .446072    9052ba08c8c6088f670edbd93b648833 setup.data/bin/Linux/x86/glibc-2.1/setup.gtk
+      .796968    78d465ebee2e0ec0815129b3d032a08c setup.data/bin/Linux/x86/loki_patch
+      .731188    a2e4ecda6b9681bffab068d789210c14 setup.data/bin/Linux/x86/setup
+      .672468    857e755dfd86febf20aa1935e9db506f setup.data/bin/Linux/x86/uninstall
       1558383   fd7640bdf977b48b6a027f0489d80e7e setup.data/data/System/BotPack.u.0?436Linux
-      #8145      6bc32f5162eab13979cbc296240fde00 setup.data/data/System/Core.u.0?436Linux
+      .8145      6bc32f5162eab13979cbc296240fde00 setup.data/data/System/Core.u.0?436Linux
       11855     5fef79ff336a169b87de4ab94c7499ae setup.data/data/System/Editor.u.0?436Linux
-      #103106    c0a144cf7ba1cf831c9d9e0786ed2a03 setup.data/data/System/Engine.u.0?436Linux
+      .103106    c0a144cf7ba1cf831c9d9e0786ed2a03 setup.data/data/System/Engine.u.0?436Linux
       1496      feec1764f763027c6b47922a8d89d10f setup.data/data/System/Fire.u.0?436Linux
-      #2457      f9c800162824ec08d0119a015b6e51c6 setup.data/data/System/IpDrv.u.0?436Linux
-      #5130      5b23cb9db168450e587acb066946a903 setup.data/data/System/IpServer.u.0?436Linux
-      #38470     366a9f8167405134bc03210bb122d479 setup.data/data/System/UBrowser.u.0?436Linux
+      .2457      f9c800162824ec08d0119a015b6e51c6 setup.data/data/System/IpDrv.u.0?436Linux
+      .5130      5b23cb9db168450e587acb066946a903 setup.data/data/System/IpServer.u.0?436Linux
+      .38470     366a9f8167405134bc03210bb122d479 setup.data/data/System/UBrowser.u.0?436Linux
       94960     1519684e8ee14b1aec374a930355f8d7 setup.data/data/System/UMenu.u.0?436Linux
       3075      4da37ab6fe98361048608439d7f59c9e setup.data/data/System/UTBrowser.u.0?436Linux
       88479     0b653808fa60e7bf544d1971baf9d091 setup.data/data/System/UTMenu.u.0?436Linux
-      #4828      4160474191bd2befef22313463e4194f setup.data/data/System/UTServerAdmin.u.0?436Linux
-      #2465      898e0a40d05a1b1367d7dbbf37812a97 setup.data/data/System/UWeb.u.0?436Linux
+      .4828      4160474191bd2befef22313463e4194f setup.data/data/System/UTServerAdmin.u.0?436Linux
+      .2465      898e0a40d05a1b1367d7dbbf37812a97 setup.data/data/System/UWeb.u.0?436Linux
       45790     d473f88ff395aee238bc97aed945f70c setup.data/data/System/UWindow.u.0?436Linux
-      #13586     8bce32585655f61fee0458cd5cb450be setup.data/locale/de/LC_MESSAGES/setup.mo
-      #10963     0de7fd9b48565a4d57809874a31ba5c4 setup.data/locale/es/LC_MESSAGES/setup.mo
-      #17345     6c9552e082a6e7fd974d7efac2b6ca03 setup.data/locale/fr/LC_MESSAGES/setup.mo
-      #16758     a71c3e2153e88d6f32776ffa01fcc033 setup.data/locale/it/LC_MESSAGES/setup.mo
-      #14154     16d15257543b9b2f279ef97181df5b66 setup.data/locale/nl/LC_MESSAGES/setup.mo
-      #14076     ec98216a3cc0426b8875bd46a8c85e59 setup.data/locale/sv/LC_MESSAGES/setup.mo
-      #2480      477da01ad1ea292037856b8be3b13ac6 setup.data/patch.dat
-      #46281     e2abdcb6bdb53732a0c3134cb4a2c045 setup.data/setup.glade
-      #1322      91c848ba41d70437668c3864cd24d5db setup.data/setup.xml
-      #246961    6ce66812f952574ed5ba7ce0bd56e83c setup.data/splash.xpm
-      #2290      96ec924389bdf38bd6b670a3be5a12b5 setup.sh
+      .13586     8bce32585655f61fee0458cd5cb450be setup.data/locale/de/LC_MESSAGES/setup.mo
+      .10963     0de7fd9b48565a4d57809874a31ba5c4 setup.data/locale/es/LC_MESSAGES/setup.mo
+      .17345     6c9552e082a6e7fd974d7efac2b6ca03 setup.data/locale/fr/LC_MESSAGES/setup.mo
+      .16758     a71c3e2153e88d6f32776ffa01fcc033 setup.data/locale/it/LC_MESSAGES/setup.mo
+      .14154     16d15257543b9b2f279ef97181df5b66 setup.data/locale/nl/LC_MESSAGES/setup.mo
+      .14076     ec98216a3cc0426b8875bd46a8c85e59 setup.data/locale/sv/LC_MESSAGES/setup.mo
+      .2480      477da01ad1ea292037856b8be3b13ac6 setup.data/patch.dat
+      .46281     e2abdcb6bdb53732a0c3134cb4a2c045 setup.data/setup.glade
+      .1322      91c848ba41d70437668c3864cd24d5db setup.data/setup.xml
+      .246961    6ce66812f952574ed5ba7ce0bd56e83c setup.data/splash.xpm
+      .2290      96ec924389bdf38bd6b670a3be5a12b5 setup.sh
       1758      ed490362c20f6049ae7ee66283a925e4 ut?436Linux
-      #900       cedf965ce5743e044d379a9a9304da07 win32/README.htm
-      #3584      80246ccce0e2f0561a23e04bf607a78d win32/autorun.exe
+      .900       cedf965ce5743e044d379a9a9304da07 win32/README.htm
+      .3584      80246ccce0e2f0561a23e04bf607a78d win32/autorun.exe
 
   files in 436 Linux GOTY installer:
     group_members: |
       2234199   f5e11d360c317fc05b4edadb80bc834e data.tar.gz?436Linux-goty
-      #687340    3f30f27e770416e9e234ac214cced00e NetGamesUSA.com.tar.gz?436Linux-goty
+      .687340    3f30f27e770416e9e234ac214cced00e NetGamesUSA.com.tar.gz?436Linux-goty
       6093      96b638f5074e39c12b70f5e3c87ef8f0 README?436Linux-goty
-      #1647      42a702e7793e50456a5b7534e108382e setup.data/apply-patch.sh?436Linux-goty
-      #1717280   420bb6adb95e094fb68a1f77ae9e94f2 setup.data/bin/Linux/x86/glibc-2.1/setup.gtk?436Linux-goty
-      #800224    909ebd61345dca19d502e9f12c17c5ef setup.data/bin/Linux/x86/loki_patch?436Linux-goty
-      #670644    fcba3bd0ec24b50e79e4d7119f213741 setup.data/bin/Linux/x86/register?436Linux-goty
-      #737108    877b1c1ea7cc35ee29e5af4775f5ba9d setup.data/bin/Linux/x86/setup?436Linux-goty
-      #675604    2d972e0e5ba9f607628562fbfaf069d2 setup.data/bin/Linux/x86/uninstall?436Linux-goty
+      .1647      42a702e7793e50456a5b7534e108382e setup.data/apply-patch.sh?436Linux-goty
+      .1717280   420bb6adb95e094fb68a1f77ae9e94f2 setup.data/bin/Linux/x86/glibc-2.1/setup.gtk?436Linux-goty
+      .800224    909ebd61345dca19d502e9f12c17c5ef setup.data/bin/Linux/x86/loki_patch?436Linux-goty
+      .670644    fcba3bd0ec24b50e79e4d7119f213741 setup.data/bin/Linux/x86/register?436Linux-goty
+      .737108    877b1c1ea7cc35ee29e5af4775f5ba9d setup.data/bin/Linux/x86/setup?436Linux-goty
+      .675604    2d972e0e5ba9f607628562fbfaf069d2 setup.data/bin/Linux/x86/uninstall?436Linux-goty
       363823    798600117b69277d2a1e662e6db7e496 setup.data/data/System/BotPack.u.0?436Linux-goty
-      #7444      f014c0a8506b013db5b77ce6591f689d setup.data/data/System/Core.u.0?436Linux-goty
+      .7444      f014c0a8506b013db5b77ce6591f689d setup.data/data/System/Core.u.0?436Linux-goty
       4889      ec644dbb06eae02859151b5fa2fe0c5e setup.data/data/System/Editor.u.0?436Linux-goty
-      #81478     a3d6a5e9e852b2c37f0dcacc5150e82d setup.data/data/System/Engine.u.0?436Linux-goty
+      .81478     a3d6a5e9e852b2c37f0dcacc5150e82d setup.data/data/System/Engine.u.0?436Linux-goty
       1480      2e540d2a0e4e36f43851a12316290c32 setup.data/data/System/Fire.u.0?436Linux-goty
-      #2284      8a6d60885fb7eb350de3ba31e05ec437 setup.data/data/System/IpDrv.u.0?436Linux-goty
-      #2113      7f2ea8e86c6318130f9a4c03d61412d9 setup.data/data/System/IpServer.u.0?436Linux-goty
-      #24918     3c5841acc4621523e7828d302314dd40 setup.data/data/System/UBrowser.u.0?436Linux-goty
+      .2284      8a6d60885fb7eb350de3ba31e05ec437 setup.data/data/System/IpDrv.u.0?436Linux-goty
+      .2113      7f2ea8e86c6318130f9a4c03d61412d9 setup.data/data/System/IpServer.u.0?436Linux-goty
+      .24918     3c5841acc4621523e7828d302314dd40 setup.data/data/System/UBrowser.u.0?436Linux-goty
       676976    e5e397cca0fd09c9218a03fffcc65e00 setup.data/data/System/UMenu.u.0?436Linux-goty
       1212      51e6d8dca8880936040f4bd1eec41d1b setup.data/data/System/UTBrowser.u.0?436Linux-goty
       39490     7c9ba483389d35c6ea859a4410cc501f setup.data/data/System/UTMenu.u.0?436Linux-goty
-      #4670      936067d4f92381e13f283f19bc3a95da setup.data/data/System/UTServerAdmin.u.0?436Linux-goty
-      #2228      f80156ac4bc69a902b2423ebf2b7d5eb setup.data/data/System/UWeb.u.0?436Linux-goty
+      .4670      936067d4f92381e13f283f19bc3a95da setup.data/data/System/UTServerAdmin.u.0?436Linux-goty
+      .2228      f80156ac4bc69a902b2423ebf2b7d5eb setup.data/data/System/UWeb.u.0?436Linux-goty
       43810     d05886c73cca88cfff3f7a18689e0fd5 setup.data/data/System/UWindow.u.0?436Linux-goty
-      #336       1a8e5dede8ebc22262a490f9884f7124 setup.data/locale/de/LC_MESSAGES/loki-uninstall.mo?436Linux-goty
-      #13857     bb2c10e95ad55a7c5d03240ab8f8b941 setup.data/locale/de/LC_MESSAGES/setup.mo?436Linux-goty
-      #336       1a8e5dede8ebc22262a490f9884f7124 setup.data/locale/es/LC_MESSAGES/loki-uninstall.mo?436Linux-goty
-      #17632     6c6da19ddc68683959bbcca73b0ae9b9 setup.data/locale/es/LC_MESSAGES/setup.mo?436Linux-goty
-      #3328      4641713b2862b60ed129d1390d419422 setup.data/locale/fr/LC_MESSAGES/loki-uninstall.mo?436Linux-goty
-      #19506     f8a49325f5eb14083b7169f3ca6d26ae setup.data/locale/fr/LC_MESSAGES/setup.mo?436Linux-goty
-      #336       1a8e5dede8ebc22262a490f9884f7124 setup.data/locale/it/LC_MESSAGES/loki-uninstall.mo?436Linux-goty
-      #17420     afa923428981e3daedbdb5326cff1e58 setup.data/locale/it/LC_MESSAGES/setup.mo?436Linux-goty
-      #336       1a8e5dede8ebc22262a490f9884f7124 setup.data/locale/nl/LC_MESSAGES/loki-uninstall.mo?436Linux-goty
-      #14433     a0d894dd60add74d7fed9fa3cda3faf8 setup.data/locale/nl/LC_MESSAGES/setup.mo?436Linux-goty
-      #336       1a8e5dede8ebc22262a490f9884f7124 setup.data/locale/sv/LC_MESSAGES/loki-uninstall.mo?436Linux-goty
-      #14355     7aafdc0cac53897a32a9e550b5e04e83 setup.data/locale/sv/LC_MESSAGES/setup.mo?436Linux-goty
-      #2546      3bb0568bf2c0db703fd60495ce98e99c setup.data/patch.dat?436Linux-goty
-      #45962     49b733b9ad58509ead6491f88c2117be setup.data/setup.glade?436Linux-goty
-      #1508      76dd6fe6736e5510110d85aa92eea623 setup.data/setup.xml?436Linux-goty
-      #307       448bd1c3c018c6329c8bffb6b8dfb58d setup.data/uz-maps.sh?436Linux-goty
+      .336       1a8e5dede8ebc22262a490f9884f7124 setup.data/locale/de/LC_MESSAGES/loki-uninstall.mo?436Linux-goty
+      .13857     bb2c10e95ad55a7c5d03240ab8f8b941 setup.data/locale/de/LC_MESSAGES/setup.mo?436Linux-goty
+      .336       1a8e5dede8ebc22262a490f9884f7124 setup.data/locale/es/LC_MESSAGES/loki-uninstall.mo?436Linux-goty
+      .17632     6c6da19ddc68683959bbcca73b0ae9b9 setup.data/locale/es/LC_MESSAGES/setup.mo?436Linux-goty
+      .3328      4641713b2862b60ed129d1390d419422 setup.data/locale/fr/LC_MESSAGES/loki-uninstall.mo?436Linux-goty
+      .19506     f8a49325f5eb14083b7169f3ca6d26ae setup.data/locale/fr/LC_MESSAGES/setup.mo?436Linux-goty
+      .336       1a8e5dede8ebc22262a490f9884f7124 setup.data/locale/it/LC_MESSAGES/loki-uninstall.mo?436Linux-goty
+      .17420     afa923428981e3daedbdb5326cff1e58 setup.data/locale/it/LC_MESSAGES/setup.mo?436Linux-goty
+      .336       1a8e5dede8ebc22262a490f9884f7124 setup.data/locale/nl/LC_MESSAGES/loki-uninstall.mo?436Linux-goty
+      .14433     a0d894dd60add74d7fed9fa3cda3faf8 setup.data/locale/nl/LC_MESSAGES/setup.mo?436Linux-goty
+      .336       1a8e5dede8ebc22262a490f9884f7124 setup.data/locale/sv/LC_MESSAGES/loki-uninstall.mo?436Linux-goty
+      .14355     7aafdc0cac53897a32a9e550b5e04e83 setup.data/locale/sv/LC_MESSAGES/setup.mo?436Linux-goty
+      .2546      3bb0568bf2c0db703fd60495ce98e99c setup.data/patch.dat?436Linux-goty
+      .45962     49b733b9ad58509ead6491f88c2117be setup.data/setup.glade?436Linux-goty
+      .1508      76dd6fe6736e5510110d85aa92eea623 setup.data/setup.xml?436Linux-goty
+      .307       448bd1c3c018c6329c8bffb6b8dfb58d setup.data/uz-maps.sh?436Linux-goty
       1758      9eef92ea8ca2574565aaaf4a7bb5b3e8 ut?436Linux-goty
 
   misc files in setup_ut_goty_2.0.0.5.exe:
     group_members: |
-      #96264     4d3ac88054df63fc810427bdaa96c458 GameuxInstallHelper.dll?gog
-      #1105408   08a1b06fe2fee5a1e3b33f1d71b84705 System/3DfxSpl2.dll?gog
-      #60928     175e5ad865ba3c7f5310beb4a676bb4d System/GotoHeat.exe?gog
-      #277776    83170bd54c3867da178f9612c2746c6a System/MSVCRT.dll?gog
-      #113       12b05d077e4cb8c633516409e6bc6ad9 System/RunServer.bat?gog
-      #1310720   e4867e049c2ece234254c15f441ffc48 System/glide2x.dll?gog
-      #290112    57878b3122168db83426904304973765 System/goggame.dll?gog
-      #273408    87be14d2bee78cb50c65445207ef4663 System/mplaynow.exe?gog
-      #331776    6ab5ef6635da1fd08be7914d9af473a2 System/nglide_config.exe?gog
-      #131758    2ba68e1f6af1fa6b49e48aedaa0ec643 gfw_high.ico?gog
-      #69248     88cbd6c016021b7b4a4b15879476ec6b gog.ico?gog
-      #11544     e2ce3faad9adfca376694a86f729f218 System/Default.ini?gog
-      #35393     2d59a4541c44f09f67655837f2315562 System/Manifest.ini?gog
-      #11544     e4426332a021b5300c8f840b4c9d0d78 System/UnrealTournament.ini?gog
-      #10053     c7ac58771ae51370f166c3d5700ea3a6 System/User.ini?gog
-      #644       5c374117d2d92d822762c72ea9f2f725 gog_ut_goty.sdb
+      .96264     4d3ac88054df63fc810427bdaa96c458 GameuxInstallHelper.dll?gog
+      .1105408   08a1b06fe2fee5a1e3b33f1d71b84705 System/3DfxSpl2.dll?gog
+      .60928     175e5ad865ba3c7f5310beb4a676bb4d System/GotoHeat.exe?gog
+      .277776    83170bd54c3867da178f9612c2746c6a System/MSVCRT.dll?gog
+      .113       12b05d077e4cb8c633516409e6bc6ad9 System/RunServer.bat?gog
+      .1310720   e4867e049c2ece234254c15f441ffc48 System/glide2x.dll?gog
+      .290112    57878b3122168db83426904304973765 System/goggame.dll?gog
+      .273408    87be14d2bee78cb50c65445207ef4663 System/mplaynow.exe?gog
+      .331776    6ab5ef6635da1fd08be7914d9af473a2 System/nglide_config.exe?gog
+      .131758    2ba68e1f6af1fa6b49e48aedaa0ec643 gfw_high.ico?gog
+      .69248     88cbd6c016021b7b4a4b15879476ec6b gog.ico?gog
+      .11544     e2ce3faad9adfca376694a86f729f218 System/Default.ini?gog
+      .35393     2d59a4541c44f09f67655837f2315562 System/Manifest.ini?gog
+      .11544     e4426332a021b5300c8f840b4c9d0d78 System/UnrealTournament.ini?gog
+      .10053     c7ac58771ae51370f166c3d5700ea3a6 System/User.ini?gog
+      .644       5c374117d2d92d822762c72ea9f2f725 gog_ut_goty.sdb
 
       _         _                                System/mplaynow.ini
 
-      #_         _                                System/Core.dll?436
-      #_         _                                System/d3ddrv.dll?436
-      #_         _                                System/editor.dll?436
-      #_         _                                System/engine.dll?436
-      #_         _                                System/fire.dll?436
-      #_         _                                System/galaxy.dll?436
-      #_         _                                System/glideDrv.dll?436
-      #_         _                                System/ipdrv.dll?436
-      #_         _                                System/MeTaLDrv.dll?436
-      #_         _                                System/opengldrv.dll?436
-      #_         _                                System/render.dll?436
-      #_         _                                System/SGLDrv.dll?436
-      #_         _                                System/setup.exe?436
-      #_         _                                System/softdrv.dll?436
-      #_         _                                System/ucc.exe?436
-      #_         _                                System/uweb.dll?436
-      #_         _                                System/UnrealEd.exe?436
-      #_         _                                System/UnrealTournament.exe?436
-      #_         _                                System/windrv.dll?436
-      #_         _                                System/Window.dll?436
-      #_         _                                System/DefUser.ini?436Windows
+      ._         _                                System/Core.dll?436
+      ._         _                                System/d3ddrv.dll?436
+      ._         _                                System/editor.dll?436
+      ._         _                                System/engine.dll?436
+      ._         _                                System/fire.dll?436
+      ._         _                                System/galaxy.dll?436
+      ._         _                                System/glideDrv.dll?436
+      ._         _                                System/ipdrv.dll?436
+      ._         _                                System/MeTaLDrv.dll?436
+      ._         _                                System/opengldrv.dll?436
+      ._         _                                System/render.dll?436
+      ._         _                                System/SGLDrv.dll?436
+      ._         _                                System/setup.exe?436
+      ._         _                                System/softdrv.dll?436
+      ._         _                                System/ucc.exe?436
+      ._         _                                System/uweb.dll?436
+      ._         _                                System/UnrealEd.exe?436
+      ._         _                                System/UnrealTournament.exe?436
+      ._         _                                System/windrv.dll?436
+      ._         _                                System/Window.dll?436
+      ._         _                                System/DefUser.ini?436Windows
 
       3320729   7306be9538d1d877dd310a664edb7055 Maps/CTF-High.unr?goty
       2429905   78dd26a9764ac5246461a20138145461 Maps/CityIntro.unr?goty
@@ -1399,36 +1399,36 @@ groups:
       5455      751bf6fc5ddef383eaba74973dfc34b4 System/Engine.int?436Windows
       105371    d267a7624bad310543f7d601e3146c25 System/UTServerAdmin.u?436
       28410     f9fc6ee646f644523d367343022d0633 System/UWeb.u?436
-      #57344     b1876f7ad9f6b4603b3871789898e0d5 System/MeTaLDrv.dll?436
+      .57344     b1876f7ad9f6b4603b3871789898e0d5 System/MeTaLDrv.dll?436
       454       bc0dac15cecaf34352af6e593a92820b System/MeTaLDrv.int?ut99
-      #94208     337976d2cf76d9da589a57267aef6683 System/SGLDrv.dll?436
-      #1380352   57177a47e0135af6beb6419558f4121a System/UnrealEd.exe?436
-      #241664    7dadcc7e3a9a3d66001e3b37cf636f0e System/UnrealTournament.exe?436
-      #483328    532bee3d7d03a9af85b00e56c22bed0b System/Window.dll?436
-      #640       d31aec7a9de94a4611bbf6d8886df8b4 System/editorres/vssver.scc?436
-      #786432    ccf104341c7452b06295d421167dba95 System/Core.dll?436
+      .94208     337976d2cf76d9da589a57267aef6683 System/SGLDrv.dll?436
+      .1380352   57177a47e0135af6beb6419558f4121a System/UnrealEd.exe?436
+      .241664    7dadcc7e3a9a3d66001e3b37cf636f0e System/UnrealTournament.exe?436
+      .483328    532bee3d7d03a9af85b00e56c22bed0b System/Window.dll?436
+      .640       d31aec7a9de94a4611bbf6d8886df8b4 System/editorres/vssver.scc?436
+      .786432    ccf104341c7452b06295d421167dba95 System/Core.dll?436
       59233     d2b07e7c9425c14644fd79e75fb0df29 System/Core.u?436
 
-      #217088    dd6e3692f8ead5e1df88716024bc25d1 System/d3ddrv.dll?436
-      #11316     d988b22626fdfb227e02a57406b1a0fd System/Default.ini?436nodelta
-      #10092     8d8007b9686955d84c43eacf0a5b0de1 System/DefUser.ini?436nodelta
-      #1257472   e089b6a395b26c7fe44551bb027d8d7c System/editor.dll?436
-      #1789952   30e34c2a9e0eab908c5da6f322f4e2d7 System/engine.dll?436
+      .217088    dd6e3692f8ead5e1df88716024bc25d1 System/d3ddrv.dll?436
+      .11316     d988b22626fdfb227e02a57406b1a0fd System/Default.ini?436nodelta
+      .10092     8d8007b9686955d84c43eacf0a5b0de1 System/DefUser.ini?436nodelta
+      .1257472   e089b6a395b26c7fe44551bb027d8d7c System/editor.dll?436
+      .1789952   30e34c2a9e0eab908c5da6f322f4e2d7 System/engine.dll?436
       1149858   e6fbb28182bc82a9414cc96a744eda1b System/Engine.u?436
-      #106496    5fc2add20d2afc1bdf068d8c2611d312 System/fire.dll?436
-      #339968    cb246e9a387cc002e6ea13264ac0dc08 System/galaxy.dll?436
-      #81920     9261d20e08276dd3a3cb1fccee709ae4 System/glidedrv.dll?436
-      #233472    ff5ddc3652a71526fe6ee67842e8451c System/ipdrv.dll?436
+      .106496    5fc2add20d2afc1bdf068d8c2611d312 System/fire.dll?436
+      .339968    cb246e9a387cc002e6ea13264ac0dc08 System/galaxy.dll?436
+      .81920     9261d20e08276dd3a3cb1fccee709ae4 System/glidedrv.dll?436
+      .233472    ff5ddc3652a71526fe6ee67842e8451c System/ipdrv.dll?436
       32162     7cae231b737bb22bdcf0403ffbb19cca System/IpServer.u?436
-      #102400    12031672ff432601cf638efe2e26acd6 System/opengldrv.dll?436
-      #237568    6f18d6bb2b3dc12d0d2e5ad5cc66586b System/render.dll?436
-      #311296    ca649ea591c8767e0f9ee197af3f44e8 System/setup.exe?436
-      #389120    da8d1c3fcd740e85185f11321ab5d3ff System/softdrv.dll?436
+      .102400    12031672ff432601cf638efe2e26acd6 System/opengldrv.dll?436
+      .237568    6f18d6bb2b3dc12d0d2e5ad5cc66586b System/render.dll?436
+      .311296    ca649ea591c8767e0f9ee197af3f44e8 System/setup.exe?436
+      .389120    da8d1c3fcd740e85185f11321ab5d3ff System/softdrv.dll?436
       329791    7409bc1b0e08329f4f86fc3c9ce0d969 System/UBrowser.u?436
-      #110592    1b2ba310e4b96bd0b435f30224614bf4 System/ucc.exe?436
+      .110592    1b2ba310e4b96bd0b435f30224614bf4 System/ucc.exe?436
       1904411   bbec875a92f258bf01f07638fe29baff System/UMenu.u?436Windows
-      #45056     59ce64cc09e8f412635b3cf2cd5c61dc System/uweb.dll?436
-      #122880    25242ac38ff1f40826fab099d3314555 System/windrv.dll?436
+      .45056     59ce64cc09e8f412635b3cf2cd5c61dc System/uweb.dll?436
+      .122880    25242ac38ff1f40826fab099d3314555 System/windrv.dll?436
 
   archives:
     group_members: |
diff --git a/game_data_packager/data.py b/game_data_packager/data.py
index 4b04cda..9f689e9 100644
--- a/game_data_packager/data.py
+++ b/game_data_packager/data.py
@@ -192,6 +192,7 @@ class WantedFile(HashedFile):
         self.download = None
         self.executable = False
         self.filename = name.split('?')[0]
+        self.ignorable = False
         self.install_as = self.filename
         self._install_to = None
         self.license = False
@@ -276,12 +277,18 @@ class WantedFile(HashedFile):
                 else:
                     ret[k] = v
 
+        provides = set()
+
         if expand:
-            if self.provides_files:
-                ret['provides'] = sorted(f.name for f in self.provides_files)
+            for f in self.provides_files:
+                if not f.ignorable:
+                    provides.add(f.name)
         else:
-            if self.provides:
-                ret['provides'] = sorted(self.provides)
+            for filename in self.provides:
+                provides.add(filename)
+
+        if provides:
+            ret['provides'] = sorted(provides)
 
         for k in (
                 'download',
@@ -415,7 +422,8 @@ yaml.add_representer(YamlLiteral, YamlLiteral.to_yaml)
 
 class FileGroup:
     __APPLY_TO_ALL = (
-        'doc', 'executable', 'install_to', 'license', 'unsuitable',
+        'doc', 'executable', 'ignorable', 'install_to', 'license',
+        'unsuitable',
     )
 
     def __init__(self, name):
@@ -436,7 +444,7 @@ class FileGroup:
             if value is not None:
                 setattr(other, attr, value)
 
-    def to_data(self, expand=True, files=None):
+    def to_data(self, expand=True, files=None, include_ignorable=False):
         ret = {}
 
         for attr in self.__APPLY_TO_ALL:
@@ -452,10 +460,18 @@ class FileGroup:
                 group_members = []
 
                 for name in sorted(self.group_members):
+                    prefix = ''
+
                     if name in files:
                         f = files[name]
                         size = f.size
                         md5 = f.md5
+
+                        if f.ignorable:
+                            if not include_ignorable:
+                                continue
+
+                            prefix = '.'
                     else:
                         size = '_'
                         md5 = '_'
@@ -466,7 +482,8 @@ class FileGroup:
                     if md5 is None:
                         md5 = '_'
 
-                    group_members.append('%-9s %s %s\n' % (size, md5, name))
+                    group_members.append(
+                        '%s%-9s %s %s\n' % (prefix, size, md5, name))
 
                 ret['group_members'] = YamlLiteral(''.join(group_members))
 
diff --git a/game_data_packager/game.py b/game_data_packager/game.py
index 2e82e94..e5216c2 100644
--- a/game_data_packager/game.py
+++ b/game_data_packager/game.py
@@ -346,7 +346,7 @@ class GameData(object):
 
         return help_text
 
-    def to_data(self, expand=True):
+    def to_data(self, expand=True, include_ignorable=False):
         files = {}
         groups = {}
         packages = {}
@@ -360,13 +360,21 @@ class GameData(object):
             return ret
 
         for filename, f in self.files.items():
+            if f.ignorable and not include_ignorable:
+                continue
+
             data = f.to_data(expand=expand)
 
             if data or expand:
                 files[filename] = data
 
         for name, g in self.groups.items():
-            groups[name] = g.to_data(expand=expand, files=self.files)
+            if g.ignorable and not include_ignorable:
+                continue
+
+            groups[name] = g.to_data(
+                expand=expand, files=self.files,
+                include_ignorable=include_ignorable)
 
         for name, package in self.packages.items():
             packages[name] = package.to_data(
@@ -402,6 +410,9 @@ class GameData(object):
             if f.alternatives:
                 continue
 
+            if f.ignorable and not include_ignorable:
+                continue
+
             if f.md5 is None:
                 unknown_md5s.add(filename)
 
@@ -452,14 +463,21 @@ class GameData(object):
 
         for filename in sorted(self.files.keys()):
             f = self.files[filename]
+            prefix = ''
+
+            if f.ignorable:
+                if not include_ignorable:
+                    continue
+
+                prefix = '.'
 
             if f.sha1 is not None:
-                sha1s.append('%-40s %s\n' % (f.sha1, f.name))
+                sha1s.append('%s%-40s %s\n' % (prefix, f.sha1, f.name))
 
             if f.sha256 is not None:
-                sha256s.append('%-64s %s\n' % (f.sha256, f.name))
+                sha256s.append('%s%-64s %s\n' % (prefix, f.sha256, f.name))
 
-            if f.size is None:
+            if f.size is None and not f.ignorable:
                 unknown_sizes.append(filename)
 
             for g in self.groups.values():
@@ -475,7 +493,8 @@ class GameData(object):
                 if md5 is None:
                     md5 = '_'
 
-                ungrouped.append('%-9s %32s %s\n' % (size, md5, filename))
+                ungrouped.append(
+                    '%s%-9s %32s %s\n' % (prefix, size, md5, filename))
 
         if unknown_sizes:
             ret['unknown_sizes'] = unknown_sizes
@@ -619,15 +638,21 @@ class GameData(object):
         """Parse one line from md5sums-style data."""
 
         stripped = line.strip()
+        ignorable = False
+
         if stripped == '' or stripped.startswith('#'):
             return
 
+        if stripped[0] == '.':
+            ignorable = True
+            stripped = stripped[1:]
+
         if alg == 'size_and_md5':
-            size, hexdigest, filename = line.split(None, 2)
+            size, hexdigest, filename = stripped.split(None, 2)
             alg = 'md5'
         else:
             size = None
-            hexdigest, filename = MD5SUM_DIVIDER.split(line, 1)
+            hexdigest, filename = MD5SUM_DIVIDER.split(stripped, 1)
 
         if filename in self.groups:
             assert size in (None, '_'), \
@@ -646,6 +671,9 @@ class GameData(object):
         if hexdigest is not None and hexdigest != '_':
             setattr(f, alg, hexdigest)
 
+        if ignorable:
+            f.ignorable = True
+
         return f
 
     def _populate_groups(self, stream):
@@ -840,9 +868,10 @@ class GameData(object):
 
         for filename, f in self.files.items():
             for provided in f.provides_files:
-                self.providers.setdefault(provided.name, set()).add(filename)
+                if not provided.ignorable:
+                    self.providers.setdefault(provided.name, set()).add(filename)
 
-            if f.alternatives:
+            if f.alternatives or f.ignorable:
                 continue
 
             if f.distinctive_size and f.size is not None:
@@ -1009,7 +1038,7 @@ class GameData(object):
                 assert wanted.sha1 is None, wanted.name
                 assert wanted.sha256 is None, wanted.name
                 assert wanted.size is None, wanted.name
-            else:
+            elif not wanted.ignorable:
                 assert (wanted.size is not None or filename in
                         self.data.get('unknown_sizes', ())
                         ), (self.shortname, wanted.name)
diff --git a/game_data_packager/make_template.py b/game_data_packager/make_template.py
index 3051522..fcfc3dc 100644
--- a/game_data_packager/make_template.py
+++ b/game_data_packager/make_template.py
@@ -571,7 +571,7 @@ class Template:
     def print_yaml(self):
         print('---')
 
-        data = self.game.to_data(expand=False)
+        data = self.game.to_data(expand=False, include_ignorable=True)
 
         if data:
             yaml.dump(data, default_flow_style=False, stream=sys.stdout)
@@ -610,13 +610,16 @@ class Template:
 
             print('    group_members: |')
             for f in sorted(group.group_members):
-                print('      %-9s %s %s' % (self.size[f], self.md5[f], f))
+                if f in self.unwanted.group_members:
+                    print('      .%-9s %s %s' % (self.size[f], self.md5[f], f))
+                else:
+                    print('      %-9s %s %s' % (self.size[f], self.md5[f], f))
 
         print('\nsha1sums: |')
 
         for f in sorted(self.sha1.keys()):
             if f in self.unwanted.group_members:
-                print('  #%s %s' % (self.sha1[f], f))
+                print('  .%s %s' % (self.sha1[f], f))
             else:
                 print('  %s %s' % (self.sha1[f], f))
 
@@ -624,7 +627,7 @@ class Template:
 
         for f in sorted(self.sha256.keys()):
             if f in self.unwanted.group_members:
-                print('  #%s %s' % (self.sha256[f], f))
+                print('  .%s %s' % (self.sha256[f], f))
             else:
                 print('  %s %s' % (self.sha256[f], f))
 
diff --git a/tools/check_equivalence.py b/tools/check_equivalence.py
index 7e047e7..85c128b 100755
--- a/tools/check_equivalence.py
+++ b/tools/check_equivalence.py
@@ -116,7 +116,8 @@ if __name__ == '__main__':
         json_game.load_file_data(check=True, use_vfs=False)
         json_to_data = json_game.to_data()
         json_to_json = dump(json_to_data)
-        json_to_data_unexpanded = json_game.to_data(expand=False)
+        json_to_data_unexpanded = json_game.to_data(
+                expand=False, include_ignorable=True)
         json_to_json_unexpanded = dump(json_to_data_unexpanded)
 
         yaml_game = from_yaml[name]
diff --git a/tools/compile_yaml.py b/tools/compile_yaml.py
index ce1676c..9b1eb55 100755
--- a/tools/compile_yaml.py
+++ b/tools/compile_yaml.py
@@ -53,13 +53,19 @@ def main(f, out):
             # The group data starts with a list of groups. This is necessary
             # so we can know whether a group member, encountered later on in
             # the data, is a group or a file.
-            for group_name in sorted(groups.keys()):
+            for group_name, group_data in sorted(groups.items()):
+                if isinstance(group_data, dict):
+                    if group_data.get('ignorable'):
+                        continue
+
                 writer.write('*%s\n' % group_name)
 
             for group_name, group_data in sorted(groups.items()):
-                writer.write('[%s]\n' % group_name)
-
                 if isinstance(group_data, dict):
+                    if group_data.get('ignorable'):
+                        continue
+
+                    writer.write('[%s]\n' % group_name)
                     attrs = {}
                     members = group_data['group_members']
                     for k, v in group_data.items():
@@ -69,6 +75,7 @@ def main(f, out):
                         json.dump(attrs, writer, sort_keys=True)
                         writer.write('\n')
                 elif isinstance(group_data, (str, list)):
+                    writer.write('[%s]\n' % group_name)
                     members = group_data
                 else:
                     raise AssertionError('group %r should be dict, str or list' % group_name)
@@ -80,7 +87,9 @@ def main(f, out):
                         assert not line.startswith('[')
                         assert not line.startswith('{')
                         line = line.strip()
-                        if line and not line.startswith('#'):
+                        if (line and
+                                not line.startswith('#') and
+                                not line.startswith('.')):
                             has_members = True
                             writer.write(' '.join(line.split()))
                             writer.write('\n')
@@ -112,7 +121,9 @@ def main(f, out):
 
                 for line in v.splitlines():
                     stripped = line.strip()
-                    if stripped == '' or stripped.startswith('#'):
+                    if (stripped == '' or
+                            stripped.startswith('#') or
+                            stripped.startswith('.')):
                         continue
                     writer.write(line)
                     writer.write('\n')

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