Loading .gitlab-ci.yml +1 −1 Original line number Diff line number Diff line # Compilation of scord and execution of tests image: bscstorage/scord:0.1.0 image: bscstorage/scord:0.2.0-wip stages: - build Loading CMakeLists.txt +5 −0 Original line number Diff line number Diff line Loading @@ -253,6 +253,11 @@ endif () ### variables. mark_variables_as_advanced(REGEX "^(FETCHCONTENT|fmt|FMT|spdlog|SPDLOG)_.*$") ### redisplusplus check message(STATUS "[${PROJECT_NAME}] Checking for Redis Plus Plus") find_package(RedisPlusPlus 1.3.3 REQUIRED) # ############################################################################## # Process subdirectories # ############################################################################## Loading cmake/FindRedisPlusPlus.cmake 0 → 100644 +117 −0 Original line number Diff line number Diff line ################################################################################ # Copyright 2021-2022, Barcelona Supercomputing Center (BSC), Spain # # # # This software was partially supported by the EuroHPC-funded project ADMIRE # # (Project ID: 956748, https://www.admire-eurohpc.eu). # # # # This file is part of scord. # # # # scord is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # # the Free Software Foundation, either version 3 of the License, or # # (at your option) any later version. # # # # scord is distributed in the hope that it will be useful, # # but WITHOUT ANY WARRANTY; without even the implied warranty of # # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # # GNU General Public License for more details. # # # # You should have received a copy of the GNU General Public License # # along with scord. If not, see <https://www.gnu.org/licenses/>. # # # # SPDX-License-Identifier: GPL-3.0-or-later # ################################################################################ #[=======================================================================[.rst: FindRedisPlusPlus --------- Find RedisPlusPlus include dirs and libraries. Use this module by invoking find_package with the form:: find_package(RedisPlusPlus [version] [EXACT] # Minimum or EXACT version e.g. 0.6.2 [REQUIRED] # Fail with error if yaml-cpp is not found ) Imported Targets ^^^^^^^^^^^^^^^^ This module provides the following imported targets, if found: ``RedisPlusPlus::RedisPlusPlus`` The RedisPlusPlus library Result Variables ^^^^^^^^^^^^^^^^ This will define the following variables: ``RedisPlusPlus_FOUND`` True if the system has the RedisPlusPlus library. ``RedisPlusPlus_VERSION`` The version of the RedisPlusPlus library which was found. ``RedisPlusPlus_INCLUDE_DIRS`` Include directories needed to use RedisPlusPlus. ``RedisPlusPlus_LIBRARIES`` Libraries needed to link to RedisPlusPlus. Cache Variables ^^^^^^^^^^^^^^^ The following cache variables may also be set: ``RedisPlusPlus_INCLUDE_DIR`` The directory containing ``redis++.h``. ``RedisPlusPlus_LIBRARY`` The path to the RedisPlusPlus library. #]=======================================================================] find_package(PkgConfig) pkg_check_modules(PC_RedisPlusPlus QUIET redisplusplus) find_path(RedisPlusPlus_INCLUDE_DIR NAMES sw/redis++/redis++.h PATHS ${PC_RedisPlusPlus_INCLUDE_DIRS} PATH_SUFFIXES RedisPlusPlus ) find_library(RedisPlusPlus_LIBRARY NAMES redis++ PATHS ${PC_RedisPlusPlus_LIBRARY_DIRS} ) mark_as_advanced( RedisPlusPlus_INCLUDE_DIR RedisPlusPlus_LIBRARY ) set(RedisPlusPlus_VERSION ${PC_RedisPlusPlus_VERSION}) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(RedisPlusPlus FOUND_VAR RedisPlusPlus_FOUND REQUIRED_VARS RedisPlusPlus_LIBRARY RedisPlusPlus_INCLUDE_DIR VERSION_VAR RedisPlusPlus_VERSION ) if(RedisPlusPlus_FOUND) set(RedisPlusPlus_LIBRARIES ${RedisPlusPlus_LIBRARY}) set(RedisPlusPlus_INCLUDE_DIRS ${RedisPlusPlus_INCLUDE_DIR}) set(RedisPlusPlus_DEFINITIONS ${PC_RedisPlusPlus_CFLAGS_OTHER}) endif() if(RedisPlusPlus_FOUND AND NOT TARGET RedisPlusPlus::RedisPlusPlus) add_library(RedisPlusPlus::RedisPlusPlus UNKNOWN IMPORTED) set_target_properties(RedisPlusPlus::RedisPlusPlus PROPERTIES IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" IMPORTED_LOCATION "${RedisPlusPlus_LIBRARY}" INTERFACE_COMPILE_DEFINITIONS "${PC_RedisPlusPlus_CFLAGS_OTHER}" INTERFACE_INCLUDE_DIRECTORIES "${RedisPlusPlus_INCLUDE_DIR}" ) endif() docker/0.1.0/Makefile +1 −1 Original line number Diff line number Diff line .PHONY: all all: docker build -t gekkofs/scord:0.1.0 . docker build -t bscstorage/scord:0.1.0 . docker/0.2.0-wip/Dockerfile 0 → 100644 +109 −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 \ # genopts dependencies python3-venv libhiredis-dev && \ # 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 && \ git clone https://github.com/sewenew/redis-plus-plus --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 && \ cd deps/redis-plus-plus && \ mkdir build && \ cd build && \ cmake -DCMAKE_INSTALL_PREFIX=${INSTALL_PATH} .. && \ make install -j && \ cd ../../ && \ 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 Loading
.gitlab-ci.yml +1 −1 Original line number Diff line number Diff line # Compilation of scord and execution of tests image: bscstorage/scord:0.1.0 image: bscstorage/scord:0.2.0-wip stages: - build Loading
CMakeLists.txt +5 −0 Original line number Diff line number Diff line Loading @@ -253,6 +253,11 @@ endif () ### variables. mark_variables_as_advanced(REGEX "^(FETCHCONTENT|fmt|FMT|spdlog|SPDLOG)_.*$") ### redisplusplus check message(STATUS "[${PROJECT_NAME}] Checking for Redis Plus Plus") find_package(RedisPlusPlus 1.3.3 REQUIRED) # ############################################################################## # Process subdirectories # ############################################################################## Loading
cmake/FindRedisPlusPlus.cmake 0 → 100644 +117 −0 Original line number Diff line number Diff line ################################################################################ # Copyright 2021-2022, Barcelona Supercomputing Center (BSC), Spain # # # # This software was partially supported by the EuroHPC-funded project ADMIRE # # (Project ID: 956748, https://www.admire-eurohpc.eu). # # # # This file is part of scord. # # # # scord is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # # the Free Software Foundation, either version 3 of the License, or # # (at your option) any later version. # # # # scord is distributed in the hope that it will be useful, # # but WITHOUT ANY WARRANTY; without even the implied warranty of # # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # # GNU General Public License for more details. # # # # You should have received a copy of the GNU General Public License # # along with scord. If not, see <https://www.gnu.org/licenses/>. # # # # SPDX-License-Identifier: GPL-3.0-or-later # ################################################################################ #[=======================================================================[.rst: FindRedisPlusPlus --------- Find RedisPlusPlus include dirs and libraries. Use this module by invoking find_package with the form:: find_package(RedisPlusPlus [version] [EXACT] # Minimum or EXACT version e.g. 0.6.2 [REQUIRED] # Fail with error if yaml-cpp is not found ) Imported Targets ^^^^^^^^^^^^^^^^ This module provides the following imported targets, if found: ``RedisPlusPlus::RedisPlusPlus`` The RedisPlusPlus library Result Variables ^^^^^^^^^^^^^^^^ This will define the following variables: ``RedisPlusPlus_FOUND`` True if the system has the RedisPlusPlus library. ``RedisPlusPlus_VERSION`` The version of the RedisPlusPlus library which was found. ``RedisPlusPlus_INCLUDE_DIRS`` Include directories needed to use RedisPlusPlus. ``RedisPlusPlus_LIBRARIES`` Libraries needed to link to RedisPlusPlus. Cache Variables ^^^^^^^^^^^^^^^ The following cache variables may also be set: ``RedisPlusPlus_INCLUDE_DIR`` The directory containing ``redis++.h``. ``RedisPlusPlus_LIBRARY`` The path to the RedisPlusPlus library. #]=======================================================================] find_package(PkgConfig) pkg_check_modules(PC_RedisPlusPlus QUIET redisplusplus) find_path(RedisPlusPlus_INCLUDE_DIR NAMES sw/redis++/redis++.h PATHS ${PC_RedisPlusPlus_INCLUDE_DIRS} PATH_SUFFIXES RedisPlusPlus ) find_library(RedisPlusPlus_LIBRARY NAMES redis++ PATHS ${PC_RedisPlusPlus_LIBRARY_DIRS} ) mark_as_advanced( RedisPlusPlus_INCLUDE_DIR RedisPlusPlus_LIBRARY ) set(RedisPlusPlus_VERSION ${PC_RedisPlusPlus_VERSION}) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(RedisPlusPlus FOUND_VAR RedisPlusPlus_FOUND REQUIRED_VARS RedisPlusPlus_LIBRARY RedisPlusPlus_INCLUDE_DIR VERSION_VAR RedisPlusPlus_VERSION ) if(RedisPlusPlus_FOUND) set(RedisPlusPlus_LIBRARIES ${RedisPlusPlus_LIBRARY}) set(RedisPlusPlus_INCLUDE_DIRS ${RedisPlusPlus_INCLUDE_DIR}) set(RedisPlusPlus_DEFINITIONS ${PC_RedisPlusPlus_CFLAGS_OTHER}) endif() if(RedisPlusPlus_FOUND AND NOT TARGET RedisPlusPlus::RedisPlusPlus) add_library(RedisPlusPlus::RedisPlusPlus UNKNOWN IMPORTED) set_target_properties(RedisPlusPlus::RedisPlusPlus PROPERTIES IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" IMPORTED_LOCATION "${RedisPlusPlus_LIBRARY}" INTERFACE_COMPILE_DEFINITIONS "${PC_RedisPlusPlus_CFLAGS_OTHER}" INTERFACE_INCLUDE_DIRECTORIES "${RedisPlusPlus_INCLUDE_DIR}" ) endif()
docker/0.1.0/Makefile +1 −1 Original line number Diff line number Diff line .PHONY: all all: docker build -t gekkofs/scord:0.1.0 . docker build -t bscstorage/scord:0.1.0 .
docker/0.2.0-wip/Dockerfile 0 → 100644 +109 −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 \ # genopts dependencies python3-venv libhiredis-dev && \ # 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 && \ git clone https://github.com/sewenew/redis-plus-plus --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 && \ cd deps/redis-plus-plus && \ mkdir build && \ cd build && \ cmake -DCMAKE_INSTALL_PREFIX=${INSTALL_PATH} .. && \ make install -j && \ cd ../../ && \ 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