Commit Graph
40 Commits
Author SHA1 Message Date
Abdessamad Derraz e6c29452f9 fix: never drop a held file for a missing region
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.
2026-10-17 18:31:56 +02:00
Abdessamad Derraz 5cfcb9e746 fix: group missing regional core files by region 2026-10-17 18:28:49 +02:00
Abdessamad Derraz a58b65754b fix: count a core file filling a declaration
In existence mode the builder packs a core's file at a destination the
platform declares and does not hold, and counts the declaration met.
verify now reads the same placement and reports it OK, so both sides
agree on the platform's count.
2026-10-17 18:14:26 +02:00
Abdessamad Derraz 51f3249a7d fix: give a shared core slot to the pinned claim
hypseus-singe asks for gamecontrollerdb.txt by name alone and, first
in profile order, took the BIOS root of Batocera, RetroBat and
RetroPie with C-Dogs' small table while Solarus pins its own by sha1.
A destination two cores claim now goes to the one naming its content.
2026-10-17 08:27:08 +02:00
Abdessamad Derraz cb41a52b17 fix: skip region-dropped extras in the hidden report 2026-10-17 02:03:26 +02:00
Abdessamad Derraz 1699caaca2 fix: pick the archive holding a core's members 2026-10-16 19:22:45 +02:00
Abdessamad Derraz d86215235e fix: keep scan copies out of region choices 2026-10-16 14:28:18 +02:00
Abdessamad Derraz b173a2a851 fix: place libretro dolphin files where it reads 2026-10-16 14:03:17 +02:00
Abdessamad Derraz 48b00730ff fix: never copy a path-null entry to a pack root 2026-10-16 14:03:09 +02:00
Abdessamad Derraz 81b8dac434 fix: seed agnostic scans from the running build 2026-10-16 12:50:48 +02:00
Abdessamad Derraz d049270515 fix: report core files the platform pack displaces 2026-10-16 12:49:34 +02:00
Abdessamad Derraz 5cfaf97173 fix: replay system drops and keep file modes 2026-10-16 09:44:23 +02:00
Abdessamad Derraz 936f713a82 fix: keep archive members out of root copies 2026-10-16 08:39:46 +02:00
Abdessamad Derraz 149157279e fix: copy a settled core file to its root path 2026-10-16 07:42:26 +02:00
Abdessamad Derraz fbe432ccd0 feat: install only what the installed cores read 2026-10-16 05:02:50 +02:00
Abdessamad Derraz 2fb49d0658 fix: give no second-pass copy to unsourceable files 2026-10-15 22:45:42 +02:00
Abdessamad Derraz fd8db894d8 fix: test extras grouping through the real chain 2026-10-10 12:16:11 +02:00
Abdessamad Derraz 3d0170264a fix: place slot claims where the pack puts extras 2026-10-10 12:07:00 +02:00
Abdessamad Derraz 2c2f284414 fix: file a slug-platform bios under its own system 2026-10-10 11:43:08 +02:00
Abdessamad Derraz ffa6516e09 fix: let an alias settle only where the core reads 2026-10-10 09:47:50 +02:00
Abdessamad Derraz f6da2cff3a fix: settle a core file only by its size or slot 2026-10-10 09:15:11 +02:00
Abdessamad Derraz e0dab891ee fix: let a system-less extra compete with nothing 2026-10-10 08:14:57 +02:00
Abdessamad Derraz af7b3133a4 fix: resolve profile entries with their owner 2026-10-10 07:38:33 +02:00
Abdessamad Derraz ece2c06aaf feat: choose systems, cores and regions to install 2026-10-10 04:31:57 +02:00
Abdessamad Derraz b9cf7c7415 fix: report the extras a platform cannot place 2026-10-09 22:34:20 +02:00
Abdessamad Derraz c1b930a6fd fix: keep save and content files out of the truth 2026-10-06 12:48:58 +02:00
Abdessamad Derraz bb6669c362 fix: reduce emulator packs by region after required-only 2026-10-06 09:13:15 +02:00
Abdessamad Derraz 8d98e1c659 refactor: extract companion extras and the kept filter 2026-10-06 07:03:59 +02:00
Abdessamad Derraz c9f8f4b230 fix: choose regions among the files required-only keeps 2026-10-06 04:54:05 +02:00
Abdessamad Derraz b5feaccc2a fix: carry pcsx2 companions under the names it opens 2026-10-06 04:29:16 +02:00
Abdessamad Derraz b2e488e0a4 fix: carry identity in extras, refile rom b 2026-10-06 04:12:08 +02:00
Abdessamad Derraz f259634c38 fix: group variant slots across their systems 2026-10-06 00:26:36 +02:00
Abdessamad Derraz 533dd7586f fix: scan free bios names only in the bios folder 2026-10-05 22:55:31 +02:00
Abdessamad Derraz 3177a57103 fix: emulator region report reads the pack drop set 2026-10-05 21:43:32 +02:00
Abdessamad Derraz 54016ad89b fix: keep profile identity on second-pass extras 2026-10-05 21:27:35 +02:00
Abdessamad Derraz 0d7939588e fix: one size predicate, size_options retired 2026-10-05 02:51:13 +02:00
Abdessamad Derraz 887fc34bf6 feat: lay out standalone files by build mode 2026-10-04 16:35:59 +02:00
Abdessamad Derraz c313b32347 chore: neutral report path and plain punctuation
The markdown report wrote to a directory named after the tooling that
happened to produce it. It takes --report-dir now, defaulting to
reports/, so nothing in the tree names anything but the project.

Em-dashes replaced throughout the sources and tests, rephrased rather
than swapped for a comma where the dash carried an apposition.
2026-08-12 16:16:52 +02:00
Abdessamad Derraz 6aa5685fc7 refactor: split the extras collector into its passes
_collect_emulator_extras ran three passes in one body: the undeclared
files a platform's cores need, a second copy of an archive under the
subdirectory some cores read, and the scan a filename-agnostic core
allows. The last two are named now, complexity 98 to 54.

The archive-prefix pass had no test, and extracting it surfaced why that
mattered: it read an index from the enclosing scope, so on its own it
would have raised. Three tests cover it, including the case it exists to
prevent - claiming a prefixed path for an archive the collection does
not hold.
2026-08-12 15:46:02 +02:00
Abdessamad Derraz c31ce0b693 refactor: split the pack builder into its layers
generate_pack.py held six responsibilities in 4744 lines. Five move out
in dependency order, so nothing above reaches back down: destinations,
core extras, resolution with its storage tiers, the notes shipped inside
a pack, and the pack verifier. generate_pack.py keeps the build and the
command line, and re-exports the rest.

Two things the move surfaced. The offline switch was a module global the
command line assigned, which a re-export would have copied and frozen at
False; it is set through a call now and not re-exported. And a facade
placed after the entry point binds too late: importing the module worked,
running it did not, so the manifest run died on a name the tests never
exercised because tests import.

Verified against the previous revision on frozen inputs: every generated
artefact is identical, save the catalogue that embeds hashes of files
carrying a build timestamp.
2026-08-12 12:20:17 +02:00