Commit 3873f020 authored by Ramon Nou's avatar Ramon Nou
Browse files

Docker Image for scord compilation

parent a2627315
Loading
Loading
Loading
Loading
+99 −0
Original line number Diff line number Diff line
FROM debian:bullseye-slim

LABEL Description="Debian-based environment suitable to build scord"

ENV INSTALL_PATH /usr/local


RUN apt-get update && \
    apt-get install -y --no-install-recommends \
		git \
		curl \
		ca-certificates \
		libtool \
		pkg-config \
		make \
		automake \
		gcc \
		g++ \
		procps \
		# AGIOS dependencies
		libconfig-dev \
		# Mercury dependencies
		libltdl-dev \
		lbzip2 \
        # Margo dependencies \
        libjson-c-dev \
		# GekkoFS dependencies
		libboost-program-options-dev \
		uuid-dev  \
        python3 \
        libyaml-dev libcurl4-openssl-dev procps && \
    # install cmake 3.14 since it's needed for some dependencies
    curl -OL https://github.com/Kitware/CMake/releases/download/v3.23.1/cmake-3.23.1-Linux-x86_64.sh && \
    chmod u+x ./cmake-3.23.1-Linux-x86_64.sh && \
    ./cmake-3.23.1-Linux-x86_64.sh --skip-license --prefix=${INSTALL_PATH} && \
    # Clean apt cache to reduce image layer size
    rm -rf /var/lib/apt/lists/* && \
    # Clean apt caches of packages
    apt-get clean && apt-get autoclean && \
    rm ./cmake-3.23.1-Linux-x86_64.sh && \
    cmake --version && \
    curl -OL https://github.com/jbeder/yaml-cpp/archive/refs/tags/yaml-cpp-0.6.2.tar.gz && \
    tar -xzf yaml-cpp-0.6.2.tar.gz && \
    cd yaml-cpp-yaml-cpp-0.6.2 && \
    mkdir build && \
    cd build && \
    cmake -DCMAKE_INSTALL_PREFIX=${INSTALL_PATH} .. && \
    make -j install && \
    cd && \
    rm -rf yaml-cpp-yaml-cpp-0.6.2 && \
    mkdir deps && \
    cd deps && \
    git clone https://github.com/jbeder/yaml-cpp --recurse-submodules && \
    git clone https://github.com/json-c/json-c --recurse-submodules && \
    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 && \
    export LD_LIBRARY_PATH=${INSTALL_PATH}/lib:${INSTALL_PATH}/lib64 && \
    export PKG_CONFIG_PATH=${INSTALL_PATH}/lib/pkgconfig:${INSTALL_PATH}/lib64/pkgconfig && \
    cd && \
    cd deps/yaml-cpp && \
    mkdir build && \
    cd build && \
    cmake -DCMAKE_INSTALL_PREFIX=${INSTALL_PATH} -DYAML_CPP_BUILD_TESTS=OFF .. && \
    make -j install && \
    cd ../../ && \
    cd argobots && \
    ./autogen.sh && \
    ./configure --prefix=${INSTALL_PATH} && \
    make install -j && \
    cd .. && \
    cd libfabric && \
    ./autogen.sh && \
    ./configure --prefix=${INSTALL_PATH} && \
    make install -j && \
    cd .. && \
    cd mercury && \
    mkdir build && \
    cd build && \
    cmake -DMERCURY_USE_SELF_FORWARD:BOOL=ON -DBUILD_TESTING:BOOL=ON -DMERCURY_USE_BOOST_PP:BOOL=ON -DCMAKE_INSTALL_PREFIX=${INSTALL_PATH} -DBUILD_SHARED_LIBS:BOOL=ON -DNA_USE_OFI:BOOL=ON -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE:STRING=Release .. && \
    make install -j && \
    cd ../.. && \
    cd json-c && \
    mkdir build && \
    cd build && \
    cmake -DCMAKE_INSTALL_PREFIX=${INSTALL_PATH} .. && \
    make install -j && \
    cd ../../ && \
    cd mochi-margo && \
    ./prepare.sh && \
    PKG_CONFIG_PATH=${INSTALL_PATH}/lib/pkgconfig:${INSTALL_PATH}/lib64/pkgconfig ./configure --prefix=${INSTALL_PATH} && \
    make -j install && \
    cd && \
    rm -rf deps && \
    # Clean apt cache to reduce image layer size
    rm -rf /var/lib/apt/lists/* && \
    # Clean apt caches of packages
    apt-get clean && apt-get autoclean

docker/0.1.0/Makefile

0 → 100644
+4 −0
Original line number Diff line number Diff line
.PHONY: all

all:
	docker build -t gekkofs/scord:0.1.0 .