build-cran-binaries/R/install-deps.R
2024-09-08 13:59:29 +02:00

40 lines
1.7 KiB
R

#' @export
install_package_system_dependencies <- function(package_name,
tag,
platform = platform,
local_clone_dir,
deps_verbose = FALSE) {
cli::cli_alert("{.fun install_package_system_dependencies}: Cloning package {.pkg {package_name[1]}} with tag {.field {tail(tag, 1)}}.")
t1 <- Sys.time()
local_clone_dir_single <- sprintf("%s/%s_%s", local_clone_dir, package_name[1], tail(tag, 1))
if (!dir.exists(local_clone_dir_single)) {
system2("git", args = c(
"clone", "-q", sprintf("--branch=%s", tail(tag, 1)),
sprintf("https://github.com/cran/%s", package_name[1]), local_clone_dir_single
))
}
if (grepl("alpine", platform)) {
platform <- "alpine"
}
cli::cli_alert("{.fun install_package_system_dependencies}: Installing R package dependencies for {.pkg {package_name[1]}} with tag {.field {tail(tag, 1)}}.")
Sys.setenv(PKG_SYSREQS_PLATFORM = platform)
Sys.setenv(PKG_SYSREQS = TRUE)
Sys.setenv(PKG_SYSREQS_VERBOSE = TRUE)
if (deps_verbose) {
pak::local_install_deps(sprintf("%s", local_clone_dir_single))
} else {
suppressMessages(pak::local_install_deps(sprintf("%s", local_clone_dir_single)))
}
cli::cli_alert("{.fun install_package_system_dependencies}: Removing temporary clone dir at {.path {local_clone_dir_single}}.")
total_build_time <- round(Sys.time() - t1, 2)
cli::cli_alert("Dependency installation time ({.pkg {package_name[[1]]}}): {.strong {total_build_time} {units(difftime(Sys.time(), t1))}}.")
unlink(sprintf("%s", local_clone_dir_single), recursive = TRUE, force = TRUE)
}