diff --git a/.github/workflows/fromsource_ci.yml b/.github/workflows/fromsource_ci.yml index ab8e0f0..5fd650a 100644 --- a/.github/workflows/fromsource_ci.yml +++ b/.github/workflows/fromsource_ci.yml @@ -35,17 +35,26 @@ jobs: matrix: compilers: - kind: clang - compiler-version: 23.0.0_pre20260512 + compiler-version: 24.0.0_pre20260725 tags: [trunk] - kind: clang - compiler-version: 22.1.6 - tags: [22.1.6, 22, latest] + compiler-version: 23.1.0 + tags: [23.1.0, 23, latest] - kind: gcc compiler-version: 17.0.9999 tags: [trunk] - kind: gcc - compiler-version: 16.1.0 - tags: [16.1.0, 16, latest] + compiler-version: 16.2.0 + tags: [16.2.0, 16, latest] + - kind: gcc + compiler-version: 13.4.1_p20260603 + tags: [13.4.1, 13] + - kind: gcc + compiler-version: 12.5.0 + tags: [12.5.0, 12] + - kind: gcc + compiler-version: 11.5.0 + tags: [11.5.0, 11] name: "${{ matrix.compilers.kind }}-${{ matrix.compilers.compiler-version }} (amd64)" steps: - name: Checkout repository @@ -97,28 +106,25 @@ jobs: path: /tmp/digest.txt retention-days: 1 - # arm64 binpkgs are not available for GCC 11/12/13 or Clang 17/18/19, so those - # are built from source here. Clang trunk is also built from source on arm64. - # Clang 17/18 and trunk arm64 are currently broken in Gentoo and omitted until fixed. build-arm64: runs-on: ubuntu-24.04-arm env: - BASE_IMAGE: gentoo/stage3:arm64-llvm-openrc + BASE_IMAGE: gentoo/stage3:arm64-openrc strategy: fail-fast: false matrix: compilers: - kind: clang - compiler-version: 22.1.6 - tags: [22.1.6, 22, latest] + compiler-version: 23.1.0 + tags: [23.1.0, 23, latest] - kind: gcc compiler-version: 17.0.9999 tags: [trunk] - kind: gcc - compiler-version: 16.1.0 - tags: [16.1.0, 16, latest] + compiler-version: 16.2.0 + tags: [16.2.0, 16, latest] - kind: gcc - compiler-version: 13.4.1_p20260212 + compiler-version: 13.4.1_p20260603 tags: [13.4.1, 13] - kind: gcc compiler-version: 12.5.0 @@ -126,9 +132,6 @@ jobs: - kind: gcc compiler-version: 11.5.0 tags: [11.5.0, 11] - - kind: clang - compiler-version: 19.1.7-r1 - tags: [19.1.7, 19] name: "${{ matrix.compilers.kind }}-${{ matrix.compilers.compiler-version }} (arm64)" steps: - name: Checkout repository @@ -189,19 +192,19 @@ jobs: matrix: compilers: - kind: clang - compiler-version: 23.0.0_pre20260512 + compiler-version: 24.0.0_pre20260725 tags: [trunk] - kind: clang - compiler-version: 22.1.6 - tags: [22.1.6, 22, latest] + compiler-version: 23.1.0 + tags: [23.1.0, 23, latest] - kind: gcc compiler-version: 17.0.9999 tags: [trunk] - kind: gcc - compiler-version: 16.1.0 - tags: [16.1.0, 16, latest] + compiler-version: 16.2.0 + tags: [16.2.0, 16, latest] - kind: gcc - compiler-version: 13.4.1_p20260212 + compiler-version: 13.4.1_p20260603 tags: [13.4.1, 13] - kind: gcc compiler-version: 12.5.0 @@ -209,15 +212,6 @@ jobs: - kind: gcc compiler-version: 11.5.0 tags: [11.5.0, 11] - - kind: clang - compiler-version: 19.1.7-r1 - tags: [19.1.7, 19] - - kind: clang - compiler-version: 18.1.8-r7 - tags: [18.1.8, 18] - - kind: clang - compiler-version: 17.0.6-r1 - tags: [17.0.6, 17] name: "merge-${{ matrix.compilers.kind }}-${{ matrix.compilers.compiler-version }}" steps: - name: Log in to the Container registry @@ -255,8 +249,6 @@ jobs: if [ -f /tmp/digests/amd64/digest.txt ]; then digests+=" ${image_name}@$(cat /tmp/digests/amd64/digest.txt)" else - # GCC 11/12/13 and Clang 17/18/19 have no amd64 fromsource build; - # fetch the amd64 digest that testing_ci.yml already published. amd64_digest=$(docker manifest inspect "${image_name}:${first_tag}" 2>/dev/null \ | jq -r '.manifests[]? | select(.platform.architecture == "amd64") | .digest' || true) [ -n "${amd64_digest}" ] && digests+=" ${image_name}@${amd64_digest}" diff --git a/.github/workflows/testing_ci.yml b/.github/workflows/testing_ci.yml index 8d27d93..84cd2e3 100644 --- a/.github/workflows/testing_ci.yml +++ b/.github/workflows/testing_ci.yml @@ -33,20 +33,14 @@ jobs: matrix: compilers: - kind: gcc - compiler-version: 15.2.1_p20260214 - tags: [15.2.1, 15] + compiler-version: 15.3.0 + tags: [15.3.0, 15] - kind: gcc - compiler-version: 14.3.1_p20250801 + compiler-version: 14.3.1_p20260604 tags: [14.3.1, 14] - - kind: gcc - compiler-version: 13.4.1_p20260212 - tags: [13.4.1, 13] - - kind: gcc - compiler-version: 12.5.0 - tags: [12.5.0, 12] - - kind: gcc - compiler-version: 11.5.0 - tags: [11.5.0, 11] + - kind: clang + compiler-version: 22.1.8 + tags: [22.1.8, 22] - kind: clang compiler-version: 21.1.8 tags: [21.1.8, 21] @@ -113,28 +107,38 @@ jobs: path: /tmp/digest.txt retention-days: 1 - # arm64 binpkgs are only available for GCC 14/15 and Clang 20/21. - # The remaining compilers are built from source in fromsource_ci.yml. build-arm64: runs-on: ubuntu-24.04-arm env: - BASE_IMAGE: gentoo/stage3:arm64-llvm-openrc + BASE_IMAGE: gentoo/stage3:arm64-openrc strategy: fail-fast: false matrix: compilers: - kind: gcc - compiler-version: 15.2.1_p20260214 - tags: [15.2.1, 15] + compiler-version: 15.3.0 + tags: [15.3.0, 15] - kind: gcc - compiler-version: 14.3.1_p20250801 + compiler-version: 14.3.1_p20260604 tags: [14.3.1, 14] + - kind: clang + compiler-version: 22.1.8 + tags: [22.1.8, 22] - kind: clang compiler-version: 21.1.8 tags: [21.1.8, 21] - kind: clang compiler-version: 20.1.8 tags: [20.1.8, 20] + - kind: clang + compiler-version: 19.1.7-r1 + tags: [19.1.7, 19] + - kind: clang + compiler-version: 18.1.8-r7 + tags: [18.1.8, 18] + - kind: clang + compiler-version: 17.0.6-r1 + tags: [17.0.6, 17] name: "${{ matrix.compilers.kind }}-${{ matrix.compilers.compiler-version }} (arm64)" steps: - name: Checkout repository @@ -195,20 +199,14 @@ jobs: matrix: compilers: - kind: gcc - compiler-version: 15.2.1_p20260214 - tags: [15.2.1, 15] + compiler-version: 15.3.0 + tags: [15.3.0, 15] - kind: gcc - compiler-version: 14.3.1_p20250801 + compiler-version: 14.3.1_p20260604 tags: [14.3.1, 14] - - kind: gcc - compiler-version: 13.4.1_p20260212 - tags: [13.4.1, 13] - - kind: gcc - compiler-version: 12.5.0 - tags: [12.5.0, 12] - - kind: gcc - compiler-version: 11.5.0 - tags: [11.5.0, 11] + - kind: clang + compiler-version: 22.1.8 + tags: [22.1.8, 22] - kind: clang compiler-version: 21.1.8 tags: [21.1.8, 21] diff --git a/Dockerfile.fromsource b/Dockerfile.fromsource index 968aa95..c5627c5 100644 --- a/Dockerfile.fromsource +++ b/Dockerfile.fromsource @@ -9,7 +9,7 @@ RUN /bin/bash <<"EOF" set -eux echo 'BINPKG_FORMAT="gpkg"' >> /etc/portage/make.conf echo 'FEATURES="getbinpkg"' >> /etc/portage/make.conf - emerge-webrsync + emerge --sync getuto emerge dev-vcs/git mkdir -p /etc/portage/repos.conf @@ -32,10 +32,10 @@ EOF2 emerge --sync fi echo "ACCEPT_KEYWORDS=\"~${GENTOO_ARCH}\"" >> /etc/portage/make.conf - echo "=dev-build/cmake-4.3.3" >> /etc/portage/package.unmask + echo "=dev-build/cmake-4.3.4" >> /etc/portage/package.unmask mkdir -p /etc/portage/package.accept_keywords echo "dev-util/gcovr **" >> /etc/portage/package.accept_keywords/gcovr - emerge =dev-build/cmake-4.3.3 + emerge =dev-build/cmake-4.3.4 emerge dev-build/ninja emerge dev-util/gcovr emerge app-misc/jq diff --git a/Dockerfile.test b/Dockerfile.test index 3e9888c..8a3cb51 100644 --- a/Dockerfile.test +++ b/Dockerfile.test @@ -9,7 +9,7 @@ RUN /bin/bash <<"EOF" set -eux echo 'BINPKG_FORMAT="gpkg"' >> /etc/portage/make.conf echo 'FEATURES="getbinpkg"' >> /etc/portage/make.conf - emerge-webrsync + emerge --sync getuto case $(uname -m) in x86_64) GENTOO_ARCH=amd64; GCC_TRIPLET=x86_64-pc-linux-gnu ;; @@ -17,10 +17,10 @@ RUN /bin/bash <<"EOF" *) echo "Unsupported arch: $(uname -m)"; exit 1 ;; esac echo "ACCEPT_KEYWORDS=\"~${GENTOO_ARCH}\"" >> /etc/portage/make.conf - echo "=dev-build/cmake-4.3.3" >> /etc/portage/package.unmask + echo "=dev-build/cmake-4.3.4" >> /etc/portage/package.unmask mkdir -p /etc/portage/package.accept_keywords echo "dev-util/gcovr **" >> /etc/portage/package.accept_keywords/gcovr - emerge =dev-build/cmake-4.3.3 + emerge =dev-build/cmake-4.3.4 emerge dev-build/ninja emerge dev-vcs/git emerge dev-util/gcovr @@ -29,7 +29,7 @@ RUN /bin/bash <<"EOF" use_params='' case ${compiler_version%%.*} in 17) - emerge =dev-lang/python-3.12.12 + emerge dev-lang/python:3.12 use_params=python_single_target_python3_12 ;; esac echo ">llvm-runtimes/openmp-${compiler_version%%-r*}-r9999" >> /etc/portage/package.mask/llvm @@ -37,12 +37,12 @@ RUN /bin/bash <<"EOF" echo ">llvm-runtimes/compiler-rt-${compiler_version%%-r*}-r9999" >> /etc/portage/package.mask/llvm echo ">llvm-runtimes/compiler-rt-sanitizers-${compiler_version%%-r*}-r9999" >> /etc/portage/package.mask/llvm echo ">llvm-core/llvm-${compiler_version%%-r*}-r9999" >> /etc/portage/package.mask/llvm - if [[ $(uname -m) == x86_64 ]] ; then - echo ">llvm-core/llvmgold-${compiler_version%%\.*}-r9999" >> /etc/portage/package.mask/llvm - fi + echo ">llvm-core/llvmgold-${compiler_version%%\.*}-r9999" >> /etc/portage/package.mask/llvm echo ">llvm-core/llvm-toolchain-symlinks-${compiler_version%%\.*}-r9999" >> /etc/portage/package.mask/llvm echo ">llvm-core/clang-common-${compiler_version%%-r*}-r9999" >> /etc/portage/package.mask/llvm - echo ">llvm-core/clang-runtime-${compiler_version%%-r*}-r9999" >> /etc/portage/package.mask/llvm + echo ">llvm-runtimes/clang-runtime-${compiler_version%%-r*}-r9999" >> /etc/portage/package.mask/llvm + echo ">llvm-runtimes/libcxx-${compiler_version%%-r*}-r9999" >> /etc/portage/package.mask/llvm + echo ">llvm-runtimes/libcxxabi-${compiler_version%%-r*}-r9999" >> /etc/portage/package.mask/llvm USE="libcxx $use_params" emerge =llvm-core/clang-${compiler_version} ln -s /usr/lib/llvm/${compiler_version%%.*}/bin/* /usr/local/bin/ elif [[ ${compiler_kind} == gcc ]] ; then diff --git a/README.md b/README.md index 9dc124f..2d6618d 100644 --- a/README.md +++ b/README.md @@ -14,23 +14,24 @@ This project builds the following images intended for use by CI for Beman librar - `ghcr.io/bemanproject/infra-containers-gcc` - `trunk` (rebuilt weekly) - - `latest`/`16`/`16.1.0` - - `15`/`15.2.1` + - `latest`/`16`/`16.2.0` + - `15`/`15.3.0` - `14`/`14.3.1` - `13`/`13.4.1` - `12`/`12.5.0` - `11`/`11.5.0` - `ghcr.io/bemanproject/infra-containers-clang` - `trunk` (rebuilt weekly) - - `latest`/`22`/`22.1.6` + - `latest`/`23`/`23.1.0` + - `22`/`22.1.8` - `21`/`21.1.8` - `20`/`20.1.8` - `19`/`19.1.7` - `18`/`18.1.8` - `17`/`17.0.6` -Along with the compiler version specified in the tag, these images contain CMake 4.2.1 and -recent versions of ninja, git, and jq. +Along with the compiler version specified in the tag, these images contain CMake 4.3.4, +vcpkg (at `VCPKG_ROOT`), and recent versions of ninja, git, gcovr, and jq. ## Implementation Details