Verified Commit 099caa3d authored by Marc Vef's avatar Marc Vef
Browse files

CMake and dependency scripts: Adding libzmq and cppzmq to GekkoFS

parent c8745e8b
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -370,6 +370,6 @@ gkfs_define_option(
gkfs_define_option(
    GKFS_ENABLE_CLIENT_METRICS
    HELP_TEXT "Enable client metrics via MSGPack"
    DEFAULT_VALUE OFF
    DEFAULT_VALUE ON # TODO disable by default
    DESCRIPTION "If GKFS_ENABLE_CLIENT_METRICS is ON, use MSGPack to dump client read/write metrics"
)
 No newline at end of file
+15 −7
Original line number Diff line number Diff line
@@ -167,6 +167,12 @@ if (GKFS_ENABLE_AGIOS)
    find_package(AGIOS REQUIRED)
endif()

if (GKFS_ENABLE_CLIENT_METRICS)
    ### zeromq: required for sending client metrics to FTIO
    message(STATUS "[${PROJECT_NAME}] Checking for cppzmq")
    find_package(cppzmq)
endif ()

### Metadata backends
if(GKFS_ENABLE_ROCKSDB)
    message(STATUS "[${PROJECT_NAME}] Checking for RocksDB")
@@ -244,6 +250,7 @@ include_from_source(cli11
  GIT_TAG v2.2.0
  )

if (GKFS_ENABLE_CLIENT_METRICS)
    ### MessagePack: used for monitoring information on the client
    include_from_source(MessagePack
        MESSAGE "[${PROJECT_NAME}] Searching for MessagePackCPP"
@@ -251,6 +258,7 @@ include_from_source(MessagePack
        GIT_REPOSITORY https://github.com/GekkoFS/MessagePackCPP
        GIT_TAG 51655ec8f2b8fed84f685e3bcf8f226b139a263b # latest HEAD
    )
endif ()

################################################################################
## Check configured variables/options and act accordingly
+2 −0
Original line number Diff line number Diff line
@@ -37,6 +37,8 @@
#include <thread>
#include <mutex>

#include <zmq.hpp>

namespace gkfs::messagepack {

enum class client_metric_type { write, read };
+81 −0
Original line number Diff line number Diff line
################################################################################
# Copyright 2018-2024, Barcelona Supercomputing Center (BSC), Spain            #
# Copyright 2015-2024, Johannes Gutenberg Universitaet Mainz, Germany          #
#                                                                              #
# This software was partially supported by the                                 #
# EC H2020 funded project NEXTGenIO (Project ID: 671951, www.nextgenio.eu).    #
#                                                                              #
# This software was partially supported by the                                 #
# ADA-FS project under the SPPEXA project funded by the DFG.                   #
#                                                                              #
# This file is part of GekkoFS.                                                #
#                                                                              #
# GekkoFS 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.                                          #
#                                                                              #
# GekkoFS 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 GekkoFS.  If not, see <https://www.gnu.org/licenses/>.            #
#                                                                              #
# SPDX-License-Identifier: GPL-3.0-or-later                                    #
################################################################################

# vi: ft=bash

# Variables to be imported into the scripts
declare -A wgetdeps clonedeps clonedeps_args clonedeps_patches extra_install_args
declare -a order

# Comment that should be displayed when printing the profile
comment="All dependencies"

# Dependencies that must be downloaded directly
wgetdeps=(
    ["lz4"]="1.9.4"
    ["capstone"]="4.0.2"
    ["argobots"]="1.1"
    ["rocksdb"]="8.10.0"
    ["json-c"]="0.17-20230812"
    ["libzmq"]="4.3.5"
    ["cppzmq"]="4.10.0"
)

# Dependencies that must be cloned.
clonedeps=(
    ["libfabric"]="HEAD@v1.20.1"
    ["mercury"]="v2.3.1"
    ["margo"]="v0.15.0"
    ["syscall_intercept"]="2c8765fa292bc9c28a22624c528580d54658813d"
)

# Extra arguments for git clone
clonedeps_args=(
    ["mercury"]="--recurse-submodules"
)

# Patches that should be applied post-clone
clonedeps_patches=(
    ["syscall_intercept"]="syscall_intercept.patch syscall_intercept_clone3.patch"
)

# Ordering that MUST be followed when downloading
order=(
    "lz4" "capstone" "json-c" "libfabric" "mercury" "argobots" "margo" "rocksdb" "syscall_intercept" "libzmq" "cppzmq"
)

# Extra arguments passed to the installation script. As such, they can
# reference the following variables:
#  - CMAKE: a variable that expands to the cmake binary
#  - SOURCE_DIR: the directory where the sources for the package were
#               downloaded
#  - INSTALL_DIR: the directory where the package should be installed
#  - CORES: the number of cores to use when building
#  - PERFORM_TEST: whether tests for the package should be executed
extra_install_args=(
)
+62 −0
Original line number Diff line number Diff line
################################################################################
# Copyright 2018-2024, Barcelona Supercomputing Center (BSC), Spain            #
# Copyright 2015-2024, Johannes Gutenberg Universitaet Mainz, Germany          #
#                                                                              #
# This software was partially supported by the                                 #
# EC H2020 funded project NEXTGenIO (Project ID: 671951, www.nextgenio.eu).    #
#                                                                              #
# This software was partially supported by the                                 #
# ADA-FS project under the SPPEXA project funded by the DFG.                   #
#                                                                              #
# This file is part of GekkoFS.                                                #
#                                                                              #
# GekkoFS 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.                                          #
#                                                                              #
# GekkoFS 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 GekkoFS.  If not, see <https://www.gnu.org/licenses/>.            #
#                                                                              #
# SPDX-License-Identifier: GPL-3.0-or-later                                    #
################################################################################
# vi: ft=bash

################################################################################
## The installation script must define both a pkg_install function and
## pkg_check function that, as their name implies, must specify how
## a dependency package should be installed and tested.  ## ## The following
## variables can be used in the installation script:
## - CMAKE: a variable that expands to the cmake binary
## - SOURCE_DIR: the directory where the sources for the package were
##               downloaded
## - INSTALL_DIR: the directory where the package should be installed
## - CORES: the number of cores to use when building
## - COMPILER_NAME: the name of the compiler being used (e.g. g++, clang, etc.)
## - COMPILER_FULL_VERSION: the compiler's full version (e.g. 9.3.0)
## - COMPILER_MAJOR_VERSION: the compiler's major version (e.g. 9)
## - PERFORM_TEST: whether tests for the package should be executed
################################################################################

pkg_install() {
    ID="cppzmq"
    CURR="${SOURCE_DIR}/${ID}"
    prepare_build_dir "${CURR}"
    cd "${CURR}/build"
    $CMAKE \
        -DCMAKE_PREFIX_PATH=${INSTALL_DIR} \
        -DCMAKE_BUILD_TYPE:STRING=Release \
        -DCMAKE_INSTALL_PREFIX=${INSTALL_DIR} \
        ..
    make -j"${CORES}"
    make install
}

pkg_check() {
    :
}
Loading