Some checks failed
ci/crow/manual/build-all-versions-amd64/3 Pipeline is pending
ci/crow/manual/build-all-versions-install-deps-amd64 Pipeline was successful
ci/crow/manual/build-all-versions-amd64/2 Pipeline failed
ci/crow/manual/build-all-versions-amd64/4 Pipeline failed
ci/crow/manual/build-all-versions-amd64/1 Pipeline failed
ci/crow/cron/process-updates-ubuntu-2404-amd64 Pipeline failed
ci/crow/cron/process-updates-ubuntu-2404-arm64 Pipeline was successful
83 lines
3.3 KiB
R
83 lines
3.3 KiB
R
sink(stdout(), type = "message")
|
|
options(crayon.enabled = TRUE, future.globals.onReference = NULL)
|
|
|
|
args <- commandArgs(trailingOnly = TRUE)
|
|
split_into <- as.integer(args[1])
|
|
split_index <- as.integer(args[2])
|
|
ncpus <- as.integer(args[3])
|
|
options(Ncpus = ncpus)
|
|
|
|
# Load bincraft eagerly to avoid lazy-load memory spike during first build call
|
|
library(bincraft, quietly = TRUE)
|
|
library(future)
|
|
plan("sequential")
|
|
|
|
# Read precomputed package+version pairs
|
|
pkgs <- readRDS("/mnt/cache/packages/pkgs_to_build.rds")
|
|
sprintf("Total# of remaining package versions: %s", nrow(pkgs))
|
|
|
|
# Split into chunks for this worker
|
|
chunks <- split(pkgs, cut(seq_len(nrow(pkgs)), split_into, labels = FALSE))
|
|
chunk <- chunks[[split_index]]
|
|
sprintf("# of package versions for this job: %s", nrow(chunk))
|
|
|
|
# Exclude known problematic packages
|
|
exclude <- c(
|
|
"RInno", "KeyboardSimulator", "R2PPT", "RWinEdt", "blatr", "excel.link",
|
|
"spectrino", "taskscheduleR", "MDSGUI", "BiplotGUI", "R2wd", "rFUSION",
|
|
"MediaNews", "doBy", "IDPmisc", "frailtypack", "afex", "FrF2", "DoE.base",
|
|
"agricolae", "doFuture", "fscaret", "PHYLOGR", "seewave", "pls", "relaimpo",
|
|
"geepack", "gggenes", "NPCirc", "repmis", "PNDSIBGE", "lidR", "poismf",
|
|
"neonstore", "MachineShop", "mvst", "MacBehaviour", "mcmcderive", "RGIFT",
|
|
"KnowBR", "netmeta", "spdep", "Rfast", "compareGroups", "ff", "GsymPoint",
|
|
"RcppDynProg", "comtradr", "FD", "PearsonDS", "DCluster", "gRc", "mixlm",
|
|
"geospt", "fdth", "ffmanova", "fiery", "ffscrapr", "cold",
|
|
"RcmdrPlugin.DoE", "RcmdrPlugin.NMBU", "RcmdrPlugin.RiskDemo",
|
|
"RcmdrPlugin.ROC", "RcmdrPlugin.TeachStat", "RcmdrPlugin.TeachingDemos",
|
|
"RcmdrPlugin.UCA", "RcmdrPlugin.WorldFlora", "RcmdrPlugin.aRnova",
|
|
"RcmdrPlugin.depthTools", "RcmdrPlugin.orloca", "RcmdrPlugin.sos",
|
|
"RcmdrPlugin.survival", "RcmdrPlugin.temis", "GWlasso", "GWmodelVis"
|
|
)
|
|
chunk <- chunk[!chunk$Package %in% exclude, ]
|
|
|
|
# Bulk S3 listing upfront — avoids per-package S3 calls
|
|
s3fs::s3_file_system(
|
|
aws_access_key_id = Sys.getenv("B2_S3_ACCESS_KEY"),
|
|
aws_secret_access_key = Sys.getenv("B2_S3_SECRET_KEY"),
|
|
endpoint = "https://s3.eu-central-003.backblazeb2.com",
|
|
region_name = "eu-central-003",
|
|
refresh = TRUE
|
|
)
|
|
codename <- bincraft::set_codename(NULL)
|
|
local_arch <- Sys.info()[["machine"]]
|
|
arch <- if (grepl("arm64|aarch64", local_arch)) "arm64" else "amd64"
|
|
s3_cache <- basename(s3fs::s3_dir_ls(
|
|
sprintf("devxy-rpkgs-binaries/%s/%s/latest/src/contrib", arch, codename),
|
|
recurse = TRUE
|
|
))
|
|
sprintf("S3 cache: %s files", length(s3_cache))
|
|
|
|
n <- nrow(chunk)
|
|
mapply(function(pkg, ver, i) {
|
|
cat(sprintf("[%d/%d] %s_%s\n", i, n, pkg, ver))
|
|
bincraft::build_binary_package(
|
|
pkg,
|
|
tag = ver,
|
|
s3_endpoint = "https://s3.eu-central-003.backblazeb2.com",
|
|
s3_region = "eu-central-003",
|
|
s3_bucket = "devxy-rpkgs-binaries",
|
|
s3_access_key_id = Sys.getenv("B2_S3_ACCESS_KEY"),
|
|
s3_secret_access_key = Sys.getenv("B2_S3_SECRET_KEY"),
|
|
s3_package_cache = s3_cache,
|
|
metadata_db_host = "r-binaries.devxy.io",
|
|
metadata_db_name = "build_metadata",
|
|
metadata_db_table = "single_builds",
|
|
metadata_db_user = "rpkgs",
|
|
metadata_db_password = Sys.getenv("PGPASS"),
|
|
metadata_db_sslmode = "require",
|
|
metadata_db_port = 15432,
|
|
archive = TRUE,
|
|
upload = TRUE,
|
|
store_build_metadata = TRUE
|
|
)
|
|
}, chunk$Package, chunk$Version, seq_len(n))
|