feat(r.j2): add manylinux R tarball install macros for self-contained R - #577
Draft
bschwedler wants to merge 3 commits into
Draft
feat(r.j2): add manylinux R tarball install macros for self-contained R#577bschwedler wants to merge 3 commits into
bschwedler wants to merge 3 commits into
Conversation
Adds install_manylinux() and run_install_manylinux() as alternatives to
the RPM/deb path. Downloads pre-built R tarballs from cdn.posit.co/r/
and extracts them directly to /opt/R/{version}/, bypassing the package
manager's dependency resolution.
Requires glibc >= 2.34 (RHEL 10, Ubuntu 22.04+, Debian 12+). Arch is
detected at runtime so the same Containerfile builds on amd64 and arm64.
Allows callers to select which manylinux variant to download from cdn.posit.co/r/. Defaults to "2_34", which covers RHEL 9+, Ubuntu 22.04+, and Debian 12+. Passing a different value (e.g. "2_28") will select the corresponding tarball variant.
Add string-versions case for run_install_manylinux and split the explicit-glibc-version case into a standalone test. Removes the isinstance conditional from the parametrize helper and brings coverage in line with test_run_install.
Contributor
Author
|
Re-scoping this off the RHEL 10 (UBI) epic (#575) — that blocker is fixed upstream (rstudio/r-builds#329, merged) and doesn't need this workaround; posit-dev/images-package-manager#104 has been closed accordingly. These macros are still useful on their own merits: the manylinux tarball is self-contained (bundles its non-glibc runtime deps, only requires glibc >= 2.34), which matters for posit-dev/images-volumes' scratch-based images that get copied alone into arbitrary containers. Tracking under a new epic instead. |
bschwedler
force-pushed
the
enterprise-linux-ubi10-manylinux-r
branch
from
August 12, 2026 18:14
15b8502 to
745bbec
Compare
|
|
||
| # v0.4.10+ ships versioned tarballs with a consolidated SHA256SUMS file, so "latest" | ||
| # must be resolved to a concrete tag up front to build the asset filename. | ||
| if [ "${{ inputs.version }}" = "latest" ]; then |
|
|
||
| # v0.4.10+ ships versioned tarballs with a consolidated SHA256SUMS file, so "latest" | ||
| # must be resolved to a concrete tag up front to build the asset filename. | ||
| if [ "${{ inputs.version }}" = "latest" ]; then |
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.
Adds
install_manylinux()andrun_install_manylinux()alongside the existing RPM/deb path. Downloads pre-built R tarballs fromcdn.posit.co/r/manylinux_2_34/and extracts them to/opt/R/{version}/, bypassing package manager dependency resolution. Arch is detected at runtime; the same Containerfile covers amd64 and arm64.Useful for posit-dev/images-volumes, whose images are built
FROM scratchand only carry/opt/<tool>— the manylinux tarball is self-contained (bundles its own non-glibc runtime deps, only requires glibc >= 2.34), unlike the deb/RPM path which dynamically links against system libraries that don't survive the copy intoscratch.Closes #747