Repository navigation
fix(setup-r): install resolute binaries on the Ubuntu 26.04 runner - #12263
Merged
Merged
Conversation
GitHub's ubuntu-latest now resolves to Ubuntu 26.04 (resolute), but the setup-r action still pinned Posit Package Manager's noble (24.04) binaries. They install without error there; stringi then fails to load because its binary links libicuuc.so.74/libicui18n.so.74 and 26.04 ships ICU 78. The old smoke test loaded only ggplot2 and ragg, so it passed and hid the mismatch. - Switch the snapshot URL to __linux__/resolute/2026-10-20. The date stays, so the ggplot2 4.0.3 note and core/library_versions.py are unchanged. R itself needs no change: r-lib/actions/setup-r resolves 4.6.1 to Posit's ubuntu-2604 deb on its own. - The smoke test also loads tidyr and stringr and calls str_detect(), so a binary built for another Ubuntu release fails the setup step. - The test_version_sources fixture models the real line, so it now names resolute too. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0175hA62juZoajMcqKxWFGza
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0175hA62juZoajMcqKxWFGza
Contributor
There was a problem hiding this comment.
🔵 Needs a closer look
The shared CI setup change affects runner-dependent binary compatibility and requires final human review.
No open issues 🎉
What changed in this PR
This pull request updates the R setup action for Ubuntu 26.04 (resolute) runners, preventing ICU compatibility failures when loading stringr.
Changes:
- Switches the Posit snapshot repository from
nobletoresolute. - Extends the smoke test to load
tidyrandstringrand callstr_detect(). - Updates the version-source fixture and adds a changelog fragment.
| File | Description |
|---|---|
tests/unit/core/test_version_sources.py |
Aligns the fixture with the updated resolute snapshot URL. |
changelog.d/setup-r-resolute.md |
Documents the Ubuntu 26.04 compatibility fix. |
.github/actions/setup-r/action.yml |
Uses Ubuntu 26.04-compatible R binaries and validates stringr loading. |
Review effort: Lite
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
noble→resolutein.github/actions/setup-r/action.yml.ubuntu-latestis Ubuntu 26.04 (resolute) now, but the action still installed Posit's 24.04 (noble) binaries. They install without error there, but stringi linkslibicuuc.so.74/libicui18n.so.74(checked withreadelf), and 26.04 ships ICU 78. Solibrary(stringr)fails withlibicui18n.so.74: cannot open shared object file. The snapshot date stays at 2026-10-20, so the ggplot2 4.0.3 note andcore/library_versions.pyare unchanged.r-lib/actions/setup-rresolves R 4.6.1 through the r-hub API to Posit'subuntu-2604deb on its own, and r-hub namesresoluteas the matching binary repo.str_detect(). The old smoke test loaded only ggplot2 and ragg, so it passed on the mismatched binaries and hid the failure. A binary built for another Ubuntu release now fails the setup step instead of a generation run.test_version_sources.pyfixture models the real line, so it now namesresolutetoo.Plan
N/A
Test plan
run:steps of the action ran verbatim after an emulation ofr-lib/actions/setup-r: the same r-hub-resolved R deb, its apt prerequisites, and theHTTPUserAgentthat makes Posit serve binaries.LANG=C.UTF-8matches the runners.resolute): the apt step, 39 packages all installed as binaries, and the new smoke step all pass. line-multi, which loads tidyr, renders 3200×1800 in both themes with correct glyphs.main(noble, negative control): the same steps install and the old smoke step passes. The new smoke step fails withlibicui18n.so.74: cannot open shared object file.contour-map-geographicandflowmap-origin-destinationneedmaps, andqrcode-basicneedsqrcode; none of these is in the action's install set.separate(),extract()and somepivot_longer()paths call it. So today the mismatch would hit new generations, not the catalogue.ruff check,ruff format --checkandmypy api corepass.tests/unit/core/test_version_sources.pypasses (46), and the ggplot2 pin still resolves to 4.0.3.pytest tests/unit tests/integrationwith-n 4: 12714 passed, 1 failed. The failure istest_host_data.py::test_a_run_that_floods_stderr_past_its_timeout_is_killed_and_reaped, which is unrelated to this diff and passes 3 of 3 in isolation.tools.changelog checkpasses.Known gaps
.github/actions/setup-r. Onlyimpl-generate.ymlandimpl-repair.ymluse it, so the 26.04 container run above is the closest proof. The first ggplot2impl-generaterun after the merge is the real test.Observed, not changed
libfreetype6-dev, which is no longer a real package in 26.04.libfreetype-dev(2.14.2+dfsg-1) declaresProvides: libfreetype6-dev, and it is the only provider, so apt substitutes it.