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