Select Git revision
Dockerfile 2.49 KiB
ARG MPI_FLAVOR=mpich
FROM debian:12 AS base
ARG LLVM_VERSION=14
ENV DEBIAN_FRONTEND=noninteractive
ENV TZ=Europe/Berlin
ENV PATH=/opt/must/bin:$PATH
RUN apt-get update && apt-get -y -qq --no-install-recommends install \
build-essential \
&& rm -rf /var/lib/apt/lists/*
RUN apt-get update \
&& apt-get -y -qq --no-install-recommends install \
cmake \
curl \
binutils-dev \
make \
automake \
autotools-dev \
autoconf \
libtool \
zlib1g \
zlib1g-dev \
libatomic1 \
libfabric-dev \
libxml2-dev \
python3 \
python3-pip \
python3-venv \
gfortran \
gcc \
g++ \
git \
graphviz \
libgtest-dev \
clang-${LLVM_VERSION} \
libomp-${LLVM_VERSION}-dev \
clang-format-${LLVM_VERSION} \
llvm-${LLVM_VERSION} \
lldb-${LLVM_VERSION} \
ninja-build \
vim \
openssh-client \
gdb \
wget \
googletest \
&& apt-get -yq clean \
&& rm --recursive --force /var/lib/apt/lists/*
# Ensure that correct LLVM toolset is used
RUN ln -s /usr/bin/FileCheck-${LLVM_VERSION} /usr/bin/FileCheck
RUN ln -s /usr/bin/clang-${LLVM_VERSION} /usr/bin/clang
RUN ln -s /usr/bin/clang++-${LLVM_VERSION} /usr/bin/clang++
RUN ln -s /usr/bin/clang-format-${LLVM_VERSION} /usr/bin/clang-format
ENV CC=clang
ENV CXX=clang++
FROM base AS base-mpich
RUN apt-get update \
&& apt-get -y -qq --no-install-recommends install \
mpich \
libmpich-dev \
&& apt-get -yq clean \
&& rm --recursive --force /var/lib/apt/lists/*
ENV MPICH_CC=clang
ENV MPICH_CXX=clang++
FROM base AS base-openmpi
RUN apt-get update \
&& apt-get -y -qq --no-install-recommends install \
openmpi-bin \
libopenmpi-dev \
&& apt-get -yq clean \
&& rm --recursive --force /var/lib/apt/lists/*
ENV OMPI_CC=clang
ENV OMPI_CXX=clang++
FROM base-${MPI_FLAVOR} AS final
ARG MUST_VERSION=1.9.2
# Build and install MUST
RUN mkdir -p /opt/must/
RUN wget https://hpc.rwth-aachen.de/must/files/MUST-v${MUST_VERSION}.tar.gz && \
tar -xf MUST-v${MUST_VERSION}.tar.gz && cd MUST-v${MUST_VERSION} && \
mkdir build && \
cd build && \
CC=clang CXX=clang++ MPICH_CC=clang MPICH_CXX=clang++ OMPI_CC=clang OMPI_CXX=clang \
cmake .. -DCMAKE_INSTALL_PREFIX=/opt/must -DUSE_BACKWARD=ON -DENABLE_FORTRAN=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo && \
make install -j8 install-prebuilds && \
rm /MUST-v${MUST_VERSION}.tar.gz && \
rm -r -f /MUST-v${MUST_VERSION}
# Run as non-privileged user
RUN useradd -ms /bin/bash user
USER user