From d7cd9804b29e48d7fd5d1a6bdedaa1fbee2b152d Mon Sep 17 00:00:00 2001 From: TroyHernandez Date: Sun, 23 Aug 2026 09:29:10 -0500 Subject: [PATCH] CI: install remotes when the runner has not macos-latest moved to arm64 and r-ci's macOS bootstrap stopped leaving `remotes` behind. ./run.sh install_deps calls it directly, so the dependency step failed 0.16s in, before any package code was parsed, with "there is no package called remotes". Two things made that worse than it looks. It is identical across every repo on this CI, so three unrelated PRs all read red at once and none of the redness was about their contents. And fail-fast cancelled the Linux leg, which is the leg that actually gates these packages -- so the run reported failure while never running the tests that matter. Guarded on absence, so it is a no-op on Linux and removes itself when upstream ships the fix. Pinning macos-13 would also work and would quietly keep us on an x86_64 image indefinitely. --- .github/workflows/ci.yaml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 94db4b1..37f40a9 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -22,6 +22,19 @@ jobs: - name: Setup uses: eddelbuettel/github-actions/r-ci@master + # macos-latest moved to arm64 and r-ci's macOS bootstrap stopped + # leaving `remotes` behind. run.sh install_deps calls it directly, + # so the dependency step died before any package code was parsed -- + # and with fail-fast on, it cancelled the Linux leg too, which is + # the leg that actually gates these packages. + # + # Guarded on absence: a no-op on Linux, and it deletes itself the + # day upstream ships the fix rather than pinning us to an old image. + - name: Bootstrap remotes + run: >- + Rscript -e 'if (!requireNamespace("remotes", quietly = TRUE)) + install.packages("remotes", repos = "https://cloud.r-project.org")' + - name: Dependencies run: ./run.sh install_deps