refactor: migrate package installation from pak to uvr
bincraft dropped pak in favour of uvr, so the pipelines, helper scripts and images in this repo move with it. - add local/uvr-install.sh as the single replacement for pak::pak(); it bootstraps a pinned uvr, mints a throwaway project under TMPDIR and runs `uvr add --no-install` + `uvr sync --library`, because `uvr add` refuses to run outside a project and only `sync` honours --library - install bincraft via its Forgejo spec (forgejo::codefloe.com/rpkgs/ bincraft@<tag>) instead of a git:: URL, keeping the git ls-remote tag resolution - pass UVR_R_BIN/UVR_TARGET_LIB from install-bincraft.R so the per-R-minor passes target their own R and library - replace R_PKG_CACHE_DIR with UVR_CACHE_DIR/UVR_PACKAGES_DIR on the persistent volume, preserving the amd64-off/arm64-on split - drop trim_pkgcache_metadata() and its test; uvr's cache does not grow the way pkgcache's _metadata dir did - let uvr install system requirements from its vendored r-system-requirements rules, replacing pak::sysreqs_db_update() - migrate the shiny app image, the alpine reprex and the CRAN loading test; ship uvr-install.sh in the build-one image - track the uvr pin with renovate
This commit is contained in:
parent
fe2289af56
commit
f3c18b6805
1 changed files with 327 additions and 245 deletions
|
|
@ -1,22 +1,28 @@
|
|||
install.packages(
|
||||
"pak",
|
||||
repos = sprintf(
|
||||
"https://r-lib.github.io/p/pak/stable/%s/%s/%s",
|
||||
.Platform$pkgType,
|
||||
R.Version()$os,
|
||||
R.Version()$arch
|
||||
# Installs every CRAN package one by one and checks that it loads. Dependencies
|
||||
# go through uvr via local/uvr-install.sh, which bootstraps the uvr binary on
|
||||
# first use and installs into .libPaths()[1].
|
||||
uvr_install <- function(pkg) {
|
||||
Sys.setenv(
|
||||
UVR_R_BIN = file.path(R.home("bin"), "R"),
|
||||
UVR_TARGET_LIB = .libPaths()[1L]
|
||||
)
|
||||
)
|
||||
status <- system2("local/uvr-install.sh", shQuote(pkg))
|
||||
if (!identical(status, 0L)) {
|
||||
stop(
|
||||
sprintf("uvr failed to install %s (exit %s)", pkg, status),
|
||||
call. = FALSE
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Sys.setenv(PKG_SYSREQS = TRUE)
|
||||
all_pkgs <- rownames(available.packages())
|
||||
|
||||
to_skip = c("ABRSQOL", "ACA", "ACE.CoCo")
|
||||
all_pkgs = setdiff(all_pkgs, to_skip)
|
||||
to_skip <- c("ABRSQOL", "ACA", "ACE.CoCo")
|
||||
all_pkgs <- setdiff(all_pkgs, to_skip)
|
||||
|
||||
for (i in all_pkgs) {
|
||||
message(sprintf("\nInstalling %s", i))
|
||||
pak::pkg_install(i)
|
||||
uvr_install(i)
|
||||
library(i, character.only = TRUE)
|
||||
}
|
||||
|
||||
|
|
@ -323,7 +329,7 @@ if (length(to_process) == 0) {
|
|||
} else {
|
||||
for (i in to_process) {
|
||||
message(sprintf("\nInstalling %s", i))
|
||||
pak::pkg_install(i)
|
||||
uvr_install(i)
|
||||
library(i, character.only = TRUE)
|
||||
}
|
||||
# Update to_skip to include all up to the last processed
|
||||
|
|
|
|||
Loading…
Reference in a new issue