@@ -32,6 +32,11 @@ ADD --checksum=sha256:b85cd1e0c94f249338b02a6e54b380154a5af6b5dd754121b15722125a
3232# trivy:ignore:AVD-DS-0001
3333FROM downloader-${TARGETARCH} AS downloader
3434
35+ ADD --checksum=sha256:ce6eee4130298f79b0e0f09a89f93c1bc711cd68e7e3182d37c8e96c5227e2f0 \
36+ https://apt.llvm.org/llvm-snapshot.gpg.key /llvm.gpg.key
37+ ADD --checksum=sha256:db2938ce5fd422f2db7a07508452772c945135d99274004c462190c323fefcf1 \
38+ https://dl.cloudsmith.io/public/mull-project/mull-stable/gpg.41DB35380DE6BD6F.key /mull.gpg.key
39+
3540# Extractor stage using target architecture specific downloader
3641FROM ${BASE_IMAGE} AS extractor
3742
@@ -41,8 +46,11 @@ ARG XWIN_VERSION
4146WORKDIR /
4247
4348RUN --mount=from=downloader,target=/dl <<EOF
49+ set -e
4450 tar xJf /dl/ccache.tar.xz --strip-components=1 "ccache-${CCACHE_VERSION}-linux-$(uname -m)/ccache"
4551 tar xzf /dl/xwin.tar.gz --strip-components=1 "xwin-${XWIN_VERSION}-$(uname -m)-unknown-linux-musl/xwin"
52+ cp /dl/llvm.gpg.key /llvm.gpg.key
53+ cp /dl/mull.gpg.key /mull.gpg.key
4654EOF
4755
4856# Final development container image
@@ -70,16 +78,18 @@ ENV CCACHE_DIR=/cache/.ccache \
7078# Install the base system with all tool dependencies
7179# hadolint ignore=DL3008
7280RUN --mount=type=bind,source=.devcontainer/cpp/apt-requirements-base.json,target=/tmp/apt-requirements-base.json \
81+ --mount=type=bind,source=.devcontainer/cpp/apt-requirements-clang.json,target=/tmp/apt-requirements-clang.json \
7382 --mount=type=bind,source=.devcontainer/cpp/requirements.txt,target=/tmp/requirements.txt \
7483 --mount=type=cache,target=/cache,sharing=locked \
7584 --mount=type=cache,target=/var/cache/apt,sharing=locked \
7685 --mount=type=cache,target=/var/lib/apt,sharing=locked \
7786 --mount=type=cache,target=/var/log,sharing=locked \
7887 --mount=from=extractor,target=/src <<EOF
7988
89+ set -e
90+
8091 # Install the base system with all tool dependencies
81- apt-get update && \
82- jq -r 'to_entries | .[] | .key + "=" + .value' /tmp/apt-requirements-base.json | \
92+ apt-get update && jq -r 'to_entries | .[] | .key + "=" + .value' /tmp/apt-requirements-base.json | \
8393 xargs apt-get install -y --no-install-recommends
8494
8595 # Install some tools via pip to get more recent versions, clean up afterwards
@@ -90,21 +100,18 @@ RUN --mount=type=bind,source=.devcontainer/cpp/apt-requirements-base.json,target
90100 # Install ccache and xwin
91101 cp /src/ccache /usr/local/bin/ccache
92102 cp /src/xwin /usr/local/bin/xwin
93- EOF
94103
95- # Install clang toolchain and mull mutation testing framework
96- RUN --mount=type=bind,source=.devcontainer/cpp/apt-requirements-clang.json,target=/tmp/apt-requirements-clang.json \
97- --mount=type=cache,target=/var/cache/apt,sharing=locked \
98- --mount=type=cache,target=/var/lib/apt,sharing=locked \
99- --mount=type=cache,target=/var/log,sharing=locked \
100- wget --no-hsts -qO - https://apt.llvm.org/llvm-snapshot.gpg.key | gpg --dearmor -o /usr/share/keyrings/llvm-snapshot-keyring.gpg \
101- && wget --no-hsts -qO - https://dl.cloudsmith.io/public/mull-project/mull-stable/gpg.41DB35380DE6BD6F.key | gpg --dearmor -o /usr/share/keyrings/mull-project-mull-stable-archive-keyring.gpg \
102- && UBUNTU_CODENAME=$(grep '^UBUNTU_CODENAME=' /etc/os-release | cut -d= -f2) \
103- && echo "deb [signed-by=/usr/share/keyrings/llvm-snapshot-keyring.gpg] http://apt.llvm.org/${UBUNTU_CODENAME}/ llvm-toolchain-${UBUNTU_CODENAME}-${CLANG_VERSION} main" | tee /etc/apt/sources.list.d/llvm.list > /dev/null \
104- && echo "deb [signed-by=/usr/share/keyrings/mull-project-mull-stable-archive-keyring.gpg] https://dl.cloudsmith.io/public/mull-project/mull-stable/deb/ubuntu ${UBUNTU_CODENAME} main" | tee /etc/apt/sources.list.d/mull-project-mull-stable.list > /dev/null \
105- && echo -e 'Package: *\n Pin: origin "apt.llvm.org"\n Pin-Priority: 1000' > /etc/apt/preferences \
106- && apt-get update \
107- && jq -r 'to_entries | .[] | .key + "=" + .value' /tmp/apt-requirements-clang.json | xargs apt-get install -y --no-install-recommends
104+ # Install clang toolchain and mull mutation testing framework
105+ cat /src/llvm.gpg.key | gpg --dearmor -o /usr/share/keyrings/llvm-snapshot-keyring.gpg
106+ cat /src/mull.gpg.key | gpg --dearmor -o /usr/share/keyrings/mull-project-mull-stable-archive-keyring.gpg
107+
108+ UBUNTU_CODENAME=$(grep '^UBUNTU_CODENAME=' /etc/os-release | cut -d= -f2)
109+ echo "deb [signed-by=/usr/share/keyrings/llvm-snapshot-keyring.gpg] http://apt.llvm.org/${UBUNTU_CODENAME}/ llvm-toolchain-${UBUNTU_CODENAME}-${CLANG_VERSION} main" | tee /etc/apt/sources.list.d/llvm-snapshot.list > /dev/null
110+ echo "deb [signed-by=/usr/share/keyrings/mull-project-mull-stable-archive-keyring.gpg] https://dl.cloudsmith.io/public/mull-project/mull-stable/deb/ubuntu ${UBUNTU_CODENAME} main" | tee /etc/apt/sources.list.d/mull-project-mull-stable.list > /dev/null
111+ echo -e 'Package: *\n Pin: origin "apt.llvm.org"\n Pin-Priority: 1000' > /etc/apt/preferences
112+ apt-get update && jq -r 'to_entries | .[] | .key + "=" + .value' /tmp/apt-requirements-clang.json | \
113+ xargs apt-get install -y --no-install-recommends
114+ EOF
108115
109116# Install arm-gcc toolchain
110117RUN mkdir /opt/gcc-arm-none-eabi \
0 commit comments