perf: seed pure-R binaries into a new slot, interleave shards, and stop builds before the timeout
- Add local/seed-pure-r.R, opt-in via SEED_FROM on install-deps: copy pure-R binaries server-side from a slot of the same OS family and arch, after verifying each is a binary, has no compiled code, was built by the primary R minor, and passes bincraft's cross-minor ABI check; write the single_builds and abi_flat_safety rows an upload would. - Interleave build-all shards with shard_slice() instead of contiguous alphabetical blocks, which ranged from 0.1h to 28h per shard. - Share one BUILD_DEADLINE (BUILD_BUDGET_HOURS, default 44h) across every build pass of a build-all-versions step so long runs stop cleanly and still archive and index what they built. - Derive the single_builds platform with codename_platform() instead of a hard-coded list.
This commit is contained in:
parent
63149e246a
commit
cdfdcd035d
1 changed files with 726 additions and 51 deletions
|
|
@ -1,5 +1,6 @@
|
|||
source(file.path("local", "newer-r-helpers.R"))
|
||||
source(file.path("local", "rebuild-missing-helpers.R"))
|
||||
source(file.path("local", "r-minor-helpers.R"))
|
||||
|
||||
args <- commandArgs(trailingOnly = TRUE)
|
||||
pos <- args[!startsWith(args, "--")]
|
||||
|
|
@ -117,7 +118,16 @@ if ("--dry-run" %in% args) {
|
|||
))
|
||||
|
||||
options(crayon.enabled = TRUE, Ncpus = 4, future.globals.onReference = NULL)
|
||||
deadline <- build_deadline()
|
||||
for (i in seq_len(nrow(pkgs))) {
|
||||
if (deadline_reached(deadline)) {
|
||||
message(sprintf(
|
||||
"Build deadline reached after %d/%d package(s); stopping cleanly.",
|
||||
i - 1L,
|
||||
nrow(pkgs)
|
||||
))
|
||||
break
|
||||
}
|
||||
message(sprintf(
|
||||
"[%d/%d] %s %s",
|
||||
i,
|
||||
|
|
|
|||
Loading…
Reference in a new issue