posit-dev / posit-dev/images-shared
🏗️ Self-contained manylinux tool installs for portable images
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 2
- Forks
- 0
- Avg merge
- 4d 13h
- Merged PRs (30d)
- 22
Description
Self-contained (manylinux) tool installs for images whose payload gets
copied or mounted apart from the OS that built it.
Background
posit-dev/images-shared#577 adds install_manylinux() /
run_install_manylinux() to r.j2, downloading the self-contained R
tarball from cdn.posit.co/r/manylinux_2_34/ instead of the deb/RPM
package. It was originally written as a workaround for the RHEL 10 (UBI)
flexiblas-devel blocker (posit-dev/images-shared#575), but that blocker
is already fixed upstream (rstudio/r-builds#329, merged) and doesn't need
this workaround — posit-dev/images-package-manager#104 (the RHEL 10
consumer of these macros) has been closed accordingly.
The macros are still worth having for an unrelated reason: manylinux
tarballs bundle their own non-glibc runtime dependencies and only require
a minimum glibc version, which makes them safe to copy alone into a
scratch image — unlike a deb/RPM install, which dynamically links
against system libraries that live in the builder OS and are lost when
only /opt/<tool> is copied out. This matters concretely for
posit-dev/images-volumes, whose images are built FROM scratch and
mounted as Kubernetes image volumes into arbitrary other containers.
Goals
- Land the
r.j2manylinux macros on their own merits (not tied to the
RHEL 10 epic) - Switch
images-volumes'rimage to the manylinux tarball install - Add a runtime-portability check to
images-volumesCI that catches this
class of bug for all images in that repo (not justr), by executing
each image's payload inside an unrelated, minimal container rather than
inside its own builder stage - Resolve the equivalent gap found in
images-volumes'quartoimage:
TinyTeX ships several Perl-script tools (tlmgr,latexmk, etc.) that
require the fullperlpackage, not justperl-base, which most
minimal target containers only provide
Child issues
- https://github.com/posit-dev/images-shared/issues/747
- https://github.com/posit-dev/images-volumes/issues/3
- https://github.com/posit-dev/images-volumes/issues/4
Related
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the manylinux macros in r.j2, then inspect the images-volumes r and quarto images and their CI. The work should switch the r payload to the manylinux install, add portability checks for all images, and ensure TinyTeX's Perl tools run with the available Perl package; related child issues and PRs provide the detailed implementation scope.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- docker, kubernetes, perl, r
- Domain
- ci-cd, devops, infrastructure
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100