diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-27 18:24:20 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-27 18:24:20 +0000 |
commit | 483eb2f56657e8e7f419ab1a4fab8dce9ade8609 (patch) | |
tree | e5d88d25d870d5dedacb6bbdbe2a966086a0a5cf /src/seastar/recipe | |
parent | Initial commit. (diff) | |
download | ceph-483eb2f56657e8e7f419ab1a4fab8dce9ade8609.tar.xz ceph-483eb2f56657e8e7f419ab1a4fab8dce9ade8609.zip |
Adding upstream version 14.2.21.upstream/14.2.21upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/seastar/recipe')
-rw-r--r-- | src/seastar/recipe/dev.cmake | 298 | ||||
-rw-r--r-- | src/seastar/recipe/dpdk_config | 23 | ||||
-rw-r--r-- | src/seastar/recipe/dpdk_configure.cmake | 40 |
3 files changed, 361 insertions, 0 deletions
diff --git a/src/seastar/recipe/dev.cmake b/src/seastar/recipe/dev.cmake new file mode 100644 index 00000000..0685b033 --- /dev/null +++ b/src/seastar/recipe/dev.cmake @@ -0,0 +1,298 @@ +# +# This file is open source software, licensed to you under the terms +# of the Apache License, Version 2.0 (the "License"). See the NOTICE file +# distributed with this work for additional information regarding copyright +# ownership. You may not use this file except in compliance with the License. +# +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +# +# Copyright (C) 2018 Scylladb, Ltd. +# + +# +# Useful definitions for `cmake -E env`. +# + +set (amended_PATH PATH=${Cooking_INGREDIENTS_DIR}/bin:$ENV{PATH}) +set (PKG_CONFIG_PATH PKG_CONFIG_PATH=${Cooking_INGREDIENTS_DIR}/lib/pkgconfig) + +# +# Some Autotools ingredients need this information because they don't use pkgconfig. +# + +set (autotools_ingredients_flags + CFLAGS=-I${Cooking_INGREDIENTS_DIR}/include + CXXFLAGS=-I${Cooking_INGREDIENTS_DIR}/include + LDFLAGS=-L${Cooking_INGREDIENTS_DIR}/lib) + +# +# Some Autotools projects amend the info file instead of making a package-specific one. +# This doesn't play nicely with GNU Stow. +# +# Just append the name of the ingredient, like +# +# ${info_dir}/gmp +# + +set (info_dir --infodir=<INSTALL_DIR>/share/info) + +# +# Build-concurrency. +# + +cmake_host_system_information ( + RESULT build_concurrency_factor + QUERY NUMBER_OF_LOGICAL_CORES) + +set (make_command make -j ${build_concurrency_factor}) + +# +# All the ingredients. +# + +## +## Dependencies of dependencies of dependencies. +## + +cooking_ingredient (gmp + EXTERNAL_PROJECT_ARGS + URL https://gmplib.org/download/gmp/gmp-6.1.2.tar.bz2 + URL_MD5 8ddbb26dc3bd4e2302984debba1406a5 + CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=<INSTALL_DIR> --srcdir=<SOURCE_DIR> ${info_dir}/gmp + BUILD_COMMAND <DISABLE> + INSTALL_COMMAND ${make_command} install) + +## +## Dependencies of dependencies. +## + +cooking_ingredient (colm + EXTERNAL_PROJECT_ARGS + URL http://www.colm.net/files/colm/colm-0.13.0.6.tar.gz + URL_MD5 16aaf566cbcfe9a06154e094638ac709 + # This is upsetting. + BUILD_IN_SOURCE YES + CONFIGURE_COMMAND ./configure --prefix=<INSTALL_DIR> + BUILD_COMMAND <DISABLE> + INSTALL_COMMAND ${make_command} install) + +cooking_ingredient (libpciaccess + EXTERNAL_PROJECT_ARGS + URL https://www.x.org/releases/individual/lib/libpciaccess-0.13.4.tar.gz + URL_MD5 cc1fad87da60682af1d5fa43a5da45a4 + CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=<INSTALL_DIR> --srcdir=<SOURCE_DIR> + BUILD_COMMAND <DISABLE> + INSTALL_COMMAND ${make_command} install) + +cooking_ingredient (nettle + REQUIRES gmp + EXTERNAL_PROJECT_ARGS + URL https://ftp.gnu.org/gnu/nettle/nettle-3.4.tar.gz + URL_MD5 dc0f13028264992f58e67b4e8915f53d + CONFIGURE_COMMAND + <SOURCE_DIR>/configure + --prefix=<INSTALL_DIR> + --srcdir=<SOURCE_DIR> + --libdir=<INSTALL_DIR>/lib + ${info_dir}/nettle + ${autotools_ingredients_flags} + BUILD_COMMAND <DISABLE> + INSTALL_COMMAND ${make_command} install) + +# Also a direct dependency of Seastar. +cooking_ingredient (numactl + EXTERNAL_PROJECT_ARGS + URL https://github.com/numactl/numactl/releases/download/v2.0.12/numactl-2.0.12.tar.gz + URL_MD5 2ba9777d78bfd7d408a387e53bc33ebc + CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=<INSTALL_DIR> --srcdir=<SOURCE_DIR> + BUILD_COMMAND <DISABLE> + INSTALL_COMMAND ${make_command} install) + +cooking_ingredient (zlib + EXTERNAL_PROJECT_ARGS + URL https://zlib.net/zlib-1.2.11.tar.gz + URL_MD5 1c9f62f0778697a09d36121ead88e08e + CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=<INSTALL_DIR> --64 + BUILD_COMMAND <DISABLE> + INSTALL_COMMAND ${make_command} install) + +## +## Private and private/public dependencies. +## + +cooking_ingredient (Boost + EXTERNAL_PROJECT_ARGS + # The 1.67.0 release has a bug in Boost Lockfree around a missing header. + URL https://dl.bintray.com/boostorg/release/1.64.0/source/boost_1_64_0.tar.gz + URL_MD5 319c6ffbbeccc366f14bb68767a6db79 + PATCH_COMMAND + ./bootstrap.sh + --prefix=<INSTALL_DIR> + --with-libraries=atomic,chrono,date_time,filesystem,program_options,system,test,thread + CONFIGURE_COMMAND <DISABLE> + BUILD_COMMAND <DISABLE> + INSTALL_COMMAND + ${CMAKE_COMMAND} -E chdir <SOURCE_DIR> + ./b2 + -j ${build_concurrency_factor} + --layout=system + --build-dir=<BINARY_DIR> + install + variant=debug + link=shared + threading=multi + hardcode-dll-paths=true + dll-path=<INSTALL_DIR>/lib) + +cooking_ingredient (GnuTLS + REQUIRES + gmp + nettle + EXTERNAL_PROJECT_ARGS + URL https://www.gnupg.org/ftp/gcrypt/gnutls/v3.5/gnutls-3.5.18.tar.xz + URL_MD5 c2d93d305ecbc55939bc2a8ed4a76a3d + CONFIGURE_COMMAND + ${CMAKE_COMMAND} -E env ${PKG_CONFIG_PATH} + <SOURCE_DIR>/configure + --prefix=<INSTALL_DIR> + --srcdir=<SOURCE_DIR> + --with-included-unistring + --with-included-libtasn1 + --without-p11-kit + # https://lists.gnupg.org/pipermail/gnutls-help/2016-February/004085.html + --disable-non-suiteb-curves + --disable-doc + ${autotools_ingredients_flags} + BUILD_COMMAND <DISABLE> + INSTALL_COMMAND ${make_command} install) + +cooking_ingredient (Protobuf + REQUIRES zlib + EXTERNAL_PROJECT_ARGS + URL https://github.com/protocolbuffers/protobuf/releases/download/v3.3.0/protobuf-cpp-3.3.0.tar.gz + URL_MD5 73c28d3044e89782bdc8d9fdcfbb5792 + CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=<INSTALL_DIR> --srcdir=<SOURCE_DIR> + BUILD_COMMAND <DISABLE> + INSTALL_COMMAND ${make_command} install) + +cooking_ingredient (hwloc + REQUIRES + numactl + libpciaccess + EXTERNAL_PROJECT_ARGS + URL https://download.open-mpi.org/release/hwloc/v1.11/hwloc-1.11.5.tar.gz + URL_MD5 8f5fe6a9be2eb478409ad5e640b2d3ba + CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=<INSTALL_DIR> --srcdir=<SOURCE_DIR> + BUILD_COMMAND <DISABLE> + INSTALL_COMMAND ${make_command} install) + +cooking_ingredient (ragel + REQUIRES colm + EXTERNAL_PROJECT_ARGS + URL http://www.colm.net/files/ragel/ragel-6.10.tar.gz + URL_MD5 748cae8b50cffe9efcaa5acebc6abf0d + # This is upsetting. + BUILD_IN_SOURCE YES + CONFIGURE_COMMAND + ${CMAKE_COMMAND} -E env ${amended_PATH} + ./configure + --prefix=<INSTALL_DIR> + # This is even more upsetting. + ${autotools_ingredients_flags} + BUILD_COMMAND <DISABLE> + INSTALL_COMMAND ${make_command} install) + +cooking_ingredient (lksctp-tools + EXTERNAL_PROJECT_ARGS + URL https://sourceforge.net/projects/lksctp/files/lksctp-tools/lksctp-tools-1.0.16.tar.gz + URL_MD5 708bb0b5a6806ad6e8d13c55b067518e + PATCH_COMMAND ./bootstrap + CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=<INSTALL_DIR> --srcdir=<SOURCE_DIR> + BUILD_COMMAND <DISABLE> + INSTALL_COMMAND ${make_command} install) + +cooking_ingredient (yaml-cpp + REQUIRES Boost + CMAKE_ARGS + -DYAML_CPP_BUILD_TESTS=OFF + -DBUILD_SHARED_LIBS=ON + EXTERNAL_PROJECT_ARGS + URL https://github.com/jbeder/yaml-cpp/archive/yaml-cpp-0.5.3.tar.gz + URL_MD5 2bba14e6a7f12c7272f87d044e4a7211) + +## +## Public dependencies. +## + +cooking_ingredient (c-ares + EXTERNAL_PROJECT_ARGS + URL https://c-ares.haxx.se/download/c-ares-1.13.0.tar.gz + URL_MD5 d2e010b43537794d8bedfb562ae6bba2 + CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=<INSTALL_DIR> --srcdir=<SOURCE_DIR> + BUILD_COMMAND <DISABLE> + INSTALL_COMMAND ${make_command} install) + +cooking_ingredient (cryptopp + CMAKE_ARGS + -DCMAKE_INSTALL_LIBDIR=<INSTALL_DIR>/lib + -DBUILD_TESTING=OFF + EXTERNAL_PROJECT_ARGS + URL https://github.com/weidai11/cryptopp/archive/CRYPTOPP_5_6_5.tar.gz + URL_MD5 88224d9c0322f63aa1fb5b8ae78170f0) + +set (dpdk_quadruple ${CMAKE_SYSTEM_PROCESSOR}-native-linuxapp-gcc) + +set (dpdk_args + EXTRA_CFLAGS=-Wno-error + O=<BINARY_DIR> + DESTDIR=<INSTALL_DIR> + T=${dpdk_quadruple}) + +cooking_ingredient (dpdk + EXTERNAL_PROJECT_ARGS + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/dpdk + CONFIGURE_COMMAND + COMMAND + ${CMAKE_COMMAND} -E chdir <SOURCE_DIR> + make ${dpdk_args} config + COMMAND + ${CMAKE_COMMAND} + -DSeastar_DPDK_CONFIG_FILE_IN=<BINARY_DIR>/.config + -DSeastar_DPDK_CONFIG_FILE_CHANGES=${CMAKE_CURRENT_LIST_DIR}/dpdk_config + -DSeastar_DPDK_CONFIG_FILE_OUT=<BINARY_DIR>/${dpdk_quadruple}/.config + -P ${CMAKE_CURRENT_LIST_DIR}/dpdk_configure.cmake + BUILD_COMMAND <DISABLE> + INSTALL_COMMAND + ${CMAKE_COMMAND} -E chdir <SOURCE_DIR> + ${make_command} ${dpdk_args} install) + +cooking_ingredient (fmt + LOCAL_REBUILD + CMAKE_ARGS + -DBUILD_SHARED_LIBS=OFF + -DFMT_DOC=OFF + -DFMT_LIB_DIR=lib + -DFMT_TEST=OFF + EXTERNAL_PROJECT_ARGS + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/fmt) + +cooking_ingredient (lz4 + EXTERNAL_PROJECT_ARGS + URL https://github.com/lz4/lz4/archive/v1.8.0.tar.gz + URL_MD5 6247bf0e955899969d1600ff34baed6b + # This is upsetting. + BUILD_IN_SOURCE ON + CONFIGURE_COMMAND <DISABLE> + BUILD_COMMAND <DISABLE> + INSTALL_COMMAND ${make_command} PREFIX=<INSTALL_DIR> install) diff --git a/src/seastar/recipe/dpdk_config b/src/seastar/recipe/dpdk_config new file mode 100644 index 00000000..f832a2f8 --- /dev/null +++ b/src/seastar/recipe/dpdk_config @@ -0,0 +1,23 @@ +CONFIG_RTE_LIBRTE_PMD_BOND=n +CONFIG_RTE_MBUF_SCATTER_GATHER=n +CONFIG_RTE_LIBRTE_IP_FRAG=n +CONFIG_RTE_APP_TEST=n +CONFIG_RTE_TEST_PMD=n +CONFIG_RTE_MBUF_REFCNT_ATOMIC=n +CONFIG_RTE_MAX_MEMSEG=8192 +CONFIG_RTE_EAL_IGB_UIO=n +CONFIG_RTE_LIBRTE_KNI=n +CONFIG_RTE_KNI_KMOD=n +CONFIG_RTE_LIBRTE_JOBSTATS=n +CONFIG_RTE_LIBRTE_LPM=n +CONFIG_RTE_LIBRTE_ACL=n +CONFIG_RTE_LIBRTE_POWER=n +CONFIG_RTE_LIBRTE_IP_FRAG=n +CONFIG_RTE_LIBRTE_METER=n +CONFIG_RTE_LIBRTE_SCHED=n +CONFIG_RTE_LIBRTE_DISTRIBUTOR=n +CONFIG_RTE_LIBRTE_PMD_CRYPTO_SCHEDULER=n +CONFIG_RTE_LIBRTE_REORDER=n +CONFIG_RTE_LIBRTE_PORT=n +CONFIG_RTE_LIBRTE_TABLE=n +CONFIG_RTE_LIBRTE_PIPELINE=n diff --git a/src/seastar/recipe/dpdk_configure.cmake b/src/seastar/recipe/dpdk_configure.cmake new file mode 100644 index 00000000..f901df9d --- /dev/null +++ b/src/seastar/recipe/dpdk_configure.cmake @@ -0,0 +1,40 @@ +# +# This file is open source software, licensed to you under the terms +# of the Apache License, Version 2.0 (the "License"). See the NOTICE file +# distributed with this work for additional information regarding copyright +# ownership. You may not use this file except in compliance with the License. +# +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +# +# Copyright (C) 2018 Scylladb, Ltd. +# + +file (READ ${Seastar_DPDK_CONFIG_FILE_IN} dpdk_config) +file (STRINGS ${Seastar_DPDK_CONFIG_FILE_CHANGES} dpdk_config_changes) +set (word_pattern "[^\n\r \t]+") + +foreach (var ${dpdk_config_changes}) + if (var MATCHES "(${word_pattern})=(${word_pattern})") + set (key ${CMAKE_MATCH_1}) + set (value ${CMAKE_MATCH_2}) + + string (REGEX REPLACE + "${key}=${word_pattern}" + "${key}=${value}" + dpdk_config + ${dpdk_config}) + endif () +endforeach () + +file (WRITE ${Seastar_DPDK_CONFIG_FILE_OUT} ${dpdk_config}) |