Commit Graph
13 Commits
Author SHA1 Message Date
Abdessamad Derraz 36f7d60d88 feat: fail on a declared archive with no copy
The layout check skipped any archive it found no copy of, and it looked
copies up by name only, so 23 MAME device sets held through the clone map
were never checked and pro1000.zip was never reported absent.
2026-10-22 08:15:45 +02:00
Abdessamad Derraz d768a11cbd feat: check every declared archive layout is held 2026-10-22 06:33:52 +02:00
Abdessamad Derraz 052f837e69 chore: merge round 2 fixes (integrity) 2026-10-21 10:31:04 +02:00
Abdessamad Derraz 5004c4d8d5 fix: refuse an archive holding no declared member
_holding_members kept every same-named copy when the best held nothing,
so galgames.zip, a lone assembler listing, resolved by name for mame,
groovymame and mame4droid-2024, and awbios.zip for mame4droid. Such a
copy now resolves as hash_mismatch.

mame2003_plus declared its contents by name only, while fileio.c:1031-1040
loads a member by CRC when the name is absent. The 61 members now carry
the CRC their driver declares, so stvbios, megatech and the six ZN sets
keep matching the archives the collection holds.
2026-10-21 10:14:09 +02:00
Abdessamad Derraz 78e172fd5f fix: index archive members once per profile
archive_members scanned the whole file list on every call, and callers ask once per entry of the same profile: 38 million entries walked in one verify --all over mame.yml. Lists of 64 entries or more are now indexed by archive once (held so the id is not reused, indexed again when the length changes), members still read from the entries at each call. archive_members drops from 2.30 s to 0.14 s tottime under the profiler. verify --all (text and --json), slots --json and the retroarch manifest are byte-identical.
2026-10-21 10:08:25 +02:00
Abdessamad Derraz fb639647e6 fix: resolve a loose archive entry by its members
gngeopi and neo-emu declare neogeo.zip loose and, apart, the ROMs they
open inside it. The archive pass took the copy holding them, the loose
entry resolved by name to another copy, and both verify --emulator and
the emulator pack reported the archive missing while the ZIP held it.
with_archive_members() gives the loose entry the members in verify, the
pack, slots and the gap report.
2026-10-21 05:05:54 +02:00
Abdessamad Derraz 4231902a6c docs: write prose without dashes or semicolons
Profiles, the wiki, comments, docstrings, command output and schema descriptions carried em-dashes, clause-joining semicolons, unicode arrows, box-drawing banners and check-mark glyphs. Each sentence was rewritten rather than having its character swapped. Hashes, paths, source_ref values and every cited file:line are unchanged, which a comparison of each parsed profile against the previous revision confirms.

validate_pr comments now say PASS and FAIL in words, and source_ref values in a profile's structured blocks render as code. test_prose_style fails if any of these comes back, in tracked files or in the generated site.
2026-10-19 06:47:31 +02:00
Abdessamad Derraz 7d1b8435bc fix: rank same-named archives by what they hold
The name step only ranked archive copies by members declared
through archive sub-entries, and the contents an archive entry lists
never reached the resolver, so the first copy indexed won. contents
now ranks copies by crc32, or by member name where the code opens
by name, and the report and both extra passes carry it. With no
layout declared, a primary holding every ROM of the others wins;
two revisions keep the index order.
2026-10-18 02:30:53 +02:00
Abdessamad Derraz 346950156c fix: hash recalbox archives by their members 2026-10-16 21:06:55 +02:00
Abdessamad Derraz 9faa3a3f79 feat: add the nmk004.zip fbneo reads 2026-10-16 19:33:48 +02:00
Abdessamad Derraz 1699caaca2 fix: pick the archive holding a core's members 2026-10-16 19:22:45 +02:00
Abdessamad Derraz 315549a5b0 fix: decide destination winners without data dirs 2026-10-10 11:20:33 +02:00
Abdessamad Derraz 8e41ddc297 fix: ship the archive every member declaration accepts 2026-10-05 22:05:10 +02:00