diff --git a/.crow/build-all-versions-install-deps.yaml b/.crow/build-all-versions-install-deps.yaml index 1c2df64..97610df 100644 --- a/.crow/build-all-versions-install-deps.yaml +++ b/.crow/build-all-versions-install-deps.yaml @@ -10,21 +10,10 @@ variables: - arm64 default: amd64 OS: - description: "Base OS image name." - options: - - alpine - - redhat - - ubuntu + description: "Base OS image name (e.g. alpine, redhat, ubuntu)." default: alpine OS_VERSION: - description: "OS image tag. Must match OS (alpine: 3.24; redhat: 8/9/10; ubuntu: jammy/noble)." - options: - - "3.24" - - "8" - - "9" - - "10" - - "jammy" - - "noble" + description: "OS version / image tag (e.g. 3.24, 9, jammy, noble)." default: "3.24" R_VERSION: description: "Primary R version under /opt/R." diff --git a/.crow/build-all-versions.yaml b/.crow/build-all-versions.yaml index ed392fd..b2ede89 100644 --- a/.crow/build-all-versions.yaml +++ b/.crow/build-all-versions.yaml @@ -11,21 +11,10 @@ variables: - arm64 default: amd64 OS: - description: "Base OS image name." - options: - - alpine - - redhat - - ubuntu + description: "Base OS image name (e.g. alpine, redhat, ubuntu)." default: alpine OS_VERSION: - description: "OS image tag. Must match OS (alpine: 3.24; redhat: 8/9/10; ubuntu: jammy/noble)." - options: - - "3.24" - - "8" - - "9" - - "10" - - "jammy" - - "noble" + description: "OS version / image tag (e.g. 3.24, 9, jammy, noble)." default: "3.24" R_VERSION: description: "Primary R version under /opt/R." @@ -101,6 +90,13 @@ steps: from_secret: GITHUB_PAT # normal env vars GIT_USER: pat-s + # Export the platform selectors as runtime env vars. They are otherwise + # only available for ${...} interpolation (image/volume), so build-all.R's + # `Sys.getenv("OS")/("OS_VERSION")/("ARCH")` would be empty and its + # already-built dedup query would match platform "-" and skip nothing. + OS: ${OS} + OS_VERSION: ${OS_VERSION} + ARCH: ${ARCH} # set the location of the 'pkgcache' cache dir which persists the R package dependencies needed to install the packages themselves R_PKG_CACHE_DIR: ${R_PKG_CACHE_DIR} R_LIBS_USER: /mnt/cache/R-pkgs diff --git a/local/build-all.R b/local/build-all.R index 6c3725c..f8e8efd 100644 --- a/local/build-all.R +++ b/local/build-all.R @@ -68,31 +68,8 @@ chunk <- chunk[!chunk$Package %in% exclude, ] # pkgs_to_build.rds is a static snapshot from the install-deps step, so on a # restart it still lists everything an interrupted run already produced. The # metadata DB reflects that progress, so we re-derive the remaining set here. -# Derive platform + arch from the running container, mirroring the codename -> -# platform mapping bincraft uses internally. The OS/OS_VERSION selectors are -# workflow-level CI variables that are not injected into the container -# environment, so Sys.getenv() would return "" and this pre-filter would query -# platform "-" and skip nothing. -codename <- bincraft::set_codename(NULL) -platform <- switch( - codename, - jammy = "ubuntu-2204", - noble = "ubuntu-2404", - resolute = "ubuntu-2604", - rhel10 = "redhat-10", - rhel9 = "redhat-9", - rhel8 = "redhat-8", - alpine320 = "alpine-320", - alpine321 = "alpine-321", - alpine322 = "alpine-322", - alpine323 = "alpine-323", - alpine324 = "alpine-324", - alpine325 = "alpine-325", - alpine326 = "alpine-326", - NA_character_ -) -local_machine <- Sys.info()[["machine"]] -arch <- if (grepl("arm64|aarch64", local_machine)) "arm64" else "amd64" +platform <- paste(Sys.getenv("OS"), gsub("[.]", "", Sys.getenv("OS_VERSION")), sep = "-") +arch <- Sys.getenv("ARCH") con <- DBI::dbConnect( RPostgres::Postgres(), dbname = "build_metadata",