Abdessamad Derraz
dce43a1281
fix: keep display names out of pack file paths
2026-10-06 09:09:02 +02:00
Abdessamad Derraz
d7e7ec13ae
fix: install the variant the pack ships
2026-10-06 09:08:33 +02:00
Abdessamad Derraz
97ccf9027b
refactor: extract emulator archive placement
2026-10-06 07:00:22 +02:00
Abdessamad Derraz
1caf5c4b5e
refactor: one mismatch rule for builder and verifier
2026-10-06 06:57:01 +02:00
Abdessamad Derraz
3df423e84f
refactor: pull mismatch and region steps from manifest
2026-10-06 06:45:45 +02:00
Abdessamad Derraz
49e0f83ce9
fix: hold the data dir lock while packing it
2026-10-06 04:56:16 +02:00
Abdessamad Derraz
2b6dbb5e92
fix: choose regions among the files required-only keeps
2026-10-06 04:54:05 +02:00
Abdessamad Derraz
3d31a887cc
fix: compare only the full pack to verify
2026-10-06 04:49:21 +02:00
Abdessamad Derraz
e3f773dd82
fix: finalize only the packs this run names
2026-10-06 04:48:32 +02:00
Abdessamad Derraz
b3c7e76adf
fix: apply required-only to emulator pack archives
2026-10-06 04:46:03 +02:00
Abdessamad Derraz
b2208d889e
fix: count undistributed split extras with the helper
2026-10-06 04:43:49 +02:00
Abdessamad Derraz
af357a2931
fix: give system packs their core extras
2026-10-06 04:42:35 +02:00
Abdessamad Derraz
1b40211366
fix: refuse every flag a quick mode does not read
2026-10-06 04:39:08 +02:00
Abdessamad Derraz
c526180351
fix: withhold a file only on the frontend digest
2026-10-06 04:21:47 +02:00
Abdessamad Derraz
36f7ee0b2b
fix: one agnostic substitute rule for pack and verify
2026-10-06 04:19:40 +02:00
Abdessamad Derraz
ccc51b861b
refactor: split the all-variants flag refusals
2026-10-06 03:11:07 +02:00
Abdessamad Derraz
3ae9729143
refactor: move flag refusals out of the main functions
2026-10-06 03:08:35 +02:00
Abdessamad Derraz
53ee1bfd0e
fix: fail the run when a platform pack errors
2026-10-06 01:34:30 +02:00
Abdessamad Derraz
fbdee43e6d
fix: point pack guides at the path each platform reads
2026-10-06 01:33:33 +02:00
Abdessamad Derraz
0fb09c6c94
fix: decide slots on the region pass grouping
2026-10-06 00:26:36 +02:00
Abdessamad Derraz
9e327a05ed
fix: verify the pack the flags name, by exact name
2026-10-06 00:13:38 +02:00
Abdessamad Derraz
ca6462c510
fix: order same-named files by their owner's copy
2026-10-05 22:22:22 +02:00
Abdessamad Derraz
366598e662
fix: ship the archive every member declaration accepts
2026-10-05 22:05:10 +02:00
Abdessamad Derraz
68bcef544d
fix: give the install manifest the arbitrated file
2026-10-05 21:53:59 +02:00
Abdessamad Derraz
81995a4c18
fix: emulator region report reads the pack drop set
2026-10-05 21:43:32 +02:00
Abdessamad Derraz
95d14819ce
fix: one rule for the variant an emulator accepts
2026-10-05 21:36:14 +02:00
Abdessamad Derraz and Claude Opus 5.5
5816562bf6
fix: one size predicate, size_options retired
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-05 02:51:13 +02:00
Abdessamad Derraz
79c94468a0
fix: list in the manifest what the pack ships
2026-10-04 21:08:00 +02:00
Abdessamad Derraz
52f682cdd6
feat: publish a large pack as zips, not byte ranges
2026-10-04 18:09:24 +02:00
Abdessamad Derraz
63af5167ed
feat: state how many files each pack holds
2026-10-04 18:01:33 +02:00
Abdessamad Derraz
2efc37a738
feat: pack the files a directory entry names
2026-10-04 17:58:10 +02:00
Abdessamad Derraz
1ceb4b0c5a
fix: split platform groups on declared emulators
2026-10-04 17:48:00 +02:00
Abdessamad Derraz
59ccb5b7d5
feat: scope a profile data directory to a build mode
2026-10-04 17:09:14 +02:00
Abdessamad Derraz
97f741bf0f
fix: publish target lists as the builder resolves them
2026-10-04 16:55:30 +02:00
Abdessamad Derraz
08bce47668
fix: keep install manifests and release assets true
2026-09-14 01:17:49 +02:00
Abdessamad Derraz
1455e0423c
fix: arbitrate on the evidence the builder uses
2026-09-07 07:02:39 +02:00
Abdessamad Derraz
23c4dc2aae
fix: name every narrowed artifact from one list
2026-09-07 06:27:35 +02:00
Abdessamad Derraz
29fcfdef34
fix: refuse the flags a mode cannot apply
2026-09-07 06:14:24 +02:00
Abdessamad Derraz
aaa1aea452
fix: put every writing mode under the output lock
2026-09-07 05:57:25 +02:00
Abdessamad Derraz
6d97fbe127
fix: stop a check that cannot answer exiting zero
2026-09-07 05:39:50 +02:00
Abdessamad Derraz
1c976390d7
fix: let a refresh failure reach the exit code
2026-09-07 05:30:56 +02:00
Abdessamad Derraz
2a4dd59bb2
fix: narrow pack conformance by hardware target
2026-09-06 23:28:27 +02:00
Abdessamad Derraz
8128b47aeb
fix: skip full conformance on a targeted pack
2026-09-06 23:06:00 +02:00
Abdessamad Derraz
a4455ef6a7
fix: refuse flags verify-packs cannot honour
2026-09-06 23:01:14 +02:00
Abdessamad Derraz
fca005f6db
fix: narrow the manifest when required-only is set
2026-09-06 22:59:18 +02:00
Abdessamad Derraz
7b93285e1d
fix: read the build mode per emulator when arbitrating
2026-09-05 13:25:24 +02:00
Abdessamad Derraz
adcd177e12
feat: settle contested slots in the pack and the report
2026-09-05 09:08:43 +02:00
Abdessamad Derraz
75f4542ea8
refactor: scope validation to a platform's cores
2026-09-03 17:51:34 +02:00
Abdessamad Derraz
232ef1a6b8
fix: let the constrained declaration win in manifests too
...
A destination can be declared by more than one system, bare in one and
hash-constrained in another. generate_pack resolves that with
_preferred_entries so the constrained sibling claims the destination;
generate_manifest never did, and named whatever answered to the name.
RetroDECK's bios/d2fdc.zip is the case: declared with an md5 in the
arcade system and bare under apple-ii. The pack carried the right
archive, 262 bytes reached through the MAME clone map, while the
manifest sent install.py to a 256-byte Apple II ROM. Downloading the
ZIP and running the installer gave different files.
A test now hashes every manifest entry a platform pins and compares it
against what the platform declares: 3295 entries, on the platforms whose
frontend reads the bytes. It accepts any of several declarations for one
destination, the member-composite MD5 Recalbox pins for arcade archives,
and Batocera's 29-character prefixes. Reinstating the old manifest entry
fails it.
2026-08-23 12:14:56 +02:00
Abdessamad Derraz
8b404e500f
fix: keep a packed file's executable bit
...
Pinning every member's metadata made packs reproducible and took the
executable bit with it. The RetroDECK pack ships the two Voxatron engine
binaries, and extracted at 644 they cannot be run.
Git records the bit, so reading it from the source file keeps a pack the
same from any clone. Nothing else about the source's mode reaches the
archive: 2569 members ship at 644 and 942 at 755, which is what the
builder produced before the pinning.
Nothing caught this. The comparison that proved the pinning inert
checked member names, CRCs and sizes, and mode is none of those. A test
now builds a runnable payload and asserts it survives extraction.
RetroDECK rebuilds to the same bytes twice and passes its integrity
check, 2008/2008 baseline and 1551/1551 cores.
2026-08-23 07:58:23 +02:00