posit-dev / posit-dev/images-shared

🏗️ Self-contained manylinux tool installs for portable images

Open
#746 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

cvp:0 docker epic tdp:0
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.j2 manylinux macros on their own merits (not tied to the
    RHEL 10 epic)
  • Switch images-volumes' r image to the manylinux tarball install
  • Add a runtime-portability check to images-volumes CI that catches this
    class of bug for all images in that repo (not just r), 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' quarto image:
    TinyTeX ships several Perl-script tools (tlmgr, latexmk, etc.) that
    require the full perl package, not just perl-base, which most
    minimal target containers only provide

Child issues

Related

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.