perf: seed pure-R binaries into a new slot, interleave shards, and stop builds before the timeout #242
Loading…
Reference in a new issue
No description provided.
Delete branch "perf/full-rebuild-seed-and-shards"
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?
Speeds up the full rebuild for a new slot, e.g. the upcoming Alpine version.
Changes
Seed pure-R binaries (
local/seed-pure-r.R,local/seed-helpers.R), opt-in via the newSEED_FROMvariable onbuild-all-versions-install-deps.About 74% of the ~84k candidate versions have no compiled code and cost ~20s each to build; their R objects are identical across slots.
Before the build list is computed, each donor candidate is downloaded and verified, then copied server-side:
Built(not a CRAN source fallback) with an empty platform and nolibs/;tarball_abi_verdict()calls it portable across every installed minor (unknown means no seed).Each copy gets the
single_buildsandabi_flat_safetyrows an upload writes, so build-all skips it and the per-minor indexes keep it.Re-runs skip existing objects and rewrite rows idempotently.
Interleaved shards in
local/build-all.Rviashard_slice(); contiguous alphabetical quarters ranged from 0.1h to 28h.Shared build deadline:
build-all-versionssetsBUILD_DEADLINEfromBUILD_BUDGET_HOURS(44h, repo timeout 50h);build-all.Randbuild-newer-r.Rstop cleanly when it passes, so archiving still runs.codename_platform()replaces the hard-coded codename-to-platform list.Testing
local/testspass.crow lint .crow/passes.Usage
Trigger
build-all-versionswithtarget_arch,OS,OS_VERSIONandSEED_FROM="alpine324 alpine323".The new Alpine version still needs adding to the
OS_VERSIONoptions once its image exists.