perf(local): skip per-minor passes for non-r-minor-sensitive packages
A package's ABI sensitivity is the same across R minors, so for a non-sensitive package the per-minor loop only ran `ensure_bincraft` (a ~14s bincraft/cranlike install per minor) before build-one.R classified and skipped it. The primary pass now writes a .r_minor_sensitive sentinel when it builds a sensitive package, and the wrapper gates the whole per-minor loop (installs included) on that file — non-sensitive rebuilds no longer touch other minors' libraries.
This commit is contained in:
parent
95bcf6b377
commit
7e01f481c0
1 changed files with 23 additions and 11 deletions
|
|
@ -120,6 +120,13 @@ for (ver in versions) {
|
|||
if (sensitive) touched_minor <- TRUE else touched_generic <- TRUE
|
||||
}
|
||||
|
||||
# Signal the container wrapper whether per-minor passes are warranted (a single
|
||||
# package's sensitivity is the same across R minors, so a non-sensitive package
|
||||
# need not touch any other minor's library).
|
||||
if (touched_minor) {
|
||||
file.create(".r_minor_sensitive")
|
||||
}
|
||||
|
||||
# Refresh the PACKAGES index for each slot we wrote to, so the (re)built binary
|
||||
# is immediately resolvable by clients.
|
||||
codename <- bincraft::set_codename(NULL)
|
||||
|
|
|
|||
Loading…
Reference in a new issue