fix: name every reader of a held file out of reach

A release asset absent from the checkout is omitted from the install
list. That omission named only the first core reading it: harm1.wad,
action2.wad and delaweare.wad named gzdoom, so install.py --target
rpi1, where lzdoom runs, kept nothing the builder's list for rpi1
omits. The omission now names the cores of the claims folded onto the
entry too.
This commit is contained in:
Abdessamad Derraz committed 2026-11-10 06:47:15 +01:00
1 parent 27c33b966e
commit 7b141e7a54
2 files changed
+22 -6

No files matched your search

+13 -6
View File
@@ -4515,11 +4515,7 @@ def _manifest_core_entries(
):
systems = _extra_system_ids(fe)
record_omission(
full_dest,
fe,
systems[0] if systems else "",
status,
[source_emu] if source_emu else [],
full_dest, fe, systems[0] if systems else "", status, _claim_cores(fe),
)
continue
@@ -4554,7 +4550,7 @@ def _manifest_core_entries(
systems = _extra_system_ids(fe)
record_omission(
full_dest, fe, systems[0] if systems else "", "not_found",
[source_emu] if source_emu else [],
_claim_cores(fe),
)
if file_size:
pack_only_sizes.append(file_size)
@@ -4668,6 +4664,17 @@ def _manifest_selection(
), held
def _claim_cores(fe: dict) -> list[str]:
"""The cores an extra and the claims folded onto it name: an omission
names every core reading the file, as a list built for one of them
would."""
names = {
claim.get("source_profile") or claim.get("source_emulator", "")
for claim in (fe, *fe.get("other_claims", []))
}
return sorted(name for name in names if name)
def _record_absent(
absent: list[dict],
config: dict,
+9
View File
@@ -7824,6 +7824,15 @@ class EveryReaderOfACoreFileIsNamed(unittest.TestCase):
{"profile": "drastic-legacy", "bundled": True}]}
self.assertEqual(_split_bundled_claims([alone]), [alone])
def test_a_held_file_out_of_reach_names_every_core_reading_it(self):
"""harm1.wad is a release asset: a checkout without it omits the file,
and the omission named gzdoom alone where lzdoom reads it too."""
from generate_pack import _claim_cores
extra = {"source_profile": "gzdoom", "other_claims": [
{"source_profile": "uzdoom"}, {"source_profile": "lzdoom"}]}
self.assertEqual(_claim_cores(extra), ["gzdoom", "lzdoom", "uzdoom"])
def test_a_missing_file_names_every_core_reading_it(self):
from generate_pack import _record_absent