# 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//` -- see `build_images.sh`.