@@ -4,7 +4,6 @@ ARG BATS_VERSION=1.10.0
44ARG CCACHE_VERSION=4.8.3
55ARG CLANG_VERSION=15
66ARG DOCKER_VERSION=24.0.6
7- ARG GCC_VERSION=10
87ARG MULL_VERSION=0.20.0
98ARG INCLUDE_WHAT_YOU_USE_VERSION=0.19
109ARG XWIN_VERSION=0.3.1
@@ -14,13 +13,11 @@ ARG DEBIAN_FRONTEND=noninteractive
1413SHELL ["/bin/bash" , "-o" , "pipefail" , "-c" ]
1514
1615# Install the base system with all tool dependencies
17- COPY .devcontainer/base/apt-requirements.json /tmp/apt-requirements-base.json
18- COPY .devcontainer/gcc-${GCC_VERSION}/apt-requirements.json /tmp/apt-requirements-gcc.json
16+ COPY .devcontainer/apt-requirements-base.json /tmp/apt-requirements-base.json
1917# hadolint ignore=DL3008
2018RUN apt-get update && apt-get install -y --no-install-recommends jq \
21- && jq -s '.[0] * .[1]' /tmp/apt-requirements-base.json /tmp/apt-requirements-gcc.json > /tmp/apt-requirements.json \
22- && jq -r 'to_entries | .[] | .key + "=" + .value' /tmp/apt-requirements.json | xargs apt-get install -y --no-install-recommends \
23- && rm /tmp/apt-requirements* \
19+ && jq -r 'to_entries | .[] | .key + "=" + .value' /tmp/apt-requirements-base.json | xargs apt-get install -y --no-install-recommends \
20+ && rm /tmp/apt-requirements-base.json \
2421 && rm -rf /var/lib/apt/lists/*
2522
2623# Include the Cisco Umbrella PKI Root
@@ -36,9 +33,11 @@ RUN python3 -m pip --no-cache-dir install \
3633ENV CMAKE_GENERATOR="Ninja"
3734
3835# Install clang toolchain
39- COPY .devcontainer/clang-${CLANG_VERSION}/apt-requirements.json /tmp/apt-requirements-clang.json
36+ COPY .devcontainer/apt-requirements-clang.json /tmp/apt-requirements-clang.json
37+ # hadolint ignore=SC1091
4038RUN wget -qO - https://apt.llvm.org/llvm-snapshot.gpg.key | gpg --dearmor -o /usr/share/keyrings/llvm-snapshot-keyring.gpg \
41- && echo "deb [signed-by=/usr/share/keyrings/llvm-snapshot-keyring.gpg] http://apt.llvm.org/$(lsb_release -cs)/ llvm-toolchain-$(lsb_release -cs)-${CLANG_VERSION} main" | tee /etc/apt/sources.list.d/llvm.list > /dev/null \
39+ && UBUNTU_CODENAME=$(. /etc/os-release; echo "${UBUNTU_CODENAME/*, /}" ) \
40+ && 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 \
4241 && apt-get update \
4342 && jq -r 'to_entries | .[] | .key + "=" + .value' /tmp/apt-requirements-clang.json | xargs apt-get install -y --no-install-recommends \
4443 && rm /tmp/apt-requirements* \
@@ -50,22 +49,26 @@ ENV PATH="$PATH:/usr/lib/llvm-${CLANG_VERSION}/bin"
5049RUN apt-get update && apt-get install -y --no-install-recommends libclang-${CLANG_VERSION}-dev llvm-${CLANG_VERSION}-dev libsqlite3-dev \
5150 && wget -qO - https://github.com/include-what-you-use/include-what-you-use/archive/refs/tags/${INCLUDE_WHAT_YOU_USE_VERSION}.tar.gz | tar xz -C /tmp \
5251 && CC=clang-${CLANG_VERSION} CXX=clang++-${CLANG_VERSION} cmake -S /tmp/include-what-you-use-${INCLUDE_WHAT_YOU_USE_VERSION} -B /tmp/include-what-you-use-${INCLUDE_WHAT_YOU_USE_VERSION}/build \
53- && cmake --build /tmp/include-what-you-use-${INCLUDE_WHAT_YOU_USE_VERSION}/build \
5452 && cmake --build /tmp/include-what-you-use-${INCLUDE_WHAT_YOU_USE_VERSION}/build --target install \
5553 && rm -rf /tmp/include-what-you-use-${INCLUDE_WHAT_YOU_USE_VERSION} \
5654 && git -C /tmp clone --recurse-submodules -b ${MULL_VERSION} https://github.com/mull-project/mull.git \
5755 && CC=clang-${CLANG_VERSION} CXX=clang++-${CLANG_VERSION} cmake -S /tmp/mull -B /tmp/mull/build \
58- && cmake --build /tmp/mull/build \
5956 && cmake --build /tmp/mull/build --target install \
6057 && rm -rf /tmp/mull \
6158 && apt-get purge -y libclang-${CLANG_VERSION}-dev llvm-${CLANG_VERSION}-dev libsqlite3-dev \
6259 && apt-get autoremove -y \
6360 && apt-get clean \
6461 && rm -rf /var/lib/apt/lists/*
6562
63+ # Install ccache from source for a recent version
64+ RUN wget -qO - https://github.com/ccache/ccache/archive/refs/tags/v${CCACHE_VERSION}.tar.gz | tar xz -C /tmp \
65+ && CC=clang-${CLANG_VERSION} CXX=clang++-${CLANG_VERSION} cmake -DCMAKE_BUILD_TYPE=Release -S /tmp/ccache-${CCACHE_VERSION} -B /tmp/ccache-${CCACHE_VERSION}/build \
66+ && cmake --build /tmp/ccache-${CCACHE_VERSION}/build --target install \
67+ && rm -rf /tmp/ccache-${CCACHE_VERSION}
68+
6669# Install arm-gcc toolchain
67- COPY .devcontainer/gcc-${GCC_VERSION}/install-arm-none-eabi.sh /tmp/install -arm-none-eabi.sh
68- RUN /tmp/install- arm-none-eabi.sh && rm /tmp/install -arm-none-eabi.sh
70+ RUN mkdir /opt/gcc -arm-none-eabi \
71+ && wget -qO - "https://developer.arm.com/-/media/Files/downloads/gnu/12.3.rel1/binrel/ arm-gnu-toolchain-12.3.rel1-$(uname -m)-arm- none-eabi.tar.xz" | tar --exclude= '*arm-none-eabi-gdb*' --exclude= 'share' --strip-components=1 -xJC /opt/gcc -arm-none-eabi
6972ENV PATH="$PATH:/opt/gcc-arm-none-eabi/bin"
7073
7174# Install docker-cli for Docker-from-Docker tools
@@ -85,16 +88,10 @@ RUN batstmp="$(mktemp -d /tmp/bats-core-${BATS_VERSION}.XXXX)" \
8588RUN wget -qO - "https://github.com/Jake-Shadle/xwin/releases/download/${XWIN_VERSION}/xwin-${XWIN_VERSION}-$(uname -m)-unknown-linux-musl.tar.gz" | tar -xzv -C /usr/local/bin --strip-components=1 "xwin-${XWIN_VERSION}-$(uname -m)-unknown-linux-musl/xwin"
8689
8790# Update all tool alternatives to the correct version
88- RUN update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++-${GCC_VERSION} 20 \
89- && update-alternatives --install /usr/bin/cc cc /usr/bin/gcc-${GCC_VERSION} 20 \
90- && update-alternatives --install /usr/bin/gcov gcov /usr/bin/gcov-${GCC_VERSION} 10 \
91+ RUN update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++-12 20 \
92+ && update-alternatives --install /usr/bin/cc cc /usr/bin/gcc-12 20 \
93+ && update-alternatives --install /usr/bin/gcov gcov /usr/bin/gcov-12 10 \
9194 && update-alternatives --install /usr/bin/iwyu iwyu /usr/local/bin/include-what-you-use 10 \
9295 && update-alternatives --install /usr/bin/mull-runner mull-runner /usr/local/bin/mull-runner-${CLANG_VERSION} 10 \
9396 && update-alternatives --install /usr/lib/mull-ir-frontend mull-ir-frontend /usr/local/lib/mull-ir-frontend-${CLANG_VERSION} 10 \
9497 && update-alternatives --install /usr/bin/python python /usr/bin/python3 10
95-
96- # Install ccache from source for a recent version
97- RUN wget -qO - https://github.com/ccache/ccache/archive/refs/tags/v${CCACHE_VERSION}.tar.gz | tar xz -C /tmp \
98- && cmake -DCMAKE_BUILD_TYPE=Release -S /tmp/ccache-${CCACHE_VERSION} -B /tmp/ccache-${CCACHE_VERSION}/build \
99- && cmake --build /tmp/ccache-${CCACHE_VERSION}/build --target install \
100- && rm -rf /tmp/ccache-${CCACHE_VERSION}
0 commit comments