Skip to content

feat(r.j2): add manylinux R tarball install macros for self-contained R - #577

Draft
bschwedler wants to merge 3 commits into
mainfrom
enterprise-linux-ubi10-manylinux-r
Draft

feat(r.j2): add manylinux R tarball install macros for self-contained R#577
bschwedler wants to merge 3 commits into
mainfrom
enterprise-linux-ubi10-manylinux-r

Conversation

@bschwedler

@bschwedler bschwedler commented Jun 8, 2026

Copy link
Copy Markdown
Contributor

Adds install_manylinux() and run_install_manylinux() alongside the existing RPM/deb path. Downloads pre-built R tarballs from cdn.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 scratch and 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 into scratch.

Closes #747

@github-actions

github-actions Bot commented Jun 8, 2026

Copy link
Copy Markdown

Test Results

0 tests   - 1 617   0 ✅  - 1 617   0s ⏱️ - 8m 40s
0 suites  -     1   0 💤 ±    0 
0 files    -     1   0 ❌ ±    0 

Results for commit 745bbec. ± Comparison against base commit f963ab9.

♻️ This comment has been updated with latest results.

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.
@bschwedler

Copy link
Copy Markdown
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 bschwedler changed the title feat(r.j2): add manylinux_2_34 R tarball install macros Aug 12, 2026
@bschwedler
bschwedler force-pushed the enterprise-linux-ubi10-manylinux-r branch from 15b8502 to 745bbec Compare August 12, 2026 18:14
Comment thread setup-goss/action.yml

# 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
Comment thread setup-goss/action.yml

# 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
@bschwedler
bschwedler changed the base branch from enterprise-linux-ubi10-bakery to main August 12, 2026 18:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

2 participants