Some checks failed
ci/crow/cron/process-updates/15 Pipeline failed
ci/crow/cron/process-updates/14 Pipeline failed
ci/crow/cron/process-updates/16 Pipeline failed
ci/crow/cron/process-updates/18 Pipeline failed
ci/crow/cron/process-updates/11 Pipeline failed
ci/crow/cron/process-updates/12 Pipeline failed
ci/crow/cron/process-updates/17 Pipeline failed
ci/crow/cron/process-updates/6 Pipeline failed
ci/crow/cron/process-updates/5 Pipeline failed
## Summary Adds the curated **patch registry** and wiring that drives bincraft's new package-patching mechanism (see bincraft PR `feat/package-patching`). Lets specific packages be patched (env/configure/Makevars overrides or source diffs) before pak installs them — including as transitive dependencies — so compiler-/OS-specific failures like RcppParallel's bundled TBB stop cascading. ## What's included - `local/patches/registry.json` — initial entry: RcppParallel with `RCPP_PARALLEL_USE_TBB=0` for alpine / ubuntu-2604, plus `local/patches/README.md` schema docs. - `local/validate-patches.R` — validates schema, referenced patch files, and ambiguous overlaps; clean failure + exit 1 (no stacktrace). - `.pre-commit-config.yaml` — a `validate-patches` hook (re-runs when the registry or the validator changes). - `local/build-one.R` / `local/build-all.R` — pass `patches = "local/patches"` to `bincraft::build_binary_package()`. - `specs/2026-06-30-package-patching-design.md` and `plans/2026-06-30-package-patching-implementation.md`. ## ⚠️ Merge ordering (blocker) This PR adds a `patches = ...` argument to `build_binary_package()` calls. The `.crow/*.yaml` workflows currently pin bincraft **v4.2.3**, which does not accept that argument — CI will error with `unused argument (patches=...)` until: 1. bincraft **v4.3.0** is released (PR `feat/package-patching`), and 2. the pin is bumped in `.crow/build-all-versions-install-deps.yaml`, `.crow/build-all-versions.yaml`, and `.crow/process-updates.yaml`. The `.crow` pin bump will be added to this PR once bincraft v4.3.0 is tagged. Do not merge before then. Reviewed-on: #103
81 lines
2.4 KiB
YAML
81 lines
2.4 KiB
YAML
### Required extra vars
|
|
# woodpecker-cli pipeline create --var task=archive-missed-packages --branch=main --log-level=info 7
|
|
when:
|
|
- event: manual
|
|
evaluate: 'task == "archive-missed-packages"'
|
|
- event: cron
|
|
cron: archive-missed-packages
|
|
|
|
matrix:
|
|
include:
|
|
- CODENAME: jammy
|
|
ARCH: amd64
|
|
- CODENAME: jammy
|
|
ARCH: arm64
|
|
- CODENAME: noble
|
|
ARCH: amd64
|
|
- CODENAME: noble
|
|
ARCH: arm64
|
|
- CODENAME: redhat-8
|
|
ARCH: amd64
|
|
- CODENAME: redhat-8
|
|
ARCH: arm64
|
|
- CODENAME: redhat-9
|
|
ARCH: amd64
|
|
- CODENAME: redhat-9
|
|
ARCH: arm64
|
|
- CODENAME: redhat-10
|
|
ARCH: amd64
|
|
- CODENAME: redhat-10
|
|
ARCH: arm64
|
|
- CODENAME: alpine321
|
|
ARCH: amd64
|
|
- CODENAME: alpine321
|
|
ARCH: arm64
|
|
- CODENAME: alpine322
|
|
ARCH: amd64
|
|
- CODENAME: alpine322
|
|
ARCH: arm64
|
|
- CODENAME: alpine323
|
|
ARCH: amd64
|
|
- CODENAME: alpine323
|
|
ARCH: arm64
|
|
|
|
steps:
|
|
- name: 'Archive missed packages'
|
|
image: reg.devxy.io/rpkgs/build-env-alpine:3.24
|
|
pull: true
|
|
environment:
|
|
RED_HAT_DEV_PW:
|
|
from_secret: RED_HAT_DEV_PW
|
|
B2_S3_ACCESS_KEY:
|
|
from_secret: B2_S3_ACCESS_KEY
|
|
B2_S3_SECRET_KEY:
|
|
from_secret: B2_S3_SECRET_KEY
|
|
PGPASS:
|
|
from_secret: PGPASS
|
|
REPO_RO_TOKEN:
|
|
from_secret: REPO_RO_TOKEN
|
|
GITHUB_PAT:
|
|
from_secret: GITHUB_PAT
|
|
# normal env vars
|
|
GIT_USER: pat-s
|
|
R_VERSION: 4.5.3
|
|
commands:
|
|
- /opt/R/$R_VERSION/bin/R -q -e 'if (!requireNamespace("bincraft", quietly = TRUE) || packageVersion("bincraft") != "4.3.1") pak::pak("git::https://codefloe.com/rpkgs/bincraft.git@v4.3.1", dependencies = TRUE)'
|
|
- /opt/R/$R_VERSION/bin/R -q -e 'packageVersion("bincraft")'
|
|
- /opt/R/$R_VERSION/bin/R -q -e 'bincraft::process_unarchived_pkgs(Sys.getenv("CODENAME"), Sys.getenv("ARCH"), 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"), workers = 2L)'
|
|
backend_options:
|
|
kubernetes:
|
|
resources:
|
|
requests:
|
|
memory: 1Gi
|
|
cpu: 2000m
|
|
limits:
|
|
memory: 1200Mi
|
|
cpu: 2000m
|
|
tolerations:
|
|
- key: 'CI'
|
|
operator: 'Equal'
|
|
value: 'true'
|
|
effect: 'NoSchedule'
|