Abdessamad Derraz
d205d0bbc8
fix: keep display names out of pack file paths
2026-10-06 09:09:02 +02:00
Abdessamad Derraz
3b2a232a9d
fix: install the variant the pack ships
2026-10-06 09:08:33 +02:00
Abdessamad Derraz
0eb824c69c
refactor: extract emulator archive placement
2026-10-06 07:00:22 +02:00
Abdessamad Derraz
49a4b181bf
refactor: one mismatch rule for builder and verifier
2026-10-06 06:57:01 +02:00
Abdessamad Derraz
2c602596d1
refactor: pull mismatch and region steps from manifest
2026-10-06 06:45:45 +02:00
Abdessamad Derraz
a1ce1d2fa0
fix: hold the data dir lock while packing it
2026-10-06 04:56:16 +02:00
Abdessamad Derraz
c9f8f4b230
fix: choose regions among the files required-only keeps
2026-10-06 04:54:05 +02:00
Abdessamad Derraz
ce135b788f
fix: compare only the full pack to verify
2026-10-06 04:49:21 +02:00
Abdessamad Derraz
e8884e4341
fix: finalize only the packs this run names
2026-10-06 04:48:32 +02:00
Abdessamad Derraz
c37d7fc95a
fix: apply required-only to emulator pack archives
2026-10-06 04:46:03 +02:00
Abdessamad Derraz
c5566b7d06
fix: count undistributed split extras with the helper
2026-10-06 04:43:49 +02:00
Abdessamad Derraz
7498304e44
fix: give system packs their core extras
2026-10-06 04:42:35 +02:00
Abdessamad Derraz
7b62f7f702
fix: refuse every flag a quick mode does not read
2026-10-06 04:39:08 +02:00
Abdessamad Derraz
ac4776b2d0
fix: withhold a file only on the frontend digest
2026-10-06 04:21:47 +02:00
Abdessamad Derraz
dbc8d63318
fix: one agnostic substitute rule for pack and verify
2026-10-06 04:19:40 +02:00
Abdessamad Derraz
93f3560d19
refactor: split the all-variants flag refusals
2026-10-06 03:11:07 +02:00
Abdessamad Derraz
ab75123320
refactor: move flag refusals out of the main functions
2026-10-06 03:08:35 +02:00
Abdessamad Derraz
ec9bbd3424
fix: fail the run when a platform pack errors
2026-10-06 01:34:30 +02:00
Abdessamad Derraz
236d8322b0
fix: point pack guides at the path each platform reads
2026-10-06 01:33:33 +02:00
Abdessamad Derraz
1879c984f4
fix: decide slots on the region pass grouping
2026-10-06 00:26:36 +02:00
Abdessamad Derraz
64f84e7ca6
fix: verify the pack the flags name, by exact name
2026-10-06 00:13:38 +02:00
Abdessamad Derraz
8e532db6aa
fix: order same-named files by their owner's copy
2026-10-05 22:22:22 +02:00
Abdessamad Derraz
8e41ddc297
fix: ship the archive every member declaration accepts
2026-10-05 22:05:10 +02:00
Abdessamad Derraz
b12a3280e6
fix: give the install manifest the arbitrated file
2026-10-05 21:53:59 +02:00
Abdessamad Derraz
3177a57103
fix: emulator region report reads the pack drop set
2026-10-05 21:43:32 +02:00
Abdessamad Derraz
012bf2fec2
fix: one rule for the variant an emulator accepts
2026-10-05 21:36:14 +02:00
Abdessamad Derraz
0d7939588e
fix: one size predicate, size_options retired
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