FROM ubuntu:rolling WORKDIR /tmp ENV HOME=/tmp RUN chmod -R 777 /tmp # Install apt dependencies RUN apt-get update RUN apt-get upgrade -y RUN TZ=America/Los_Angeles DEBIAN_FRONTEND=noninteractive apt-get install -y \ binutils-aarch64-linux-gnu \ build-essential \ ccache \ cmake \ curl \ g++-aarch64-linux-gnu \ gcovr \ git \ gnupg \ libc6-dbg \ lsb-release \ ninja-build \ pre-commit \ python3-requests \ qemu-user \ rpm \ software-properties-common \ texlive-full \ wget \ zstd # Install recent valgrind from source RUN curl -Ls https://sourceware.org/pub/valgrind/valgrind-3.22.0.tar.bz2 -o valgrind.tar.bz2 && \ echo "c811db5add2c5f729944caf47c4e7a65dcaabb9461e472b578765dd7bf6d2d4c valgrind.tar.bz2" > valgrind-sha.txt && \ sha256sum --quiet -c valgrind-sha.txt && \ mkdir valgrind && \ tar --strip-components 1 --no-same-owner --no-same-permissions --directory valgrind -xjf valgrind.tar.bz2 && \ cd valgrind && \ ./configure --enable-only64bit --enable-lto && \ make -j`nproc` && \ make install && \ cd .. && \ rm -rf /tmp/* # Recent clang RUN wget https://apt.llvm.org/llvm.sh && chmod +x ./llvm.sh && ./llvm.sh 20 RUN apt-get -y install clang llvm # Set after building valgrind, which doesn't build with clang for some reason ENV CC=clang ENV CXX=clang++ # Try to have all the pre-commit hooks we'll need already initialized COPY .pre-commit-config.yaml /tmp/ RUN git init && pre-commit install-hooks