Repository navigation
Description
Since 2026-10-30 both jobs that build the Windows libarrow binary with Rtools40 fail at the Rtools download in r-lib/actions/setup-r:
Downloading https://cran.rstudio.com/bin/windows/Rtools/rtools40-x86_64.exe...
##[error]Failed to get R 4.1: Failed to get R 4.1.3: Failed to download version [object Object]: Error: Unexpected HTTP response: 404
CRAN moved Rtools40 and the Windows installers for R < 4.2 to cran-archive.r-project.org on 2026-10-30. setup-r normally gets download URLs from the r-hub rversions API, which was updated the same day, but when rtools-version is passed explicitly it uses a hard-coded URL table that still points at cran.rstudio.com. We pass rtools-version: 40 in both places. r-lib/actions#1120 contained a fix for that table but was closed unmerged, and the current v2 release (v2.14.0) still has the old URL.
Affected jobs:
C++ Binary Windows RTools (40 only)in the r-binary-packages crossbow task. This produces the single Windows libarrow binary used by every R version, so when it failsUpload artifactsis skipped and the R nightly upload (r_nightly.yml) has had nothing to publish since 2026-10-30.arrow/dev/tasks/r/github.packages.yml
Lines 174 to 187 in aae29bf
name: C++ Binary Windows RTools (40 only) needs: source runs-on: windows-latest env: PKG_ID: r-libarrow-windows-x86_64 PKG_FILE: r-libarrow-windows-x86_64-{{ '${{ needs.source.outputs.pkg_version }}' }}.zip steps: - run: git config --global core.autocrlf false {{ macros.github_checkout_arrow()|indent }} {{ macros.github_change_r_pkg_version(is_fork, '${{ needs.source.outputs.pkg_version }}')|indent }} - uses: r-lib/actions/setup-r@v2 with: rtools-version: 40 r-version: "4.0" AMD64 Windows C++ RTools 40 ucrt64in the R workflow, failing on every push to main.Lines 230 to 236 in aae29bf
with: # Note: RTools must be 40 here because RTools40 + ucrt is how we build the Arrow C++ # static library. The R is not used here but R 4.1 was the last R to use # Rtools40. r-version: "4.1" rtools-version: ${{ matrix.config.rtools }} Ncpus: 2
Example failures:
- https://github.com/ursacomputing/crossbow/actions/runs/41502186545/job/125472631291
- https://github.com/apache/arrow/actions/runs/41464226894/job/125340766569
Fix: stop passing rtools-version and let setup-r derive it from r-version. The API resolves R 4.1 to Rtools 40 at the archive URL, so the binary is still built with Rtools40. The packaging job currently requests R 4.0 and should move to 4.1 to match r.yml.
This issue was drafted with AI assistance (Claude Code) and reviewed by the author.
Activity
GH-55377: [R][CI] Windows Rtools40 jobs fail since 2026-10-30: setup-…
thisisnic commentedon Nov 3, 2026
Issue resolved by pull request 55378
#55378