Commit Graph
2668 Commits
Author SHA1 Message Date
Abdessamad Derraz fd62b21abd chore: expect binary citation annotations 2026-11-06 16:01:27 +01:00
Abdessamad Derraz a195023d3d chore: run every test class when a file runs alone 2026-11-06 16:01:27 +01:00
Abdessamad Derraz 35be4cf033 fix: compare whole md5 in the folder check
check_platform_folder.py, the script the site publishes, still accepted
a cut md5 by prefix. It now compares whole digests as Batocera does
(batocera-systems:1088), like verify since cut_md5_owner.
2026-11-06 16:01:04 +01:00
Abdessamad Derraz 1bbbdcd4e4 fix: keep tool names out of the probe path check 2026-11-06 15:46:54 +01:00
Abdessamad Derraz 8477cda1ca feat: end a check with files missing on code 3 2026-11-06 15:44:14 +01:00
Abdessamad Derraz 7d99685ce1 fix: drop the Recalbox boot disk from minivmac
Mini vMac opens no MinivMacBootv2.dsk at babdf7b5: disks come from a .cmd
(libretro-core.c:181-195) or disk1.dsk to disk9.dsk
(OSGLUERETRO.c:563-579). The name is the one Recalbox's configgen writes
into its .cmd, already recorded in its launchers: layer. Nine manifests
no longer send the 24 MB image to platforms that never open it.
2026-11-06 15:25:02 +01:00
Abdessamad Derraz 286c2e8d29 fix: hold install.py under the one-liner size cap 2026-11-06 15:22:11 +01:00
Abdessamad Derraz 8a48156830 fix: drop RMG launcher names from Mupen64Plus
IPL_USA.n64 and IPL_DEV.n64 are the names RetroBat's mupen64 generator
writes for Rosalie's Mupen GUI (Mupen64.Generator.cs:232-238).
Mupen64Plus, Mupen64Plus-AE and M64Plus FZ fix no IPL name: the path
comes from the IPL-ROM key or --dd-ipl-rom, then the Android front ends
copy the chosen file to dd_rom.n64.
2026-11-06 15:22:10 +01:00
Abdessamad Derraz c24738a81d fix: say a full drive as such, not a read error 2026-11-06 15:21:59 +01:00
Abdessamad Derraz 7d8a3486e6 fix: count data trees in the free space check 2026-11-06 15:20:50 +01:00
Abdessamad Derraz 4eba10d1ad fix: name every board system in --target help 2026-11-06 15:19:32 +01:00
Abdessamad Derraz 01a13c6457 feat: derive standalone copies from profiles 2026-11-06 15:19:01 +01:00
Abdessamad Derraz ed6643022d fix: write the cut md5 rule once
Six places read an md5 shorter than 32 digits, each with its own bound.
digest_verdict accepted any prefix down to one digit, while Batocera
compares the whole string (batocera-systems:1088). A cut value now names
a dump only when one held md5 starts with it (cut_md5_owner, read by the
scraper, the resolver and --from-md5), and every verdict compares whole
digests.
2026-11-06 15:18:38 +01:00
Abdessamad Derraz 057fd2d0f6 fix: isolate every test module however it runs
tests/__init__.py keeps a run offline, its scratch under tmp/ and its
installer cache its own, but only discover -s tests -t . imported it.
discover tests ran with RETROBIOS_OFFLINE unset, scratch on the /tmp
tmpfs and the user's real installer cache, the setting in which e2e
fixtures had written into the shared .cache/large. Every test module now
imports the package first, and a test fails on a module that does not.
test_verify_listing.py took its line with the previous commit.
2026-11-06 15:14:05 +01:00
Abdessamad Derraz 7dcb427e27 fix: hint at --verbose when no bundled name shows
With no required firmware among the bundled entries the line read
'20 (20 more, --verbose lists them)'. It now reads '20 (--verbose lists
them)', and reading-reports.md quotes the run as it prints.
2026-11-06 15:13:55 +01:00
Abdessamad Derraz cca439a903 fix: run refused writers in a copy of the tree 2026-11-06 15:13:30 +01:00
Abdessamad Derraz 6d1e8e36fc fix: refuse a restore without its asset registry
gitignored_paths read a missing file as an empty registry: nothing to
restore, nothing unsatisfied, exit 0 with every release asset absent.
The run now stops with the path it could not read.
2026-11-06 15:13:05 +01:00
Abdessamad Derraz b6b26392e1 refactor: move the collection model to its module 2026-11-06 15:12:36 +01:00
Abdessamad Derraz cf4afccf04 fix: show source_ref annotations on the cards 2026-11-06 15:10:40 +01:00
Abdessamad Derraz 64ed86cd5f fix: pin the large file inode just verified
_pin_verified returned an existing <sha1>/<name> link without checking
its inode. A link whose cache name was gone had one link left, and the
prune of the same download removed it after it was returned, so
fetch_large_file handed out a path that no longer existed. The link is
now replaced when it holds another inode, and a revision directory a
prune removed before the link is made again.
2026-11-06 15:10:05 +01:00
Abdessamad Derraz 1b4b31fb32 fix: run the read-only tools from the repo root
Only verify.py and generate_pack.py moved to the repository root. From
any other folder slots, region_audit, provenance_report and bundled_only
said database.json was missing and to rebuild it, identity and
list_platforms named a missing folder, and game_rules ended on a
FileNotFoundError traceback. work_from_repo_root moves to common.py and
the eight tools call it: defaults are read from the root, a path the
user typed from where it was typed.
2026-11-06 15:09:35 +01:00
Abdessamad Derraz 0ec99cc771 fix: key losing core claims like the winner
_collect_emulator_extras recorded a losing claim's path without the
declared root, while the winner's was rewritten with it. On RetroDECK
verify --region kept Rustation and Mednafen STV copies of withdrawn
bios/ files in undeclared_files as packed (7 under japan, 4 under
north-america, 3 under europe).
2026-11-06 15:09:21 +01:00
Abdessamad Derraz bc489273a0 fix: read a pack version past its platform part
_pack_version took the text after the last underscore of the pack name.
AmberELEC's prerelease-20261019_1835 read as 1835 and the page would
announce a version gap that does not exist. The site now removes the
platform part the builder writes (platform_pack_prefix).
2026-11-06 15:07:25 +01:00
Abdessamad Derraz bf10ebaa82 docs: say verify --all covers every platform
The --all help still read 'Verify all active platforms' after the
archived status was dropped. --all covers every registered platform.
2026-11-06 15:06:42 +01:00
Abdessamad Derraz 52b7ee0f46 fix: succeed when an emulator needs no file
--emulator handy --required-only removed the empty ZIP, printed the
path it had just removed and exited 1, while verify reported 0/0 OK and
exited 0. The builder now says no file is needed and succeeds.
2026-11-06 15:06:28 +01:00
Abdessamad Derraz 1fe37d16ac fix: keep stderr after the report it closes
verify.py --emulator fbneo --strict > log 2>&1 put the ERROR verdict on
the first line of the log: redirected, stdout is block-buffered and
stderr is not, and run_cli flushed stdout only after main returned.
run_cli now sets stdout to line buffering, so every tool it runs keeps
the two streams in the order they were written.
2026-11-06 15:06:26 +01:00
Abdessamad Derraz 74a4a036ea fix: read crc32 past a copier header in slots
Geargrafx drops a 512-byte header before its crc32 (src/media.cpp:754-773
at 7c447b0b), and its profile lists both sizes. slots compared the crc32
of the whole file, so EmuELEC's headered syscard3.pce read as contested.
2026-11-06 15:04:26 +01:00
Abdessamad Derraz d7019a0ca4 fix: give prboom-plus citations their full paths 2026-11-06 15:04:25 +01:00
Abdessamad Derraz f2132cc2c0 fix: spell out the checks under a missing file
Without --verbose each missing core file was followed by a bare '[size]'
line that told the reader nothing. It now reads 'validates size', the
verbose wording without the expected values.
2026-11-06 15:03:05 +01:00
Abdessamad Derraz 6846bb4e48 fix: strip links with bracketed text from meta 2026-11-06 15:03:00 +01:00
Abdessamad Derraz 8bdf19c7dd feat: progress lines for online profile_sync 2026-11-06 15:02:53 +01:00
Abdessamad Derraz c42bd0f688 fix: count the bundled names verify leaves out
'Bundled with their emulator, not collected: 154' listed the 14 required
firmware names and nothing said the rest existed. The line now ends with
'139 more, --verbose lists them', as the Core files line does.
2026-11-06 15:02:47 +01:00
Abdessamad Derraz 9930f46f03 docs: drop a link claim the emulator pages lack 2026-11-06 15:02:43 +01:00
Abdessamad Derraz 1834d20dc9 fix: name the file a YAML syntax error is in
Every profile is loaded whatever the command, so one misindented key in
an unrelated profile stopped verify.py --emulator handy and generate_pack
on a 37-line yaml traceback. The sources common.py reads (profiles,
platform files, registry, shared groups, targets) now raise
SourceUnreadable, which run_cli prints on one line with the file, the
line and the validate_schemas command. It is not a FileNotFoundError:
ten callers skip a platform whose file is absent, and a damaged one must
not be skipped the same way.
2026-11-06 15:02:01 +01:00
Abdessamad Derraz 7a34c2ddec fix: align the privacy page with what is counted 2026-11-06 15:02:00 +01:00
Abdessamad Derraz 6bf62d5746 fix: refuse profile narrowings without cores
MiSTer and BizHawk declare cores: []. --region, --one-per-slot and
--no-game-data read the profiles of the cores a platform runs, so their
packs and manifests withdrew nothing under a name and README that said
they had. generate_pack and verify now refuse the flags for a named
platform and leave it out under --all.
2026-11-06 15:01:58 +01:00
Abdessamad Derraz 093b1b21cf docs: document the commit rules and their hook 2026-11-06 15:00:49 +01:00
Abdessamad Derraz 13a10da993 fix: serve the dump a name's hashes prove
dsi_bios7.bin and dsi_bios9.bin hold the DSi Panda devkit boot ROMs, eMMC
key-Y zeroed. Every md5 and crc32 declared under those names designates
a retail dump in the same directory, yet hashless entries (RetroBat,
dsperate) got the devkit ROMs by name. by_proven_name maps such a name to
the proven primaries beside it. kick13.rom, dsi_firmware.bin and
spectrum.zip follow the same rule.
2026-11-06 15:00:28 +01:00
Abdessamad Derraz 3d420145c3 refactor: name export report changes as updates 2026-11-06 14:59:47 +01:00
Abdessamad Derraz 7080459011 fix: read No-Intro from a mirror that rebuilds 2026-11-06 14:59:40 +01:00
Abdessamad Derraz 0abe83da33 fix: give full hashes in the auto_fetch issue body 2026-11-06 14:58:30 +01:00
Abdessamad Derraz 8b55ab45a5 fix: suggest the database beside a mistyped --db
--db databse.json, with database.json in the same folder, was told to run
generate_db --force --output databse.json: a rescan of the whole
collection into a second file under the typo. load_database now names the
closest .json in that folder first, and gives the rebuild command only
when none is close.
2026-11-06 14:57:48 +01:00
Abdessamad Derraz f2ddcc235f docs: drop double hyphen dashes from profile notes 2026-11-06 14:57:30 +01:00
Abdessamad Derraz 6a5b384e02 fix: say when a RetroPie help is updated in part 2026-11-06 14:56:11 +01:00
Abdessamad Derraz de8f20f409 fix: count listed systems in the --system hint
A mistyped --system said '--list-systems lists all 579' and the listing
prints 532: the hint counted every spelling across profiles, and
system_index merges the ones that differ in case or separator before
printing. Both verify.py and generate_pack.py now pass that count to
suggest_names, whose listed parameter exists for this case.
2026-11-06 14:55:40 +01:00
Abdessamad Derraz 144cd46df1 fix: count one export line per addition path 2026-11-06 14:55:23 +01:00
Abdessamad Derraz f4b45c641d feat: run the PR checks with one command 2026-11-06 14:55:03 +01:00
Abdessamad Derraz c9e5ea67e7 fix: count a missing core file once in the summary
The closing summary of verify --all grouped platform to names: sfiii2a.zip,
missing on 15 platforms, was printed 15 times on a 1 060-character line and
counted 24 files for 10 distinct ones. It now groups by file and names the
platforms by the shorter side (every platform but BizHawk, MinUI, MiSTer
FPGA).
2026-11-06 14:54:38 +01:00
Abdessamad Derraz 26be1152ea feat: find Steam libraries from the client folder 2026-11-06 14:53:53 +01:00
Abdessamad Derraz 82bccd9dae fix: refuse Python 3.8 in every build script
Only generate_pack.py and pipeline.py checked the interpreter. verify.py,
slots.py, validate_pr.py, cross_reference.py and the probe tools started
under 3.8 and stopped halfway on a str.removeprefix AttributeError. The
check now lives in common.py, which every build script imports, and in
core_probe.py and region_check.py, which do not. generate_site.py imports
common before siterender, which raised a TypeError at load under 3.8.
2026-11-06 14:52:50 +01:00