when: event: [manual] skip_clone: true depends_on: - warm_up_build matrix: include: - PLATFORM: redhat-9 BLOCK: 20099:21169 ARCH: arm64 NCPUS: 2 MEMORY: 29Gi STRATEGY: multisession - PLATFORM: redhat-8 BLOCK: 20099:21169 ARCH: arm64 NCPUS: 2 MEMORY: 29Gi STRATEGY: multisession - PLATFORM: ubuntu-2404 BLOCK: 20099:21169 ARCH: arm64 NCPUS: 2 MEMORY: 29Gi STRATEGY: multisession - PLATFORM: ubuntu-2204 BLOCK: 20099:21169 ARCH: arm64 NCPUS: 2 MEMORY: 29Gi STRATEGY: multisession - PLATFORM: alpine-320 BLOCK: 7065:length(pkgs) ARCH: arm64 NCPUS: 2 MEMORY: 29Gi STRATEGY: multisession ### AMD # - PLATFORM: redhat-9 # BLOCK: 1:length(pkgs) # ARCH: amd64 # NCPUS: 2 # MEMORY: 29Gi # STRATEGY: multisession # - PLATFORM: redhat-8 # BLOCK: 1:length(pkgs) # ARCH: amd64 # NCPUS: 2 # MEMORY: 29Gi # STRATEGY: multisession # - PLATFORM: ubuntu-2404 # BLOCK: 1:length(pkgs) # ARCH: amd64 # NCPUS: 2 # MEMORY: 29Gi # STRATEGY: multisession # - PLATFORM: ubuntu-2204 # BLOCK: 1:length(pkgs) # ARCH: amd64 # NCPUS: 2 # MEMORY: 29Gi # STRATEGY: multisession - PLATFORM: alpine-320 BLOCK: 1090:length(pkgs) ARCH: amd64 NCPUS: 2 MEMORY: 29Gi STRATEGY: multisession steps: - name: 'Build binaries (${PLATFORM}: ${BLOCK})' secrets: [red_hat_dev_pw, aws_access_key_id, aws_secret_access_key, pgpass, git_ro_token, GITHUB_PAT] image: docker.io/devxygmbh/${ARCH}-binaries-r-${PLATFORM} pull: true # to ensure the PACKAGES upload step is being executed failure: ignore environment: GIT_USER: pat-s # set the location of the 'pkgcache' cache dir which persists the R package dependencies needed to install the packages themselves R_PKG_CACHE_DIR: /mnt/cache/pkgcache R_LIBS_USER: /mnt/cache/R-pkgs CCACHE_DIR: /mnt/cache/ccache volumes: - ${ARCH}-binaries-r-dep-cache-${PLATFORM}:/mnt/cache commands: # download latest package version (avoid having to rebuild image every time) # rscript_startup arg: required to pass down global option to future workers https://github.com/HenrikBengtsson/future/issues/134#issuecomment-2245666169 - git clone https://pat-s:$$git_ro_token@git.devxy.io/devxy/r-pkg-binaries.git . - rm -rf /mnt/cache/R-pkgs/00LOCK-r-pkg-binaries /mnt/cache/R-pkgs/00LOCK-bincraftR # for some reason paks pkgcache is often corrupt - rm -rf /mnt/cache/R-pkgs/pkgcache/ /mnt/cache/pkgcache/ /root/.cache/R/ - R -q -e 'pak::meta_update()' - R CMD INSTALL . # more complicated system dependencies which pak cannot resolve - mkdir -p /mnt/cache/pkgcache /mnt/cache/R-pkgs /mnt/cache/ccache /mnt/cache/packages # set additional repos: important as otherwise some packages cannot be resolved (e.g. INLA). Also: setting our own binary repos so we can make use of them for dep installation at some point # - R -q -e 'options(crayon.enabled = TRUE, Ncpus = ${NCPUS}, future.globals.onReference = NULL); pkgs = tools::CRAN_package_db()[[1]]; pkgs = setdiff(pkgs[${BLOCK}], c( "RInno", "skedastic", "ROI.plugin.qpoases", "RPushbullet", "SimNPH", "SimDesign","simCAT", "SIAmodules", "shinytest2", "shinyIRT", "ShinyItemAnalysis", "shiny.benchmark", "scDIFtest", "RSP", "ROracle", "ROI.plugin.qpoases", "ROI.plugin.highs", "ROI.plugin.cplex", "RmecabKo", "rmarchingcubes", "RcppMeCab", "Rcplex", "ravetools", "Rbeast", "Rblpapi", "RcppEnsmallen", "qtkit", "priorCON", "prior3D", "PerFit", "outlierensembles", "nomnoml", "mxfda", "MultBiplotR", "mstDIF", "minic", "Mega2R", "mdsr", "MCARtest", "makepipe", "lordif", "KSgeneral", "kequate", "jstager", "jrt", "irtreliability", "irtQ", "irtpwr", "irtGUI", "irtawsi", "highs", "GRShiny", "gpuR", "GPCMlasso", "googletraffic", "giacR", "gamstransfer", "flps", "flow", "filters", "faoutlier", "EthSEQ", "equateIRT", "EnrichIntersect", "EFA.dimensions", "DFIT", "designmatch", "dartR.spatial", "dartR.sexlinked", "dartR.sim", "dartR.popgen", "dartR.captive", "dartR.base","dartR", "D3mirt", "ctsem", "ctgdist", "CoTiMA", "ConvertPar", "cncaGUI", "clrng", "bscui", "BifactorIndicesCalculator", "autoFC", "airt")); library(bincraftR); future::plan("${STRATEGY}", workers = ${NCPUS}, rscript_startup = quote(options(crayon.enabled = TRUE))); options(progressr.enable = TRUE); progressr::handlers('cli'); progressr::handlers(global = TRUE); pkgs = foo = lapply(pkgs, function(x) build_binary_package(x, build_for_minor=FALSE, debug = FALSE, force = TRUE, platform = "${PLATFORM}"))' ### Manual pkg builds # webshot2, tabledown, TestAnaAPP, trekcolors, Spectran, SimNPH, RPushbullet, SimDesign, simCAT, SIAmodules, shinytest2, ShinyItemAnalysis, shinyIRT, shiny.benchmark, scDIFtest, RSP, qtkit, PROsetta, prettifyAddins, PerFit, outlierensembles, nomnoml, mxfda, MultBiplotR, mstDIF, mdsr, makepipe, lordif, kequate, jstager, jrt, irtreliability, irtQ, irtpwr, irtGUI, irtawsi, GRShiny, GPCMlasso, googletraffic, giacR, flps, flow, faoutlier, equateIRT, EnrichIntersect, EFA.dimensions, DFIT, D3mirt, ctgdist, CoTiMA, ConvertPar, bscui, BifactorIndicesCalculator, autoFC, airt: wait for https://github.com/rstudio/r-system-requirements/pull/178 # RInno: Windows-only # skedastic: waiting for ROI.plugin.qpoases (https://gitlab.com/roigrp/solver/ROI.plugin.qpoases/-/issues/1) # rswipl: ccache issues: https://github.com/mgondan/rswipl/issues/3 # Rpoppler: https://github.com/rstudio/r-system-requirements/pull/179/ # ROracle: sysdep missing -> create rule # ROI.plugin.qpoases: https://gitlab.com/roigrp/solver/ROI.plugin.qpoases/-/issues/1 # ROI.plugin.highs: /usr/bin/ccache: invalid option -- 'E' # ROI.plugin.cplex: checking for cplex... no -> needs rule # RmecabKo: fatal error: mecab.h: No such file or directory # rmarchingcubes: error: narrowing conversion of '-1' from 'int' to 'char' [-Wnarrowing] -> https://github.com/shwilks/rmarchingcubes/issues/3 # RcppMeCab: /bin/bash: line 2: mecab-config: command not found # Rcplex: checking for cplex... no # Rblpapi: Unknown architecture: aarch64. Exiting. -> https://github.com/Rblp/Rblpapi/issues/399 # Rbeast: aarch64 issue -> https://github.com/zhaokg/Rbeast/issues/29 # ravetools: checking for FFTW... configure: error: Package requirements (fftw3) were not met: -> fftw3 rule needed # Racmacs -> rmarchingcubes # priorCON, prior3D, MCARtest, designmatch -> highs # minic: /usr/include/c++/13/bits/stl_algo.h:5805:5: note: template argument deduction/substitution failed: # Mega2R -> gdsfmt # KSgeneral -> fftw3 # gwid -> gdsfmt # gpuR -> /usr/bin/ld: cannot find -lOpenCL: No such file or directory # GPCMlasso # gamstransfer -> gdx/src/gdlib/gmsstrm.cpp:85:70: error: narrowing conversion of '-1' from 'std::char_traits::int_type' {aka 'int'} to 'char' [-Wnarrowing] # filters: # EthSEQ, dartR.spatial, dartR.sim -> gdsfmt # ctsem: g++: fatal error: Killed signal terminated program cc1plus # cncaGUI: always hangs even when using xvfb-run # clrng -> gpuR # BRugs: configure: error: OpenBUGS 3.2.2 or later not found. - xvfb-run R -q -e 'options(crayon.enabled = TRUE, Ncpus = ${NCPUS}, future.globals.onReference = NULL); pkgs = c("multibiplotGUI", "biplotbootGUI", "WH", "ymd", "VPdtw", "voi", "rjags", "unmconf", "TVMM", "TTAinterfaceTrendAnalysis", "tfrmtbuilder", "uHMM", "TextMiningGUI", "cncaGUI", "dynBiplotGUI", "ade4TkGUI", "BlockmodelingGUI", "cncaGUI", "EventDetectGUI", "irtGUI", "KappaGUI", "magickGUI", "miniGUI", "multibiplotGUI", "tensorBSS", "RclusTool", "Rcmdr", "RcmdrMisc", "RcmdrPlugin.aRnova", "RcmdrPlugin.BiclustGUI", "RcmdrPlugin.BWS1", "RcmdrPlugin.BWS2", "RcmdrPlugin.BWS3", "RcmdrPlugin.cpd", "RcmdrPlugin.DCCV", "RcmdrPlugin.DCE", "RcmdrPlugin.depthTools", "RcmdrPlugin.DoE", "RcmdrPlugin.EACSPIR", "RcmdrPlugin.EBM", "RcmdrPlugin.EcoVirtual", "RcmdrPlugin.Export", "RcmdrPlugin.EZR", "RcmdrPlugin.FactoMineR", "RcmdrPlugin.GWRM", "RcmdrPlugin.HH", "RcmdrPlugin.KMggplot2", "RcmdrPlugin.MA", "RcmdrPlugin.MPAStats", "RcmdrPlugin.NMBU", "RcmdrPlugin.orloca", "RcmdrPlugin.PcaRobust", "RcmdrPlugin.RiskDemo", "RcmdrPlugin.RMTCJags", "RcmdrPlugin.ROC", "RcmdrPlugin.sos" , "RcmdrPlugin.survival", "RcmdrPlugin.TeachingDemos", "RcmdrPlugin.TeachStat", "RcmdrPlugin.temis", "RcmdrPlugin.UCA", "RcmdrPlugin.WorldFlora", "streamDAG", "stan4bart", "snplinkage", "saeHB.panel.beta", "rTwig", "rswipl", "RPointCloud", "rPDBapi", "rolog", "rmcfs", "rjags", "ResultModelManager", "RcppCWB", "RcmdrPlugin.WorldFlora", "RcmdrPlugin.UCA", "RcmdrPlugin.temis", "RcmdrPlugin.TeachStat", "RcmdrPlugin.TeachingDemos", "RcmdrPlugin.survival", "RcmdrPlugin.sos", "RcmdrPlugin.ROC", "RcmdrPlugin.RMTCJags", "RcmdrPlugin.RiskDemo", "RcmdrPlugin.PcaRobust", "RclusTool", "Rbeast", "rayrender", "quanteda.textmodels", "polmineR", "plotBart", "NlinTS", "ndtv", "overtureR", "mathml", "magickGUI", "lgpr", "KappaGUI", "historicalborrow", "GSODR", "GRIDCOPULA", "googleAnalyticsR", "fluidsynth", "EventDetectGUI", "evalITR", "EBcoBART", "deeptrafo", "dbarts", "CRE", "countSTAR", "bartMan", "bartCause", "altmeta"); library(bincraftR); future::plan("${STRATEGY}", workers = ${NCPUS}, rscript_startup = quote(options(crayon.enabled = TRUE))); options(progressr.enable = TRUE); progressr::handlers(global = TRUE); progressr::handlers("cli"); foo = lapply(pkgs, function(x) build_binary_package(x, build_for_minor=FALSE, debug = FALSE, force = TRUE, platform = "${PLATFORM}"))' backend_options: kubernetes: ### PROD-parallel resources: requests: memory: ${MEMORY} cpu: 12000m limits: memory: ${MEMORY} cpu: 16000m ### PROD-sequential # resources: # requests: # memory: ${MEMORY} # cpu: 2000m # limits: # memory: 29Gi # cpu: 4000m # DEBUG # resources: # requests: # memory: 4Gi # cpu: 2000m # limits: # memory: 4Gi # cpu: 2000m nodeSelector: kubernetes.io/arch: "${ARCH}" tolerations: - key: "CI" operator: "Equal" value: "true" effect: "NoSchedule"