fix(build): strip the s3 scheme so per-minor objects reach their pass #192
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/strip-s3-scheme-from-cache-paths"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Why
#191 gave the existence cache a per-minor view of the slot, but the paths it filters never carried a minor prefix, so the fix could not take effect.
s3fs::s3_dir_ls()returns keys with thes3://scheme attached:The contrib prefix was stripped as a fixed substring, so it was removed from the middle of the key and the scheme survived:
That leading
s3://defeats both^<minor>/and^[0-9]+\.[0-9]+/, so all 21212 per-minor objects on amd64/resolute were classified as flat-slot objects. Pipeline 12011 shows it exactly:Each sensitive pass therefore ran with an empty cache and recompiled all 10248 sensitive packages it already had.
What changed
local/packages-to-build.R: anchor the contrib prefix and swallow an optionals3://with it.local/packages-to-build.R: abort when the strip leaves fewer per-minor paths than the listing held. The failure mode is silent and only surfaces as a multi-hour rebuild, and both counts derive from the same listing so they must agree exactly.local/packages-to-build.R/local/build-all.R: mark the cache with aslot_relativeattribute and read that, instead of sniffing for a/. A slot-relative cache for a slot with no per-minor or Archive object holds bare names too, and would have been misread as legacy and used unfiltered, which makes a per-minor pass believe the flat slot's binaries are its own and build nothing.scripts/purge_cdn_zone.sh: indent the jq continuation lines by a multiple of two. This is unrelated, but it fails editorconfig-checker onmainand blocksprek run -afor everyone. jq ignores the whitespace, and both response shapes still resolve.Verification
Replaying the real key shapes through the old and new code:
Per-minor
Archive/objects are attributed to their minor, and the flat bucket keeps its ownArchive/.prek run -apasses.Pipelines 12011-12015 were stopped rather than left to spend hours recompiling what they already had. Their uploads are not lost, so a fresh run inherits them.