fix: keep the claims of every core on a file

The first profile reading a requirement hosts the others' claims,
and two ways of dropping the host dropped them too. DraStic brings its
own usrcheat.dat, and DSPerate, which reads the same file, lost it
wherever DraStic runs. A missing file was recorded for its first
reader alone: NAPALM.GRP named Raze, Data.rsdk Sonic Mania. A list
built for a board without that reader carried what the full list
left out, and install.py --target disagreed with the builder on
ROCKNIX, KNULLI, Batocera and RetroPie boards.
This commit is contained in:
Abdessamad Derraz committed 2026-11-10 02:08:11 +01:00
1 parent 2a6b8b5943
commit 3d2629f652
4 files changed
+89 -8

No files matched your search

+10 -3
View File
@@ -4694,11 +4694,18 @@ def _record_absent(
):
continue
full_dest = extra_full_destination(fe, extras_pfx)
if not full_dest:
continue
if full_dest in seen_destinations or full_dest in omitted_by_destination:
if not full_dest or full_dest in seen_destinations:
continue
source_emu = fe.get("source_profile") or fe.get("source_emulator", "")
held = omitted_by_destination.get(full_dest)
if held is not None:
# Another core reads the same missing file there (Raze and
# EDuke32 both open NAPALM.GRP): one omission names them all.
claimed = held.get("cores")
if (held.get("reason") == "not_found" and claimed and source_emu
and source_emu not in claimed):
held["cores"] = sorted([*claimed, source_emu])
continue
systems = _extra_system_ids(fe)
record_omission(
full_dest, fe, systems[0] if systems else "", "not_found",