@@ -5,7 +5,6 @@ ARG CCACHE_VERSION=4.10.1
55ARG CLANG_VERSION=18
66ARG CPM_VERSION=0.40.2
77ARG DOCKER_VERSION=27.3.1
8- ARG MULL_VERSION=0.24.0
98ARG INCLUDE_WHAT_YOU_USE_VERSION=0.22
109ARG XWIN_VERSION=0.6.5
1110
@@ -37,12 +36,14 @@ ENV CMAKE_GENERATOR="Ninja"
3736ENV CMAKE_EXPORT_COMPILE_COMMANDS="On"
3837ENV CCACHE_DIR=/root/.ccache
3938
40- # Install clang toolchain
39+ # Install clang toolchain and mull mutation testing framework
4140COPY .devcontainer/cpp/apt-requirements-clang.json /tmp/apt-requirements-clang.json
4241# hadolint ignore=SC1091
4342RUN wget -qO - https://apt.llvm.org/llvm-snapshot.gpg.key | gpg --dearmor -o /usr/share/keyrings/llvm-snapshot-keyring.gpg \
43+ && wget -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 \
4444 && UBUNTU_CODENAME=$(. /etc/os-release; echo "${UBUNTU_CODENAME/*, /}" ) \
4545 && 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 \
46+ && 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 \
4647 && echo -e 'Package: *\n Pin: origin "apt.llvm.org"\n Pin-Priority: 1000' > /etc/apt/preferences \
4748 && apt-get update \
4849 && jq -r 'to_entries | .[] | .key + "=" + .value' /tmp/apt-requirements-clang.json | xargs apt-get install -y --no-install-recommends \
@@ -71,25 +72,21 @@ RUN batstmp="$(mktemp -d /tmp/bats-core-${BATS_VERSION}.XXXX)" \
7172# Install xwin
7273RUN 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"
7374
74- # Compile and install additional clang tools; often necessary as a binary arm64 build are lacking, or packages are out-of-date
75+ # Compile and install additional clang tools; often necessary as binary arm64 builds are lacking, or packages are out-of-date
7576# Install ccache from source for a recent version
7677RUN wget -qO - https://github.com/ccache/ccache/archive/refs/tags/v${CCACHE_VERSION}.tar.gz | tar xz -C /tmp \
7778 && CC=clang CXX=clang++ cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_TESTING=Off -DENABLE_DOCUMENTATION=Off -S /tmp/ccache-${CCACHE_VERSION} -B /tmp/ccache-${CCACHE_VERSION}/build \
7879 && cmake --build /tmp/ccache-${CCACHE_VERSION}/build --target install \
7980 && rm -rf /tmp/ccache-${CCACHE_VERSION}
8081
81- # Install include-what-you-use (iwyu) and Mull from source
82+ # Install include-what-you-use (iwyu) from source
8283# hadolint ignore=DL3008
8384RUN --mount=type=cache,target=/root/.ccache,sharing=locked \
84- apt-get update && apt-get install -y --no-install-recommends libclang-${CLANG_VERSION}-dev llvm-${CLANG_VERSION}-dev libsqlite3-dev \
85+ apt-get update && apt-get install -y --no-install-recommends libclang-${CLANG_VERSION}-dev llvm-${CLANG_VERSION}-dev \
8586 && 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 \
8687 && CC=clang CXX=clang++ cmake -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -S /tmp/include-what-you-use-${INCLUDE_WHAT_YOU_USE_VERSION} -B /tmp/include-what-you-use-${INCLUDE_WHAT_YOU_USE_VERSION}/build \
8788 && cmake --build /tmp/include-what-you-use-${INCLUDE_WHAT_YOU_USE_VERSION}/build --target install \
8889 && rm -rf /tmp/include-what-you-use-${INCLUDE_WHAT_YOU_USE_VERSION} \
89- && git -C /tmp clone --recurse-submodules -b ${MULL_VERSION} https://github.com/mull-project/mull.git \
90- && CC=clang CXX=clang++ cmake -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -S /tmp/mull -B /tmp/mull/build \
91- && cmake --build /tmp/mull/build --target install \
92- && rm -rf /tmp/mull \
9390 && apt-get purge -y libclang-${CLANG_VERSION}-dev llvm-${CLANG_VERSION}-dev libsqlite3-dev \
9491 && apt-get autoremove -y \
9592 && apt-get clean \
@@ -101,8 +98,9 @@ RUN update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++-14 20 \
10198 && update-alternatives --install /usr/bin/cc cc /usr/bin/gcc-14 20 \
10299 && update-alternatives --install /usr/bin/gcov gcov /usr/bin/gcov-14 10 \
103100 && update-alternatives --install /usr/bin/iwyu iwyu /usr/local/bin/include-what-you-use 10 \
104- && update-alternatives --install /usr/bin/mull-runner mull-runner /usr/local/bin/mull-runner-${CLANG_VERSION} 10 \
105- && update-alternatives --install /usr/lib/mull-ir-frontend mull-ir-frontend /usr/local/lib/mull-ir-frontend-${CLANG_VERSION} 10 \
101+ && update-alternatives --install /usr/bin/mull-runner mull-runner /usr/bin/mull-runner-${CLANG_VERSION} 10 \
102+ && update-alternatives --install /usr/bin/mull-reporter mull-reporter /usr/bin/mull-reporter-${CLANG_VERSION} 10 \
103+ && update-alternatives --install /usr/lib/mull-ir-frontend mull-ir-frontend /usr/lib/mull-ir-frontend-${CLANG_VERSION} 10 \
106104 && update-alternatives --install /usr/bin/python python /usr/bin/python3 10 \
107105 && cp /etc/skel/.bashrc /root/.bashrc
108106
0 commit comments