revert(build): drop 4.6.0 as a primary R version option (#186)
All checks were successful
ci/crow/cron/process-updates/2 Pipeline was successful

#183 added `4.6.0` so the per-minor pass could run under 4.6. It was unnecessary, and it is a footgun.

**Unnecessary:** `build-all-versions` already loops every installed interpreter and runs `local/build-all.R --sensitive-only` for each non-primary minor. The 4.6 pass happens when the pipeline runs with the slot's normal `R_VERSION=4.5.3`. I proposed #183 without reading that loop closely enough.

**Footgun:** `R_VERSION` selects the *primary* minor, and the primary build lands in the **generic** slot. Selecting `4.6.0` for a slot whose generic binaries are 4.5-built would publish 4.6 binaries there and break every 4.5 client — the mirror image of the bug that started all this.

The gaps are being filled by running the pipeline as it already stands (11928 on amd64/resolute).

Reviewed-on: #186
This commit is contained in:
Patrick Schratz 2026-08-31 13:29:03 +00:00 committed by Patrick Schratz
commit 448349d075

View file

@ -35,14 +35,16 @@ variables:
- 'resolute'
default: '3.24'
R_VERSION:
# The slot's *primary* R minor: what `local/build-all.R` builds into the
# generic slot. The loop below already runs `--sensitive-only` for every
# other installed minor, so filling a non-primary minor's gap needs this
# left alone, not changed.
#
# 4.6.0 was briefly offered here (#183) and removed: selecting it for a
# slot whose generic binaries are 4.5-built would publish 4.6 binaries
# into the generic slot and break every 4.5 client.
description: 'Primary R version under /opt/R.'
# The supported window is latest plus the two previous, which the build
# images install as R_VERSION_LATEST/PREV1/PREV2. 4.6.0 was missing here,
# so no pipeline could run the per-minor pass for it and its slots kept a
# backlog: rlang exists for 4.4 and 4.5 on amd64/resolute but not 4.6,
# which is how an R 4.6.1 client ended up loading a 4.5.3 binary.
options:
- 4.6.0
- 4.5.3
- 4.4.3
default: 4.5.3