From 3f121dc681e2059b1d6dc19bc8c61648f172a229 Mon Sep 17 00:00:00 2001 From: Andrew Noyes Date: Tue, 5 Mar 2024 11:39:36 -0800 Subject: [PATCH] Trim down docker file and avoid valgrind when cross-compiling --- CMakeLists.txt | 2 +- Dockerfile | 54 +++++++------------------------------------------- 2 files changed, 8 insertions(+), 48 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 400c727..8be657d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -170,7 +170,7 @@ if(BUILD_TESTING) target_link_libraries(driver_skip_list PRIVATE skip_list) find_program(VALGRIND_EXE valgrind) - if(VALGRIND_EXE) + if(VALGRIND_EXE AND NOT CMAKE_CROSSCOMPILING) add_test(NAME conflict_set_blackbox_valgrind COMMAND ${VALGRIND_EXE} --error-exitcode=99 -- $ ${CORPUS_TESTS}) diff --git a/Dockerfile b/Dockerfile index be8e3c5..297c489 100644 --- a/Dockerfile +++ b/Dockerfile @@ -15,6 +15,7 @@ RUN TZ=America/Los_Angeles DEBIAN_FRONTEND=noninteractive apt-get install -y \ curl \ doxygen \ file \ + g++-aarch64-linux-gnu \ gcovr \ git \ gperf \ @@ -23,17 +24,20 @@ RUN TZ=America/Los_Angeles DEBIAN_FRONTEND=noninteractive apt-get install -y \ ninja-build \ pre-commit \ python3-requests \ + qemu-user \ + rpm \ + texlive-full \ zstd # Install recent valgrind from source -RUN curl -Ls https://sourceware.org/pub/valgrind/valgrind-3.20.0.tar.bz2 -o valgrind.tar.bz2 && \ - echo "8536c031dbe078d342f121fa881a9ecd205cb5a78e639005ad570011bdb9f3c6 valgrind.tar.bz2" > valgrind-sha.txt && \ +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 && \ + make -j`nproc` && \ make install && \ cd .. && \ rm -rf /tmp/* @@ -42,50 +46,6 @@ RUN curl -Ls https://sourceware.org/pub/valgrind/valgrind-3.20.0.tar.bz2 -o valg ENV CC=clang ENV CXX=clang++ -# Install recent flatbuffers from source -RUN curl -Ls https://github.com/google/flatbuffers/archive/refs/tags/v23.3.3.tar.gz -o flatbuffers.tar.gz && \ - echo "8aff985da30aaab37edf8e5b02fda33ed4cbdd962699a8e2af98fdef306f4e4d flatbuffers.tar.gz" > flatbuffers-sha.txt && \ - sha256sum --quiet -c flatbuffers-sha.txt && \ - mkdir flatbuffers && \ - tar --strip-components 1 --no-same-owner --no-same-permissions --directory flatbuffers -xf flatbuffers.tar.gz && \ - cd flatbuffers && \ - cmake -S. -B build -G Ninja -DCMAKE_BUILD_TYPE=Release && \ - ninja -C build install && \ - rm -rf /tmp/* - -# Build msan-instrumented libc++ (llvmorg-16.0.0) -RUN curl -Ls https://github.com/llvm/llvm-project/releases/download/llvmorg-16.0.0/llvm-project-16.0.0.src.tar.xz -o llvm-project.tar.gz && \ - echo "9a56d906a2c81f16f06efc493a646d497c53c2f4f28f0cb1f3c8da7f74350254 llvm-project.tar.gz" > llvm-project-sha.txt && \ - sha256sum --quiet -c llvm-project-sha.txt && \ - mkdir llvm-project && \ - tar --strip-components 1 --no-same-owner --no-same-permissions --directory llvm-project -xf llvm-project.tar.gz && \ - cmake -Sllvm-project/runtimes -B build -G Ninja \ - -DCMAKE_BUILD_TYPE=Release \ - -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi" \ - -DCMAKE_C_COMPILER=clang \ - -DCMAKE_CXX_COMPILER=clang++ \ - -DCMAKE_INSTALL_PREFIX=/opt/llvm-msan \ - -DLLVM_USE_SANITIZER=MemoryWithOrigins && \ - ninja -C build cxx cxxabi && \ - ninja -C build install-cxx install-cxxabi && \ - rm -rf /tmp/* - -# Install bloaty from source -RUN curl -Ls https://github.com/google/bloaty/releases/download/v1.1/bloaty-1.1.tar.bz2 -o bloaty.tar.bz2 && \ - echo "a308d8369d5812aba45982e55e7c3db2ea4780b7496a5455792fb3dcba9abd6f bloaty.tar.bz2" > bloaty-sha.txt && \ - sha256sum --quiet -c bloaty-sha.txt && \ - mkdir bloaty && \ - tar --strip-components 1 --no-same-owner --no-same-permissions --directory bloaty -xf bloaty.tar.bz2 && \ - cd bloaty && \ - cmake -S. -B build -G Ninja && \ - ninja -C build install && \ - rm -rf /tmp/* - -RUN apt-get update -RUN apt-get upgrade -y -RUN TZ=America/Los_Angeles DEBIAN_FRONTEND=noninteractive apt-get install -y texlive-full -RUN TZ=America/Los_Angeles DEBIAN_FRONTEND=noninteractive apt-get install -y rpm qemu-user g++-aarch64-linux-gnu - # 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