From 7dc587ecbc7ddeaa9856b20d22139eca5715a053 Mon Sep 17 00:00:00 2001 From: Sameer Rahmani Date: Tue, 8 Feb 2022 17:43:29 +0000 Subject: [PATCH] Setup the dockerfiles necessary to build serene in a container --- .dockerignore | 2 ++ builder | 8 +++++++ resources/docker/Dockerfile.llvm | 34 ++++++++++-------------------- resources/docker/Dockerfile.serene | 12 +++++++++++ 4 files changed, 33 insertions(+), 23 deletions(-) create mode 100644 .dockerignore create mode 100644 resources/docker/Dockerfile.serene diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..a738187 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,2 @@ +./build/ +./resources/ diff --git a/builder b/builder index e0b661a..45bf9fd 100755 --- a/builder +++ b/builder @@ -133,6 +133,14 @@ function tests() { case "$command" in + "docker-llvm") + docker build -f resources/docker/Dockerfile.llvm -t serene/llvm:15 . + ;; + + "docker-serene") + docker build -f resources/docker/Dockerfile.serene -t serene/build:$(git rev-parse HEAD) . + ;; + "setup") rm -rfv $ME/.git/hooks/pre-commit ln -s $ME/scripts/pre-commit $ME/.git/hooks/pre-commit diff --git a/resources/docker/Dockerfile.llvm b/resources/docker/Dockerfile.llvm index 7c8b51f..a35a330 100644 --- a/resources/docker/Dockerfile.llvm +++ b/resources/docker/Dockerfile.llvm @@ -1,36 +1,24 @@ -FROM debian:11-slim +FROM debian:sid-slim as builder -RUN apt-get update && apt-get install -y wget gnupg +RUN apt-get update --fix-missing && apt-get install -y wget gnupg ccache cmake ccache git ninja-build build-essential binutils RUN wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|apt-key add - -RUN echo "deb http://apt.llvm.org/bullseye/ llvm-toolchain-bullseye-13 main" >> /etc/apt/sources.list -RUN apt-get update -RUN apt-get install -y ccache cmake ccache git ninja-build build-essential clang-13 lldb-13 lld-13 +RUN echo "deb http://apt.llvm.org/unstable/ llvm-toolchain main" >> /etc/apt/sources.list -ENV CXX=clang++-13 -ENV CC=clang-13 +RUN apt-get update --fix-missing && apt-get install -y clang-format-15 clang-tidy-15 clang-tools-15 clang-15 clangd-15 libc++-15-dev libc++1-15 libc++abi-15-dev libc++abi1-15 libclang-15-dev libclang1-15 liblldb-15-dev lld-15 lldb-15 llvm-15-dev llvm-15-runtime llvm python3-clang-15 python3-lldb-15 mlir-15-tools libmlir-15-dev RUN mkdir -p /opt/build -COPY ./llvm-project /usr/src/llvm-project WORKDIR /opt/build +COPY ./ /usr/src/llvm-project -ENV LDFLAGS="-fuse-ld=lld-13" +RUN ln -s `which lld-15` /usr/bin/lld && ln -s `which lldb-15` /usr/bin/lldb -RUN cmake -G Ninja /usr/src/llvm-project/llvm \ - -DCMAKE_INSTALL_PREFIX=/opt/llvm \ - -DLLVM_PARALLEL_COMPILE_JOBS=7 \ - -DLLVM_PARALLEL_LINK_JOBS=1 \ - -DLLVM_BUILD_EXAMPLES=ON \ - -DLLVM_TARGETS_TO_BUILD="X86" \ - -DCMAKE_BUILD_TYPE=Release \ - -DLLVM_ENABLE_ASSERTIONS=ON \ - -DLLVM_CCACHE_BUILD=ON \ - -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ - -DLLVM_ENABLE_PROJECTS='clang;lldb;lld;mlir;clang-tools-extra;compiler-rt' \ - -DCMAKE_C_COMPILER=clang-13 \ - -DCMAKE_CXX_COMPILER=clang++-13 \ - -DLLVM_ENABLE_LLD=ON +RUN cmake -G Ninja /usr/src/llvm-project/llvm -DCMAKE_INSTALL_PREFIX=/opt/llvm -DLLVM_PARALLEL_COMPILE_JOBS=7 -DLLVM_PARALLEL_LINK_JOBS=1 -DLLVM_TARGETS_TO_BUILD="X86" -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON -DLLVM_CCACHE_BUILD=ON -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DLLVM_ENABLE_PROJECTS='clang;lldb;lld;mlir;clang-tools-extra;compiler-rt' -DCMAKE_C_COMPILER=clang-15 -DCMAKE_CXX_COMPILER=clang++-15 -DLLVM_ENABLE_LLD=ON RUN cmake --build . RUN cmake -DCMAKE_INSTALL_PREFIX=/opt/llvm -P cmake_install.cmake + +FROM debian:sid-slim + +COPY --from=builder /opt/llvm /opt/llvm \ No newline at end of file diff --git a/resources/docker/Dockerfile.serene b/resources/docker/Dockerfile.serene new file mode 100644 index 0000000..30d74b6 --- /dev/null +++ b/resources/docker/Dockerfile.serene @@ -0,0 +1,12 @@ +FROM serene/llvm:15 + +RUN apt-get update --fix-missing && apt-get install -y wget gnupg ccache cmake ccache git ninja-build build-essential binutils libncurses-dev +WORKDIR /app +COPY . . + +ENV PATH="/opt/llvm/bin:$PATH" +ENV CXX=clang++ +ENV CC=clang +ENV LDFLAGS="-fuse-ld=lld" + +RUN LD_LIBRARY_PATH="$(clang -print-runtime-dir):$LD_LIBRARY_PATH" ./builder build