11# syntax=docker/dockerfile:1
22
3- FROM ubuntu:24.04@sha256:c35e29c9450151419d9448b0fd75374fec4fff364a27f176fb458d472dfc9e54 AS extractor
4-
5- ARG BATS_CORE_VERSION=1.12.0
6- ARG BATS_SUPPORT_VERSION=0.3.0
7- ARG BATS_ASSERT_VERSION=2.1.0
8-
9- ADD --checksum=sha256:e36b020436228262731e3319ed013d84fcd7c4bd97a1b34dee33d170e9ae6bab \
10- https://github.com/bats-core/bats-core/archive/refs/tags/v${BATS_CORE_VERSION}.tar.gz /bats-core.tar.gz
11- ADD --checksum=sha256:7815237aafeb42ddcc1b8c698fc5808026d33317d8701d5ec2396e9634e2918f \
12- https://github.com/bats-core/bats-support/archive/refs/tags/v${BATS_SUPPORT_VERSION}.tar.gz /bats-support.tar.gz
13- ADD --checksum=sha256:98ca3b685f8b8993e48ec057565e6e2abcc541034ed5b0e81f191505682037fd \
14- https://github.com/bats-core/bats-assert/archive/refs/tags/v2.1.0.tar.gz /bats-assert.tar.gz
15-
16- RUN tar xzf /bats-core.tar.gz && mv bats-core-*/ bats-core \
17- && tar xzf /bats-support.tar.gz && mv bats-support-*/ bats-support \
18- && tar xzf /bats-assert.tar.gz && mv bats-assert-*/ bats-assert
19-
20- FROM ubuntu:24.04@sha256:c35e29c9450151419d9448b0fd75374fec4fff364a27f176fb458d472dfc9e54
3+ ARG BASE_IMAGE=ghcr.io/philips-software/amp-devcontainer-base:edge
4+ FROM ${BASE_IMAGE}
215
226ARG CARGO_BINSTALL_VERSION=1.15.11
237ARG RUST_VERSION=1.91.1
@@ -30,40 +14,25 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"]
3014
3115# Install the base system with all tool dependencies
3216# hadolint ignore=DL3008
33- RUN --mount=type=bind,source=.devcontainer/rust/apt-requirements-base .json,target=/tmp/apt-requirements-base .json \
17+ RUN --mount=type=bind,source=.devcontainer/rust/apt-requirements.json,target=/tmp/apt-requirements.json \
3418 --mount=type=cache,target=/var/cache/apt,sharing=locked \
3519 --mount=type=cache,target=/var/lib/apt,sharing=locked \
3620 --mount=type=cache,target=/var/log,sharing=locked \
37- apt-get update && apt-get install -y --no-install-recommends jq \
38- && jq -r 'to_entries | .[] | .key + "=" + .value' /tmp/apt-requirements-base.json | xargs apt-get install -y --no-install-recommends
39-
40- # Include the Cisco Umbrella PKI Root
41- RUN wget -qO /usr/local/share/ca-certificates/Cisco_Umbrella_Root_CA.crt https://www.cisco.com/security/pki/certs/ciscoumbrellaroot.pem \
42- && update-ca-certificates
21+ apt-get update \
22+ && jq -r 'to_entries | .[] | .key + "=" + .value' /tmp/apt-requirements.json | xargs apt-get install -y --no-install-recommends
4323
4424# Install rust
4525ENV BINSTALL_DISABLE_TELEMETRY=true \
4626 CARGO_HOME=/usr/local/cargo \
4727 RUSTUP_HOME=/usr/local/rustup \
4828 PATH=/usr/local/cargo/bin:"$PATH"
29+
4930RUN rustup set profile minimal \
5031 && rustup default ${RUST_VERSION} \
5132 && rustup component add clippy llvm-tools rustfmt \
5233 && rustup target add thumbv7em-none-eabi \
5334 && rustup target add thumbv7em-none-eabihf
5435
55- # Install bats
56- RUN --mount=from=extractor,target=/src \
57- bash /src/bats-core/install.sh /usr/local \
58- && cp -r /src/bats-support /usr/local/bats-support \
59- && cp -r /src/bats-assert /usr/local/bats-assert
60-
61- # Update all tool alternatives to the correct version
62- # and patch root's bashrc to include bash-completion
63- RUN --mount=type=cache,target=/var/log,sharing=locked \
64- update-alternatives --install /usr/bin/cc cc /usr/bin/gcc-14 20 \
65- && cp /etc/skel/.bashrc /root/.bashrc
66-
6736# Install additional rust tools
6837RUN wget -qO - "https://github.com/cargo-bins/cargo-binstall/releases/download/v${CARGO_BINSTALL_VERSION}/cargo-binstall-$(uname -m)-unknown-linux-gnu.tgz" | tar xz -C "/usr/bin" \
6938 && cargo-binstall -y --locked cargo-binutils@0.3.6 cargo-mutants@25.3.1 flip-link@0.1.12 probe-rs-tools@0.30.0
0 commit comments