fix(build): build packages requiring newer R on compatible minors #216

Merged
pat-s merged 1 commit from t3code/fix-cran-binary-builds into main 2026-09-13 09:35:51 +00:00
Owner

Packages requiring a newer R than a slot's primary interpreter never reach a compatible secondary build when they are not ABI-sensitive.
Add a targeted pass to the daily updates and weekly full builds that selects current CRAN versions unsupported by the primary R but supported by the running R, including required dependents.
For example, arules now reaches the R 4.5 and 4.6 build passes on a 4.4-primary slot.

The pass reads unfiltered CRAN metadata independently of the shared weekly snapshot and its primary-R failure exclusions, prefers ordinary contrib records over R-devel Recommended duplicates, and retains bincraft's ABI routing and per-interpreter error handling.
Weekly workers share the additional work through their existing shards.
Older archive fallback and incompatible-minor index filtering remain outside this change.

Files changed:

  • .crow/build-all-versions.yaml: run the additional pass across weekly shards.
  • .crow/process-updates.yaml: run the additional pass during daily updates.
  • local/build-newer-r.R: select and build compatible current versions, with exclusions, sharding, and a dry-run mode.
  • local/newer-r-helpers.R: evaluate R constraints and propagate incompatibility through required dependencies.
  • local/tests/test-newer-r-helpers.R: cover bounds, dependency closure, cycles, empty inputs, and Recommended duplicates.
  • README.md: document behavior and the dry-run command.
  • justfile: add Air formatting and Jarl lint/fix recipes.

Validation: all 137 local test assertions pass, crow lint .crow/ passes, and changed-file pre-commit hooks pass.
Live CRAN metadata selects arules for R 4.5.3 and 4.6.1 but not 4.4.3.
Repository-wide prek run -a also ran; unrelated existing formatting changes were reverted.
Production package builds have not run.

Fixes #215.

Packages requiring a newer R than a slot's primary interpreter never reach a compatible secondary build when they are not ABI-sensitive. Add a targeted pass to the daily updates and weekly full builds that selects current CRAN versions unsupported by the primary R but supported by the running R, including required dependents. For example, `arules` now reaches the R 4.5 and 4.6 build passes on a 4.4-primary slot. The pass reads unfiltered CRAN metadata independently of the shared weekly snapshot and its primary-R failure exclusions, prefers ordinary contrib records over R-devel Recommended duplicates, and retains bincraft's ABI routing and per-interpreter error handling. Weekly workers share the additional work through their existing shards. Older archive fallback and incompatible-minor index filtering remain outside this change. Files changed: - `.crow/build-all-versions.yaml`: run the additional pass across weekly shards. - `.crow/process-updates.yaml`: run the additional pass during daily updates. - `local/build-newer-r.R`: select and build compatible current versions, with exclusions, sharding, and a dry-run mode. - `local/newer-r-helpers.R`: evaluate R constraints and propagate incompatibility through required dependencies. - `local/tests/test-newer-r-helpers.R`: cover bounds, dependency closure, cycles, empty inputs, and Recommended duplicates. - `README.md`: document behavior and the dry-run command. - `justfile`: add Air formatting and Jarl lint/fix recipes. Validation: all 137 local test assertions pass, `crow lint .crow/` passes, and changed-file pre-commit hooks pass. Live CRAN metadata selects `arules` for R 4.5.3 and 4.6.1 but not 4.4.3. Repository-wide `prek run -a` also ran; unrelated existing formatting changes were reverted. Production package builds have not run. Fixes #215.
pat-s merged commit 6b764d2014 into main 2026-09-13 09:35:51 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
devxy/build-cran-binaries!216
No description provided.