A package requiring a newer R than the slot's primary is never built for any minor #215
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
A package whose current CRAN version requires a newer R than the slot's primary build R is never built for that slot, on any R minor, including the minors that could build it.
The source fallback then publishes CRAN's source tarball under the binary key, and the record is carried into every per-minor index.
On the 4.4 index those records carry
Depends: R (>= 4.5.0), soavailable.packages()filters them out and the package is simply unavailable.Evidence
arules 1.7.15(Depends: Matrix (>= 1.4-0), R (>= 4.5.0)), amd64, checked against the live CDN:noblealpine323rhel10On
noblethere is no binary at any minor, only a source tarball in the flat slot.Confirmed by fetching it: no
Meta/package.rds.Its record in
noble's 4.4 index:No
Built, correctly, because #131 clears the stamp on a source fallback.No
Path, so it resolves to the flat object.R 4.4 applies the
R_versionfilter and reports the package as unavailable.Scale
Records in each slot's 4.4 index that require R >= 4.5 and carry no
Built, amd64:The split follows the primary build R exactly,
rhel8aside, which is lower for unrelated reasons.A 4.4-primary slot carries roughly 90 more unusable records than a 4.5-primary one.
Mechanism
A package is built once, under the slot's primary R, into the generic slot.
Per-minor builds only happen for packages classified ABI-sensitive.
So for a package that is not ABI-sensitive and requires a newer R than the primary, there is no build path at all: the primary build fails the R requirement, and nothing else ever tries.
This is also why the residual "missing from 4.4" column is made up entirely of packages requiring R >= 4.5 (
arules,BoomSpikeSlab,praznik,RSiena,stelfi) and their dependents (arulesSequences,bsts,dtametaTMB,glmmTMB,hmmTMB,tramME,phylosem).Options
Depends: R, rather than only the slot's primary.aruleswould then get 4.5 and 4.6 binaries onnoble, matching whatalpine323already produces for 4.5. Largest change, best outcome.Meta/archive.rds, instead of the current one. An R 4.4 user gets a working olderarulesrather than nothing.1 and 2 are not exclusive: 1 fixes the minors that can build it, 2 covers the minor that cannot.
Not urgent
Nothing here is a regression and nothing is broken for a client.
An R 4.4 user gets the same "not available for this version of R" that CRAN itself gives for the current version.
The cost is that a binary repository could do better, plus ~90 dead records per 4.4-primary index.