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 feat(r.j2): add manylinux R tarball install macros for self-contained R 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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

r.j2: add manylinux R tarball install macros

2 participants