22# hadolint global ignore=DL3006
33
44ARG BASE_IMAGE=ghcr.io/philips-software/amp-devcontainer-base:edge
5- ARG CCACHE_VERSION=4.12.2
6- ARG XWIN_VERSION=0.7.0
5+ # Public minisign key for verifying ccache releases,
6+ # taken from https://ccache.dev/minisign.pub
7+ ARG CCACHE_MINISIGN_PUBKEY=RWQX7yXbBedVfI4PNx6FLdFXu9GHUFsr28s4BVGxm4BeybtnX3P06saF
8+ ARG CCACHE_VERSION=4.13.1
9+ ARG XWIN_VERSION=0.8.0
710
811# Downloader stage for AMD64 architecture
912FROM scratch AS downloader-amd64
1013
1114ARG CCACHE_VERSION
1215ARG XWIN_VERSION
1316
14- ADD --checksum=sha256:630c34ec94d451b200f5b14a6a25580d6a45bc80c394b7e0b93e33556eee5d32 \
15- https://github.com/ccache/ccache/releases/download/v${CCACHE_VERSION}/ccache-${CCACHE_VERSION}-linux-x86_64.tar.xz /ccache.tar.xz
16- ADD --checksum=sha256:f1bffe5319728fca9cde5bb03fcb6c88cdf44922bd003fca8b4b9ce5b6f259d2 \
17+ ADD --checksum=sha256:dd9fc188e738add3c12509063bb082b05e77a9a71fa85a20e01230044aa410f1 \
18+ https://github.com/ccache/ccache/releases/download/v${CCACHE_VERSION}/ccache-${CCACHE_VERSION}-linux-x86_64-glibc.tar.xz /ccache.tar.xz
19+ ADD --checksum=sha256:fdf00b1eadebf437e898ca3c0c94fd3e8d03b9e2bbe4f3d74ac6df2fecbf0a74 \
20+ https://github.com/ccache/ccache/releases/download/v${CCACHE_VERSION}/ccache-${CCACHE_VERSION}-linux-x86_64-glibc.tar.xz.minisig /ccache.tar.xz.minisig
21+ ADD --checksum=sha256:8a354e12475dd154d0a2d3084eefd2c105f872ec8062965baaa7e9f2f76fe611 \
1722 https://github.com/Jake-Shadle/xwin/releases/download/${XWIN_VERSION}/xwin-${XWIN_VERSION}-x86_64-unknown-linux-musl.tar.gz /xwin.tar.gz
1823
1924# Downloader stage for ARM64 architecture
@@ -22,9 +27,11 @@ FROM scratch AS downloader-arm64
2227ARG CCACHE_VERSION
2328ARG XWIN_VERSION
2429
25- ADD --checksum=sha256:b01c270c245e41998ab777164aba085dbeb23ce515f4e2134a1fdddabf0bf6ad \
26- https://github.com/ccache/ccache/releases/download/v${CCACHE_VERSION}/ccache-${CCACHE_VERSION}-linux-aarch64.tar.xz /ccache.tar.xz
27- ADD --checksum=sha256:b85cd1e0c94f249338b02a6e54b380154a5af6b5dd754121b15722125a67cf9f \
30+ ADD --checksum=sha256:4cf4b05d9c381b3a60f1f10189f45ad9402bbc58979dbdc4901659c7f5e42dc8 \
31+ https://github.com/ccache/ccache/releases/download/v${CCACHE_VERSION}/ccache-${CCACHE_VERSION}-linux-aarch64-glibc.tar.xz /ccache.tar.xz
32+ ADD --checksum=sha256:24b50ebf8ce5ec9e5e56af298ddb17699a46f0d9bb035d7c824500270a5cde74 \
33+ https://github.com/ccache/ccache/releases/download/v${CCACHE_VERSION}/ccache-${CCACHE_VERSION}-linux-aarch64-glibc.tar.xz.minisig /ccache.tar.xz.minisig
34+ ADD --checksum=sha256:fe106caefbb316664d73fd03166c28c09e580bb2a3ad65b4d50c51c67368aeab \
2835 https://github.com/Jake-Shadle/xwin/releases/download/${XWIN_VERSION}/xwin-${XWIN_VERSION}-aarch64-unknown-linux-musl.tar.gz /xwin.tar.gz
2936
3037# Select downloader stage based on target architecture.
@@ -40,14 +47,20 @@ ADD --checksum=sha256:db2938ce5fd422f2db7a07508452772c945135d99274004c462190c323
4047# Extractor stage using target architecture specific downloader
4148FROM ${BASE_IMAGE} AS extractor
4249
50+ ARG CCACHE_MINISIGN_PUBKEY
4351ARG CCACHE_VERSION
4452ARG XWIN_VERSION
4553
4654SHELL ["/bin/bash" , "-Eeuo" , "pipefail" , "-c" ]
4755
4856WORKDIR /
4957
50- RUN --mount=from=downloader,target=/dl <<EOF
58+ # hadolint ignore=DL3008
59+ RUN --mount=from=downloader,target=/dl \
60+ --mount=type=cache,target=/var/cache/apt,sharing=locked \
61+ --mount=type=cache,target=/var/lib/apt,sharing=locked <<EOF
62+ apt-get update && apt-get install --no-install-recommends -y minisign
63+
5164 ARM_GNU_TOOLCHAIN_URL="https://developer.arm.com/-/media/Files/downloads/gnu/14.2.rel1/binrel/arm-gnu-toolchain-14.2.rel1-$(uname -m)-arm-none-eabi.tar.xz"
5265 ARM_GNU_TOOLCHAIN_TAR="/tmp/arm-gnu-toolchain.tar.xz"
5366
@@ -60,8 +73,10 @@ RUN --mount=from=downloader,target=/dl <<EOF
6073 wget --no-hsts -qO "${ARM_GNU_TOOLCHAIN_TAR}" "${ARM_GNU_TOOLCHAIN_URL}"
6174 echo "${ARM_GNU_TOOLCHAIN_SHA256} ${ARM_GNU_TOOLCHAIN_TAR}" | sha256sum -c -
6275
76+ minisign -P "${CCACHE_MINISIGN_PUBKEY}" -Vm /dl/ccache.tar.xz
77+
6378 tar xJf "${ARM_GNU_TOOLCHAIN_TAR}" --exclude="*arm-none-eabi-gdb*" --exclude="share"
64- tar xJf /dl/ccache.tar.xz --strip-components=1 "ccache-${CCACHE_VERSION}-linux-$(uname -m)/ccache"
79+ tar xJf /dl/ccache.tar.xz --strip-components=1 "ccache-${CCACHE_VERSION}-linux-$(uname -m)-glibc /ccache"
6580 tar xzf /dl/xwin.tar.gz --strip-components=1 "xwin-${XWIN_VERSION}-$(uname -m)-unknown-linux-musl/xwin"
6681 cp /dl/llvm.gpg.key /llvm.gpg.key
6782 cp /dl/mull.gpg.key /mull.gpg.key
@@ -90,7 +105,6 @@ ENV CCACHE_DIR=/cache/.ccache \
90105 PYTHONPYCACHEPREFIX=/cache/.python
91106
92107# Install the base system with all tool dependencies
93- # hadolint ignore=DL3008
94108RUN --mount=type=bind,source=.devcontainer/cpp/apt-requirements-base.json,target=/tmp/apt-requirements-base.json \
95109 --mount=type=bind,source=.devcontainer/cpp/apt-requirements-clang.json,target=/tmp/apt-requirements-clang.json \
96110 --mount=type=bind,source=.devcontainer/cpp/requirements.txt,target=/tmp/requirements.txt \
0 commit comments