diff --git a/0017-gcc-12-omnibus.patch b/0017-gcc-12-omnibus.patch index 7e4f116cf9888e1a68717976c3bcc98e1946f54c..4440750f58f4930f6baf6cac16682daafca1ffcb 100644 --- a/0017-gcc-12-omnibus.patch +++ b/0017-gcc-12-omnibus.patch @@ -19,26 +19,6 @@ } } ---- ceph-16.2.7/src/common/dout.h.orig 2022-01-18 08:58:11.805226954 -0500 -+++ ceph-16.2.7/src/common/dout.h 2022-01-19 08:06:23.987388663 -0500 -@@ -99,11 +99,15 @@ - template - struct dynamic_marker_t { - T value; -- operator T() const { return value; } -+ // constexpr ctor isn't needed as it's an aggregate type -+ constexpr operator T() const { return value; } - }; - - template --dynamic_marker_t need_dynamic(T&& t) { -+constexpr dynamic_marker_t need_dynamic(T&& t) { -+ // deprecated in C++17 but that's fine for testing -+ static_assert(std::is_literal_type_v); -+ static_assert(std::is_literal_type_v>); - return dynamic_marker_t{ std::forward(t) }; - } - --- ceph-16.2.7/src/test/librados/tier_cxx.cc.orig 2022-01-19 09:30:47.209459506 -0500 +++ ceph-16.2.7/src/test/librados/tier_cxx.cc 2022-01-19 10:02:47.783240298 -0500 @@ -114,7 +114,7 @@ diff --git a/0023-src-s3select-include-s3select_parquet_intrf.h.patch b/0023-src-s3select-include-s3select_parquet_intrf.h.patch new file mode 100644 index 0000000000000000000000000000000000000000..b11d1dab4d53c55b17995551890ebff554047ef9 --- /dev/null +++ b/0023-src-s3select-include-s3select_parquet_intrf.h.patch @@ -0,0 +1,218 @@ +--- ceph-17.2.3/src/s3select/include/s3select_parquet_intrf.h.orig 2022-01-11 15:47:52.000000000 -0500 ++++ ceph-17.2.3/src/s3select/include/s3select_parquet_intrf.h 2022-08-22 10:26:06.738082924 -0400 +@@ -26,6 +26,14 @@ + #include "internal_file_decryptor.h" + #include "encryption_internal.h" + ++#if ARROW_VERSION_MAJOR < 9 ++#define _ARROW_FD fd_ ++#define _ARROW_FD_TYPE int ++#else ++#define _ARROW_FD fd_.fd() ++#define _ARROW_FD_TYPE arrow::internal::FileDescriptor ++#endif ++ + /******************************************/ + /******************************************/ + class optional_yield; +@@ -164,7 +172,7 @@ + std::mutex lock_; + + // File descriptor +- int fd_; ++ _ARROW_FD_TYPE fd_; + + FileMode::type mode_; + +@@ -202,7 +210,7 @@ + mode_ = write_only ? FileMode::WRITE : FileMode::READWRITE; + + if (!truncate) { +- ARROW_ASSIGN_OR_RAISE(size_, ::arrow::internal::FileGetSize(fd_)); ++ ARROW_ASSIGN_OR_RAISE(size_, ::arrow::internal::FileGetSize(_ARROW_FD)); + } else { + size_ = 0; + } +@@ -222,7 +230,11 @@ + RETURN_NOT_OK(SetFileName(fd)); + is_open_ = true; + mode_ = FileMode::WRITE; ++ #if ARROW_VERSION_MAJOR < 9 + fd_ = fd; ++ #else ++ fd_ = arrow::internal::FileDescriptor{fd}; ++ #endif + return Status::OK(); + } + +@@ -230,7 +242,7 @@ + RETURN_NOT_OK(SetFileName(path)); + + ARROW_ASSIGN_OR_RAISE(fd_, ::arrow::internal::FileOpenReadable(file_name_)); +- ARROW_ASSIGN_OR_RAISE(size_, ::arrow::internal::FileGetSize(fd_)); ++ ARROW_ASSIGN_OR_RAISE(size_, ::arrow::internal::FileGetSize(_ARROW_FD)); + + is_open_ = true; + mode_ = FileMode::READ; +@@ -242,7 +254,11 @@ + RETURN_NOT_OK(SetFileName(fd)); + is_open_ = true; + mode_ = FileMode::READ; ++ #if ARROW_VERSION_MAJOR < 9 + fd_ = fd; ++ #else ++ fd_ = arrow::internal::FileDescriptor{fd}; ++ #endif + return Status::OK(); + } + +@@ -258,9 +274,13 @@ + // Even if closing fails, the fd will likely be closed (perhaps it's + // already closed). + is_open_ = false; ++ #if ARROW_VERSION_MAJOR < 9 + int fd = fd_; + fd_ = -1; + RETURN_NOT_OK(::arrow::internal::FileClose(fd)); ++ #else ++ RETURN_NOT_OK(fd_.Close()); ++ #endif + } + return Status::OK(); + } +@@ -268,7 +288,7 @@ + Result Read(int64_t nbytes, void* out) override { + RETURN_NOT_OK(CheckClosed()); + RETURN_NOT_OK(CheckPositioned()); +- return ::arrow::internal::FileRead(fd_, reinterpret_cast(out), nbytes); ++ return ::arrow::internal::FileRead(_ARROW_FD, reinterpret_cast(out), nbytes); + } + + Result ReadAt(int64_t position, int64_t nbytes, void* out) override { +@@ -277,7 +297,7 @@ + // ReadAt() leaves the file position undefined, so require that we seek + // before calling Read() or Write(). + need_seeking_.store(true); +- return ::arrow::internal::FileReadAt(fd_, reinterpret_cast(out), position, ++ return ::arrow::internal::FileReadAt(_ARROW_FD, reinterpret_cast(out), position, + nbytes); + } + +@@ -286,7 +306,7 @@ + if (pos < 0) { + return Status::Invalid("Invalid position"); + } +- Status st = ::arrow::internal::FileSeek(fd_, pos); ++ Status st = ::arrow::internal::FileSeek(_ARROW_FD, pos); + if (st.ok()) { + need_seeking_.store(false); + } +@@ -295,7 +315,7 @@ + + Result Tell() const override { + RETURN_NOT_OK(CheckClosed()); +- return ::arrow::internal::FileTell(fd_); ++ return ::arrow::internal::FileTell(_ARROW_FD); + } + + Status Write(const void* data, int64_t length) override { +@@ -306,11 +326,11 @@ + if (length < 0) { + return Status::IOError("Length must be non-negative"); + } +- return ::arrow::internal::FileWrite(fd_, reinterpret_cast(data), ++ return ::arrow::internal::FileWrite(_ARROW_FD, reinterpret_cast(data), + length); + } + +- int fd() const override { return fd_; } ++ int fd() const override { return _ARROW_FD; } + + bool is_open() const override { return is_open_; } + +@@ -345,7 +365,7 @@ + std::mutex lock_; + + // File descriptor +- int fd_; ++ _ARROW_FD_TYPE fd_; + + FileMode::type mode_; + +@@ -411,7 +431,11 @@ + // already closed). + is_open_ = false; + //int fd = fd_; ++ #if ARROW_VERSION_MAJOR < 9 + fd_ = -1; ++ #else ++ fd_.Close(); ++ #endif + //RETURN_NOT_OK(::arrow::internal::FileClose(fd)); + } + return Status::OK(); +@@ -421,7 +445,7 @@ + NOT_IMPLEMENT; + RETURN_NOT_OK(CheckClosed()); + RETURN_NOT_OK(CheckPositioned()); +- return ::arrow::internal::FileRead(fd_, reinterpret_cast(out), nbytes); ++ return ::arrow::internal::FileRead(_ARROW_FD, reinterpret_cast(out), nbytes); + } + + Result ReadAt(int64_t position, int64_t nbytes, void* out) { +@@ -443,7 +467,7 @@ + return Status::OK(); + } + +- int fd() const { return fd_; } ++ int fd() const { return _ARROW_FD; } + + bool is_open() const { return is_open_; } + +@@ -467,7 +491,7 @@ + std::mutex lock_; + + // File descriptor +- int fd_; ++ _ARROW_FD_TYPE fd_; + + FileMode::type mode_; + +@@ -609,7 +633,7 @@ + for (const auto& range : ranges) { + RETURN_NOT_OK(internal::ValidateRange(range.offset, range.length)); + #if defined(POSIX_FADV_WILLNEED) +- if (posix_fadvise(fd_, range.offset, range.length, POSIX_FADV_WILLNEED)) { ++ if (posix_fadvise(_ARROW_FD, range.offset, range.length, POSIX_FADV_WILLNEED)) { + return IOErrorFromErrno(errno, "posix_fadvise failed"); + } + #elif defined(F_RDADVISE) // macOS, BSD? +@@ -617,7 +641,7 @@ + off_t ra_offset; + int ra_count; + } radvisory{range.offset, static_cast(range.length)}; +- if (radvisory.ra_count > 0 && fcntl(fd_, F_RDADVISE, &radvisory) == -1) { ++ if (radvisory.ra_count > 0 && fcntl(_ARROW_FD, F_RDADVISE, &radvisory) == -1) { + return IOErrorFromErrno(errno, "fcntl(fd, F_RDADVISE, ...) failed"); + } + #endif +@@ -970,6 +994,9 @@ + CryptoContext ctx(col->has_dictionary_page(), row_group_ordinal_, + static_cast(i), meta_decryptor, data_decryptor); + return PageReader::Open(stream, col->num_values(), col->compression(), ++ #if ARROW_VERSION_MAJOR > 8 ++ false, ++ #endif + properties_.memory_pool(), &ctx); + } + +@@ -985,6 +1012,9 @@ + CryptoContext ctx(col->has_dictionary_page(), row_group_ordinal_, + static_cast(i), meta_decryptor, data_decryptor); + return PageReader::Open(stream, col->num_values(), col->compression(), ++ #if ARROW_VERSION_MAJOR > 8 ++ false, ++ #endif + properties_.memory_pool(), &ctx); + } + diff --git a/0024-gcc-13.patch b/0024-gcc-13.patch new file mode 100644 index 0000000000000000000000000000000000000000..a75183afeb34435382f7518bf80b8050e0360662 --- /dev/null +++ b/0024-gcc-13.patch @@ -0,0 +1,102 @@ +--- ceph-17.2.5/src/common/subsys_types.h.orig 2023-01-17 05:29:55.711592884 -0500 ++++ ceph-17.2.5/src/common/subsys_types.h 2023-01-17 05:31:05.759282197 -0500 +@@ -53,7 +53,7 @@ + #undef DEFAULT_SUBSYS + } + +-constexpr static std::uint8_t ++constexpr static uint8_t + ceph_subsys_get_max_default_level(const std::size_t subidx) { + const auto item = ceph_subsys_get_as_array()[subidx]; + return std::max(item.log_level, item.gather_level); +--- ceph-17.2.5/src/msg/async/compression_onwire.h.orig 2023-01-17 07:34:31.923701878 -0500 ++++ ceph-17.2.5/src/msg/async/compression_onwire.h 2023-01-17 07:35:04.493093534 -0500 +@@ -44,7 +44,7 @@ + + class TxHandler final : private Handler { + public: +- TxHandler(CephContext* const cct, CompressorRef compressor, int mode, std::uint64_t min_size) ++ TxHandler(CephContext* const cct, CompressorRef compressor, int mode, uint64_t min_size) + : Handler(cct, compressor), + m_min_size(min_size), + m_mode(static_cast(mode)) +@@ -97,7 +97,7 @@ + static rxtx_t create_handler_pair( + CephContext* ctx, + const CompConnectionMeta& comp_meta, +- std::uint64_t compress_min_size); ++ uint64_t compress_min_size); + }; + } + +--- ceph-17.2.5/src/msg/async/crypto_onwire.h.orig 2023-01-17 07:35:35.535513714 -0500 ++++ ceph-17.2.5/src/msg/async/crypto_onwire.h 2023-01-17 07:35:46.578307452 -0500 +@@ -95,7 +95,7 @@ + // Transmitter can append extra bytes of ciphertext at the -final step. + // This method return how much was added, and thus let client translate + // plaintext size into ciphertext size to grab from wire. +- virtual std::uint32_t get_extra_size_at_final() = 0; ++ virtual uint32_t get_extra_size_at_final() = 0; + + // Instance of RxHandler must be reset before doing any decrypt-update + // step. This applies also to situation when decrypt-final was already +--- ceph-17.2.5/src/common/Cycles.h.orig 2023-01-17 07:56:19.787662012 -0500 ++++ ceph-17.2.5/src/common/Cycles.h 2023-01-17 07:56:57.852980655 -0500 +@@ -29,8 +29,9 @@ + */ + + +-#ifndef CEPH_CYCLES_H +-#define CEPH_CYCLES_H ++#pragma once ++ ++#include + + /** + * This class provides static methods that read the fine-grain CPU +@@ -112,4 +113,3 @@ + } + }; + +-#endif // CEPH_CYCLES_H +--- ceph-17.2.5/src/test/librados/op_speed.cc.orig 2023-01-17 08:57:37.078531022 -0500 ++++ ceph-17.2.5/src/test/librados/op_speed.cc 2023-01-17 08:57:58.259139439 -0500 +@@ -9,7 +9,7 @@ + for (int i = 0; i < to_create; ++i) { + librados::ObjectReadOperation op; + bufferlist bl; +- std::uint64_t sz; ++ uint64_t sz; + struct timespec tm; + std::map xattrs; + std::map omap; +--- ceph-17.2.5/src/test/mon/test_log_rss_usage.cc.orig 2023-01-17 10:14:37.552820230 -0500 ++++ ceph-17.2.5/src/test/mon/test_log_rss_usage.cc 2023-01-17 10:15:12.319202506 -0500 +@@ -5,6 +5,7 @@ + #include + #include + #include ++#include + #include + #include + #include +--- ceph-17.2.5/src/librbd/api/PoolMetadata.h.orig 2023-01-17 13:07:44.701750744 -0500 ++++ ceph-17.2.5/src/librbd/api/PoolMetadata.h 2023-01-17 13:08:10.300301845 -0500 +@@ -9,6 +9,7 @@ + + #include + #include ++#include + + namespace librbd { + +--- ceph-17.2.5/src/rocksdb/db/compaction/compaction_iteration_stats.h.orig 2023-01-26 17:05:20.605333926 -0500 ++++ ceph-17.2.5/src/rocksdb/db/compaction/compaction_iteration_stats.h 2023-01-26 17:05:46.376880846 -0500 +@@ -6,6 +6,7 @@ + #pragma once + + #include "rocksdb/rocksdb_namespace.h" ++#include + + struct CompactionIterationStats { + // Compaction statistics diff --git a/0025-selinux-prepare-for-anon-inode-controls-enablement.patch b/0025-selinux-prepare-for-anon-inode-controls-enablement.patch new file mode 100644 index 0000000000000000000000000000000000000000..b989f9185a0f5282455806adfaa3a805b40db81f --- /dev/null +++ b/0025-selinux-prepare-for-anon-inode-controls-enablement.patch @@ -0,0 +1,42 @@ +From 73218e291ca68a927965bdffa7d43d0fc62c2718 Mon Sep 17 00:00:00 2001 +From: Ondrej Mosnacek +Date: Wed, 27 Jul 2022 17:14:25 +0200 +Subject: [PATCH] selinux: prepare for anon inode controls enablement + +We plan to start labeling anon inodes (userfaultfd and io_uring file +descriptors) properly in selinux-policy, which means that domains using +these will need new rules. + +See: https://github.com/fedora-selinux/selinux-policy/pull/1351 + +Since ceph may optionally use io_uring, this patch adds the necessary +interface call to its policy to avoid a regression. As the new interface +call is put under a conditional, the policy package will be buildable +against selinux-policy with or without the above PR merged, but it will +need to be rebuilt against the updated selinux-policy to actually pick +up the new rules. + +I tested this on a minimal ceph cluster with 'bdev_ioring = true' added +to ceph.conf. I got io_uring denials without this patch + with +selinux-policy with PR#1351 and no denials with ceph rebuilt with this +patch. + +Signed-off-by: Ondrej Mosnacek +--- + selinux/ceph.te | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/selinux/ceph.te b/selinux/ceph.te +index 77d35d9714b60..729bce1fc8589 100644 +--- a/selinux/ceph.te ++++ b/selinux/ceph.te +@@ -75,6 +75,9 @@ manage_lnk_files_pattern(ceph_t, ceph_var_run_t, ceph_var_run_t) + + kernel_read_system_state(ceph_t) + kernel_read_network_state(ceph_t) ++ifdef(`kernel_io_uring_use',` ++ kernel_io_uring_use(ceph_t) ++') + allow ceph_t kernel_t:system module_request; + + corenet_all_recvfrom_unlabeled(ceph_t) diff --git a/0026-src-boost-libs-python-src-object.patch b/0026-src-boost-libs-python-src-object.patch new file mode 100644 index 0000000000000000000000000000000000000000..3ed36b444fabaaa45488d4a346875b07c1011f9d --- /dev/null +++ b/0026-src-boost-libs-python-src-object.patch @@ -0,0 +1,99 @@ +--- ceph-17.2.5/src/boost/libs/python/src/object/enum.cpp.orig 2023-02-23 08:45:36.498595122 -0500 ++++ ceph-17.2.5/src/boost/libs/python/src/object/enum.cpp 2023-02-23 08:46:11.277990890 -0500 +@@ -153,7 +153,7 @@ + { + if (enum_type_object.tp_dict == 0) + { +- Py_TYPE(&enum_type_object) = incref(&PyType_Type); ++ Py_SET_TYPE(&enum_type_object, incref(&PyType_Type)); + #if PY_VERSION_HEX >= 0x03000000 + enum_type_object.tp_base = &PyLong_Type; + #else +--- ceph-17.2.5/src/boost/libs/python/src/object/function.cpp.orig 2023-02-23 08:44:19.995920877 -0500 ++++ ceph-17.2.5/src/boost/libs/python/src/object/function.cpp 2023-02-23 08:45:26.426770100 -0500 +@@ -107,7 +107,7 @@ + PyObject* p = this; + if (Py_TYPE(&function_type) == 0) + { +- Py_TYPE(&function_type) = &PyType_Type; ++ Py_SET_TYPE(&function_type, &PyType_Type); + ::PyType_Ready(&function_type); + } + +--- ceph-17.2.5/src/boost/libs/python/src/object/life_support.cpp.orig 2023-02-23 08:43:37.511650115 -0500 ++++ ceph-17.2.5/src/boost/libs/python/src/object/life_support.cpp 2023-02-23 08:44:10.225088588 -0500 +@@ -93,7 +93,7 @@ + + if (Py_TYPE(&life_support_type) == 0) + { +- Py_TYPE(&life_support_type) = &PyType_Type; ++ Py_SET_TYPE(&life_support_type, &PyType_Type); + PyType_Ready(&life_support_type); + } + +--- ceph-17.2.5/src/boost/libs/python/src/object/class.cpp.orig 2023-02-23 08:46:22.394797757 -0500 ++++ ceph-17.2.5/src/boost/libs/python/src/object/class.cpp 2023-02-23 10:54:56.016527900 -0500 +@@ -21,6 +21,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -208,7 +209,7 @@ + { + if (static_data_object.tp_dict == 0) + { +- Py_TYPE(&static_data_object) = &PyType_Type; ++ Py_SET_TYPE(&static_data_object, &PyType_Type); + static_data_object.tp_base = &PyProperty_Type; + if (PyType_Ready(&static_data_object)) + return 0; +@@ -316,7 +317,7 @@ + { + if (class_metatype_object.tp_dict == 0) + { +- Py_TYPE(&class_metatype_object) = &PyType_Type; ++ Py_SET_TYPE(&class_metatype_object, &PyType_Type); + class_metatype_object.tp_base = &PyType_Type; + if (PyType_Ready(&class_metatype_object)) + return type_handle(); +@@ -374,12 +375,7 @@ + // like, so we'll store the total size of the object + // there. A negative number indicates that the extra + // instance memory is not yet allocated to any holders. +-#if PY_VERSION_HEX >= 0x02060000 +- Py_SIZE(result) = +-#else +- result->ob_size = +-#endif +- -(static_cast(offsetof(instance<>,storage) + instance_size)); ++ Py_SET_SIZE(result,-static_cast(offsetof(instance<>,storage) + instance_size)); + } + return (PyObject*)result; + } +@@ -470,7 +466,7 @@ + { + if (class_type_object.tp_dict == 0) + { +- Py_TYPE(&class_type_object) = incref(class_metatype().get()); ++ Py_SET_TYPE(&class_type_object, incref(class_metatype().get())); + class_type_object.tp_base = &PyBaseObject_Type; + if (PyType_Ready(&class_type_object)) + return type_handle(); +@@ -738,8 +734,13 @@ + // holder_offset should at least point into the variable-sized part + assert(holder_offset >= offsetof(objects::instance<>,storage)); + ++ size_t allocated = holder_size + 8; ++ void* storage = (char*)self + holder_offset; ++ void* aligned_storage = ::boost::alignment::align(8, holder_size, storage, allocated); ++ + // Record the fact that the storage is occupied, noting where it starts +- Py_SIZE(self) = holder_offset; ++ const size_t offset = reinterpret_cast(aligned_storage) - reinterpret_cast(storage) + holder_offset; ++ Py_SET_SIZE(self, offset); + return (char*)self + holder_offset; + } + else diff --git a/ceph-17.2.0-deprecated-boost.patch b/ceph-17.2.0-deprecated-boost.patch new file mode 100644 index 0000000000000000000000000000000000000000..64b6d5c614c801370e612a12ee06966790c73137 --- /dev/null +++ b/ceph-17.2.0-deprecated-boost.patch @@ -0,0 +1,69 @@ +diff --git a/src/common/ConfUtils.cc b/src/common/ConfUtils.cc +index ad791ece4f7..2f78fd02bf9 100644 +--- a/src/common/ConfUtils.cc ++++ b/src/common/ConfUtils.cc +@@ -26,7 +26,7 @@ + #include + #include + #include +-#include ++#include + #include + + #include "include/buffer.h" +diff --git a/src/mds/MDSAuthCaps.cc b/src/mds/MDSAuthCaps.cc +index b78ebd6615b..f8158be6866 100644 +--- a/src/mds/MDSAuthCaps.cc ++++ b/src/mds/MDSAuthCaps.cc +@@ -17,8 +17,8 @@ + #include + + #include +-#include +-#include ++#include ++#include + + #include "common/debug.h" + #include "MDSAuthCaps.h" +diff --git a/src/mgr/MgrCap.cc b/src/mgr/MgrCap.cc +index cba758083c3..6e5e1f9bb99 100644 +--- a/src/mgr/MgrCap.cc ++++ b/src/mgr/MgrCap.cc +@@ -16,7 +16,7 @@ + #include + #include + #include +-#include ++#include + #include + #include + #include +diff --git a/src/mon/MonCap.cc b/src/mon/MonCap.cc +index e1dc3723965..0ff9fefdd15 100644 +--- a/src/mon/MonCap.cc ++++ b/src/mon/MonCap.cc +@@ -16,7 +16,7 @@ + #include + #include + #include +-#include ++#include + #include + #include + #include +diff --git a/src/osd/OSDCap.cc b/src/osd/OSDCap.cc +index e7bf0582799..f847e80e337 100644 +--- a/src/osd/OSDCap.cc ++++ b/src/osd/OSDCap.cc +@@ -14,8 +14,8 @@ + + #include + #include +-#include +-#include ++#include ++#include + #include + + #include "OSDCap.h" diff --git a/ceph-17.2.0-pybind-boost-1.74.patch b/ceph-17.2.0-pybind-boost-1.74.patch new file mode 100644 index 0000000000000000000000000000000000000000..8591b0bc7f89cff836503b51d4e994bbac72c1a2 --- /dev/null +++ b/ceph-17.2.0-pybind-boost-1.74.patch @@ -0,0 +1,26 @@ +diff --git a/src/pybind/CMakeLists.txt b/src/pybind/CMakeLists.txt +index cd9b27623d2..12688ad32b9 100644 +--- a/src/pybind/CMakeLists.txt ++++ b/src/pybind/CMakeLists.txt +@@ -36,6 +36,10 @@ execute_process( + OUTPUT_VARIABLE "PYTHON3_INSTDIR" + OUTPUT_STRIP_TRAILING_WHITESPACE) + ++if(Boost_VERSION VERSION_GREATER_EQUAL 1.74) ++ add_definitions(-DBOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT) ++endif() ++ + install(FILES + ceph_argparse.py + ceph_daemon.py +diff --git a/src/test/librados/CMakeLists.txt b/src/test/librados/CMakeLists.txt +index fc033766cc4..0ba3bc56e98 100644 +--- a/src/test/librados/CMakeLists.txt ++++ b/src/test/librados/CMakeLists.txt +@@ -1,3 +1,6 @@ ++ ++add_definitions(-DBOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT) ++ + # radostest + add_library(radostest_shared OBJECT test_shared.cc) + target_include_directories(radostest_shared PRIVATE diff --git a/ceph-17.2.5-boost-1.81.patch b/ceph-17.2.5-boost-1.81.patch new file mode 100644 index 0000000000000000000000000000000000000000..2dd06edb312fffc00de89d7a06663a2359cb0fdb --- /dev/null +++ b/ceph-17.2.5-boost-1.81.patch @@ -0,0 +1,49 @@ +https://bugs.gentoo.org/887481 +--- a/src/rgw/rgw_asio_client.cc ++++ b/src/rgw/rgw_asio_client.cc +@@ -39,11 +39,11 @@ + const auto& value = header->value(); + + if (field == beast::http::field::content_length) { +- env.set("CONTENT_LENGTH", value.to_string()); ++ env.set("CONTENT_LENGTH", value); + continue; + } + if (field == beast::http::field::content_type) { +- env.set("CONTENT_TYPE", value.to_string()); ++ env.set("CONTENT_TYPE", value); + continue; + } + +@@ -62,26 +62,26 @@ + } + *dest = '\0'; + +- env.set(buf, value.to_string()); ++ env.set(buf, value); + } + + int major = request.version() / 10; + int minor = request.version() % 10; + env.set("HTTP_VERSION", std::to_string(major) + '.' + std::to_string(minor)); + +- env.set("REQUEST_METHOD", request.method_string().to_string()); ++ env.set("REQUEST_METHOD", request.method_string()); + + // split uri from query + auto uri = request.target(); + auto pos = uri.find('?'); + if (pos != uri.npos) { + auto query = uri.substr(pos + 1); +- env.set("QUERY_STRING", query.to_string()); ++ env.set("QUERY_STRING", query); + uri = uri.substr(0, pos); + } +- env.set("SCRIPT_URI", uri.to_string()); ++ env.set("SCRIPT_URI", uri); + +- env.set("REQUEST_URI", request.target().to_string()); ++ env.set("REQUEST_URI", request.target()); + + char port_buf[16]; + snprintf(port_buf, sizeof(port_buf), "%d", local_endpoint.port()); diff --git a/ceph-17.2.3.tar.gz b/ceph-17.2.5.tar.gz similarity index 89% rename from ceph-17.2.3.tar.gz rename to ceph-17.2.5.tar.gz index b14e0b40bb2105e181ff956cc5a3a3a0b9bd19c9..e42c3e3653b4eb33a989073ecba67ef6eb8b5503 100644 Binary files a/ceph-17.2.3.tar.gz and b/ceph-17.2.5.tar.gz differ diff --git a/ceph.spec b/ceph.spec index b87140ea9c5e61181d40fa2d9fc35f9e003b5d4c..5d2b14dd38deaad3ff9b47f269c7e9b20066c552 100644 --- a/ceph.spec +++ b/ceph.spec @@ -1,4 +1,4 @@ -%define anolis_release 2 +%define anolis_release 1 %global _hardened_build 1 %bcond_with make_check @@ -7,6 +7,7 @@ %bcond_without ceph_test_package %bcond_without tcmalloc %bcond_without rbd_ssd_cache +%bcond_without bundled_boost %ifarch x86_64 %bcond_without rbd_rwl_cache %else @@ -67,39 +68,41 @@ # main package definition ################################################################################# Name: ceph -Version: 17.2.3 +Version: 17.2.5 Release: %{anolis_release}%{?dist} Epoch: 2 -# define _epoch_prefix macro which will expand to the empty string if epoch is -# undefined -%global _epoch_prefix %{?epoch:%{epoch}:} - Summary: User space components of the Ceph file system #License: LGPL-2.1 and LGPL-3.0 and CC-BY-SA-3.0 and GPL-2.0 and BSL-1.0 and BSD-3-Clause and MIT License: (LGPLv2+ or LGPLv3) and CC-BY-SA-3.0 and GPLv2 and Boost and BSD and MIT URL: http://ceph.com/ Source0: https://download.ceph.com/tarballs/ceph-%{version}.tar.gz -Patch0001: 0001-src-common-crc32c_intel_fast.patch -Patch0003: 0003-src-common-bitstr.h.patch -Patch0008: 0008-cmake-modules-Finduring.cmake.patch -Patch0010: 0010-CET-Add-CET-marker-to-crc32c_intel_fast_zero_asm.s.patch -Patch0011: 0011-isa-l-CET-Add-CET-marker-to-x86-64-crc32-assembly-co.patch -Patch0012: 0012-spdk-isa-l-CET-Add-CET-marker-to-x86-64-crc32-assemb.patch -Patch0016: 0016-src-tracing-patch -Patch0017: 0017-gcc-12-omnibus.patch -Patch0018: 0018-src-rgw-store-dbstore-CMakeLists.txt.patch -Patch0019: 0019-cmake-modules-CheckCxxAtomic.cmake.patch -Patch0020: 0020-src-arrow-cpp-cmake_modules-ThirdpartyToolchain.cmake.patch -Patch0021: 0021-cephfs-shell.patch -Patch0022: 0022-mon-Replace-deprecated-use-of-format_to.patch +Patch0001: 0001-src-common-crc32c_intel_fast.patch +Patch0003: 0003-src-common-bitstr.h.patch +Patch0008: 0008-cmake-modules-Finduring.cmake.patch +Patch0010: 0010-CET-Add-CET-marker-to-crc32c_intel_fast_zero_asm.s.patch +Patch0011: 0011-isa-l-CET-Add-CET-marker-to-x86-64-crc32-assembly-co.patch +Patch0012: 0012-spdk-isa-l-CET-Add-CET-marker-to-x86-64-crc32-assemb.patch +Patch0016: 0016-src-tracing-patch +Patch0017: 0017-gcc-12-omnibus.patch +Patch0018: 0018-src-rgw-store-dbstore-CMakeLists.txt.patch +Patch0019: 0019-cmake-modules-CheckCxxAtomic.cmake.patch +Patch0020: 0020-src-arrow-cpp-cmake_modules-ThirdpartyToolchain.cmake.patch +Patch0023: 0023-src-s3select-include-s3select_parquet_intrf.h.patch +Patch0024: 0024-gcc-13.patch +Patch0025: 0025-selinux-prepare-for-anon-inode-controls-enablement.patch +%if %{without bundled_boost} +Patch1001: ceph-17.2.0-pybind-boost-1.74.patch +Patch1002: ceph-17.2.5-boost-1.81.patch +Patch1003: ceph-17.2.0-deprecated-boost.patch +%endif ################################################################################# # dependencies that apply across all distro families ################################################################################# -Requires: ceph-osd = %{_epoch_prefix}%{version}-%{release} -Requires: ceph-mds = %{_epoch_prefix}%{version}-%{release} -Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release} -Requires: ceph-mon = %{_epoch_prefix}%{version}-%{release} +Requires: ceph-osd = %{EVR} +Requires: ceph-mds = %{EVR} +Requires: ceph-mgr = %{EVR} +Requires: ceph-mon = %{EVR} Requires(post): binutils %if 0%{with cephfs_java} BuildRequires: java-devel @@ -251,6 +254,9 @@ BuildRequires: libbabeltrace-devel BuildRequires: expat-devel #hardened-cc1 BuildRequires: /usr/bin/pathfix.py +%if %{with bundled_boost} +Provides: bundled(boost) = 1.75.0 +%endif %description Ceph is a massively scalable, open-source, distributed storage system that runs @@ -263,13 +269,13 @@ on commodity hardware and delivers object, block and file system storage. %package base Summary: Ceph Base Package Provides: ceph-test:/usr/bin/ceph-kvstore-tool -Requires: ceph-common = %{_epoch_prefix}%{version}-%{release} -Requires: librbd1 = %{_epoch_prefix}%{version}-%{release} -Requires: librados2 = %{_epoch_prefix}%{version}-%{release} -Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release} -Requires: librgw2 = %{_epoch_prefix}%{version}-%{release} +Requires: ceph-common = %{EVR} +Requires: librbd1 = %{EVR} +Requires: librados2 = %{EVR} +Requires: libcephfs2 = %{EVR} +Requires: librgw2 = %{EVR} %if 0%{with selinux} -Requires: ceph-selinux = %{_epoch_prefix}%{version}-%{release} +Requires: ceph-selinux = %{EVR} %endif Requires: findutils Requires: grep @@ -302,21 +308,21 @@ with systemd and podman. %package -n ceph-common Summary: Ceph Common -Requires: librbd1 = %{_epoch_prefix}%{version}-%{release} -Requires: librados2 = %{_epoch_prefix}%{version}-%{release} -Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release} -Requires: python%{python3_pkgversion}-rados = %{_epoch_prefix}%{version}-%{release} -Requires: python%{python3_pkgversion}-rbd = %{_epoch_prefix}%{version}-%{release} -Requires: python%{python3_pkgversion}-cephfs = %{_epoch_prefix}%{version}-%{release} -Requires: python%{python3_pkgversion}-rgw = %{_epoch_prefix}%{version}-%{release} -Requires: python%{python3_pkgversion}-ceph-argparse = %{_epoch_prefix}%{version}-%{release} -Requires: python%{python3_pkgversion}-ceph-common = %{_epoch_prefix}%{version}-%{release} +Requires: librbd1 = %{EVR} +Requires: librados2 = %{EVR} +Requires: libcephfs2 = %{EVR} +Requires: python%{python3_pkgversion}-rados = %{EVR} +Requires: python%{python3_pkgversion}-rbd = %{EVR} +Requires: python%{python3_pkgversion}-cephfs = %{EVR} +Requires: python%{python3_pkgversion}-rgw = %{EVR} +Requires: python%{python3_pkgversion}-ceph-argparse = %{EVR} +Requires: python%{python3_pkgversion}-ceph-common = %{EVR} %if 0%{with jaeger} -Requires: libjaeger = %{_epoch_prefix}%{version}-%{release} +Requires: libjaeger = %{EVR} %endif Requires: python%{python3_pkgversion}-prettytable %if 0%{with libradosstriper} -Requires: libradosstriper1 = %{_epoch_prefix}%{version}-%{release} +Requires: libradosstriper1 = %{EVR} %endif %{?systemd_requires} Requires: systemd-udev @@ -326,7 +332,7 @@ Comprised of files that are common to Ceph clients and servers. %package mds Summary: Ceph Metadata Server Daemon -Requires: ceph-base = %{_epoch_prefix}%{version}-%{release} +Requires: ceph-base = %{EVR} %description mds ceph-mds is the metadata server daemon for the Ceph distributed file system. One or more instances of ceph-mds collectively manage the file system @@ -335,7 +341,7 @@ namespace, coordinating access to the shared OSD cluster. %package mon Summary: Ceph Monitor Daemon Provides: ceph-test:/usr/bin/ceph-monstore-tool -Requires: ceph-base = %{_epoch_prefix}%{version}-%{release} +Requires: ceph-base = %{EVR} %description mon ceph-mon is the cluster monitor daemon for the Ceph distributed file system. One or more instances of ceph-mon form a Paxos part-time @@ -344,14 +350,14 @@ of cluster membership, configuration, and state. %package mgr Summary: Ceph Manager Daemon -Requires: ceph-base = %{_epoch_prefix}%{version}-%{release} -Requires: ceph-mgr-modules-core = %{_epoch_prefix}%{version}-%{release} -Requires: libcephsqlite = %{_epoch_prefix}%{version}-%{release} +Requires: ceph-base = %{EVR} +Requires: ceph-mgr-modules-core = %{EVR} +Requires: libcephsqlite = %{EVR} %if 0%{?weak_deps} -Recommends: ceph-mgr-dashboard = %{_epoch_prefix}%{version}-%{release} -Recommends: ceph-mgr-diskprediction-local = %{_epoch_prefix}%{version}-%{release} -Recommends: ceph-mgr-k8sevents = %{_epoch_prefix}%{version}-%{release} -Recommends: ceph-mgr-cephadm = %{_epoch_prefix}%{version}-%{release} +Recommends: ceph-mgr-dashboard = %{EVR} +Recommends: ceph-mgr-diskprediction-local = %{EVR} +Recommends: ceph-mgr-k8sevents = %{EVR} +Recommends: ceph-mgr-cephadm = %{EVR} Recommends: python%{python3_pkgversion}-influxdb %endif %description mgr @@ -363,9 +369,9 @@ exposes all these to the python modules. %package mgr-dashboard Summary: Ceph Dashboard BuildArch: noarch -Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release} -Requires: ceph-grafana-dashboards = %{_epoch_prefix}%{version}-%{release} -Requires: ceph-prometheus-alerts = %{_epoch_prefix}%{version}-%{release} +Requires: ceph-mgr = %{EVR} +Requires: ceph-grafana-dashboards = %{EVR} +Requires: ceph-prometheus-alerts = %{EVR} Requires: python%{python3_pkgversion}-cherrypy Requires: python%{python3_pkgversion}-jwt Requires: python%{python3_pkgversion}-routes @@ -382,7 +388,7 @@ detailed feature overview. %package mgr-diskprediction-local Summary: Ceph Manager module for predicting disk failures BuildArch: noarch -Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release} +Requires: ceph-mgr = %{EVR} Requires: python%{python3_pkgversion}-numpy Requires: python%{python3_pkgversion}-scikit-learn Requires: python3-scipy @@ -402,7 +408,7 @@ Requires: python%{python3_pkgversion}-cherrypy Requires: python%{python3_pkgversion}-pyyaml Requires: python%{python3_pkgversion}-werkzeug %if 0%{?weak_deps} -Recommends: ceph-mgr-rook = %{_epoch_prefix}%{version}-%{release} +Recommends: ceph-mgr-rook = %{EVR} %endif %description mgr-modules-core ceph-mgr-modules-core provides a set of modules which are always @@ -411,7 +417,7 @@ enabled by ceph-mgr. %package mgr-rook BuildArch: noarch Summary: Ceph Manager module for Rook-based orchestration -Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release} +Requires: ceph-mgr = %{EVR} Requires: python%{python3_pkgversion}-kubernetes Requires: python%{python3_pkgversion}-jsonpatch %description mgr-rook @@ -421,7 +427,7 @@ a Rook backend. %package mgr-k8sevents BuildArch: noarch Summary: Ceph Manager module to orchestrate ceph-events to kubernetes' events API -Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release} +Requires: ceph-mgr = %{EVR} Requires: python%{python3_pkgversion}-kubernetes %description mgr-k8sevents ceph-mgr-k8sevents is a ceph-mgr module that sends every ceph-events @@ -430,10 +436,10 @@ to kubernetes' events API %package mgr-cephadm Summary: Ceph Manager module for cephadm-based orchestration BuildArch: noarch -Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release} +Requires: ceph-mgr = %{EVR} Requires: python%{python3_pkgversion}-asyncssh Requires: python%{python3_pkgversion}-natsort -Requires: cephadm = %{_epoch_prefix}%{version}-%{release} +Requires: cephadm = %{EVR} Requires: openssh-clients Requires: python%{python3_pkgversion}-cherrypy Requires: python%{python3_pkgversion}-jinja2 @@ -450,50 +456,56 @@ FUSE based client for Ceph distributed network file system %package -n cephfs-mirror Summary: Ceph daemon for mirroring CephFS snapshots -Requires: ceph-base = %{_epoch_prefix}%{version}-%{release} -Requires: librados2 = %{_epoch_prefix}%{version}-%{release} -Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release} +Requires: ceph-base = %{EVR} +Requires: librados2 = %{EVR} +Requires: libcephfs2 = %{EVR} %description -n cephfs-mirror Daemon for mirroring CephFS snapshots between Ceph clusters. +%package -n ceph-exporter +Summary: Daemon for exposing perf counters as Prometheus metrics +Requires: ceph-base = %{EVR} +%description -n ceph-exporter +Daemon for exposing perf counters as Prometheus metrics + %package -n rbd-fuse Summary: Ceph fuse-based client -Requires: librados2 = %{_epoch_prefix}%{version}-%{release} -Requires: librbd1 = %{_epoch_prefix}%{version}-%{release} +Requires: librados2 = %{EVR} +Requires: librbd1 = %{EVR} %description -n rbd-fuse FUSE based client to map Ceph rbd images to files %package -n rbd-mirror Summary: Ceph daemon for mirroring RBD images -Requires: ceph-base = %{_epoch_prefix}%{version}-%{release} -Requires: librados2 = %{_epoch_prefix}%{version}-%{release} -Requires: librbd1 = %{_epoch_prefix}%{version}-%{release} +Requires: ceph-base = %{EVR} +Requires: librados2 = %{EVR} +Requires: librbd1 = %{EVR} %description -n rbd-mirror Daemon for mirroring RBD images between Ceph clusters, streaming changes asynchronously. %package immutable-object-cache Summary: Ceph daemon for immutable object cache -Requires: ceph-base = %{_epoch_prefix}%{version}-%{release} -Requires: librados2 = %{_epoch_prefix}%{version}-%{release} +Requires: ceph-base = %{EVR} +Requires: librados2 = %{EVR} %description immutable-object-cache Daemon for immutable object cache. %package -n rbd-nbd Summary: Ceph RBD client base on NBD -Requires: librados2 = %{_epoch_prefix}%{version}-%{release} -Requires: librbd1 = %{_epoch_prefix}%{version}-%{release} +Requires: librados2 = %{EVR} +Requires: librbd1 = %{EVR} %description -n rbd-nbd NBD based client to map Ceph rbd images to local device %package radosgw Summary: Rados REST gateway -Requires: ceph-base = %{_epoch_prefix}%{version}-%{release} +Requires: ceph-base = %{EVR} %if 0%{with selinux} -Requires: ceph-selinux = %{_epoch_prefix}%{version}-%{release} +Requires: ceph-selinux = %{EVR} %endif -Requires: librados2 = %{_epoch_prefix}%{version}-%{release} -Requires: librgw2 = %{_epoch_prefix}%{version}-%{release} +Requires: librados2 = %{EVR} +Requires: librgw2 = %{EVR} Requires: mailcap %if 0%{?weak_deps} Recommends: gawk @@ -516,7 +528,7 @@ in realtime. %package resource-agents Summary: OCF-compliant resource agents for Ceph daemons BuildArch: noarch -Requires: ceph-base = %{_epoch_prefix}%{version} +Requires: ceph-base = %{EVR} Requires: resource-agents %description resource-agents Resource agents for monitoring and managing Ceph daemons @@ -527,11 +539,11 @@ managers such as Pacemaker. %package osd Summary: Ceph Object Storage Daemon Provides: ceph-test:/usr/bin/ceph-osdomap-tool -Requires: ceph-base = %{_epoch_prefix}%{version}-%{release} +Requires: ceph-base = %{EVR} Requires: sudo Requires: libstoragemgmt %if 0%{?weak_deps} -Recommends: ceph-volume = %{_epoch_prefix}%{version}-%{release} +Recommends: ceph-volume = %{EVR} %endif %description osd ceph-osd is the object storage daemon for the Ceph distributed file @@ -541,7 +553,7 @@ and providing access to them over the network. %package volume Summary: Ceph OSD deployment and inspection tool BuildArch: noarch -Requires: ceph-osd = %{_epoch_prefix}%{version}-%{release} +Requires: ceph-osd = %{EVR} Requires: cryptsetup Requires: e2fsprogs Requires: lvm2 @@ -549,7 +561,7 @@ Requires: parted Requires: util-linux Requires: xfsprogs Requires: python%{python3_pkgversion}-setuptools -Requires: python%{python3_pkgversion}-ceph-common = %{_epoch_prefix}%{version}-%{release} +Requires: python%{python3_pkgversion}-ceph-common = %{EVR} %description volume This package contains a tool to deploy OSD with different devices like lvm or physical disks, and trying to follow a predictable, and robust @@ -557,7 +569,7 @@ way of preparing, activating, and starting the deployed OSD. %package -n librados2 Summary: RADOS distributed object store client library -Obsoletes: ceph-libs < %{_epoch_prefix}%{version}-%{release} +Obsoletes: ceph-libs < %{EVR} %description -n librados2 RADOS is a reliable, autonomic distributed object storage cluster developed as part of the Ceph distributed storage system. This is a @@ -566,46 +578,46 @@ store using a simple file-like interface. %package -n librados-devel Summary: RADOS headers -Requires: librados2 = %{_epoch_prefix}%{version}-%{release} -Obsoletes: ceph-devel < %{_epoch_prefix}%{version}-%{release} -Provides: librados2-devel = %{_epoch_prefix}%{version}-%{release} -Obsoletes: librados2-devel < %{_epoch_prefix}%{version}-%{release} +Requires: librados2 = %{EVR} +Obsoletes: ceph-devel < %{EVR} +Provides: librados2-devel = %{EVR} +Obsoletes: librados2-devel < %{EVR} %description -n librados-devel This package contains C libraries and headers needed to develop programs that use RADOS object store. %package -n libradospp-devel Summary: RADOS headers -Requires: librados2 = %{_epoch_prefix}%{version}-%{release} -Requires: librados-devel = %{_epoch_prefix}%{version}-%{release} +Requires: librados2 = %{EVR} +Requires: librados-devel = %{EVR} %description -n libradospp-devel This package contains C++ libraries and headers needed to develop programs that use RADOS object store. %package -n librgw2 Summary: RADOS gateway client library -Requires: librados2 = %{_epoch_prefix}%{version}-%{release} +Requires: librados2 = %{EVR} %description -n librgw2 This package provides a library implementation of the RADOS gateway (distributed object store with S3 and Swift personalities). %package -n librgw-devel Summary: RADOS gateway client library -Requires: librados-devel = %{_epoch_prefix}%{version}-%{release} -Requires: librgw2 = %{_epoch_prefix}%{version}-%{release} -Provides: librgw2-devel = %{_epoch_prefix}%{version}-%{release} -Obsoletes: librgw2-devel < %{_epoch_prefix}%{version}-%{release} +Requires: librados-devel = %{EVR} +Requires: librgw2 = %{EVR} +Provides: librgw2-devel = %{EVR} +Obsoletes: librgw2-devel < %{EVR} %description -n librgw-devel This package contains libraries and headers needed to develop programs that use RADOS gateway client library. %package -n python%{python3_pkgversion}-rgw Summary: Python 3 libraries for the RADOS gateway -Requires: librgw2 = %{_epoch_prefix}%{version}-%{release} -Requires: python%{python3_pkgversion}-rados = %{_epoch_prefix}%{version}-%{release} +Requires: librgw2 = %{EVR} +Requires: python%{python3_pkgversion}-rados = %{EVR} %{?python_provide:%python_provide python%{python3_pkgversion}-rgw} -Provides: python-rgw = %{_epoch_prefix}%{version}-%{release} -Obsoletes: python-rgw < %{_epoch_prefix}%{version}-%{release} +Provides: python-rgw = %{EVR} +Obsoletes: python-rgw < %{EVR} %description -n python%{python3_pkgversion}-rgw This package contains Python 3 libraries for interacting with Ceph RADOS gateway. @@ -613,17 +625,17 @@ gateway. %package -n python%{python3_pkgversion}-rados Summary: Python 3 libraries for the RADOS object store Requires: python%{python3_pkgversion} -Requires: librados2 = %{_epoch_prefix}%{version}-%{release} +Requires: librados2 = %{EVR} %{?python_provide:%python_provide python%{python3_pkgversion}-rados} -Provides: python-rados = %{_epoch_prefix}%{version}-%{release} -Obsoletes: python-rados < %{_epoch_prefix}%{version}-%{release} +Provides: python-rados = %{EVR} +Obsoletes: python-rados < %{EVR} %description -n python%{python3_pkgversion}-rados This package contains Python 3 libraries for interacting with Ceph RADOS object store. %package -n libcephsqlite Summary: SQLite3 VFS for Ceph -Requires: librados2 = %{_epoch_prefix}%{version}-%{release} +Requires: librados2 = %{EVR} %description -n libcephsqlite A SQLite3 VFS for storing and manipulating databases stored on Ceph's RADOS distributed object store. @@ -631,12 +643,12 @@ distributed object store. %package -n libcephsqlite-devel Summary: SQLite3 VFS for Ceph headers Requires: sqlite-devel -Requires: libcephsqlite = %{_epoch_prefix}%{version}-%{release} -Requires: librados-devel = %{_epoch_prefix}%{version}-%{release} -Requires: libradospp-devel = %{_epoch_prefix}%{version}-%{release} -Obsoletes: ceph-devel < %{_epoch_prefix}%{version}-%{release} -Provides: libcephsqlite-devel = %{_epoch_prefix}%{version}-%{release} -Obsoletes: libcephsqlite-devel < %{_epoch_prefix}%{version}-%{release} +Requires: libcephsqlite = %{EVR} +Requires: librados-devel = %{EVR} +Requires: libradospp-devel = %{EVR} +Obsoletes: ceph-devel < %{EVR} +Provides: libcephsqlite-devel = %{EVR} +Obsoletes: libcephsqlite-devel < %{EVR} %description -n libcephsqlite-devel A SQLite3 VFS for storing and manipulating databases stored on Ceph's RADOS distributed object store. @@ -644,7 +656,7 @@ distributed object store. %if 0%{with libradosstriper} %package -n libradosstriper1 Summary: RADOS striping interface -Requires: librados2 = %{_epoch_prefix}%{version}-%{release} +Requires: librados2 = %{EVR} %description -n libradosstriper1 Striping interface built on top of the rados library, allowing to stripe bigger objects onto several standard rados objects using @@ -652,12 +664,12 @@ an interface very similar to the rados one. %package -n libradosstriper-devel Summary: RADOS striping interface headers -Requires: libradosstriper1 = %{_epoch_prefix}%{version}-%{release} -Requires: librados-devel = %{_epoch_prefix}%{version}-%{release} -Requires: libradospp-devel = %{_epoch_prefix}%{version}-%{release} -Obsoletes: ceph-devel < %{_epoch_prefix}%{version}-%{release} -Provides: libradosstriper1-devel = %{_epoch_prefix}%{version}-%{release} -Obsoletes: libradosstriper1-devel < %{_epoch_prefix}%{version}-%{release} +Requires: libradosstriper1 = %{EVR} +Requires: librados-devel = %{EVR} +Requires: libradospp-devel = %{EVR} +Obsoletes: ceph-devel < %{EVR} +Provides: libradosstriper1-devel = %{EVR} +Obsoletes: libradosstriper1-devel < %{EVR} %description -n libradosstriper-devel This package contains libraries and headers needed to develop programs that use RADOS striping interface. @@ -665,8 +677,8 @@ that use RADOS striping interface. %package -n librbd1 Summary: RADOS block device client library -Requires: librados2 = %{_epoch_prefix}%{version}-%{release} -Obsoletes: ceph-libs < %{_epoch_prefix}%{version}-%{release} +Requires: librados2 = %{EVR} +Obsoletes: ceph-libs < %{EVR} %description -n librbd1 RBD is a block device striped across multiple distributed objects in RADOS, a reliable, autonomic distributed object storage cluster @@ -675,32 +687,32 @@ shared library allowing applications to manage these block devices. %package -n librbd-devel Summary: RADOS block device headers -Requires: librbd1 = %{_epoch_prefix}%{version}-%{release} -Requires: librados-devel = %{_epoch_prefix}%{version}-%{release} -Requires: libradospp-devel = %{_epoch_prefix}%{version}-%{release} -Obsoletes: ceph-devel < %{_epoch_prefix}%{version}-%{release} -Provides: librbd1-devel = %{_epoch_prefix}%{version}-%{release} -Obsoletes: librbd1-devel < %{_epoch_prefix}%{version}-%{release} +Requires: librbd1 = %{EVR} +Requires: librados-devel = %{EVR} +Requires: libradospp-devel = %{EVR} +Obsoletes: ceph-devel < %{EVR} +Provides: librbd1-devel = %{EVR} +Obsoletes: librbd1-devel < %{EVR} %description -n librbd-devel This package contains libraries and headers needed to develop programs that use RADOS block device. %package -n python%{python3_pkgversion}-rbd Summary: Python 3 libraries for the RADOS block device -Requires: librbd1 = %{_epoch_prefix}%{version}-%{release} -Requires: python%{python3_pkgversion}-rados = %{_epoch_prefix}%{version}-%{release} +Requires: librbd1 = %{EVR} +Requires: python%{python3_pkgversion}-rados = %{EVR} %{?python_provide:%python_provide python%{python3_pkgversion}-rbd} -Provides: python-rbd = %{_epoch_prefix}%{version}-%{release} -Obsoletes: python-rbd < %{_epoch_prefix}%{version}-%{release} +Provides: python-rbd = %{EVR} +Obsoletes: python-rbd < %{EVR} %description -n python%{python3_pkgversion}-rbd This package contains Python 3 libraries for interacting with Ceph RADOS block device. %package -n libcephfs2 Summary: Ceph distributed file system client library -Obsoletes: libcephfs1 < %{_epoch_prefix}%{version}-%{release} -Obsoletes: ceph-libs < %{_epoch_prefix}%{version}-%{release} -Obsoletes: ceph-libcephfs < %{_epoch_prefix}%{version}-%{release} +Obsoletes: libcephfs1 < %{EVR} +Obsoletes: ceph-libs < %{EVR} +Obsoletes: ceph-libcephfs < %{EVR} %description -n libcephfs2 Ceph is a distributed network file system designed to provide excellent performance, reliability, and scalability. This is a shared library @@ -709,23 +721,23 @@ POSIX-like interface. %package -n libcephfs-devel Summary: Ceph distributed file system headers -Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release} -Requires: librados-devel = %{_epoch_prefix}%{version}-%{release} -Obsoletes: ceph-devel < %{_epoch_prefix}%{version}-%{release} -Provides: libcephfs2-devel = %{_epoch_prefix}%{version}-%{release} -Obsoletes: libcephfs2-devel < %{_epoch_prefix}%{version}-%{release} +Requires: libcephfs2 = %{EVR} +Requires: librados-devel = %{EVR} +Obsoletes: ceph-devel < %{EVR} +Provides: libcephfs2-devel = %{EVR} +Obsoletes: libcephfs2-devel < %{EVR} %description -n libcephfs-devel This package contains libraries and headers needed to develop programs that use Ceph distributed file system. %package -n python%{python3_pkgversion}-cephfs Summary: Python 3 libraries for Ceph distributed file system -Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release} -Requires: python%{python3_pkgversion}-rados = %{_epoch_prefix}%{version}-%{release} -Requires: python%{python3_pkgversion}-ceph-argparse = %{_epoch_prefix}%{version}-%{release} +Requires: libcephfs2 = %{EVR} +Requires: python%{python3_pkgversion}-rados = %{EVR} +Requires: python%{python3_pkgversion}-ceph-argparse = %{EVR} %{?python_provide:%python_provide python%{python3_pkgversion}-cephfs} -Provides: python-cephfs = %{_epoch_prefix}%{version}-%{release} -Obsoletes: python-cephfs < %{_epoch_prefix}%{version}-%{release} +Provides: python-cephfs = %{EVR} +Obsoletes: python-cephfs < %{EVR} %description -n python%{python3_pkgversion}-cephfs This package contains Python 3 libraries for interacting with Ceph distributed file system. @@ -762,7 +774,7 @@ works like an FTP client. %if 0%{with ceph_test_package} %package -n ceph-test Summary: Ceph benchmarks and test tools -Requires: ceph-common = %{_epoch_prefix}%{version}-%{release} +Requires: ceph-common = %{EVR} Requires: xmlstarlet Requires: jq Requires: socat @@ -777,7 +789,7 @@ This package contains Ceph benchmarks and test tools. %package -n libcephfs_jni1 Summary: Java Native Interface library for CephFS Java bindings Requires: java -Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release} +Requires: libcephfs2 = %{EVR} %description -n libcephfs_jni1 This package contains the Java Native Interface library for CephFS Java bindings. @@ -785,10 +797,10 @@ bindings. %package -n libcephfs_jni-devel Summary: Development files for CephFS Java Native Interface library Requires: java -Requires: libcephfs_jni1 = %{_epoch_prefix}%{version}-%{release} -Obsoletes: ceph-devel < %{_epoch_prefix}%{version}-%{release} -Provides: libcephfs_jni1-devel = %{_epoch_prefix}%{version}-%{release} -Obsoletes: libcephfs_jni1-devel < %{_epoch_prefix}%{version}-%{release} +Requires: libcephfs_jni1 = %{EVR} +Obsoletes: ceph-devel < %{EVR} +Provides: libcephfs_jni1-devel = %{EVR} +Obsoletes: libcephfs_jni1-devel < %{EVR} %description -n libcephfs_jni-devel This package contains the development files for CephFS Java Native Interface library. @@ -796,7 +808,7 @@ library. %package -n cephfs-java Summary: Java libraries for the Ceph File System Requires: java -Requires: libcephfs_jni1 = %{_epoch_prefix}%{version}-%{release} +Requires: libcephfs_jni1 = %{EVR} Requires: junit BuildRequires: junit %description -n cephfs-java @@ -806,7 +818,7 @@ This package contains the Java libraries for the Ceph File System. %package -n rados-objclass-devel Summary: RADOS object class development kit -Requires: libradospp-devel = %{_epoch_prefix}%{version}-%{release} +Requires: libradospp-devel = %{EVR} %description -n rados-objclass-devel This package contains libraries and headers needed to develop RADOS object class plugins. @@ -815,9 +827,9 @@ class plugins. %package selinux Summary: SELinux support for Ceph MON, OSD and MDS -Requires: ceph-base = %{_epoch_prefix}%{version}-%{release} +Requires: ceph-base = %{EVR} Requires: policycoreutils, libselinux-utils -Requires(post): ceph-base = %{_epoch_prefix}%{version}-%{release} +Requires(post): ceph-base = %{EVR} Requires(post): selinux-policy-base >= %{_selinux_policy_version}, policycoreutils, gawk Requires(postun): policycoreutils %description selinux @@ -899,7 +911,11 @@ env | sort -DWITH_OCF:BOOL=ON \ %endif -DWITH_SYSTEM_LIBURING:BOOL=ON \ +%if 0%{with bundled_boost} + -DWITH_SYSTEM_BOOST:BOOL=OFF \ +%else -DWITH_SYSTEM_BOOST:BOOL=ON \ +%endif %if 0%{with cephfs_shell} -DWITH_CEPHFS_SHELL:BOOL=ON \ %endif @@ -1082,7 +1098,6 @@ install -m 644 -D monitoring/ceph-mixin/prometheus_alerts.yml %{buildroot}/etc/p %{_sysconfdir}/sudoers.d/ceph-smartctl %post base -/sbin/ldconfig %systemd_post ceph.target ceph-crash.service if [ $1 -eq 1 ] ; then /usr/bin/systemctl start ceph.target ceph-crash.service >/dev/null 2>&1 || : @@ -1092,7 +1107,6 @@ fi %systemd_preun ceph.target ceph-crash.service %postun base -/sbin/ldconfig %systemd_postun ceph.target %pre -n cephadm @@ -1415,6 +1429,9 @@ if [ $1 -ge 1 ] ; then fi fi +%files -n ceph-exporter +%{_bindir}/ceph-exporter + %files -n rbd-fuse %{_bindir}/rbd-fuse %{_mandir}/man8/rbd-fuse.8* @@ -1926,6 +1943,10 @@ exit 0 %config %{_sysconfdir}/prometheus/ceph/ceph_default_alerts.yml %changelog +* Thu Mar 02 2023 Funda Wang - 17.2.5-1 +- New version 17.2.5 +- Build with bundled boost for now, 17.x does not support boost 1.81 + * Wed Dec 07 2022 Chunmei Xu - 17.2.3-2 - rebuild with icu update