Commit 72bd54a7 authored by Ramon Nou's avatar Ramon Nou
Browse files

Added Redis++

parent b01ac81f
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -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
# ##############################################################################
+117 −0
Original line number Diff line number Diff line
################################################################################
# Copyright 2021, 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:
FindHiRedis
---------

Find hiredis include dirs and libraries.

Use this module by invoking find_package with the form::

  find_package(HiRedis
    [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:

``HIRedis::HiRedis``
  The HiRedis library

Result Variables
^^^^^^^^^^^^^^^^

This will define the following variables:

``HiRedis_FOUND``
  True if the system has the HiRedis library.
``HiRedis_VERSION``
  The version of the HiRedis library which was found.
``HiRedis_INCLUDE_DIRS``
  Include directories needed to use HiRedis.
``HiRedis_LIBRARIES``
  Libraries needed to link to HiRedis.

Cache Variables
^^^^^^^^^^^^^^^

The following cache variables may also be set:

``HiRedis_INCLUDE_DIR``
  The directory containing ``hiredis.h``.
``HiRedis_LIBRARY``
  The path to the HiRedis library.

#]=======================================================================]


find_package(PkgConfig)
pkg_check_modules(PC_HiRedis QUIET hiredis)

find_path(HiRedis_INCLUDE_DIR
  NAMES hiredis/hiredis.h
  PATHS ${PC_HiRedis_INCLUDE_DIRS}
  PATH_SUFFIXES HiRedis
)

find_library(HiRedis_LIBRARY
  NAMES hiredis
  PATHS ${PC_HiRedis_LIBRARY_DIRS}
)

mark_as_advanced(
  HiRedis_INCLUDE_DIR
  HiRedis_LIBRARY
)

set(HiRedis_VERSION ${PC_HiRedis_VERSION})

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(HiRedis
  FOUND_VAR HiRedis_FOUND
  REQUIRED_VARS
    HiRedis_LIBRARY
    HiRedis_INCLUDE_DIR
  VERSION_VAR HiRedis_VERSION
)

if(HiRedis_FOUND)
  set(HiRedis_LIBRARIES ${HiRedis_LIBRARY})
  set(HiRedis_INCLUDE_DIRS ${HiRedis_INCLUDE_DIR})
  set(HiRedis_DEFINITIONS ${PC_HiRedis_CFLAGS_OTHER})
endif()

if(HiRedis_FOUND AND NOT TARGET HiRedis::HiRedis)
  add_library(HiRedis::HiRedis UNKNOWN IMPORTED)
  set_target_properties(HiRedis::HiRedis PROPERTIES
    IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
    IMPORTED_LOCATION "${HiRedis_LIBRARY}"
    INTERFACE_COMPILE_DEFINITIONS "${PC_HiRedis_CFLAGS_OTHER}"
    INTERFACE_INCLUDE_DIRECTORIES "${HiRedis_INCLUDE_DIR}"
)
endif()
+117 −0
Original line number Diff line number Diff line
################################################################################
# Copyright 2021, 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 hiredis 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()
+9 −1
Original line number Diff line number Diff line
@@ -30,7 +30,7 @@ RUN apt-get update && \
        python3 \
        libyaml-dev libcurl4-openssl-dev procps \
        # genopts dependencies
        python3-venv && \
        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 && \
@@ -58,6 +58,7 @@ RUN apt-get update && \
    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 && \
@@ -94,6 +95,13 @@ RUN apt-get update && \
    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/* && \
+1 −1
Original line number Diff line number Diff line
@@ -36,7 +36,7 @@ target_include_directories(

target_link_libraries(
  scord-ctl PRIVATE common::config common::logger common::network::rpc_server
                    scord_ctl_private_rpcs fmt::fmt Boost::program_options
                    scord_ctl_private_rpcs fmt::fmt Boost::program_options RedisPlusPlus::RedisPlusPlus
)

install(TARGETS scord DESTINATION ${CMAKE_INSTALL_BINDIR})
Loading