Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 26 additions & 34 deletions .github/workflows/fromsource_ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -97,38 +106,32 @@ 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
tags: [12.5.0, 12]
- 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
Expand Down Expand Up @@ -189,35 +192,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_p20260212
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]
- 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
Expand Down Expand Up @@ -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}"
Expand Down
58 changes: 28 additions & 30 deletions .github/workflows/testing_ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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]
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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]
Expand Down
6 changes: 3 additions & 3 deletions Dockerfile.fromsource
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down
16 changes: 8 additions & 8 deletions Dockerfile.test
Original file line number Diff line number Diff line change
Expand Up @@ -9,18 +9,18 @@ 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 ;;
aarch64) GENTOO_ARCH=arm64; GCC_TRIPLET=aarch64-unknown-linux-gnu ;;
*) 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
Expand All @@ -29,20 +29,20 @@ 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
echo ">llvm-core/llvm-common-${compiler_version%%-r*}-r9999" >> /etc/portage/package.mask/llvm
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
Expand Down
11 changes: 6 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
Loading