feat: mark files a core finds by content

DuckStation identifies its BIOS by MD5 in a folder it scans
(bios.cpp:208), so its entries' names are labels. The export wrote them
into Batocera's and ROCKNIX's lists as files to hold: a user with only
scph5501.bin read 104 missing BIOS where DuckStation boots. Labels also
lent their md5 to a name another core opens, and paired by name they
replaced System.dat's scph5000.bin hashes.

found_by: name | content, on a profile or a file and keyed by build like
load_from. The truth records which cores open each name (_named_by). A
label pairs with a platform entry by hash only, is never added, merges
with an opened name only on a shared hash, and is counted in the export
report rather than listed as missing.
This commit is contained in:
Abdessamad Derraz committed 2026-10-20 16:32:22 +02:00
1 parent eaf6d1859d
commit e5174a07bf
8 files changed
+182 -6

No files matched your search

+5
View File
@@ -612,6 +612,10 @@ def export_platform(
withheld = exporter.withheld()
if withheld:
summary += f", {_count(len(withheld), 'correction')} withheld"
if report.labels:
# A content-scanning core's names are labels: a list checked by path
# cannot hold them.
summary += f", {_count(report.labels, 'entry', 'entries')} found by content not listed"
messages.append(summary)
messages.extend(f"withheld: {reason}" for reason in withheld)
for correction in applied[:5]:
@@ -653,6 +657,7 @@ def export_platform(
"hashes_cleared": cleared,
"requirements_corrected": requirements,
"withheld": list(withheld),
"found_by_content": report.labels,
"invalid": issues,
})
return True, messages