diff --git a/docker/0.1.0/Dockerfile b/docker/0.1.0/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..e7eb72b026a7fddecc5c02eaae25c1b02cb1e78e --- /dev/null +++ b/docker/0.1.0/Dockerfile @@ -0,0 +1,99 @@ +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 diff --git a/docker/0.1.0/Makefile b/docker/0.1.0/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..eca883294bf1514e4a584f4d4ea95231c20b04ee --- /dev/null +++ b/docker/0.1.0/Makefile @@ -0,0 +1,4 @@ +.PHONY: all + +all: + docker build -t gekkofs/scord:0.1.0 .