feat: add a --no-game-data pack narrowing

The install manifest marks each game data file "category": "game_data":
a platform entry only game data profile entries read, or a core file its
profile declares game data. Firmware carries no category. Every manifest
says "categorized": true so the installer can refuse an older list.

generate_pack.py --no-game-data cuts those files from the platform list
and the core profiles before the build, names each one with the cores that
read it as game data, and tags the pack _NoGameData through _narrowings.
verify.py and the pack check take the same cut, so --verify-packs and the
report describe the pack the builder wrote. Modes without a platform
(--emulator, --system alone, --from-md5) and --all-variants refuse it.
This commit is contained in:
Abdessamad Derraz committed 2026-10-22 06:19:05 +02:00
1 parent f66adfdcbc
commit 8b952968d6
8 files changed
+371 -11

No files matched your search

+15
View File
@@ -6003,6 +6003,7 @@ struct BurnDriver BurnDrvneogeo = {
{"target_name": "switch"},
{"one_per_slot": True},
{"required_only": True},
{"no_game_data": True},
]
for kwargs in dimensions:
applied = _narrowings(
@@ -6011,6 +6012,7 @@ struct BurnDriver BurnDrvneogeo = {
kwargs.get("target_name"),
kwargs.get("one_per_slot", False),
kwargs.get("required_only", False),
no_game_data=kwargs.get("no_game_data", False),
)
self.assertEqual(len(applied), 1, kwargs)
tag, label = applied[0]
@@ -6136,6 +6138,19 @@ struct BurnDriver BurnDrvneogeo = {
# Documented as adding core files, read by nothing.
(["--emulator", "handy"], ["--include-extras"], "refuse"),
(["--system", "atari-lynx"], ["--include-extras"], "refuse"),
# Game data is categorized against a platform's list and the
# cores it runs: the modes without a platform refuse it, and
# --all-variants builds its own fixed set.
(["--emulator", "handy"], ["--no-game-data"], "refuse"),
(["--system", "atari-lynx"], ["--no-game-data"], "refuse"),
(["--platform", "retroarch", "--from-md5", "d8f1"], ["--no-game-data"],
"refuse"),
(["--from-md5", "d8f1"], ["--no-game-data"], "refuse"),
(["--manifest-targets"], ["--no-game-data"], "refuse"),
(["--platform", "retroarch", "--all-variants"], ["--no-game-data"],
"refuse"),
(["--list-systems"], ["--no-game-data"], "refuse"),
(["--list"], ["--no-game-data"], "refuse"),
]
for mode, flag, expected in matrix:
with self.subTest(mode=mode, flag=flag):