From 293de1e0ad5c81f87d4e1316ba011226dc37a5db Mon Sep 17 00:00:00 2001 From: "Ralf W. Grosse-Kunstleve" Date: Sat, 12 Sep 2026 11:33:07 -0700 Subject: [PATCH 1/5] ci: pin legacy Clang jobs to Debian snapshot --- .github/workflows/ci.yml | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index dd96e81e9d..f8e6ebad14 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -272,24 +272,40 @@ jobs: include: - clang: 5 std: 14 + container: "silkeh/clang:5@sha256:68f994994d0c12563f4ce6bf34d78a19dc503e8e48778e4af33cf49abcd27133" + use_bullseye_snapshot: true - clang: 11 std: 20 + container: "silkeh/clang:11-bullseye@sha256:5d4e67f5a2de1b26f632b88343dc63b894c8ddc9b068114894cc56de8e888b61" + use_bullseye_snapshot: true - clang: 16 std: 20 - container_suffix: "-bullseye" + container: "silkeh/clang:16-bullseye" - clang: 18 std: 20 cxx_flags: "-Werror -Wall -Wextra -Wwrite-strings -Wunreachable-code -Wpointer-arith -Wredundant-decls -Wunused-template" - container_suffix: "-bookworm" + container: "silkeh/clang:18-bookworm" name: "🐍 3 • Clang ${{ matrix.clang }} • C++${{ matrix.std }} • x64${{ matrix.cxx_flags && ' • cxx_flags' || '' }}" - container: "silkeh/clang:${{ matrix.clang }}${{ matrix.container_suffix }}" + container: "${{ matrix.container }}" timeout-minutes: 90 steps: - uses: actions/checkout@v7 - - name: Add wget and python3 + - name: Use the pinned Debian snapshot for legacy Clang + if: matrix.use_bullseye_snapshot + run: | + # Clang 5 and 11 have no Bookworm images. Keep their Bullseye package + # set coherent after the end of Bullseye LTS by using its final snapshot. + rm -f /etc/apt/sources.list.d/* + printf '%s\n' \ + 'deb [check-valid-until=no] https://snapshot.debian.org/archive/debian/20260831T000000Z/ bullseye main' \ + 'deb [check-valid-until=no] https://snapshot.debian.org/archive/debian/20260831T000000Z/ bullseye-updates main' \ + 'deb [check-valid-until=no] https://snapshot.debian.org/archive/debian-security/20260831T000000Z/ bullseye-security main' \ + > /etc/apt/sources.list + + - name: Install Python 3 and test dependencies run: apt-get update && apt-get install -y python3-dev python3-numpy python3-pytest libeigen3-dev - name: Configure From 8fb1b4d911613acffbd7d7d984bb585077be20d8 Mon Sep 17 00:00:00 2001 From: "Ralf W. Grosse-Kunstleve" Date: Sat, 12 Sep 2026 11:34:51 -0700 Subject: [PATCH 2/5] ci: move supported compiler jobs to Bookworm --- .github/workflows/ci.yml | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f8e6ebad14..9a4209f891 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -280,7 +280,7 @@ jobs: use_bullseye_snapshot: true - clang: 16 std: 20 - container: "silkeh/clang:16-bullseye" + container: "silkeh/clang:16-bookworm" - clang: 18 std: 20 cxx_flags: "-Werror -Wall -Wextra -Wwrite-strings -Wunreachable-code -Wpointer-arith -Wredundant-decls -Wunused-template" @@ -474,12 +474,19 @@ jobs: fail-fast: false matrix: include: - - { gcc: 9, std: 20 } - - { gcc: 10, std: 17 } - - { gcc: 13, std: 20, cxx_flags: "-Wall -Wextra -Wwrite-strings -Wunreachable-code -Wpointer-arith -Wredundant-decls" } + - gcc: 9 + std: 20 + container: "gcc:9-bookworm" + - gcc: 10 + std: 17 + container: "gcc:10-bookworm" + - gcc: 13 + std: 20 + container: "gcc:13" + cxx_flags: "-Wall -Wextra -Wwrite-strings -Wunreachable-code -Wpointer-arith -Wredundant-decls" name: "🐍 3 • GCC ${{ matrix.gcc }} • C++${{ matrix.std }} • x64${{ matrix.cxx_flags && ' • cxx_flags' || '' }}" - container: "gcc:${{ matrix.gcc }}" + container: "${{ matrix.container }}" timeout-minutes: 90 steps: From 3286eec1ed76bb24672e0849ad988367eaa0d934 Mon Sep 17 00:00:00 2001 From: "Ralf W. Grosse-Kunstleve" Date: Sat, 12 Sep 2026 11:35:11 -0700 Subject: [PATCH 3/5] ci: move x86 install job to Bookworm --- .github/workflows/ci.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9a4209f891..ba239ffd43 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -705,9 +705,9 @@ jobs: # This tests an "install" with the CMake tools install-classic: if: github.event.pull_request.draft == false - name: "🐍 3.9 • Debian • x86 • Install" + name: "🐍 3.11 • Debian • x86 • Install" runs-on: ubuntu-latest - container: i386/debian:bullseye + container: i386/debian:bookworm timeout-minutes: 90 steps: @@ -717,8 +717,7 @@ jobs: - name: Install requirements run: | apt-get update - apt-get install -y git make cmake g++ libeigen3-dev python3-dev python3-pip - pip3 install "pytest==6.*" + apt-get install -y git make cmake g++ libeigen3-dev python3-dev python3-pytest - name: Configure for install run: > From cc8d1899cfbdaf5f1e497f8fcb4e4bbc419fd6d7 Mon Sep 17 00:00:00 2001 From: "Ralf W. Grosse-Kunstleve" Date: Sat, 12 Sep 2026 12:03:04 -0700 Subject: [PATCH 4/5] ci: keep legacy GCC jobs on pinned Bullseye --- .github/workflows/ci.yml | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ba239ffd43..5d3b90ff6b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -476,10 +476,12 @@ jobs: include: - gcc: 9 std: 20 - container: "gcc:9-bookworm" + container: "gcc:9-bullseye@sha256:a9aba821155db99d0800920f27bf3a94ead6f9dedf330a2e2ce38da73f5370e3" + use_bullseye_snapshot: true - gcc: 10 std: 17 - container: "gcc:10-bookworm" + container: "gcc:10-bullseye@sha256:19b31d0b2b263047b173e4e253d91f199d99c082973f13604d2913252c13309e" + use_bullseye_snapshot: true - gcc: 13 std: 20 container: "gcc:13" @@ -492,6 +494,18 @@ jobs: steps: - uses: actions/checkout@v7 + - name: Use the pinned Debian snapshot for legacy GCC + if: matrix.use_bullseye_snapshot + run: | + # The GCC 9 and 10 Bookworm images cannot run Bookworm's apt with + # their older libstdc++. Keep the coherent Bullseye userspace instead. + rm -f /etc/apt/sources.list.d/* + printf '%s\n' \ + 'deb [check-valid-until=no] https://snapshot.debian.org/archive/debian/20260831T000000Z/ bullseye main' \ + 'deb [check-valid-until=no] https://snapshot.debian.org/archive/debian/20260831T000000Z/ bullseye-updates main' \ + 'deb [check-valid-until=no] https://snapshot.debian.org/archive/debian-security/20260831T000000Z/ bullseye-security main' \ + > /etc/apt/sources.list + - name: Add Python 3 run: apt-get update; apt-get install -y python3-dev python3-numpy python3-pytest python3-pip libeigen3-dev From 4cdaf9db4b9066df365cb8f22c7953683b0316a4 Mon Sep 17 00:00:00 2001 From: "Ralf W. Grosse-Kunstleve" Date: Sat, 12 Sep 2026 12:15:06 -0700 Subject: [PATCH 5/5] ci: link Bullseye snapshot steps to PR 6175 --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5d3b90ff6b..155dbd1f45 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -293,7 +293,7 @@ jobs: steps: - uses: actions/checkout@v7 - - name: Use the pinned Debian snapshot for legacy Clang + - name: Use the pinned Debian snapshot for legacy Clang — see PR 6175 if: matrix.use_bullseye_snapshot run: | # Clang 5 and 11 have no Bookworm images. Keep their Bullseye package @@ -494,7 +494,7 @@ jobs: steps: - uses: actions/checkout@v7 - - name: Use the pinned Debian snapshot for legacy GCC + - name: Use the pinned Debian snapshot for legacy GCC — see PR 6175 if: matrix.use_bullseye_snapshot run: | # The GCC 9 and 10 Bookworm images cannot run Bookworm's apt with