docker: Qt 6.11.1, with the pinned ninja and xcb package it needs
Qt 6.11 did not build on either Rocky image, for two unrelated reasons: rocky8 carried ninja 1.8.2, which cannot parse what Qt 6.11 generates -- "multiple outputs aren't (yet?) supported by depslog", a ninja limitation lifted in 1.10. Ninja is now pinned at 1.13.2 from the upstream release binary, for the same reason CMake is: the distro versions spanned 1.8.2 to 1.11.1 and moved under us. rocky9 installed xcb-util-*-devel, a glob that does not match the plain xcb-util-devel package, so the XCB::UTIL target Qt 6.11's xcb platform plugin requires was absent. Qt 6.9 did not ask for it, which is why it appeared only now. build-qt.sh also derives the download path's series from the version, so a bump no longer 404s against the old 6.9 directory. Built on all four images, and jfjoch_viewer links against the static Qt 6.11.1 on both rockys (2708/2708 targets, Qt fully static -- only system X/GL remain dynamic). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01B6iekpDa2xiKobEj1R5xnp
This commit is contained in:
co-authored by
Claude Opus 5
parent
cc4ded5aad
commit
090a01e3cf
@@ -23,12 +23,15 @@
|
||||
# docker/build_images.sh rocky9 rocky8 # subset
|
||||
# JOBS=4 docker/build_images.sh # all four at once
|
||||
# JOBS=1 docker/build_images.sh # serial
|
||||
# TAG=2607b docker/build_images.sh # override the tag (default 2607b)
|
||||
# TAG=2610 docker/build_images.sh # override the tag (default 2609)
|
||||
#
|
||||
# The tag has to match what .gitea/workflows/build_and_test.yml asks the runner for, or CI pulls a
|
||||
# different image than the one just built. Every job there now names its image explicitly:
|
||||
# the rockys on 2607b, the ubuntus on 2608b. Build a single variant with, e.g.:
|
||||
# TAG=2608b docker/build_images.sh ubuntu2404
|
||||
# different image than the one just built. Every job there names its image explicitly, and all four
|
||||
# are on the same tag (2609). Build a single variant with, e.g.:
|
||||
# TAG=2609 docker/build_images.sh ubuntu2404
|
||||
#
|
||||
# JOBS: static Qt needs ~15-20 GB of scratch per concurrent build on top of a 10-20 GB result, so
|
||||
# four at once will exhaust a 200 GB disk. JOBS=1 is the safe choice on a box that also runs CI.
|
||||
# PUSH=1 docker/build_images.sh # build (parallel) then push (serial; needs docker login)
|
||||
#
|
||||
# Parallel stdout would be an unreadable interleave, so each build streams to its own log file:
|
||||
@@ -36,7 +39,7 @@
|
||||
set -euo pipefail
|
||||
|
||||
REGISTRY="${REGISTRY:-gitea.psi.ch/leonarski_f}"
|
||||
TAG="${TAG:-2607b}"
|
||||
TAG="${TAG:-2609}"
|
||||
PUSH="${PUSH:-0}"
|
||||
JOBS="${JOBS:-2}"
|
||||
|
||||
|
||||
Executable
+26
@@ -0,0 +1,26 @@
|
||||
#!/usr/bin/env bash
|
||||
# Ninja, pinned, from the upstream release binary.
|
||||
#
|
||||
# Shared by all four build images (docker/*/Dockerfile). The build context is docker/, so each
|
||||
# Dockerfile reaches this with COPY common/. Version inputs come from that Dockerfile's ARGs.
|
||||
#
|
||||
# Pinned for the same reason as CMake: the distro versions span 1.8.2 (EL8) to 1.11.1 (Noble), and
|
||||
# 1.8.2 is too old to parse what recent Qt generates -- it fails with "multiple outputs aren't
|
||||
# supported by depslog", which is a ninja limitation lifted in 1.10, not anything wrong with Qt.
|
||||
#
|
||||
# The zip is unpacked with python3 rather than unzip: python3 is in every image already and unzip
|
||||
# is not, so this needs no extra package.
|
||||
set -eux
|
||||
|
||||
: "${NINJA_VERSION:?set NINJA_VERSION}"
|
||||
: "${NINJA_SHA256:?set NINJA_SHA256}"
|
||||
|
||||
cd /tmp
|
||||
curl -fLO "https://github.com/ninja-build/ninja/releases/download/v${NINJA_VERSION}/ninja-linux.zip"
|
||||
echo "${NINJA_SHA256} ninja-linux.zip" | sha256sum -c -
|
||||
mkdir -p "/opt/ninja-${NINJA_VERSION}/bin"
|
||||
python3 -m zipfile -e ninja-linux.zip "/opt/ninja-${NINJA_VERSION}/bin"
|
||||
chmod +x "/opt/ninja-${NINJA_VERSION}/bin/ninja"
|
||||
rm -f ninja-linux.zip
|
||||
|
||||
test "$("/opt/ninja-${NINJA_VERSION}/bin/ninja" --version)" = "${NINJA_VERSION}"
|
||||
@@ -2,7 +2,7 @@ FROM nvidia/cuda:12.9.1-devel-rockylinux8
|
||||
LABEL authors="leonarski_f"
|
||||
|
||||
ARG OPENSSL_VERSION=3.5.4
|
||||
ARG QT_VERSION=6.9.1
|
||||
ARG QT_VERSION=6.11.1
|
||||
ARG DBUS_VERSION=1.14.10
|
||||
ARG NODE_MAJOR=22
|
||||
ARG EIGEN_VERSION=3.4.0
|
||||
@@ -31,7 +31,6 @@ RUN dnf -y install epel-release && \
|
||||
rpmdevtools \
|
||||
numactl-devel \
|
||||
redhat-rpm-config \
|
||||
ninja-build \
|
||||
libxcb-devel \
|
||||
xcb-util-*-devel \
|
||||
xcb-util-devel \
|
||||
@@ -72,10 +71,13 @@ RUN dnf -y install epel-release && \
|
||||
# docker/ (see build_images.sh), which is what puts common/ in reach of this COPY.
|
||||
ARG CMAKE_VERSION=3.31.8
|
||||
ARG CMAKE_SHA256=630615d8e98ac33eba7fbe472626dff5c899c85af3c024585ae109166a6909d0
|
||||
ARG NINJA_VERSION=1.13.2
|
||||
ARG NINJA_SHA256=5749cbc4e668273514150a80e387a957f933c6ed3f5f11e03fb30955e2bbead6
|
||||
COPY common/ /opt/jfjoch-common/
|
||||
RUN /opt/jfjoch-common/install-cmake.sh
|
||||
# Ahead of the distro path: the pinned CMake is the one every later step and every CI build uses.
|
||||
ENV PATH=/opt/cmake-${CMAKE_VERSION}/bin:${PATH}
|
||||
RUN /opt/jfjoch-common/install-ninja.sh
|
||||
# Ahead of the distro path: these are the CMake and Ninja every later step and every CI build uses.
|
||||
ENV PATH=/opt/cmake-${CMAKE_VERSION}/bin:/opt/ninja-${NINJA_VERSION}/bin:${PATH}
|
||||
|
||||
RUN /opt/jfjoch-common/build-openssl.sh
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ FROM nvidia/cuda:13.3.0-devel-rockylinux9
|
||||
LABEL authors="leonarski_f"
|
||||
|
||||
ARG OPENSSL_VERSION=3.5.4
|
||||
ARG QT_VERSION=6.9.1
|
||||
ARG QT_VERSION=6.11.1
|
||||
ARG DBUS_VERSION=1.14.10
|
||||
ARG NODE_MAJOR=22
|
||||
ARG EIGEN_VERSION=3.4.0
|
||||
@@ -36,12 +36,12 @@ RUN dnf -y update && \
|
||||
rpmdevtools \
|
||||
numactl-devel \
|
||||
redhat-rpm-config \
|
||||
ninja-build \
|
||||
python3 \
|
||||
python3.12 \
|
||||
perl \
|
||||
nasm \
|
||||
pkgconf-pkg-config \
|
||||
xcb-util-devel \
|
||||
xcb-util-*-devel \
|
||||
libxcb-devel \
|
||||
libxkbcommon-devel \
|
||||
@@ -75,10 +75,13 @@ RUN dnf -y update && \
|
||||
# docker/ (see build_images.sh), which is what puts common/ in reach of this COPY.
|
||||
ARG CMAKE_VERSION=3.31.8
|
||||
ARG CMAKE_SHA256=630615d8e98ac33eba7fbe472626dff5c899c85af3c024585ae109166a6909d0
|
||||
ARG NINJA_VERSION=1.13.2
|
||||
ARG NINJA_SHA256=5749cbc4e668273514150a80e387a957f933c6ed3f5f11e03fb30955e2bbead6
|
||||
COPY common/ /opt/jfjoch-common/
|
||||
RUN /opt/jfjoch-common/install-cmake.sh
|
||||
# Ahead of the distro path: the pinned CMake is the one every later step and every CI build uses.
|
||||
ENV PATH=/opt/cmake-${CMAKE_VERSION}/bin:${PATH}
|
||||
RUN /opt/jfjoch-common/install-ninja.sh
|
||||
# Ahead of the distro path: these are the CMake and Ninja every later step and every CI build uses.
|
||||
ENV PATH=/opt/cmake-${CMAKE_VERSION}/bin:/opt/ninja-${NINJA_VERSION}/bin:${PATH}
|
||||
|
||||
RUN /opt/jfjoch-common/build-openssl.sh
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ LABEL authors="leonarski_f"
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
ARG OPENSSL_VERSION=3.5.4
|
||||
ARG QT_VERSION=6.9.1
|
||||
ARG QT_VERSION=6.11.1
|
||||
ARG DBUS_VERSION=1.14.10
|
||||
ARG NODE_MAJOR=22
|
||||
ARG EIGEN_VERSION=3.4.0
|
||||
@@ -28,7 +28,6 @@ RUN set -eux; \
|
||||
tar \
|
||||
xz-utils \
|
||||
build-essential \
|
||||
ninja-build \
|
||||
python3 \
|
||||
python3-venv \
|
||||
python3-requests \
|
||||
@@ -100,10 +99,13 @@ ENV CXX=/usr/bin/g++-12
|
||||
# docker/ (see build_images.sh), which is what puts common/ in reach of this COPY.
|
||||
ARG CMAKE_VERSION=3.31.8
|
||||
ARG CMAKE_SHA256=630615d8e98ac33eba7fbe472626dff5c899c85af3c024585ae109166a6909d0
|
||||
ARG NINJA_VERSION=1.13.2
|
||||
ARG NINJA_SHA256=5749cbc4e668273514150a80e387a957f933c6ed3f5f11e03fb30955e2bbead6
|
||||
COPY common/ /opt/jfjoch-common/
|
||||
RUN /opt/jfjoch-common/install-cmake.sh
|
||||
# Ahead of the distro path: the pinned CMake is the one every later step and every CI build uses.
|
||||
ENV PATH=/opt/cmake-${CMAKE_VERSION}/bin:${PATH}
|
||||
RUN /opt/jfjoch-common/install-ninja.sh
|
||||
# Ahead of the distro path: these are the CMake and Ninja every later step and every CI build uses.
|
||||
ENV PATH=/opt/cmake-${CMAKE_VERSION}/bin:/opt/ninja-${NINJA_VERSION}/bin:${PATH}
|
||||
|
||||
RUN /opt/jfjoch-common/build-openssl.sh
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ LABEL authors="leonarski_f"
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
ARG OPENSSL_VERSION=3.5.4
|
||||
ARG QT_VERSION=6.9.1
|
||||
ARG QT_VERSION=6.11.1
|
||||
ARG DBUS_VERSION=1.14.10
|
||||
ARG NODE_MAJOR=22
|
||||
ARG EIGEN_VERSION=3.4.0
|
||||
@@ -39,7 +39,6 @@ RUN set -eux; \
|
||||
tar \
|
||||
xz-utils \
|
||||
build-essential \
|
||||
ninja-build \
|
||||
python3 \
|
||||
python3-venv \
|
||||
python3-requests \
|
||||
@@ -109,10 +108,13 @@ ENV CXX=/usr/bin/g++
|
||||
# docker/ (see build_images.sh), which is what puts common/ in reach of this COPY.
|
||||
ARG CMAKE_VERSION=3.31.8
|
||||
ARG CMAKE_SHA256=630615d8e98ac33eba7fbe472626dff5c899c85af3c024585ae109166a6909d0
|
||||
ARG NINJA_VERSION=1.13.2
|
||||
ARG NINJA_SHA256=5749cbc4e668273514150a80e387a957f933c6ed3f5f11e03fb30955e2bbead6
|
||||
COPY common/ /opt/jfjoch-common/
|
||||
RUN /opt/jfjoch-common/install-cmake.sh
|
||||
# Ahead of the distro path: the pinned CMake is the one every later step and every CI build uses.
|
||||
ENV PATH=/opt/cmake-${CMAKE_VERSION}/bin:${PATH}
|
||||
RUN /opt/jfjoch-common/install-ninja.sh
|
||||
# Ahead of the distro path: these are the CMake and Ninja every later step and every CI build uses.
|
||||
ENV PATH=/opt/cmake-${CMAKE_VERSION}/bin:/opt/ninja-${NINJA_VERSION}/bin:${PATH}
|
||||
|
||||
RUN /opt/jfjoch-common/build-openssl.sh
|
||||
|
||||
|
||||
Reference in New Issue
Block a user