Unverified Commit a5dcc600 authored by Alberto Miranda's avatar Alberto Miranda ♨️
Browse files

Add Dockerfiles

parent ff15e1e9
Loading
Loading
Loading
Loading
+198 −0
Original line number Diff line number Diff line
#Dockerfile for building scord in rockylinux:8

FROM slurm-docker-cluster:21.08.6

ENV DEPS_SOURCES /deps
ENV DEPS_INSTALL_PATH /usr

# Install basic packages and dependencies available from the distribution
RUN set -ex \
    && dnf makecache \
    && dnf update -y \
    && dnf install -y dnf-plugins-core \
    && dnf config-manager --set-enabled crb \
    && dnf install -y epel-release \
    && dnf install -y \
           git \
           gcc \
           gcc-c++ \
           make \
           automake \
           ninja-build \
           libtool \
           diffutils \
           file \
           cmake \
           libstdc++-static \
           libstdc++ \
           bind-utils \
           # dependencies
           boost-devel \
           json-c-devel \
           hiredis-devel \
           libconfig-devel \
           libfabric \
           libfabric-devel \
           openmpi \
           openmpi-devel \
           boost-openmpi-devel \
    && dnf clean all \
    && rm -rf /var/cache/dnf

### # Install openmpi
### RUN set -ex \
###     && cd \
###     && mkdir deps \
###     && cd deps \
###     && wget https://download.open-mpi.org/release/open-mpi/v4.1/openmpi-4.1.6.tar.bz2 \
###     && tar xvfj openmpi-4.1.6.tar.bz2 \
###     && cd openmpi-4.1.6 \
###     && mkdir build \
###     && cd build \
###     && ../configure \
###         --prefix=${DEPS_INSTALL_PATH} \
###         --with-slurm \
###         --with-pmix=external \
###         --disable-silent-rules \
###         --enable-builtin-atomics \
###         --enable-mpi-cxx \
###         --without-ucx \
###         --without-hcol \
###     && make -j8 all \
###     && make install \
###     && dnf install -y boost-openmpi-devel
###     # TODO: remove openmpi-4 dir


# Download and install dependencies
RUN set -ex \
    && export LD_LIBRARY_PATH=${DEPS_INSTALL_PATH}/lib:${DEPS_INSTALL_PATH}/lib64 \
    && export PKG_CONFIG_PATH=${DEPS_INSTALL_PATH}/lib/pkgconfig:${DEPS_INSTALL_PATH}/lib64/pkgconfig \
    && mkdir -p ${DEPS_SOURCES}  \
    && pushd ${DEPS_SOURCES} \
    # && git clone https://github.com/ofiwg/libfabric --recurse-submodules \
    && git clone https://github.com/pmodels/argobots --recurse-submodules \
    && git clone https://github.com/mercury-hpc/mercury --recurse-submodules \
    && git clone https://github.com/mochi-hpc/mochi-margo --recurse-submodules \
    && git clone https://github.com/sewenew/redis-plus-plus --recurse-submodules \
    && git clone https://github.com/francielizanon/agios --recurse-submodules \
    && git clone https://github.com/USCiLab/cereal --recurse-submodules \
    && git clone https://github.com/mochi-hpc/mochi-thallium --recurse-submodules \
    && git clone https://storage.bsc.es/gitlab/hpc/cargo.git \
    \
    && popd \
    ### argobots
    && pushd ${DEPS_SOURCES}/argobots \
    && ./autogen.sh \
    && mkdir build  \
    && pushd build \
    && CFLAGS="-ggdb3 -O0" ../configure --prefix=${DEPS_INSTALL_PATH} \
    && make install -j \
    && popd \
    && rm -rf build  \
    && popd \
    \
    #    ### libfabric
    #    && pushd ${DEPS_SOURCES}/libfabric \
    #    && git checkout v1.14.0rc3 \
    #    && ./autogen.sh \
    #    && mkdir build  \
    #    && pushd build \
    #    && CFLAGS="-ggdb3 -O0" \
    #        ../configure \
    #        --prefix=${DEPS_INSTALL_PATH} \
    #        --disable-psm3 \
    #    && make install -j \
    #    && popd  \
    #    && rm -rf build  \
    #    && cd \
    \
    ### mercury
    && pushd ${DEPS_SOURCES}/mercury  \
    && mkdir build \
    && pushd build \
    && cmake  \
          -DMERCURY_USE_SELF_FORWARD:BOOL=ON \
          -DBUILD_TESTING:BOOL=ON \
          -DMERCURY_USE_BOOST_PP:BOOL=ON \
          -DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_PATH}  \
          -DBUILD_SHARED_LIBS:BOOL=ON \
          -DNA_USE_OFI:BOOL=ON  \
          -DCMAKE_POSITION_INDEPENDENT_CODE=ON \
          -DCMAKE_BUILD_TYPE:STRING=Debug  \
          ..  \
    && make install -j \
    && popd  \
    && rm -rf build  \
    && popd \
    \
    ### mochi-margo
    && pushd ${DEPS_SOURCES}/mochi-margo \
    && ./prepare.sh \
    && mkdir build  \
    && pushd build \
    && CFLAGS="-ggdb3 -O0" ../configure --prefix=${DEPS_INSTALL_PATH} \
    && make -j install \
    && popd  \
    && rm -rf build  \
    && popd \
    \
    ### redis-plus-plus
    && pushd ${DEPS_SOURCES}/redis-plus-plus \
    && mkdir build  \
    && pushd build \
    && cmake  \
          -DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_PATH} \
          -DCMAKE_BUILD_TYPE:STRING=Debug \
          .. \
    && make install -j  \
    && popd  \
    && rm -rf build  \
    && popd \
    \
    ### agios
    && pushd ${DEPS_SOURCES}/agios \
    && git checkout development \
    && mkdir build  \
    && pushd build \
    && cmake  \
          -DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_PATH} \
          -DCMAKE_BUILD_TYPE:STRING=Debug \
          .. \
    && make install -j  \
    && popd  \
    && rm -rf build  \
    && popd  \
    \
    ### cereal
    && pushd ${DEPS_SOURCES}/cereal \
    && mkdir build  \
    && pushd build  \
    \
    && cmake  \
          -DCMAKE_BUILD_TYPE:STRING=Debug  \
          -DBUILD_DOC:BOOL=OFF \
          -DBUILD_SANDBOX:BOOL=OFF  \
          -DBUILD_TESTS:BOOL=OFF \
          -DSKIP_PERFORMANCE_COMPARISON:BOOL=ON \
          -DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_PATH} \
          .. \
    && make -j install \
    && popd  \
    && rm -rf build  \
    && popd \
    \
    ### mochi-thallium
    && pushd ${DEPS_SOURCES}/mochi-thallium \
    && mkdir build  \
    && pushd build  \
    && cmake  \
          -DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_PATH}  \
          -DCMAKE_BUILD_TYPE:STRING=Debug  \
          .. \
    && make -j install  \
    && popd \
    && rm -rf build  \
    && popd \
    # intentionally keep sources so that we can debug
    && chmod a+rwx ${DEPS_SOURCES}