Repository navigation
Builds: a plain NOR package a newer split one replaced leaves the index - #505
Conversation
The index takes, for each file name, the newest retained build that published it, so a package the firmware stops publishing stays on offer for the whole retention period. hi3516ev300 and hi3518ev300 lite and ultimate ship only the split package since OpenIPC/firmware#2656. Their last plain packages (nightlies of 2026-10-19 to 21) are still in the index, so the wizard gives them fixed slots, and SplitOnlyEdition, which looks for "split published, plain not", never sees them split-only. The stale assets are gone from the latest release; the index did not notice, because it does not read the release. LoadIndex now leaves out a plain NOR package whose split package came from a newer build than the plain one's newest. A board that publishes both does so in one build and keeps both (the gk7205v200 and gk7205v500 families). An edition with no split package (hi3516ev300 neo) and a board whose build failed, publishing neither, keep what they had. Test: TestLoadIndexDropsPlainSupersededBySplit stores two firmware builds, the 21st with the plain ev300 lite/ultimate, neo, gk7205v200 lite and cv300 lite, and the 22nd with the ev300 split pair, neo and gk7205v200 plain plus split. The ev300 plain pair is gone; split, neo, gk7205v200's both, and cv300's from the 21st stay. It fails on the old LoadIndex. service/run.sh test (all packages, Postgres) passes.
PR Summary by QodoRemove plain NOR packages superseded by newer split builds
AI Description
Diagram
High-Level Assessment
Files changed (2)
|
Code Review by Qodo
1.
|
From review: two builds with one built_at rank by id in LoadIndex's query; the split check now does the same, comparing (built_at, id). Test: TestLoadIndexSplitSupersedesOnTiedTimestamp, two builds at one time, the later id carrying the split package. service/run.sh test passes.
The firmware index takes, for each file name, the newest retained build that published it. So a package the firmware stops publishing stays on offer for the whole retention period (90 days).
hi3516ev300 and hi3518ev300 lite and ultimate ship only the split package since OpenIPC/firmware#2656. Their last plain packages, from the nightlies of 2026-10-19 to 21, are still in the index. So the wizard gives them fixed slots, and
SplitOnlyEdition, which looks for "split published, plain not", never sees them as split-only. Deleting the stale assets fromlatestdid not change that, because the index doesn't read the release.LoadIndexnow leaves out a plain NOR package whose split package came from a newer build than the plain one's newest.TestLoadIndexDropsPlainSupersededBySplitstores two firmware builds and checks each of those cases. It fails on the oldLoadIndex.service/run.sh test(all packages, Postgres) passes.After deploy, hi3516ev300 and hi3518ev300 lite and ultimate on NOR should get the split install (
firmware.bin.<soc>at 0x50000), as hi3516cv6xx does.