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

This commit is contained in:
Patrick Schratz 2026-09-13 09:34:09 +00:00
commit 2861d50446
No known key found for this signature in database
GPG key ID: 62050D5BC68AB6DC

View file

@ -84,6 +84,23 @@ This elastic server architecture offers a robust and performant backend while mi
## Technical Details
### Packages requiring a newer R
The daily update and weekly full-build pipelines run `local/build-newer-r.R` under each non-primary installed R, alongside the ABI-sensitive pass.
It selects current CRAN versions whose `Depends: R` constraints cannot be met by the slot's primary R but can be met by the running R, including incompatibility inherited through `Depends`, `Imports`, and `LinkingTo`.
These builds retain bincraft's ABI classification and storage routing: sensitive binaries use the running minor, while safe binaries can be shared.
No shared S3 existence cache is passed, so bincraft checks the actual objects and distinguishes a source fallback from a binary.
The pass reads unfiltered CRAN metadata independently of the weekly snapshot and its primary-R failure exclusions; existing binaries and failures for the running minor retain bincraft's usual skip behavior.
Weekly workers split this extra work across their existing shards.
This does not select older archive versions for unsupported R minors or change index filtering.
Preview the selection without building or accessing storage or build metadata:
```sh
# Run with the target R and supply the slot's full primary R version.
/opt/R/4.6.0/bin/Rscript local/build-newer-r.R 4.4.3 --dry-run
```
### Creating/Updating the PACKAGES Index Files
Currently, the {cranlike} and {desc} packages only work with files on a local file system.