fix: credit readers the file their pack resolves

The name step tried the destination's basename alongside the entry's
own names. With dsi_nand.bin absent from a checkout, nand.bin from
dsi/nand.bin let the Wii NAND outrank the entry's own DSi variant, and
the site named melonDS Nightly a reader of it. The basename is now tried
only when no own name answers.

FileConsumers also resolved profile entries without the archive members
the emulator pack passes, so gngeopi and neo-emu were credited with the
MAME neogeo.zip instead of the archive their pack carries.
This commit is contained in:
Abdessamad Derraz committed 2026-10-23 13:03:39 +02:00
1 parent c2875a3851
commit aeb68fe753
3 files changed
+139 -7

No files matched your search

+7 -1
View File
@@ -53,6 +53,7 @@ from validation import (
outside_gap_scope,
read_from_save_dir,
unread_on,
with_archive_members,
)
yaml = require_yaml()
@@ -563,7 +564,12 @@ class FileConsumers:
for dest, sha1 in members.items()
]
else:
found = [self.sha1_of(entry, entry.get("path") or "", owner=name)]
# The archive members the profile reads decide between
# same-named copies, as in the emulator pack and verify.
found = [self.sha1_of(
with_archive_members(entry, files), entry.get("path") or "",
owner=name,
)]
for sha1 in found:
if sha1:
self.emulators.setdefault(sha1, set()).add(name)