Files
Jungfraujoch/docker/common/README.md
T
jungfrauandClaude Opus 5 c94fe9e740 docker: one copy of the shared build steps, and a pinned CMake
OpenSSL, libdbus, Qt and Eigen were built from byte-identical shell in all four
images. They now live once in docker/common/ and each Dockerfile runs them, which
is why the build context is docker/ rather than docker/<variant>/. The four copies
are what let the git HTTP/1.1 fix land in both Ubuntu images and neither Rocky one.

CMake is pinned and installed from cmake.org instead of coming from the distro.
The base images ship three different versions (EL8 3.26.5, EL9 3.31.8, Jammy 3.22
via a Kitware repo held at 3.26, Noble 3.28.3) and they move at every base refresh;
that spread is what makes a configure fail on one image and pass on the next, as
the CMP0169 deprecation that only appears on 3.31 did. The Kitware apt repo that
existed solely to hold CMake at 3.26 is gone with it.

Also: duplicate zlib-static (both rockys) and libxcb-devel (rocky9) package
entries, and an ENV PATH=/usr/bin that never changed anything (ubuntu2204).

Dockerfiles drop from 872 to 684 lines against ~110 lines of shared script. All
four build clean through the eigen step; Qt is unchanged text and is covered by
the image rebuild.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01B6iekpDa2xiKobEj1R5xnp
2026-09-12 14:33:10 -04:00

1.2 KiB

Shared build-image steps

docker/rocky8, docker/rocky9, docker/ubuntu2204 and docker/ubuntu2404 differ only in their package manager, their package list and a few distro-specific extras (DIALS and XDS on rocky9, the aarch64 cross toolchain on ubuntu2404, the release tooling on rocky8). Everything built from source is identical in all four, so it lives here and is run by each Dockerfile in this order:

script what it installs
install-cmake.sh CMake, pinned, from cmake.org -- the distro CMake is not used
build-openssl.sh static OpenSSL into /opt/openssl-$OPENSSL_VERSION
build-dbus.sh static libdbus into /opt/dbus-$DBUS_VERSION-static
build-qt.sh static Qt 6 into $QT_PREFIX
install-eigen.sh Eigen 3.4 into /opt/eigen-3.4

They read their versions from the ARGs of the Dockerfile that runs them, and each one is the verbatim shell that used to be inlined four times. Keeping one copy is the point: the HTTP/1.1 git fix once landed in the two Ubuntu images and neither Rocky one, because there were four copies to remember.

The build context is therefore docker/, not docker/<variant>/ -- see build_images.sh.