Commit Graph
199 Commits
Author SHA1 Message Date
Abdessamad Derraz 40bc07aa3a feat: record files a launcher never opens
unread_on names the platforms whose launcher points the emulator at other files. RetroBat writes absolute BIOS paths into standalone BlastEm's config, so the default names were reported as required and missing there. Such an entry leaves that platform's gap report and pack, and its emulator page says where it is never opened.
2026-10-20 10:27:15 +02:00
Abdessamad Derraz ef8b372810 chore: drop copies only an install provides
A file that arrives with the emulator is already on the user's machine
and the packs leave it out. 4558 collected copies (1.4 GB) were reached
only by such entries, with no platform, other profile entry or install
manifest needing them. They are removed, and two release-asset copies
leave the ignore list. bundled_only.py now lists every copy of a listed
file, since the database keeps one path per content, and pipeline step
4d fails while one remains.
2026-10-20 10:17:08 +02:00
Abdessamad Derraz 954f213d42 fix: one id per card, and render the site locally
A copy filed under two consoles of one maker was listed twice with the same id, and a data directory listed the same bytes twice, so the site deploy refused 20 pages. The first card keeps the id. The pipeline only generated the pages, so it now renders them with mkdocs build --strict and runs validate_site as the deploy does. The resumed-speed test read the clock and failed on a slow runner, it now fixes the elapsed time.
2026-10-20 07:05:01 +02:00
Abdessamad Derraz 6df087e3e9 fix: a platform's own data trees leave its pack
The platform layer names data trees for its systems: retroarch.yml carries dolphin-sys and ppsspp-assets, and Lakka inherits them, while Lakka's core packages install both trees into the system directory. A profile records that with installed_on on its data directory, and the pack and the install manifest now leave those trees out for that platform.
2026-10-20 06:36:32 +02:00
Abdessamad Derraz 1ff2bfc3c0 fix: the API schema holds each endpoint's fields
The data page promises that v1 fields are only ever added, and the envelope schema left items unconstrained, so a renamed field passed validation. Each kind now lists the fields its items carry and their types.
2026-10-20 06:18:25 +02:00
Abdessamad Derraz 1bbb1d4749 fix: emulator JSON-LD names every repository read
The structured data of an emulator page published one repository and one commit. A profile whose builds live in two repositories, or a port with an upstream_commit, now lists each repository with its own pin.
2026-10-20 06:17:40 +02:00
Abdessamad Derraz 08396be3c6 fix: the collection DAT names sets by subfolder
The collection DAT named its sets "Sony - PlayStation", and the data page said it audits a copy of bios/. clrmamepro and RomVault looked for a folder of that name and reported the 330 sets missing. A Logiqx set name writes a subfolder with a backslash: Sony\PlayStation.
2026-10-20 06:17:16 +02:00
Abdessamad Derraz f7d57dd91d feat: a platform package can differ from upstream
bundled describes the emulator's own release, and a platform package can differ both ways: Batocera's hcl package installs the binary alone and sends users to fetch the data, while its blueMSX core package copies the machines and databases beside the core. not_bundled_on and installed_on name those platforms, and the builder reads them through one rule.
2026-10-20 06:11:10 +02:00
Abdessamad Derraz a07821d810 feat: list files only an emulator install provides
A file installed with its emulator is already on the user's machine and the packs leave it out. bundled_only.py lists the collected copies nothing else needs: no platform declares them, no entry of any build needs them, no install manifest ships them.
2026-10-20 06:05:20 +02:00
Abdessamad Derraz ddc7432825 feat: packs leave out what the emulator installs
A file or tree installed with the emulator is already on the user's machine, so packs, install manifests and verify's pack count leave it out. bundled is scoped by mode like any entry: Dolphin's Sys and PPSSPP's assets ship with the standalone releases, not with the libretro cores, so they now follow the libretro build only and still reach RetroArch packs. PrimeHack, standalone only, ships its own Sys.
2026-10-20 06:04:10 +02:00
Abdessamad Derraz 2e0d3d626a docs: build RetroPie in the release pipeline run
The release built and checked the RetroPie pack with two commands after the pipeline, which left it out of the verify and pack consistency check. pipeline.py --include-archived builds and checks it with the rest.
2026-10-20 04:52:25 +02:00
Abdessamad Derraz 8bd2d319b2 feat: the pipeline runs the schema check first
PR validation runs validate_schemas.py --source-only and the pipeline did not, so a profile with an unquoted numeric core name passed every step and failed CI on push. It is step 0 now, skipped where jsonschema is not installed.
2026-10-20 04:50:04 +02:00
Abdessamad Derraz 1ae2854474 fix: a truth hash conflict is reported once
Generating the model for every platform met the same two GameIndex.yaml declarations once per platform, and check_freshness opened on six identical warnings.
2026-10-20 04:46:03 +02:00
Abdessamad Derraz 50790a2988 fix: the pipeline summary says what does not fail
check_buildbot does not fail the run, yet the summary printed it FAILED right above Pipeline COMPLETE. It now prints WARN and a line saying the difference does not fail the run. The total is aligned under the step durations.
2026-10-20 04:44:30 +02:00
Abdessamad Derraz 3f029578af fix: a scraper that cannot start says what to do
Scrapers resolve their tag or branch head in the constructor, which ran outside the try in scraper_cli: a refused GitHub call ended in a traceback. The error is now printed with the next step, setting GITHUB_TOKEN when the API refused an anonymous call.
2026-10-20 04:36:24 +02:00
Abdessamad Derraz 18e093182d docs: name the registries behind assets and dedup
The guides said files over 50 MB become release assets and that RPG Maker and ScummVM were the trees kept out of dedup. .gitignore decides the first, four committed files are over 50 MB, and NODEDUP_DIRS holds eleven trees.
2026-10-20 04:35:02 +02:00
Abdessamad Derraz 7edd438af1 fix: refuse a target no platform has
With --all, an unknown --target skipped every platform that has targets and ran the others (BizHawk, MiSTer) unfiltered, so verify, slots and the pipeline exited 0 on a typo. A platform without targets is now left out like the rest, and a target no platform has is refused.
2026-10-20 03:27:41 +02:00
Abdessamad Derraz c7c2f260f3 fix: check a forced rehash against the last one
The pipeline rebuilds the database with --force, which discarded the previous digests and wrote whatever the CPU computed, on a host that has given an incorrect SHA-1 under load. The forced run still rehashes every file, but a digest that contradicts the cache for an unchanged mtime and size is computed again, and the two readings that agree win, with a warning naming the file.
2026-10-20 03:24:55 +02:00
Abdessamad Derraz ab1f5d7eb4 fix: guard committed text against tooling names
Two test docstrings named the maintainer's private notes file, and nothing stopped it. They now state the rule itself, and test_prose_style fails on any tracked file that names the private notes or the assistant tooling.
2026-10-20 03:23:25 +02:00
Abdessamad Derraz 7bfe68b777 fix: an unanswered search is not a missing file
auto_fetch caught every network error in its repository and archive.org steps and reported the file as needing a community contribution. Offline or rate-limited, --create-issues asked the public for files the tool never looked for, and the errors counter stayed at 0. A 404 is still an answer. Any other failure now marks the file as not fully searched and keeps it out of issues.
2026-10-20 02:23:17 +02:00
Abdessamad Derraz 9fa1f45e92 fix: raise on a registry missing a platform file
list_registered_platforms skipped a registered platform whose YAML was missing and returned an empty list without a registry. verify --all --strict, every --all build, the CI matrix and the site then ran over fewer platforms and exited 0, and install.py kept serving the stale manifest. Both now raise and name the file.
2026-10-20 02:22:37 +02:00
Abdessamad Derraz ac47faf7f2 fix: the pack check applies the frontend's rule
The integrity step compared a member's md5 by hand and ignored hash_rule, so under RomM's rule (size, then any of md5, sha1 and crc32) it would refuse a revision the builder rightly shipped on its sha1. The rule now lives in digest_verdict, which the path check and the pack member check both call. The member's archive digest is computed without the path cache, whose key a buffer's reused address made collide.
2026-10-20 02:11:53 +02:00
Abdessamad Derraz 7aa9b3fcaa fix: the gap CLI sets bundled files apart
cross_reference printed 20 runtime components bundled with their emulator as [MISSING] and counted them among the files to source. The collection leaves them out by design, as verify and the gaps page already say. They are now listed as [BUNDLED] and counted on their own line.
2026-10-20 01:18:09 +02:00
Abdessamad Derraz c6db200beb fix: the global gap report keeps standalone files
With no platform named, cross_reference passed no standalone cores, so every dual profile was laid out as libretro only. The CLI and the site's gaps page left out 133 files that Batocera and RetroBat run standalone and that no platform declares (eka2l1 90, dolphin 21, cemu 11). Both now pass the union of every platform's standalone cores.
2026-10-20 01:17:35 +02:00
Abdessamad Derraz 7e23815545 fix: reports hold the data trees they read
generate_readme, generate_site and slots resolve against data/ but took no hold when run on their own, as the documented commands do. A refresh swapping a tree mid-read then gave counts from half of it. Each now holds the trees shared, like verify and the builder.
2026-10-20 00:32:26 +02:00
Abdessamad Derraz 7eb4a36711 fix: step 5 compares the cores' share of a pack
The consistency check compared the platform's own files only. It now also compares verify's core files and game data with the builder's count of files taken from the cores.
2026-10-20 00:28:40 +02:00
Abdessamad Derraz 843f0ddc0e fix: ares labels name ares's own dumps
ares matches its firmware by sha256 and opens no file by name, so its entry names are labels. Five reused names that other cores give to different dumps (MSX.ROM, MSX2.ROM, bios_CD_E/J/U.bin). On RetroBat that put ares's revision where the platform pins another, slots blamed the platform's declaration, and the pack dropped ares's own dump behind the platform's file. The labels now name the dumps the hashes identify.
2026-10-19 23:11:44 +02:00
Abdessamad Derraz 8fd8437351 refactor: share the core file lookup with verify
verify replayed the builder's placement of core files with a bare name lookup, without the archive index, the data directories or the core's own choice of copy. It compared other bytes than the pack's (blueMSX's MSX2P.rom from bios/ against the data tree's copy) and let an unresolved file take a path the builder leaves free. ExtraResolver now holds the builder's lookup and both call it.
2026-10-19 23:08:12 +02:00
Abdessamad Derraz c7f18e84c3 feat: read RomM cores from its player maps
RomM merges a nightly core map into the stable one when netplay is on, so it launches azahar, bsnes and genesis_plus_gx_wide, which the inherited EmulatorJS list left out. The scraper now reads both maps from the tagged frontend source and fails if either is missing. The cited mednafen_pce mapping is at index.ts:481-482 in 5.4.0.
2026-10-19 06:57:32 +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 18cca66e58 fix: hold the empty sweep to the no-pack rule
The older test read an --all check of an empty directory as a pass; it checked nothing, which the verify-packs rule now refuses.
2026-10-19 04:23:26 +02:00
Abdessamad Derraz 6d860a0df6 fix: refuse --verify-packs misuse before locking 2026-10-19 04:20:05 +02:00
Abdessamad Derraz 6008fe352c fix: rebuild the database named in the error 2026-10-19 04:19:12 +02:00
Abdessamad Derraz 642896346f docs: say what verify --strict fails on 2026-10-19 04:18:55 +02:00
Abdessamad Derraz 45d446df33 feat: time each step in the pipeline summary 2026-10-19 04:13:33 +02:00
Abdessamad Derraz 9a417dde2a fix: fail --verify-packs when no pack was checked 2026-10-18 20:39:14 +02:00
Abdessamad Derraz a913fbf539 fix: give EmuDeck its RetroArch cores' files
The scraper skipped RetroArch's own EmuScripts installer, so no libretro core's files reached the EmuDeck pack: np2kai, neocd and every core checkBIOS.sh does not name. RetroArch now stays in the list, as in RetroPie's.
2026-10-18 20:35:18 +02:00
Abdessamad Derraz dbe26fddc9 fix: group system-less files alike in both modes 2026-10-18 19:47:09 +02:00
Abdessamad Derraz 9c154a29b9 fix: join system names with a separator they lack 2026-10-18 19:43:40 +02:00
Abdessamad Derraz 6b9300f601 fix: report ground truth as the site does 2026-10-18 16:29:18 +02:00
Abdessamad Derraz 8e067c1c3a fix: name the packs that fail verification 2026-10-18 16:21:54 +02:00
Abdessamad Derraz 9ca1e68007 fix: word the alias refusal as a sentence 2026-10-18 16:20:50 +02:00
Abdessamad Derraz def1e80232 fix: fail a named pack that is not built 2026-10-18 16:20:33 +02:00
Abdessamad Derraz 737e917119 fix: name the target that removes a core 2026-10-18 16:19:19 +02:00
Abdessamad Derraz 4f42c52a7f fix: count systems once per normalized id 2026-10-18 16:11:13 +02:00
Abdessamad Derraz 1e29d1c266 docs: align release and install examples 2026-10-18 16:01:13 +02:00
Abdessamad Derraz eead810015 fix: skip the variants test without jsonschema 2026-10-18 15:31:28 +02:00
Abdessamad Derraz 3a29d5b56a fix: refuse a profile path into .variants 2026-10-18 15:19:51 +02:00
Abdessamad Derraz e3b17b04d2 fix: file RomM extras under their own system 2026-10-18 15:19:19 +02:00
Abdessamad Derraz ce2417ce0f refactor: read hash lists with one parser 2026-10-18 14:52:02 +02:00