summaryrefslogtreecommitdiffstats
path: root/src/seastar/recipe
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-27 18:24:20 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-27 18:24:20 +0000
commit483eb2f56657e8e7f419ab1a4fab8dce9ade8609 (patch)
treee5d88d25d870d5dedacb6bbdbe2a966086a0a5cf /src/seastar/recipe
parentInitial commit. (diff)
downloadceph-upstream.tar.xz
ceph-upstream.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.cmake298
-rw-r--r--src/seastar/recipe/dpdk_config23
-rw-r--r--src/seastar/recipe/dpdk_configure.cmake40
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})