generate_pack kept a private .gitignore parser whose cache ignored the
root it was asked about, and generate_db a copy of the shared one. Both
now read largefiles.load_registered_paths, cached per root. Test modules
whose main block preceded their last class end with it again.
Region filtering ranked every declared file, held or not, so a request
answered only by a missing file dropped the held fallback and emptied
the slot. Only held files now decide what gives way; the missing better
match stays reported.
A profile lists each version its code takes under one name. The core
extra carries the first; a held copy matching another entry of the same
profile is no longer reported as a hash discrepancy.
Two --from-md5 runs with different hash lists wrote the same file, the
second replacing the first, and a pack limited to thirty systems built
a name longer than a file name may be. The custom pack now carries a
digest of its hash list, and a long system list keeps its first system,
a count and a digest, as the emulator pack does.
The emulator pack recorded only loose files as a path's occupant, so a
path an archive or data tree had filled was reported missing even with
the same bytes in the ZIP, and an archive several profiles ask for was
counted once per profile. verify registered neither, and credited one
profile's file at a path holding another's. Both now record archives
and tree members in pack order; --system snk-neogeo-mvs went from 113
missing in the pack and 51 in verify to 59 on both sides.
Step 2 refreshed the data directories, then the pack build and the
manifest build refreshed them again, so a tree tracking a moving
branch could differ between the pack and the manifest. generate_pack
gains --no-refresh-data, which packs the cached trees and still
fetches release assets; the online pipeline passes it to both builds.
The RetroArch and Lakka pack was built under RetroArch's own name and
renamed afterwards, which overwrote then carried away a --platform
retroarch pack in the same directory, and failed on Windows where
os.rename refuses an existing target.
--system snes joined 23 emulator names into the ZIP name and died
with ENAMETOOLONG before writing anything. The system pack now passes
its own name in, and an --emulator selection too long to join keeps
its first name, a count and a digest of the selection.