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:
Patrick Schratz 2026-06-14 14:50:40 +02:00
commit 7e01f481c0
Signed by: pat-s
GPG key ID: 3C6318841EF78925

View file

@ -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)