Skip to content

[R][CI] Windows Rtools40 jobs fail since 2026-10-30: setup-r hard-codes a cran.rstudio.com URL for Rtools40 that now 404s #55377

Closed

Description

@thisisnic

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 fails Upload artifacts is skipped and the R nightly upload (r_nightly.yml) has had nothing to publish since 2026-10-30.
    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 ucrt64 in the R workflow, failing on every push to main.
    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:

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

  1. self-assigned this
    on Nov 3, 2026
  2. added a commit that references this issue on Nov 3, 2026
  3. added this to the 27.0.0 milestone on Nov 3, 2026
  4. thisisnic commented on Nov 3, 2026

    @thisisnic
    MemberAuthor

    Issue resolved by pull request 55378
    #55378

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions