From f52b5ed6474529eb8d5ce3c8d88259dc5c271d9f Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Fri, 30 Sep 2022 15:56:17 -0400 Subject: [PATCH 01/60] ceph-17.2.4 GA Signed-off-by: Kaleb S. KEITHLEY --- 0017-gcc-12-omnibus.patch | 20 --------- ceph.spec | 90 +++++++++++++++++++++++++++------------ sources | 2 +- 3 files changed, 64 insertions(+), 48 deletions(-) diff --git a/0017-gcc-12-omnibus.patch b/0017-gcc-12-omnibus.patch index 7e4f116..4440750 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/ceph.spec b/ceph.spec index 4cac54b..c25c654 100644 --- a/ceph.spec +++ b/ceph.spec @@ -120,6 +120,8 @@ %{!?python3_pkgversion: %global python3_pkgversion 3} %{!?python3_version_nodots: %global python3_version_nodots 3} %{!?python3_version: %global python3_version 3} +%{!?gts_prefix: %global gts_prefix gcc-toolset-11} + %if ! 0%{?suse_version} # use multi-threaded xz compression: xz level 7 using ncpus threads @@ -147,19 +149,20 @@ %endif %endif -%if 0%{with seastar} -# disable -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1, as gcc-toolset-{9,10}-annobin +# disable -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1, as gcc-toolset-{10,11}-annobin # do not provide gcc-annobin.so anymore, despite that they provide annobin.so. but # redhat-rpm-config still passes -fplugin=gcc-annobin to the compiler. %undefine _annotated_build +%if 0%{?rhel} == 8 && 0%{?enable_devtoolset11:1} +%enable_devtoolset11 %endif ################################################################################# # main package definition ################################################################################# Name: ceph -Version: 17.2.3 -Release: 5%{?dist} +Version: 17.2.4 +Release: 1%{?dist} %if 0%{?fedora} || 0%{?rhel} Epoch: 2 %endif @@ -176,7 +179,6 @@ Group: System/Filesystems %endif URL: http://ceph.com/ Source0: https://download.ceph.com/tarballs/ceph-%{version}.tar.gz -#Source0: https://1.chacra.ceph.com/r/ceph/quincy/... Patch0001: 0001-src-common-crc32c_intel_fast.patch Patch0003: 0003-src-common-bitstr.h.patch Patch0008: 0008-cmake-modules-Finduring.cmake.patch @@ -188,8 +190,6 @@ 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 Patch0023: 0023-src-s3select-include-s3select_parquet_intrf.h.patch # ceph 14.0.1 does not support 32-bit architectures, bugs #1727788, #1727787 ExcludeArch: i686 armv7hl @@ -216,9 +216,18 @@ BuildRequires: selinux-policy-devel BuildRequires: gperf BuildRequires: cmake > 3.5 BuildRequires: fuse3-devel -%if 0%{with seastar} && 0%{?rhel} -BuildRequires: gcc-toolset-9-gcc-c++ >= 9.2.1-2.3 -%else +%if 0%{?fedora} || 0%{?suse_version} || 0%{?rhel} == 9 +BuildRequires: gcc-c++ >= 11 +%endif +%if 0%{?rhel} == 8 +BuildRequires: %{gts_prefix}-gcc-c++ +BuildRequires: %{gts_prefix}-build +%ifarch aarch64 +BuildRequires: %{gts_prefix}-libatomic-devel +%endif +%endif +%if 0%{?fedora} || 0%{?rhel} == 9 +BuildRequires: libatomic BuildRequires: gcc-c++ %endif BuildRequires: libatomic @@ -228,11 +237,11 @@ BuildRequires: mold %if 0%{with tcmalloc} # libprofiler did not build on ppc64le until 2.7.90 %if 0%{?fedora} || 0%{?rhel} >= 8 -BuildRequires: gperftools-devel >= 2.7.90 -BuildRequires: libunwind-devel +BuildRequires: gperftools-devel >= 2.7.90 +BuildRequires: libunwind-devel %endif %if 0%{?rhel} && 0%{?rhel} < 8 -BuildRequires: gperftools-devel >= 2.6.1 +BuildRequires: gperftools-devel >= 2.6.1 %endif %if 0%{?suse_version} BuildRequires: gperftools-devel >= 2.4 @@ -299,6 +308,8 @@ BuildRequires: python%{python3_pkgversion}-dateutil BuildRequires: python%{python3_pkgversion}-coverage BuildRequires: python%{python3_pkgversion}-pyOpenSSL BuildRequires: socat +BuildRequires: python%{python3_pkgversion}-asyncssh +BuildRequires: python%{python3_pkgversion}-natsort %endif %if 0%{with zbd} BuildRequires: libzbd-devel @@ -344,13 +355,12 @@ BuildRequires: systemtap-sdt-devel %if 0%{?fedora} BuildRequires: libubsan BuildRequires: libasan -BuildRequires: libatomic %endif -%if 0%{?rhel} -BuildRequires: gcc-toolset-9-annobin -BuildRequires: gcc-toolset-9-libubsan-devel -BuildRequires: gcc-toolset-9-libasan-devel -BuildRequires: gcc-toolset-9-libatomic-devel +%if 0%{?rhel} == 8 +BuildRequires: %{gts_prefix}-annobin +BuildRequires: %{gts_prefix}-annobin-plugin-gcc +BuildRequires: %{gts_prefix}-libubsan-devel +BuildRequires: %{gts_prefix}-libasan-devel %endif %endif ################################################################################# @@ -381,6 +391,7 @@ BuildRequires: rdma-core-devel BuildRequires: liblz4-devel >= 1.7 # for prometheus-alerts BuildRequires: golang-github-prometheus-prometheus +BuildRequires: jsonnet %endif %if 0%{?fedora} || 0%{?rhel} Requires: systemd @@ -424,6 +435,7 @@ BuildRequires: python%{python3_pkgversion}-pyOpenSSL %endif %if 0%{?suse_version} BuildRequires: golang-github-prometheus-prometheus +BuildRequires: jsonnet BuildRequires: libxmlsec1-1 BuildRequires: libxmlsec1-nss1 BuildRequires: libxmlsec1-openssl1 @@ -623,6 +635,7 @@ Group: System/Filesystems Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release} Requires: ceph-grafana-dashboards = %{_epoch_prefix}%{version}-%{release} Requires: ceph-prometheus-alerts = %{_epoch_prefix}%{version}-%{release} +Requires: python%{python3_pkgversion}-setuptools %if 0%{?fedora} || 0%{?rhel} Requires: python%{python3_pkgversion}-cherrypy Requires: python%{python3_pkgversion}-jwt @@ -749,9 +762,9 @@ Requires: python%{python3_pkgversion} FUSE based client for Ceph distributed network file system %package -n cephfs-mirror -Summary: Ceph daemon for mirroring CephFS snapshots +Summary: Ceph daemon for mirroring CephFS snapshots %if 0%{?suse_version} -Group: System/Filesystems +Group: System/Filesystems %endif Requires: ceph-base = %{_epoch_prefix}%{version}-%{release} Requires: librados2 = %{_epoch_prefix}%{version}-%{release} @@ -759,6 +772,15 @@ Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release} %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 +%if 0%{?suse_version} +Group: System/Filesystems +%endif +Requires: ceph-base = %{_epoch_prefix}%{version}-%{release} +%description -n ceph-exporter +Daemon for exposing perf counters as Prometheus metrics + %package -n rbd-fuse Summary: Ceph fuse-based client %if 0%{?suse_version} @@ -816,7 +838,7 @@ Requires: librgw2 = %{_epoch_prefix}%{version}-%{release} Requires: mailcap %endif %if 0%{?weak_deps} -Recommends: gawk +Recommends: gawk %endif %description radosgw RADOS is a distributed object store used by the Ceph distributed @@ -1293,10 +1315,6 @@ This package provides Ceph default alerts for Prometheus. %endif -%if 0%{with seastar} && 0%{?rhel} -. /opt/rh/gcc-toolset-9/enable -%endif - %if 0%{with cephfs_java} # Find jni.h for i in /usr/{lib64,lib}/jvm/java/include{,/linux}; do @@ -1313,7 +1331,12 @@ export CFLAGS="$RPM_OPT_FLAGS" export CXXFLAGS="$RPM_OPT_FLAGS" export LDFLAGS="$RPM_LD_FLAGS" - +# Workaround to https://tracker.ceph.com/issues/56610 +%if 0%{?fedora} >= 37 +export CFLAGS="$RPM_OPT_FLAGS -DFMT_DEPRECATED_OSTREAM" +export CXXFLAGS="$RPM_OPT_FLAGS -DFMT_DEPRECATED_OSTREAM" +%endif + # Workaround to https://tracker.ceph.com/issues/56610 %if 0%{?fedora} >= 37 || 0%{?rhel} >= 10 export CFLAGS="$RPM_OPT_FLAGS -DFMT_DEPRECATED_OSTREAM" @@ -1342,6 +1365,9 @@ env | sort -DWITH_MANPAGE:BOOL=ON \ -DWITH_PYTHON3:STRING=%{python3_version} \ -DWITH_MGR_DASHBOARD_FRONTEND:BOOL=OFF \ +%if 0%{?suse_version} + -DWITH_RADOSGW_SELECT_PARQUET:BOOL=OFF \ +%endif %if 0%{without ceph_test_package} -DWITH_TESTS:BOOL=OFF \ %endif @@ -1426,6 +1452,10 @@ env | sort %endif %ifarch x86_64 aarch64 -DCMAKE_LINKER=%{_bindir}/ld.mold \ +%endif +%if 0%{with seastar} + -DWITH_SEASTAR:BOOL=ON \ + -DWITH_JAEGER:BOOL=OFF \ %endif -DWITH_GRAFANA:BOOL=ON @@ -2004,6 +2034,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* @@ -2590,6 +2623,9 @@ exit 0 %config %{_sysconfdir}/prometheus/ceph/ceph_default_alerts.yml %changelog +* Fri Sep 30 2022 Kaleb S. KEITHLEY - 2:17.2.4-1 +- ceph-17.2.4 GA + * Mon Aug 22 2022 Kaleb S. KEITHLEY - 2:17.2.3-5 - ceph-17.2.3 revised patch for libarrow-9.0.0 diff --git a/sources b/sources index a1a5efc..c7bc69e 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (ceph-17.2.3.tar.gz) = fd6e057ba8440f69423e870dddb2705d68015089ff8d97356bdc359c2ab41e19351fb1c914330de6ba05180f48e328e3ea4c877e9dd80be049e2ec5895068595 +SHA512 (ceph-17.2.4.tar.gz) = 430e916004a697bddda8cb7a83026b6e0e2b2e618e645df48c0580d16d7370d5a40d94b802db5b344faeab7c4e48d65c8ade47d0cbf0eaa0e7ddf399b09a279d From af3d1fd70c502e0f0d1b044b6d8e91d583c7505a Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Tue, 18 Oct 2022 13:15:59 -0400 Subject: [PATCH 02/60] ceph-17.2.5 GA Signed-off-by: Kaleb S. KEITHLEY --- ceph.spec | 5 ++++- sources | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/ceph.spec b/ceph.spec index c25c654..b8daa3b 100644 --- a/ceph.spec +++ b/ceph.spec @@ -161,7 +161,7 @@ # main package definition ################################################################################# Name: ceph -Version: 17.2.4 +Version: 17.2.5 Release: 1%{?dist} %if 0%{?fedora} || 0%{?rhel} Epoch: 2 @@ -2623,6 +2623,9 @@ exit 0 %config %{_sysconfdir}/prometheus/ceph/ceph_default_alerts.yml %changelog +* Tue Oct 18 2022 Kaleb S. KEITHLEY - 2:17.2.5-1 +- ceph-17.2.5 GA + * Fri Sep 30 2022 Kaleb S. KEITHLEY - 2:17.2.4-1 - ceph-17.2.4 GA diff --git a/sources b/sources index c7bc69e..c7aea68 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (ceph-17.2.4.tar.gz) = 430e916004a697bddda8cb7a83026b6e0e2b2e618e645df48c0580d16d7370d5a40d94b802db5b344faeab7c4e48d65c8ade47d0cbf0eaa0e7ddf399b09a279d +SHA512 (ceph-17.2.5.tar.gz) = 10cd3d9eb01c91c148a92f1f7d040bbd78af5bb1ab15d071d93f54b37097dc9e1268eed9e788fe32794d137f6af81abd6a2aeaee39cef44d2c45234a15cc6020 From 2d1c189958f726fa228101c20284a8ddd8475a4d Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Fri, 11 Nov 2022 13:15:00 -0500 Subject: [PATCH 03/60] SPDX migration Signed-off-by: Kaleb S. KEITHLEY --- ceph.spec | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/ceph.spec b/ceph.spec index b8daa3b..c3d31f4 100644 --- a/ceph.spec +++ b/ceph.spec @@ -173,7 +173,8 @@ Epoch: 2 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 +#License: (LGPLv2+ or LGPLv3) and CC-BY-SA-3.0 and GPLv2 and Boost and BSD and MIT +License: (LGPL-2.1-or-later OR LGPL-3.0-only) and CC-BY-SA-3.0 and GPL-2.0-only and BSL-1.0 and BSD-3-Clause and MIT %if 0%{?suse_version} Group: System/Filesystems %endif @@ -497,7 +498,7 @@ Summary: Ceph Base Package %if 0%{?suse_version} Group: System/Filesystems %endif -Provides: ceph-test:/usr/bin/ceph-kvstore-tool +Provides: ceph-test:/usr/bin/ceph-kvstore-tool = %{_epoch_prefix}%{version}-%{release} Requires: ceph-common = %{_epoch_prefix}%{version}-%{release} Requires: librbd1 = %{_epoch_prefix}%{version}-%{release} Requires: librados2 = %{_epoch_prefix}%{version}-%{release} @@ -597,7 +598,7 @@ Summary: Ceph Monitor Daemon %if 0%{?suse_version} Group: System/Filesystems %endif -Provides: ceph-test:/usr/bin/ceph-monstore-tool +Provides: ceph-test:/usr/bin/ceph-monstore-tool = %{_epoch_prefix}%{version}-%{release} Requires: ceph-base = %{_epoch_prefix}%{version}-%{release} %description mon ceph-mon is the cluster monitor daemon for the Ceph distributed file @@ -874,7 +875,7 @@ Summary: Ceph Object Storage Daemon %if 0%{?suse_version} Group: System/Filesystems %endif -Provides: ceph-test:/usr/bin/ceph-osdomap-tool +Provides: ceph-test:/usr/bin/ceph-osdomap-tool = %{_epoch_prefix}%{version}-%{release} Requires: ceph-base = %{_epoch_prefix}%{version}-%{release} Requires: sudo Requires: libstoragemgmt @@ -1191,7 +1192,7 @@ Requires: python%{python3_pkgversion}-colorama Requires: python%{python3_pkgversion}-cephfs %description -n cephfs-shell This package contains an interactive tool that allows accessing a Ceph -file system without mounting it by providing a nice pseudo-shell which +file system without mounting it by providing a nice pseudo-shell which works like an FTP client. %endif @@ -2623,6 +2624,9 @@ exit 0 %config %{_sysconfdir}/prometheus/ceph/ceph_default_alerts.yml %changelog +* Fri Nov 11 2022 Kaleb S. KEITHLEY +- SPDX migration + * Tue Oct 18 2022 Kaleb S. KEITHLEY - 2:17.2.5-1 - ceph-17.2.5 GA @@ -2872,15 +2876,15 @@ exit 0 - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild * Tue Jul 21 2020 Kaleb S. KEITHLEY - 2:15.2.4-9 -- %cmake_build and %cmake_install +- %%cmake_build and %%cmake_install * Mon Jul 20 2020 Kaleb S. KEITHLEY - 2:15.2.4-8 - see 15.2.4-4 (f33-java11) for real this time -- and use %make_install macro +- and use %%make_install macro * Mon Jul 20 2020 Kaleb S. KEITHLEY - 2:15.2.4-7 - see 15.2.4-3, hopefully for real this time -- and use %make_install macro +- and use %%make_install macro * Fri Jul 17 2020 Kaleb S. KEITHLEY - 2:15.2.4-6 - see 15.2.4-4 From f6485b3ab1fe39129dd401be7afc969bf0638d56 Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Thu, 1 Dec 2022 21:23:28 -0500 Subject: [PATCH 04/60] ceph-17.2.5, rebuild with libarrow-10 Signed-off-by: Kaleb S. KEITHLEY --- ceph.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ceph.spec b/ceph.spec index c3d31f4..b76e041 100644 --- a/ceph.spec +++ b/ceph.spec @@ -162,7 +162,7 @@ ################################################################################# Name: ceph Version: 17.2.5 -Release: 1%{?dist} +Release: 2%{?dist} %if 0%{?fedora} || 0%{?rhel} Epoch: 2 %endif @@ -2624,6 +2624,9 @@ exit 0 %config %{_sysconfdir}/prometheus/ceph/ceph_default_alerts.yml %changelog +* Thu Dec 1 2022 Kaleb S. KEITHLEY - 2:17.2.5-2 +- ceph-17.2.5, rebuild with libarrow-10 + * Fri Nov 11 2022 Kaleb S. KEITHLEY - SPDX migration From e6b3456a6908968f8e5b7e7e54202040f708fdc2 Mon Sep 17 00:00:00 2001 From: Pete Walter Date: Sat, 31 Dec 2022 04:01:46 +0000 Subject: [PATCH 05/60] Rebuild for ICU 72 --- ceph.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ceph.spec b/ceph.spec index b76e041..cc075eb 100644 --- a/ceph.spec +++ b/ceph.spec @@ -162,7 +162,7 @@ ################################################################################# Name: ceph Version: 17.2.5 -Release: 2%{?dist} +Release: 3%{?dist} %if 0%{?fedora} || 0%{?rhel} Epoch: 2 %endif @@ -2624,6 +2624,9 @@ exit 0 %config %{_sysconfdir}/prometheus/ceph/ceph_default_alerts.yml %changelog +* Sat Dec 31 2022 Pete Walter - 2:17.2.5-3 +- Rebuild for ICU 72 + * Thu Dec 1 2022 Kaleb S. KEITHLEY - 2:17.2.5-2 - ceph-17.2.5, rebuild with libarrow-10 From 945dc70d291321704f3218faa7c3efe70687ce27 Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Tue, 17 Jan 2023 16:00:06 -0500 Subject: [PATCH 06/60] ceph-17.2.5, rebuild with gcc-13 Signed-off-by: Kaleb S. KEITHLEY --- 0024-gcc-13.patch | 92 +++++++++++++++++++++++++++++++++++++++++++++++ ceph.spec | 6 +++- 2 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 0024-gcc-13.patch diff --git a/0024-gcc-13.patch b/0024-gcc-13.patch new file mode 100644 index 0000000..ff250c4 --- /dev/null +++ b/0024-gcc-13.patch @@ -0,0 +1,92 @@ +--- 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 { + diff --git a/ceph.spec b/ceph.spec index b76e041..5012feb 100644 --- a/ceph.spec +++ b/ceph.spec @@ -162,7 +162,7 @@ ################################################################################# Name: ceph Version: 17.2.5 -Release: 2%{?dist} +Release: 3%{?dist} %if 0%{?fedora} || 0%{?rhel} Epoch: 2 %endif @@ -192,6 +192,7 @@ 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 # ceph 14.0.1 does not support 32-bit architectures, bugs #1727788, #1727787 ExcludeArch: i686 armv7hl %if 0%{?suse_version} @@ -2624,6 +2625,9 @@ exit 0 %config %{_sysconfdir}/prometheus/ceph/ceph_default_alerts.yml %changelog +* Tue Jan 17 2023 Kaleb S. KEITHLEY - 2:17.2.5-3 +- ceph-17.2.5, rebuild with gcc-13 + * Thu Dec 1 2022 Kaleb S. KEITHLEY - 2:17.2.5-2 - ceph-17.2.5, rebuild with libarrow-10 From 339f628c148d7ccc902974632d1c3c77669c19e1 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 18 Jan 2023 23:41:54 +0000 Subject: [PATCH 07/60] Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- ceph.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ceph.spec b/ceph.spec index ce2d588..436127e 100644 --- a/ceph.spec +++ b/ceph.spec @@ -162,7 +162,7 @@ ################################################################################# Name: ceph Version: 17.2.5 -Release: 4%{?dist} +Release: 5%{?dist} %if 0%{?fedora} || 0%{?rhel} Epoch: 2 %endif @@ -2625,6 +2625,9 @@ exit 0 %config %{_sysconfdir}/prometheus/ceph/ceph_default_alerts.yml %changelog +* Wed Jan 18 2023 Fedora Release Engineering - 2:17.2.5-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + * Tue Jan 17 2023 Kaleb S. KEITHLEY - 2:17.2.5-4 - ceph-17.2.5, rebuild with gcc-13 From da92657ed98f0c57ab72262d94e26374ee1992d0 Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Fri, 20 Jan 2023 16:13:04 -0500 Subject: [PATCH 08/60] Use _fortify_level to disable fortification. Signed-off-by: Kaleb S. KEITHLEY --- ...e-for-anon-inode-controls-enablement.patch | 42 +++++++++++++++++++ ceph.spec | 14 ++++--- 2 files changed, 51 insertions(+), 5 deletions(-) create mode 100644 0025-selinux-prepare-for-anon-inode-controls-enablement.patch 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 0000000..b989f91 --- /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/ceph.spec b/ceph.spec index 436127e..99e05a4 100644 --- a/ceph.spec +++ b/ceph.spec @@ -162,7 +162,7 @@ ################################################################################# Name: ceph Version: 17.2.5 -Release: 5%{?dist} +Release: 6%{?dist} %if 0%{?fedora} || 0%{?rhel} Epoch: 2 %endif @@ -193,6 +193,7 @@ 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 # ceph 14.0.1 does not support 32-bit architectures, bugs #1727788, #1727787 ExcludeArch: i686 armv7hl %if 0%{?suse_version} @@ -1347,10 +1348,7 @@ export CXXFLAGS="$RPM_OPT_FLAGS -DFMT_DEPRECATED_OSTREAM" %if 0%{with seastar} # seastar uses longjmp() to implement coroutine. and this annoys longjmp_chk() -export CXXFLAGS=$(echo $RPM_OPT_FLAGS | sed -e 's/-Wp,-D_FORTIFY_SOURCE=2//g') -# remove from CFLAGS too because it causes the arrow submodule to fail with: -# warning _FORTIFY_SOURCE requires compiling with optimization (-O) -export CFLAGS=$(echo $RPM_OPT_FLAGS | sed -e 's/-Wp,-D_FORTIFY_SOURCE=2//g') +%undefine _fortify_level %endif env | sort @@ -2625,6 +2623,12 @@ exit 0 %config %{_sysconfdir}/prometheus/ceph/ceph_default_alerts.yml %changelog +* Fri Jan 20 2023 Siddhesh Poyarekar - 2:17.2.5-6 +- Use _fortify_level to disable fortification. + +* Thu Jan 19 2023 Ondrej Mosnacek +- Prepare for anon inode SELinux controls enablement + * Wed Jan 18 2023 Fedora Release Engineering - 2:17.2.5-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild From 0cef2ba27d5009cba426fd88ecfe8f2ac92e6d09 Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Tue, 24 Jan 2023 10:01:05 -0500 Subject: [PATCH 09/60] ceph-17.2.5, rebuild with gtest-13 rhbz#2163823 Signed-off-by: Kaleb S. KEITHLEY --- ceph.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ceph.spec b/ceph.spec index 99e05a4..1fe2c2c 100644 --- a/ceph.spec +++ b/ceph.spec @@ -162,7 +162,7 @@ ################################################################################# Name: ceph Version: 17.2.5 -Release: 6%{?dist} +Release: 7%{?dist} %if 0%{?fedora} || 0%{?rhel} Epoch: 2 %endif @@ -2623,6 +2623,9 @@ exit 0 %config %{_sysconfdir}/prometheus/ceph/ceph_default_alerts.yml %changelog +* Tue Jan 24 2023 Kaleb S. KEITHLEY - 2:17.2.5-7 +- ceph-17.2.5, rebuild with gtest-13 rhbz#2163823 + * Fri Jan 20 2023 Siddhesh Poyarekar - 2:17.2.5-6 - Use _fortify_level to disable fortification. From c63ac8cd1c617e0a69820de09e5281d41a38e270 Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Thu, 26 Jan 2023 18:31:47 -0500 Subject: [PATCH 10/60] ceph-17.2.5, rocksdb on ELN Signed-off-by: Kaleb S. KEITHLEY --- 0024-gcc-13.patch | 10 ++++++++++ ceph.spec | 9 ++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/0024-gcc-13.patch b/0024-gcc-13.patch index ff250c4..a75183a 100644 --- a/0024-gcc-13.patch +++ b/0024-gcc-13.patch @@ -90,3 +90,13 @@ 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/ceph.spec b/ceph.spec index 1fe2c2c..55c1318 100644 --- a/ceph.spec +++ b/ceph.spec @@ -162,7 +162,7 @@ ################################################################################# Name: ceph Version: 17.2.5 -Release: 7%{?dist} +Release: 8%{?dist} %if 0%{?fedora} || 0%{?rhel} Epoch: 2 %endif @@ -256,7 +256,7 @@ BuildRequires: cryptsetup-devel BuildRequires: libcurl-devel BuildRequires: libcap-ng-devel BuildRequires: fmt-devel >= 6.2.1 -%if 0%{?fedora} +%if 0%{?fedora} || 0%{?rhel} >= 10 BuildRequires: rocksdb-devel Requires: rocksdb %endif @@ -1388,7 +1388,7 @@ env | sort %if 0%{with ocf} -DWITH_OCF:BOOL=ON \ %endif -%if 0%{?fedora} +%if 0%{?fedora} || 0%{?rhel} >= 10 -DWITH_SYSTEM_ROCKSDB:BOOL=ON \ %endif -DWITH_SYSTEM_LIBURING:BOOL=ON \ @@ -2623,6 +2623,9 @@ exit 0 %config %{_sysconfdir}/prometheus/ceph/ceph_default_alerts.yml %changelog +* Thu Jan 26 2023 Kaleb S. KEITHLEY - 2:17.2.5-8 +- ceph-17.2.5, rocksdb on ELN + * Tue Jan 24 2023 Kaleb S. KEITHLEY - 2:17.2.5-7 - ceph-17.2.5, rebuild with gtest-13 rhbz#2163823 From 68c121780b598a7fd44b35f5caf0333cdd1b715c Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Fri, 27 Jan 2023 07:44:15 -0500 Subject: [PATCH 11/60] ceph-17.2.5, more ELN (rhel 10) Signed-off-by: Kaleb S. KEITHLEY --- ceph.spec | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/ceph.spec b/ceph.spec index 55c1318..61ba48d 100644 --- a/ceph.spec +++ b/ceph.spec @@ -93,7 +93,7 @@ %endif %bcond_with seastar %bcond_with jaeger -%if 0%{?fedora} || 0%{?suse_version} >= 1500 +%if 0%{?fedora} || 0%{?suse_version} >= 1500 || 0%{?rhel} >= 10 # distros that ship cmd2 and/or colorama %bcond_without cephfs_shell %else @@ -162,7 +162,7 @@ ################################################################################# Name: ceph Version: 17.2.5 -Release: 8%{?dist} +Release: 9%{?dist} %if 0%{?fedora} || 0%{?rhel} Epoch: 2 %endif @@ -355,7 +355,7 @@ BuildRequires: libpciaccess-devel BuildRequires: lksctp-tools-devel BuildRequires: ragel BuildRequires: systemtap-sdt-devel -%if 0%{?fedora} +%if 0%{?fedora} || 0%{?rhel} >= 10 BuildRequires: libubsan BuildRequires: libasan %endif @@ -669,7 +669,7 @@ Group: System/Filesystems %endif Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release} Requires: python%{python3_pkgversion}-numpy -%if 0%{?fedora} || 0%{?suse_version} +%if 0%{?fedora} || 0%{?suse_version} || 0%{?rhel} >= 10 Requires: python%{python3_pkgversion}-scikit-learn %endif Requires: python3-scipy @@ -1334,12 +1334,6 @@ export CFLAGS="$RPM_OPT_FLAGS" export CXXFLAGS="$RPM_OPT_FLAGS" export LDFLAGS="$RPM_LD_FLAGS" -# Workaround to https://tracker.ceph.com/issues/56610 -%if 0%{?fedora} >= 37 -export CFLAGS="$RPM_OPT_FLAGS -DFMT_DEPRECATED_OSTREAM" -export CXXFLAGS="$RPM_OPT_FLAGS -DFMT_DEPRECATED_OSTREAM" -%endif - # Workaround to https://tracker.ceph.com/issues/56610 %if 0%{?fedora} >= 37 || 0%{?rhel} >= 10 export CFLAGS="$RPM_OPT_FLAGS -DFMT_DEPRECATED_OSTREAM" @@ -2623,8 +2617,11 @@ exit 0 %config %{_sysconfdir}/prometheus/ceph/ceph_default_alerts.yml %changelog +* Fri Jan 27 2023 Kaleb S. KEITHLEY - 2:17.2.5-9 +- ceph-17.2.5, more ELN (rhel 10) + * Thu Jan 26 2023 Kaleb S. KEITHLEY - 2:17.2.5-8 -- ceph-17.2.5, rocksdb on ELN +- ceph-17.2.5, rocksdb on ELN (rhel 10) * Tue Jan 24 2023 Kaleb S. KEITHLEY - 2:17.2.5-7 - ceph-17.2.5, rebuild with gtest-13 rhbz#2163823 From 1fd4067b593e14c816041873f834c03c5ab7aec5 Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Wed, 15 Feb 2023 17:56:26 -0500 Subject: [PATCH 12/60] ceph-17.2.5, rebuild with libarrow-11 Signed-off-by: Kaleb S. KEITHLEY --- ceph.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ceph.spec b/ceph.spec index 61ba48d..c4c9a21 100644 --- a/ceph.spec +++ b/ceph.spec @@ -162,7 +162,7 @@ ################################################################################# Name: ceph Version: 17.2.5 -Release: 9%{?dist} +Release: 10%{?dist} %if 0%{?fedora} || 0%{?rhel} Epoch: 2 %endif @@ -2617,6 +2617,9 @@ exit 0 %config %{_sysconfdir}/prometheus/ceph/ceph_default_alerts.yml %changelog +* Wed Feb 15 2023 Kaleb S. KEITHLEY - 2:17.2.5-10 +- ceph-17.2.5, rebuild with libarrow-11 + * Fri Jan 27 2023 Kaleb S. KEITHLEY - 2:17.2.5-9 - ceph-17.2.5, more ELN (rhel 10) From 0d92b145fb7fe59f12495872ecaf8a12662ca745 Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Fri, 17 Feb 2023 10:40:07 -0500 Subject: [PATCH 13/60] ceph-17.2.5, rebuild with libarrow-11, this time for real Signed-off-by: Kaleb S. KEITHLEY --- ceph.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ceph.spec b/ceph.spec index c4c9a21..6394815 100644 --- a/ceph.spec +++ b/ceph.spec @@ -162,7 +162,7 @@ ################################################################################# Name: ceph Version: 17.2.5 -Release: 10%{?dist} +Release: 11%{?dist} %if 0%{?fedora} || 0%{?rhel} Epoch: 2 %endif @@ -2617,6 +2617,9 @@ exit 0 %config %{_sysconfdir}/prometheus/ceph/ceph_default_alerts.yml %changelog +* Fri Feb 17 2023 Kaleb S. KEITHLEY - 2:17.2.5-11 +- ceph-17.2.5, rebuild with libarrow-11, this time for real + * Wed Feb 15 2023 Kaleb S. KEITHLEY - 2:17.2.5-10 - ceph-17.2.5, rebuild with libarrow-11 From 32b1af1542c92746297ba7f88d7d4aa62d408212 Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Mon, 20 Feb 2023 21:49:50 +0000 Subject: [PATCH 14/60] Rebuilt for Boost 1.81 --- ceph.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ceph.spec b/ceph.spec index 6394815..86899c1 100644 --- a/ceph.spec +++ b/ceph.spec @@ -162,7 +162,7 @@ ################################################################################# Name: ceph Version: 17.2.5 -Release: 11%{?dist} +Release: 12%{?dist} %if 0%{?fedora} || 0%{?rhel} Epoch: 2 %endif @@ -2617,6 +2617,9 @@ exit 0 %config %{_sysconfdir}/prometheus/ceph/ceph_default_alerts.yml %changelog +* Mon Feb 20 2023 Jonathan Wakely - 2:17.2.5-12 +- Rebuilt for Boost 1.81 + * Fri Feb 17 2023 Kaleb S. KEITHLEY - 2:17.2.5-11 - ceph-17.2.5, rebuild with libarrow-11, this time for real From c613a7913d23494c958f1548e3ee76753d1f7226 Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Wed, 22 Feb 2023 20:49:33 -0500 Subject: [PATCH 15/60] ceph-17.2.5, rebuild with bundled boost until boost-1.81 compatible Signed-off-by: Kaleb S. KEITHLEY --- ceph.spec | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/ceph.spec b/ceph.spec index 86899c1..b8e2c1b 100644 --- a/ceph.spec +++ b/ceph.spec @@ -162,7 +162,7 @@ ################################################################################# Name: ceph Version: 17.2.5 -Release: 12%{?dist} +Release: 13%{?dist} %if 0%{?fedora} || 0%{?rhel} Epoch: 2 %endif @@ -1386,7 +1386,7 @@ env | sort -DWITH_SYSTEM_ROCKSDB:BOOL=ON \ %endif -DWITH_SYSTEM_LIBURING:BOOL=ON \ - -DWITH_SYSTEM_BOOST:BOOL=ON \ + -DWITH_SYSTEM_BOOST:BOOL=OFF \ %if 0%{with cephfs_shell} -DWITH_CEPHFS_SHELL:BOOL=ON \ %endif @@ -2617,6 +2617,9 @@ exit 0 %config %{_sysconfdir}/prometheus/ceph/ceph_default_alerts.yml %changelog +* Wed Feb 22 2023 Kaleb S. KEITHLEY - 2:17.2.5-13 +- ceph-17.2.5, rebuild with bundled boost until boost-1.81 compatible + * Mon Feb 20 2023 Jonathan Wakely - 2:17.2.5-12 - Rebuilt for Boost 1.81 From f33cca0cb61eb9cda807c39550fbc18d9a534dc7 Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Thu, 23 Feb 2023 11:15:25 -0500 Subject: [PATCH 16/60] ceph-17.2.5, rebuild with bundled boost until boost-1.81 compatible Signed-off-by: Kaleb S. KEITHLEY --- 0026-src-boost-libs-python-src-object.patch | 99 +++++++++++++++++++++ ceph.spec | 1 + 2 files changed, 100 insertions(+) create mode 100644 0026-src-boost-libs-python-src-object.patch 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 0000000..3ed36b4 --- /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.spec b/ceph.spec index b8e2c1b..5db3ca0 100644 --- a/ceph.spec +++ b/ceph.spec @@ -194,6 +194,7 @@ 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 +Patch0026: 0026-src-boost-libs-python-src-object.patch # ceph 14.0.1 does not support 32-bit architectures, bugs #1727788, #1727787 ExcludeArch: i686 armv7hl %if 0%{?suse_version} From aaedf07964a23306f46c8eb9a53fd57acdf08f3f Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Fri, 7 Apr 2023 07:39:30 -0400 Subject: [PATCH 17/60] ceph-17.2.6 GA Signed-off-by: Kaleb S. KEITHLEY --- ceph.spec | 10 ++++++---- sources | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/ceph.spec b/ceph.spec index 5db3ca0..6e72214 100644 --- a/ceph.spec +++ b/ceph.spec @@ -20,8 +20,6 @@ # please read this for explanation of bcond syntax: # https://rpm-software-management.github.io/rpm/manual/conditionalbuilds.html ################################################################################# -%global _hardened_build 1 - %bcond_with make_check %bcond_with zbd %bcond_with cmake_verbose_logging @@ -161,8 +159,8 @@ # main package definition ################################################################################# Name: ceph -Version: 17.2.5 -Release: 13%{?dist} +Version: 17.2.6 +Release: 1%{?dist} %if 0%{?fedora} || 0%{?rhel} Epoch: 2 %endif @@ -689,6 +687,7 @@ Requires: python%{python3_pkgversion}-pecan Requires: python%{python3_pkgversion}-pyOpenSSL Requires: python%{python3_pkgversion}-requests Requires: python%{python3_pkgversion}-dateutil +Requires: python%{python3_pkgversion}-setuptools %if 0%{?fedora} || 0%{?rhel} >= 8 Requires: python%{python3_pkgversion}-cherrypy Requires: python%{python3_pkgversion}-pyyaml @@ -2618,6 +2617,9 @@ exit 0 %config %{_sysconfdir}/prometheus/ceph/ceph_default_alerts.yml %changelog +* Fri Apr 7 2023 Kaleb S. KEITHLEY - 2:17.2.6-1 +- ceph-17.2.6 GA + * Wed Feb 22 2023 Kaleb S. KEITHLEY - 2:17.2.5-13 - ceph-17.2.5, rebuild with bundled boost until boost-1.81 compatible diff --git a/sources b/sources index c7aea68..11254c3 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (ceph-17.2.5.tar.gz) = 10cd3d9eb01c91c148a92f1f7d040bbd78af5bb1ab15d071d93f54b37097dc9e1268eed9e788fe32794d137f6af81abd6a2aeaee39cef44d2c45234a15cc6020 +SHA512 (ceph-17.2.6.tar.gz) = dca9aea2ce210c15fcc34cb06a5dc5b4488ffa36d684166d47ebd87e48b54b6fee0882e1c67007a780e1c25754e9bc6e760cc10f60ea1183263f8504ef2dbd9b From 4844e582ac01b671091d5ca24638e6895de2d5a1 Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Thu, 20 Apr 2023 10:05:42 -0400 Subject: [PATCH 18/60] ceph-17.2.6, rebuild with rocksdb-8.0.0 Signed-off-by: Kaleb S. KEITHLEY --- ceph.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ceph.spec b/ceph.spec index 6e72214..e9b5cd4 100644 --- a/ceph.spec +++ b/ceph.spec @@ -160,7 +160,7 @@ ################################################################################# Name: ceph Version: 17.2.6 -Release: 1%{?dist} +Release: 2%{?dist} %if 0%{?fedora} || 0%{?rhel} Epoch: 2 %endif @@ -2617,6 +2617,9 @@ exit 0 %config %{_sysconfdir}/prometheus/ceph/ceph_default_alerts.yml %changelog +* Thu Apr 20 2023 Kaleb S. KEITHLEY - 2:17.2.6-2 +- ceph-17.2.6, rebuild with rocksdb-8.0.0 + * Fri Apr 7 2023 Kaleb S. KEITHLEY - 2:17.2.6-1 - ceph-17.2.6 GA From 58319e8d4405bf60590fe8cfec755c8bc53a2121 Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Thu, 20 Apr 2023 10:56:03 -0400 Subject: [PATCH 19/60] patch0027 --- ceph.spec | 1 + 1 file changed, 1 insertion(+) diff --git a/ceph.spec b/ceph.spec index e9b5cd4..8499f58 100644 --- a/ceph.spec +++ b/ceph.spec @@ -193,6 +193,7 @@ 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 Patch0026: 0026-src-boost-libs-python-src-object.patch +Patch0027: 0027-src-kv-rocksdb_cache-ShardedCache.h.patch # ceph 14.0.1 does not support 32-bit architectures, bugs #1727788, #1727787 ExcludeArch: i686 armv7hl %if 0%{?suse_version} From 460ba1ceb564aa02d8343e7ca7a1133ff6cc99af Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Thu, 20 Apr 2023 10:57:15 -0400 Subject: [PATCH 20/60] patch0027 --- 0027-src-kv-rocksdb_cache-ShardedCache.h.patch | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 0027-src-kv-rocksdb_cache-ShardedCache.h.patch diff --git a/0027-src-kv-rocksdb_cache-ShardedCache.h.patch b/0027-src-kv-rocksdb_cache-ShardedCache.h.patch new file mode 100644 index 0000000..2bcd909 --- /dev/null +++ b/0027-src-kv-rocksdb_cache-ShardedCache.h.patch @@ -0,0 +1,11 @@ +--- ceph-17.2.6/src/kv/rocksdb_cache/ShardedCache.h.orig 2023-04-20 10:53:44.854094016 -0400 ++++ ceph-17.2.6/src/kv/rocksdb_cache/ShardedCache.h 2023-04-20 10:54:09.320659022 -0400 +@@ -15,7 +15,7 @@ + #include + + #include "rocksdb/version.h" +-#include "rocksdb/cache.h" ++#include "rocksdb/advanced_cache.h" + #include "include/ceph_hash.h" + #include "common/PriorityCache.h" + //#include "hash.h" From 2fec333c00eb59668a96eb3245c05af709002912 Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Thu, 20 Apr 2023 11:39:30 -0400 Subject: [PATCH 21/60] patch0027 again --- ...-src-kv-rocksdb_cache-ShardedCache.h.patch | 30 ++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/0027-src-kv-rocksdb_cache-ShardedCache.h.patch b/0027-src-kv-rocksdb_cache-ShardedCache.h.patch index 2bcd909..538f144 100644 --- a/0027-src-kv-rocksdb_cache-ShardedCache.h.patch +++ b/0027-src-kv-rocksdb_cache-ShardedCache.h.patch @@ -1,5 +1,5 @@ --- ceph-17.2.6/src/kv/rocksdb_cache/ShardedCache.h.orig 2023-04-20 10:53:44.854094016 -0400 -+++ ceph-17.2.6/src/kv/rocksdb_cache/ShardedCache.h 2023-04-20 10:54:09.320659022 -0400 ++++ ceph-17.2.6/src/kv/rocksdb_cache/ShardedCache.h 2023-04-20 11:39:12.847646205 -0400 @@ -15,7 +15,7 @@ #include @@ -9,3 +9,31 @@ #include "include/ceph_hash.h" #include "common/PriorityCache.h" //#include "hash.h" +@@ -68,8 +68,8 @@ + virtual const char* Name() const override = 0; + virtual rocksdb::Status Insert(const rocksdb::Slice& key, void* value, size_t charge, + DeleterFn, +- rocksdb::Cache::Handle** handle, Priority priority) override; +- virtual rocksdb::Cache::Handle* Lookup(const rocksdb::Slice& key, rocksdb::Statistics* stats) override; ++ rocksdb::Cache::Handle** handle, Priority priority); ++ virtual rocksdb::Cache::Handle* Lookup(const rocksdb::Slice& key, rocksdb::Statistics* stats); + virtual bool Ref(rocksdb::Cache::Handle* handle) override; + virtual bool Release(rocksdb::Cache::Handle* handle, bool force_erase = false) override; + virtual void* Value(Handle* handle) override = 0; +@@ -84,14 +84,14 @@ + virtual size_t GetPinnedUsage() const override; + virtual size_t GetCharge(Handle* handle) const = 0; + #if (ROCKSDB_MAJOR >= 7 || (ROCKSDB_MAJOR == 6 && ROCKSDB_MINOR >= 22)) +- virtual DeleterFn GetDeleter(Handle* handle) const override; ++ virtual DeleterFn GetDeleter(Handle* handle) const; + #endif + virtual void DisownData() override = 0; + #if (ROCKSDB_MAJOR >= 7 || (ROCKSDB_MAJOR == 6 && ROCKSDB_MINOR >= 22)) + virtual void ApplyToAllEntries( + const std::function& callback, +- const ApplyToAllEntriesOptions& opts) override; ++ const ApplyToAllEntriesOptions& opts); + #else + virtual void ApplyToAllCacheEntries(void (*callback)(void*, size_t), + bool thread_safe) override; From 3d4788fc3e438a6b35e6bd6430dbec66b790b21d Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Thu, 20 Apr 2023 13:56:14 -0400 Subject: [PATCH 22/60] patch0027 --- ...-src-kv-rocksdb_cache-ShardedCache.h.patch | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/0027-src-kv-rocksdb_cache-ShardedCache.h.patch b/0027-src-kv-rocksdb_cache-ShardedCache.h.patch index 538f144..4ed7f36 100644 --- a/0027-src-kv-rocksdb_cache-ShardedCache.h.patch +++ b/0027-src-kv-rocksdb_cache-ShardedCache.h.patch @@ -37,3 +37,55 @@ #else virtual void ApplyToAllCacheEntries(void (*callback)(void*, size_t), bool thread_safe) override; +--- ceph-17.2.6/src/kv/RocksDBStore.cc.orig 2023-04-20 13:27:30.331781763 -0400 ++++ ceph-17.2.6/src/kv/RocksDBStore.cc 2023-04-20 13:54:20.742215113 -0400 +@@ -903,6 +903,19 @@ + // base_name - name of column without shard suffix: "-"+number + // options - additional options to apply + // cf_opt - column family options to update ++ ++Status GetColumnFamilyOptionsFromMap( ++ const ColumnFamilyOptions& base_options, ++ const std::unordered_map& opts_map, ++ ColumnFamilyOptions* new_options, bool input_strings_escaped, ++ bool ignore_unknown_options) { ++ ConfigOptions config_options; ++ config_options.ignore_unknown_options = ignore_unknown_options; ++ config_options.input_strings_escaped = input_strings_escaped; ++ return rocksdb::GetColumnFamilyOptionsFromMap(config_options, base_options, opts_map, ++ new_options); ++} ++ + int RocksDBStore::update_column_family_options(const std::string& base_name, + const std::string& more_options, + rocksdb::ColumnFamilyOptions* cf_opt) +@@ -916,7 +929,7 @@ + << " options=" << more_options << dendl; + return r; + } +- status = rocksdb::GetColumnFamilyOptionsFromMap(*cf_opt, options_map, cf_opt); ++ status = GetColumnFamilyOptionsFromMap(*cf_opt, options_map, cf_opt, false); + if (!status.ok()) { + dout(5) << __func__ << " invalid column family optionsp; column family=" + << base_name << " options=" << more_options << dendl; +@@ -937,6 +950,20 @@ + return 0; + } + ++Status GetBlockBasedTableOptionsFromMap( ++ const BlockBasedTableOptions& table_options, ++ const std::unordered_map& opts_map, ++ BlockBasedTableOptions* new_table_options, bool input_strings_escaped, ++ bool ignore_unknown_options) { ++ ConfigOptions config_options; ++ config_options.input_strings_escaped = input_strings_escaped; ++ config_options.ignore_unknown_options = ignore_unknown_options; ++ config_options.invoke_prepare_options = false; ++ ++ return rocksdb::GetBlockBasedTableOptionsFromMap(config_options, table_options, ++ opts_map, new_table_options); ++} ++ + int RocksDBStore::apply_block_cache_options(const std::string& column_name, + const std::string& block_cache_opt, + rocksdb::ColumnFamilyOptions* cf_opt) From e5f159485648a6d52f19d47e799c924eeb787fe8 Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Sat, 22 Apr 2023 10:08:11 -0400 Subject: [PATCH 23/60] ceph-17.2.6, rebuild with bundled rocksdb until ready for rocksdb-8.x Signed-off-by: Kaleb S. KEITHLEY --- ...-src-kv-rocksdb_cache-ShardedCache.h.patch | 91 ------------------- ...-block_based-data_block_hash_index.h.patch | 40 ++++++++ ceph.spec | 6 +- 3 files changed, 43 insertions(+), 94 deletions(-) delete mode 100644 0027-src-kv-rocksdb_cache-ShardedCache.h.patch create mode 100644 0027-src-rocksdb-table-block_based-data_block_hash_index.h.patch diff --git a/0027-src-kv-rocksdb_cache-ShardedCache.h.patch b/0027-src-kv-rocksdb_cache-ShardedCache.h.patch deleted file mode 100644 index 4ed7f36..0000000 --- a/0027-src-kv-rocksdb_cache-ShardedCache.h.patch +++ /dev/null @@ -1,91 +0,0 @@ ---- ceph-17.2.6/src/kv/rocksdb_cache/ShardedCache.h.orig 2023-04-20 10:53:44.854094016 -0400 -+++ ceph-17.2.6/src/kv/rocksdb_cache/ShardedCache.h 2023-04-20 11:39:12.847646205 -0400 -@@ -15,7 +15,7 @@ - #include - - #include "rocksdb/version.h" --#include "rocksdb/cache.h" -+#include "rocksdb/advanced_cache.h" - #include "include/ceph_hash.h" - #include "common/PriorityCache.h" - //#include "hash.h" -@@ -68,8 +68,8 @@ - virtual const char* Name() const override = 0; - virtual rocksdb::Status Insert(const rocksdb::Slice& key, void* value, size_t charge, - DeleterFn, -- rocksdb::Cache::Handle** handle, Priority priority) override; -- virtual rocksdb::Cache::Handle* Lookup(const rocksdb::Slice& key, rocksdb::Statistics* stats) override; -+ rocksdb::Cache::Handle** handle, Priority priority); -+ virtual rocksdb::Cache::Handle* Lookup(const rocksdb::Slice& key, rocksdb::Statistics* stats); - virtual bool Ref(rocksdb::Cache::Handle* handle) override; - virtual bool Release(rocksdb::Cache::Handle* handle, bool force_erase = false) override; - virtual void* Value(Handle* handle) override = 0; -@@ -84,14 +84,14 @@ - virtual size_t GetPinnedUsage() const override; - virtual size_t GetCharge(Handle* handle) const = 0; - #if (ROCKSDB_MAJOR >= 7 || (ROCKSDB_MAJOR == 6 && ROCKSDB_MINOR >= 22)) -- virtual DeleterFn GetDeleter(Handle* handle) const override; -+ virtual DeleterFn GetDeleter(Handle* handle) const; - #endif - virtual void DisownData() override = 0; - #if (ROCKSDB_MAJOR >= 7 || (ROCKSDB_MAJOR == 6 && ROCKSDB_MINOR >= 22)) - virtual void ApplyToAllEntries( - const std::function& callback, -- const ApplyToAllEntriesOptions& opts) override; -+ const ApplyToAllEntriesOptions& opts); - #else - virtual void ApplyToAllCacheEntries(void (*callback)(void*, size_t), - bool thread_safe) override; ---- ceph-17.2.6/src/kv/RocksDBStore.cc.orig 2023-04-20 13:27:30.331781763 -0400 -+++ ceph-17.2.6/src/kv/RocksDBStore.cc 2023-04-20 13:54:20.742215113 -0400 -@@ -903,6 +903,19 @@ - // base_name - name of column without shard suffix: "-"+number - // options - additional options to apply - // cf_opt - column family options to update -+ -+Status GetColumnFamilyOptionsFromMap( -+ const ColumnFamilyOptions& base_options, -+ const std::unordered_map& opts_map, -+ ColumnFamilyOptions* new_options, bool input_strings_escaped, -+ bool ignore_unknown_options) { -+ ConfigOptions config_options; -+ config_options.ignore_unknown_options = ignore_unknown_options; -+ config_options.input_strings_escaped = input_strings_escaped; -+ return rocksdb::GetColumnFamilyOptionsFromMap(config_options, base_options, opts_map, -+ new_options); -+} -+ - int RocksDBStore::update_column_family_options(const std::string& base_name, - const std::string& more_options, - rocksdb::ColumnFamilyOptions* cf_opt) -@@ -916,7 +929,7 @@ - << " options=" << more_options << dendl; - return r; - } -- status = rocksdb::GetColumnFamilyOptionsFromMap(*cf_opt, options_map, cf_opt); -+ status = GetColumnFamilyOptionsFromMap(*cf_opt, options_map, cf_opt, false); - if (!status.ok()) { - dout(5) << __func__ << " invalid column family optionsp; column family=" - << base_name << " options=" << more_options << dendl; -@@ -937,6 +950,20 @@ - return 0; - } - -+Status GetBlockBasedTableOptionsFromMap( -+ const BlockBasedTableOptions& table_options, -+ const std::unordered_map& opts_map, -+ BlockBasedTableOptions* new_table_options, bool input_strings_escaped, -+ bool ignore_unknown_options) { -+ ConfigOptions config_options; -+ config_options.input_strings_escaped = input_strings_escaped; -+ config_options.ignore_unknown_options = ignore_unknown_options; -+ config_options.invoke_prepare_options = false; -+ -+ return rocksdb::GetBlockBasedTableOptionsFromMap(config_options, table_options, -+ opts_map, new_table_options); -+} -+ - int RocksDBStore::apply_block_cache_options(const std::string& column_name, - const std::string& block_cache_opt, - rocksdb::ColumnFamilyOptions* cf_opt) diff --git a/0027-src-rocksdb-table-block_based-data_block_hash_index.h.patch b/0027-src-rocksdb-table-block_based-data_block_hash_index.h.patch new file mode 100644 index 0000000..d03276f --- /dev/null +++ b/0027-src-rocksdb-table-block_based-data_block_hash_index.h.patch @@ -0,0 +1,40 @@ +--- ceph-17.2.6/src/rocksdb/table/block_based/data_block_hash_index.h.orig 2023-04-21 17:46:42.186339184 -0400 ++++ ceph-17.2.6/src/rocksdb/table/block_based/data_block_hash_index.h 2023-04-21 17:47:01.392005151 -0400 +@@ -7,6 +7,7 @@ + + #include + #include ++#include + + #include "rocksdb/slice.h" + +--- ceph-17.2.6/src/rocksdb/util/string_util.h.orig 2023-04-21 18:13:51.060496792 -0400 ++++ ceph-17.2.6/src/rocksdb/util/string_util.h 2023-04-21 18:14:06.496223220 -0400 +@@ -10,6 +10,7 @@ + #include + #include + #include ++#include + + #include "rocksdb/rocksdb_namespace.h" + +--- ceph-17.2.6/src/rocksdb/include/rocksdb/utilities/checkpoint.h.orig 2023-04-22 05:54:32.260798114 -0400 ++++ ceph-17.2.6/src/rocksdb/include/rocksdb/utilities/checkpoint.h 2023-04-22 05:55:42.997522143 -0400 +@@ -10,6 +10,7 @@ + + #include + #include ++#include + #include "rocksdb/status.h" + + namespace ROCKSDB_NAMESPACE { +--- ceph-17.2.6/src/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable-inl.h.orig 2023-04-22 06:14:55.624679075 -0400 ++++ ceph-17.2.6/src/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable-inl.h 2023-04-22 09:18:39.424624618 -0400 +@@ -13,6 +13,7 @@ + #include + #include + #include ++#include + #include + + namespace folly { diff --git a/ceph.spec b/ceph.spec index 8499f58..fed97ce 100644 --- a/ceph.spec +++ b/ceph.spec @@ -193,7 +193,7 @@ 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 Patch0026: 0026-src-boost-libs-python-src-object.patch -Patch0027: 0027-src-kv-rocksdb_cache-ShardedCache.h.patch +Patch0027: 0027-src-rocksdb-table-block_based-data_block_hash_index.h.patch # ceph 14.0.1 does not support 32-bit architectures, bugs #1727788, #1727787 ExcludeArch: i686 armv7hl %if 0%{?suse_version} @@ -1384,7 +1384,7 @@ env | sort -DWITH_OCF:BOOL=ON \ %endif %if 0%{?fedora} || 0%{?rhel} >= 10 - -DWITH_SYSTEM_ROCKSDB:BOOL=ON \ + -DWITH_SYSTEM_ROCKSDB:BOOL=OFF \ %endif -DWITH_SYSTEM_LIBURING:BOOL=ON \ -DWITH_SYSTEM_BOOST:BOOL=OFF \ @@ -2619,7 +2619,7 @@ exit 0 %changelog * Thu Apr 20 2023 Kaleb S. KEITHLEY - 2:17.2.6-2 -- ceph-17.2.6, rebuild with rocksdb-8.0.0 +- ceph-17.2.6, rebuild with bundled rocksdb until ready for rocksdb-8.x * Fri Apr 7 2023 Kaleb S. KEITHLEY - 2:17.2.6-1 - ceph-17.2.6 GA From 2cc4dd5e3724ee418a452d350abe51879068a8bf Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Thu, 27 Apr 2023 19:28:57 -0400 Subject: [PATCH 24/60] ceph-17.2.6, rebuild boost with -fcf-protection Signed-off-by: Kaleb S. KEITHLEY --- 0028-cmake-modules-BuildBoost.cmake.patch | 11 +++++++++++ ceph.spec | 6 +++++- 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 0028-cmake-modules-BuildBoost.cmake.patch diff --git a/0028-cmake-modules-BuildBoost.cmake.patch b/0028-cmake-modules-BuildBoost.cmake.patch new file mode 100644 index 0000000..3c31121 --- /dev/null +++ b/0028-cmake-modules-BuildBoost.cmake.patch @@ -0,0 +1,11 @@ +--- ceph-17.2.6/cmake/modules/BuildBoost.cmake.orig 2023-04-27 14:00:28.239524778 -0400 ++++ ceph-17.2.6/cmake/modules/BuildBoost.cmake 2023-04-27 15:44:46.738462191 -0400 +@@ -63,7 +63,7 @@ + else() + list(APPEND boost_features "address-model=32") + endif() +- set(BOOST_CXXFLAGS "-fPIC -w") # check on arm, etc <---XXX ++ set(BOOST_CXXFLAGS "-fPIC -w -fcf-protection") # check on arm, etc <---XXX + list(APPEND boost_features "cxxflags=${BOOST_CXXFLAGS}") + + set(boost_with_libs) diff --git a/ceph.spec b/ceph.spec index fed97ce..dd25c46 100644 --- a/ceph.spec +++ b/ceph.spec @@ -160,7 +160,7 @@ ################################################################################# Name: ceph Version: 17.2.6 -Release: 2%{?dist} +Release: 3%{?dist} %if 0%{?fedora} || 0%{?rhel} Epoch: 2 %endif @@ -194,6 +194,7 @@ Patch0024: 0024-gcc-13.patch Patch0025: 0025-selinux-prepare-for-anon-inode-controls-enablement.patch Patch0026: 0026-src-boost-libs-python-src-object.patch Patch0027: 0027-src-rocksdb-table-block_based-data_block_hash_index.h.patch +Patch0028: 0028-cmake-modules-BuildBoost.cmake.patch # ceph 14.0.1 does not support 32-bit architectures, bugs #1727788, #1727787 ExcludeArch: i686 armv7hl %if 0%{?suse_version} @@ -2618,6 +2619,9 @@ exit 0 %config %{_sysconfdir}/prometheus/ceph/ceph_default_alerts.yml %changelog +* Thu Apr 27 2023 Kaleb S. KEITHLEY - 2:17.2.6-3 +- ceph-17.2.6, rebuild boost with -fcf-protection + * Thu Apr 20 2023 Kaleb S. KEITHLEY - 2:17.2.6-2 - ceph-17.2.6, rebuild with bundled rocksdb until ready for rocksdb-8.x From dbd2b71d9d2918f7fcaba1a75d954235a1afeee1 Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Fri, 28 Apr 2023 07:51:05 -0400 Subject: [PATCH 25/60] ceph-17.2.6, rebuild boost with -fcf-protection Signed-off-by: Kaleb S. KEITHLEY --- ...sdb-table-block_based-data_block_hash_index.h.patch | 10 ++++++++++ 0028-cmake-modules-BuildBoost.cmake.patch | 10 +++++++--- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/0027-src-rocksdb-table-block_based-data_block_hash_index.h.patch b/0027-src-rocksdb-table-block_based-data_block_hash_index.h.patch index d03276f..1cd32b8 100644 --- a/0027-src-rocksdb-table-block_based-data_block_hash_index.h.patch +++ b/0027-src-rocksdb-table-block_based-data_block_hash_index.h.patch @@ -37,4 +37,14 @@ +#include #include + namespace folly { +--- ceph-17.2.6/src/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable-inl.h.orig 2023-04-22 06:14:55.624679075 -0400 ++++ ceph-17.2.6/src/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable-inl.h 2023-04-22 09:18:39.424624618 -0400 +@@ -13,6 +13,7 @@ + #include + #include + #include ++#include + #include + namespace folly { diff --git a/0028-cmake-modules-BuildBoost.cmake.patch b/0028-cmake-modules-BuildBoost.cmake.patch index 3c31121..631d072 100644 --- a/0028-cmake-modules-BuildBoost.cmake.patch +++ b/0028-cmake-modules-BuildBoost.cmake.patch @@ -1,11 +1,15 @@ --- ceph-17.2.6/cmake/modules/BuildBoost.cmake.orig 2023-04-27 14:00:28.239524778 -0400 -+++ ceph-17.2.6/cmake/modules/BuildBoost.cmake 2023-04-27 15:44:46.738462191 -0400 -@@ -63,7 +63,7 @@ ++++ ceph-17.2.6/cmake/modules/BuildBoost.cmake 2023-04-28 07:49:59.743342207 -0400 +@@ -63,7 +63,11 @@ else() list(APPEND boost_features "address-model=32") endif() - set(BOOST_CXXFLAGS "-fPIC -w") # check on arm, etc <---XXX -+ set(BOOST_CXXFLAGS "-fPIC -w -fcf-protection") # check on arm, etc <---XXX ++ if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64") ++ set(BOOST_CXXFLAGS "-fPIC -w -fcf-protection") # check on arm, etc <---XXX ++ else() ++ set(BOOST_CXXFLAGS "-fPIC -w") # check on arm, etc <---XXX ++ endif() list(APPEND boost_features "cxxflags=${BOOST_CXXFLAGS}") set(boost_with_libs) From dcf07e8b7f93ca9219f3ee7eb85b8717293f427f Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Fri, 28 Apr 2023 09:09:35 -0400 Subject: [PATCH 26/60] ceph-17.2.6, rebuild boost with -fcf-protection Signed-off-by: Kaleb S. KEITHLEY --- ...sdb-table-block_based-data_block_hash_index.h.patch | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/0027-src-rocksdb-table-block_based-data_block_hash_index.h.patch b/0027-src-rocksdb-table-block_based-data_block_hash_index.h.patch index 1cd32b8..d03276f 100644 --- a/0027-src-rocksdb-table-block_based-data_block_hash_index.h.patch +++ b/0027-src-rocksdb-table-block_based-data_block_hash_index.h.patch @@ -37,14 +37,4 @@ +#include #include - namespace folly { ---- ceph-17.2.6/src/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable-inl.h.orig 2023-04-22 06:14:55.624679075 -0400 -+++ ceph-17.2.6/src/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable-inl.h 2023-04-22 09:18:39.424624618 -0400 -@@ -13,6 +13,7 @@ - #include - #include - #include -+#include - #include - namespace folly { From d3ad3a08bd3a261e9a05c711131b8c21f97b57c4 Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Sun, 30 Apr 2023 19:18:51 -0400 Subject: [PATCH 27/60] ceph-17.2.6, rebuild boost asm with IBT, SHSTK (librgw.so) Signed-off-by: Kaleb S. KEITHLEY --- 0029-boost-asm.patch | 61 ++++++++++++++++++++++++++++++++++++++++++++ ceph.spec | 8 ++++-- 2 files changed, 67 insertions(+), 2 deletions(-) create mode 100644 0029-boost-asm.patch diff --git a/0029-boost-asm.patch b/0029-boost-asm.patch new file mode 100644 index 0000000..80ee1fd --- /dev/null +++ b/0029-boost-asm.patch @@ -0,0 +1,61 @@ +--- ceph-17.2.6/src/boost/libs/context/src/asm/make_x86_64_sysv_elf_gas.S.orig 2023-04-30 14:25:35.009605033 -0400 ++++ ceph-17.2.6/src/boost/libs/context/src/asm/make_x86_64_sysv_elf_gas.S 2023-04-30 14:28:32.239465067 -0400 +@@ -80,3 +80,18 @@ + + /* Mark that we don't need executable stack. */ + .section .note.GNU-stack,"",%progbits ++ ++.section .note.gnu.property ++.align=8 ++ ++ .byte 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00 ++ .byte 0x05, 0x00, 0x00, 0x00, 0x47, 0x4E, 0x55, 0x00 ++ .byte 0x00, 0x00, 0x00, 0xC0, 0x04, 0x00, 0x00, 0x00 ++ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ++ .byte 0x01, 0x00, 0x00, 0xC0, 0x04, 0x00, 0x00, 0x00 ++ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ++ .byte 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00 ++ .byte 0x05, 0x00, 0x00, 0x00, 0x47, 0x4E, 0x55, 0x00 ++ .byte 0x02, 0x00, 0x00, 0xC0, 0x04, 0x00, 0x00, 0x00 ++ .byte 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ++ +--- ceph-17.2.6/src/boost/libs/context/src/asm/jump_x86_64_sysv_elf_gas.S.orig 2023-04-30 14:25:35.008605050 -0400 ++++ ceph-17.2.6/src/boost/libs/context/src/asm/jump_x86_64_sysv_elf_gas.S 2023-04-30 14:27:50.145210847 -0400 +@@ -89,3 +89,17 @@ + + /* Mark that we don't need executable stack. */ + .section .note.GNU-stack,"",%progbits ++ ++.section .note.gnu.property ++.align=8 ++ ++ .byte 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00 ++ .byte 0x05, 0x00, 0x00, 0x00, 0x47, 0x4E, 0x55, 0x00 ++ .byte 0x00, 0x00, 0x00, 0xC0, 0x04, 0x00, 0x00, 0x00 ++ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ++ .byte 0x01, 0x00, 0x00, 0xC0, 0x04, 0x00, 0x00, 0x00 ++ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ++ .byte 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00 ++ .byte 0x05, 0x00, 0x00, 0x00, 0x47, 0x4E, 0x55, 0x00 ++ .byte 0x02, 0x00, 0x00, 0xC0, 0x04, 0x00, 0x00, 0x00 ++ .byte 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +--- ceph-17.2.6/src/boost/libs/context/src/asm/ontop_x86_64_sysv_elf_gas.S.orig 2023-04-30 14:25:35.009605033 -0400 ++++ ceph-17.2.6/src/boost/libs/context/src/asm/ontop_x86_64_sysv_elf_gas.S 2023-04-30 14:29:30.402434597 -0400 +@@ -92,3 +92,17 @@ + + /* Mark that we don't need executable stack. */ + .section .note.GNU-stack,"",%progbits ++ ++.section .note.gnu.property ++.align=8 ++ ++ .byte 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00 ++ .byte 0x05, 0x00, 0x00, 0x00, 0x47, 0x4E, 0x55, 0x00 ++ .byte 0x00, 0x00, 0x00, 0xC0, 0x04, 0x00, 0x00, 0x00 ++ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ++ .byte 0x01, 0x00, 0x00, 0xC0, 0x04, 0x00, 0x00, 0x00 ++ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ++ .byte 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00 ++ .byte 0x05, 0x00, 0x00, 0x00, 0x47, 0x4E, 0x55, 0x00 ++ .byte 0x02, 0x00, 0x00, 0xC0, 0x04, 0x00, 0x00, 0x00 ++ .byte 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 diff --git a/ceph.spec b/ceph.spec index dd25c46..d7e9fd7 100644 --- a/ceph.spec +++ b/ceph.spec @@ -160,7 +160,7 @@ ################################################################################# Name: ceph Version: 17.2.6 -Release: 3%{?dist} +Release: 4%{?dist} %if 0%{?fedora} || 0%{?rhel} Epoch: 2 %endif @@ -195,6 +195,7 @@ Patch0025: 0025-selinux-prepare-for-anon-inode-controls-enablement.patch Patch0026: 0026-src-boost-libs-python-src-object.patch Patch0027: 0027-src-rocksdb-table-block_based-data_block_hash_index.h.patch Patch0028: 0028-cmake-modules-BuildBoost.cmake.patch +Patch0029: 0029-boost-asm.patch # ceph 14.0.1 does not support 32-bit architectures, bugs #1727788, #1727787 ExcludeArch: i686 armv7hl %if 0%{?suse_version} @@ -2619,8 +2620,11 @@ exit 0 %config %{_sysconfdir}/prometheus/ceph/ceph_default_alerts.yml %changelog +* Sun Apr 30 2023 Kaleb S. KEITHLEY - 2:17.2.6-4 +- ceph-17.2.6, rebuild boost asm with IBT, SHSTK (librgw.so) + * Thu Apr 27 2023 Kaleb S. KEITHLEY - 2:17.2.6-3 -- ceph-17.2.6, rebuild boost with -fcf-protection +- ceph-17.2.6, rebuild boost with -fcf-protection (libceph_common.so) * Thu Apr 20 2023 Kaleb S. KEITHLEY - 2:17.2.6-2 - ceph-17.2.6, rebuild with bundled rocksdb until ready for rocksdb-8.x From 0e8a2ef9023a13c8fdd53e7f3c33df20b3ffbf65 Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Mon, 1 May 2023 10:20:21 -0400 Subject: [PATCH 28/60] ceph-17.2.6, rebuild with libarrow-12.0.0 Signed-off-by: Kaleb S. KEITHLEY --- ceph.spec | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/ceph.spec b/ceph.spec index d7e9fd7..dc89819 100644 --- a/ceph.spec +++ b/ceph.spec @@ -160,7 +160,7 @@ ################################################################################# Name: ceph Version: 17.2.6 -Release: 4%{?dist} +Release: 5%{?dist} %if 0%{?fedora} || 0%{?rhel} Epoch: 2 %endif @@ -2620,11 +2620,14 @@ exit 0 %config %{_sysconfdir}/prometheus/ceph/ceph_default_alerts.yml %changelog +* Mon May 1 2023 Kaleb S. KEITHLEY - 2:17.2.6-5 +- ceph-17.2.6, rebuild with libarrow-12.0.0 + * Sun Apr 30 2023 Kaleb S. KEITHLEY - 2:17.2.6-4 -- ceph-17.2.6, rebuild boost asm with IBT, SHSTK (librgw.so) +- ceph-17.2.6, rebuild bundled boost asm with IBT, SHSTK (librgw.so) * Thu Apr 27 2023 Kaleb S. KEITHLEY - 2:17.2.6-3 -- ceph-17.2.6, rebuild boost with -fcf-protection (libceph_common.so) +- ceph-17.2.6, rebuild bundled boost with -fcf-protection (libceph_common.so) * Thu Apr 20 2023 Kaleb S. KEITHLEY - 2:17.2.6-2 - ceph-17.2.6, rebuild with bundled rocksdb until ready for rocksdb-8.x From c817d5a04efc2ee331ed9d6338708d608e9d3fb2 Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Wed, 10 May 2023 10:56:37 -0400 Subject: [PATCH 29/60] ceph-17.2.6, log create of global_legacy_options.h Signed-off-by: Kaleb S. KEITHLEY --- 0024-gcc-13.patch | 40 +++++++++++++++++++++++++++++++++++ 0030-src-CMakeLists.txt.patch | 10 +++++++++ ceph.spec | 7 ++++-- 3 files changed, 55 insertions(+), 2 deletions(-) create mode 100644 0030-src-CMakeLists.txt.patch diff --git a/0024-gcc-13.patch b/0024-gcc-13.patch index a75183a..2e0e048 100644 --- a/0024-gcc-13.patch +++ b/0024-gcc-13.patch @@ -100,3 +100,43 @@ struct CompactionIterationStats { // Compaction statistics +--- ceph-17.2.6/src/rocksdb/table/block_based/data_block_hash_index.h.orig 2023-04-21 17:46:42.186339184 -0400 ++++ ceph-17.2.6/src/rocksdb/table/block_based/data_block_hash_index.h 2023-04-21 17:47:01.392005151 -0400 +@@ -7,6 +7,7 @@ + + #include + #include ++#include + + #include "rocksdb/slice.h" + +--- ceph-17.2.6/src/rocksdb/util/string_util.h.orig 2023-04-21 18:13:51.060496792 -0400 ++++ ceph-17.2.6/src/rocksdb/util/string_util.h 2023-04-21 18:14:06.496223220 -0400 +@@ -10,6 +10,7 @@ + #include + #include + #include ++#include + + #include "rocksdb/rocksdb_namespace.h" + +--- ceph-17.2.6/src/rocksdb/include/rocksdb/utilities/checkpoint.h.orig 2023-04-22 05:54:32.260798114 -0400 ++++ ceph-17.2.6/src/rocksdb/include/rocksdb/utilities/checkpoint.h 2023-04-22 05:55:42.997522143 -0400 +@@ -10,6 +10,7 @@ + + #include + #include ++#include + #include "rocksdb/status.h" + + namespace ROCKSDB_NAMESPACE { +--- ceph-17.2.6/src/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable-inl.h.orig 2023-04-22 06:14:55.624679075 -0400 ++++ ceph-17.2.6/src/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable-inl.h 2023-04-22 09:18:39.424624618 -0400 +@@ -13,6 +13,7 @@ + #include + #include + #include ++#include + #include + + namespace folly { diff --git a/0030-src-CMakeLists.txt.patch b/0030-src-CMakeLists.txt.patch new file mode 100644 index 0000000..bc363db --- /dev/null +++ b/0030-src-CMakeLists.txt.patch @@ -0,0 +1,10 @@ +--- ceph-17.2.6/src/CMakeLists.txt.orig 2023-05-10 10:00:58.457793274 -0400 ++++ ceph-17.2.6/src/CMakeLists.txt 2023-05-10 10:01:31.553198698 -0400 +@@ -809,6 +809,7 @@ + if(WITH_KRBD) + add_library(krbd STATIC krbd.cc + $) ++ add_dependencies(krbd legacy-option-headers) + target_link_libraries(krbd keyutils::keyutils) + endif() + add_subdirectory(librbd) diff --git a/ceph.spec b/ceph.spec index dc89819..4481473 100644 --- a/ceph.spec +++ b/ceph.spec @@ -160,7 +160,7 @@ ################################################################################# Name: ceph Version: 17.2.6 -Release: 5%{?dist} +Release: 6%{?dist} %if 0%{?fedora} || 0%{?rhel} Epoch: 2 %endif @@ -193,9 +193,9 @@ 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 Patch0026: 0026-src-boost-libs-python-src-object.patch -Patch0027: 0027-src-rocksdb-table-block_based-data_block_hash_index.h.patch Patch0028: 0028-cmake-modules-BuildBoost.cmake.patch Patch0029: 0029-boost-asm.patch +Patch0030: 0030-src-CMakeLists.txt.patch # ceph 14.0.1 does not support 32-bit architectures, bugs #1727788, #1727787 ExcludeArch: i686 armv7hl %if 0%{?suse_version} @@ -2620,6 +2620,9 @@ exit 0 %config %{_sysconfdir}/prometheus/ceph/ceph_default_alerts.yml %changelog +* Tue May 9 2023 Kaleb S. KEITHLEY - 2:17.2.6-5 +- ceph-17.2.6, log create of global_legacy_options.h + * Mon May 1 2023 Kaleb S. KEITHLEY - 2:17.2.6-5 - ceph-17.2.6, rebuild with libarrow-12.0.0 From 9a0799bc61c7f757f768b2717e73b8e38faaf392 Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Fri, 19 May 2023 10:08:37 -0400 Subject: [PATCH 30/60] ceph-17.2.6, use ldconfig and ldconfig_scriptlet macros Signed-off-by: Kaleb S. KEITHLEY --- ceph.spec | 43 ++++++++++++++++--------------------------- 1 file changed, 16 insertions(+), 27 deletions(-) diff --git a/ceph.spec b/ceph.spec index 4481473..591a826 100644 --- a/ceph.spec +++ b/ceph.spec @@ -160,7 +160,7 @@ ################################################################################# Name: ceph Version: 17.2.6 -Release: 6%{?dist} +Release: 7%{?dist} %if 0%{?fedora} || 0%{?rhel} Epoch: 2 %endif @@ -1613,7 +1613,7 @@ install -m 644 -D monitoring/ceph-mixin/prometheus_alerts.yml %{buildroot}/etc/p %{_sysconfdir}/sudoers.d/ceph-smartctl %post base -/sbin/ldconfig +%{?ldconfig} %if 0%{?suse_version} %fillup_only if [ $1 -eq 1 ] ; then @@ -1636,7 +1636,7 @@ fi %endif %postun base -/sbin/ldconfig +%{?ldconfig} %systemd_postun ceph.target %pre -n cephadm @@ -2142,7 +2142,7 @@ fi %{_unitdir}/ceph-radosgw.target %post radosgw -/sbin/ldconfig +%{?ldconfig} %if 0%{?suse_version} if [ $1 -eq 1 ] ; then /usr/bin/systemctl preset ceph-radosgw@\*.service ceph-radosgw.target >/dev/null 2>&1 || : @@ -2164,7 +2164,7 @@ fi %endif %postun radosgw -/sbin/ldconfig +%{?ldconfig} %systemd_postun ceph-radosgw@\*.service ceph-radosgw.target if [ $1 -ge 1 ] ; then # Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to @@ -2300,9 +2300,7 @@ fi %endif %dir %{_sysconfdir}/ceph -%post -n librados2 -p /sbin/ldconfig - -%postun -n librados2 -p /sbin/ldconfig +%ldconfig_scriptlets librados2 %files -n librados-devel %dir %{_includedir}/rados @@ -2333,9 +2331,7 @@ fi %files -n libcephsqlite %{_libdir}/libcephsqlite.so -%post -n libcephsqlite -p /sbin/ldconfig - -%postun -n libcephsqlite -p /sbin/ldconfig +%ldconfig_scriptlets libcephsqlite %files -n libcephsqlite-devel %{_includedir}/libcephsqlite.h @@ -2344,9 +2340,7 @@ fi %files -n libradosstriper1 %{_libdir}/libradosstriper.so.* -%post -n libradosstriper1 -p /sbin/ldconfig - -%postun -n libradosstriper1 -p /sbin/ldconfig +%ldconfig_scriptlets libradosstriper1 %files -n libradosstriper-devel %dir %{_includedir}/radosstriper @@ -2363,9 +2357,7 @@ fi %dir %{_libdir}/ceph/librbd %{_libdir}/ceph/librbd/libceph_*.so* -%post -n librbd1 -p /sbin/ldconfig - -%postun -n librbd1 -p /sbin/ldconfig +%ldconfig_scriptlets librbd1 %files -n librbd-devel %dir %{_includedir}/rbd @@ -2384,9 +2376,7 @@ fi %{_libdir}/librgw_rados_tp.so.* %endif -%post -n librgw2 -p /sbin/ldconfig - -%postun -n librgw2 -p /sbin/ldconfig +%ldconfig_scriptlets librgw2 %files -n librgw-devel %dir %{_includedir}/rados @@ -2410,9 +2400,7 @@ fi %{_libdir}/libcephfs.so.* %dir %{_sysconfdir}/ceph -%post -n libcephfs2 -p /sbin/ldconfig - -%postun -n libcephfs2 -p /sbin/ldconfig +%ldconfig_scriptlets libcephfs2 %files -n libcephfs-devel %dir %{_includedir}/cephfs @@ -2482,9 +2470,7 @@ fi %files -n libcephfs_jni1 %{_libdir}/libcephfs_jni.so.* -%post -n libcephfs_jni1 -p /sbin/ldconfig - -%postun -n libcephfs_jni1 -p /sbin/ldconfig +%ldconfig_scriptlets libcephfs_jni1 %files -n libcephfs_jni-devel %{_libdir}/libcephfs_jni.so @@ -2620,7 +2606,10 @@ exit 0 %config %{_sysconfdir}/prometheus/ceph/ceph_default_alerts.yml %changelog -* Tue May 9 2023 Kaleb S. KEITHLEY - 2:17.2.6-5 +* Tue May 9 2023 Kaleb S. KEITHLEY - 2:17.2.6-7 +- ceph-17.2.6, use ldconfig and ldconfig_scriptlet macros + +* Tue May 9 2023 Kaleb S. KEITHLEY - 2:17.2.6-6 - ceph-17.2.6, log create of global_legacy_options.h * Mon May 1 2023 Kaleb S. KEITHLEY - 2:17.2.6-5 From 1ab48d0e0d4e41bfeaa77f39b48e7a12e55dd71c Mon Sep 17 00:00:00 2001 From: Yaakov Selkowitz Date: Tue, 6 Jun 2023 20:33:50 -0400 Subject: [PATCH 31/60] Do not use mold in RHEL/ELN builds --- ceph.spec | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/ceph.spec b/ceph.spec index 591a826..d70991e 100644 --- a/ceph.spec +++ b/ceph.spec @@ -35,6 +35,15 @@ %else %bcond_with rbd_rwl_cache %endif +%if 0%{?rhel} +%bcond_with ld_mold +%else +%ifarch x86_64 aarch64 +%bcond_without ld_mold +%else +%bcond_with ld_mold +%endif +%endif %if 0%{?fedora} || 0%{?rhel} %ifarch s390x %{arm64} %bcond_with system_pmdk @@ -160,7 +169,7 @@ ################################################################################# Name: ceph Version: 17.2.6 -Release: 7%{?dist} +Release: 8%{?dist} %if 0%{?fedora} || 0%{?rhel} Epoch: 2 %endif @@ -236,7 +245,7 @@ BuildRequires: libatomic BuildRequires: gcc-c++ %endif BuildRequires: libatomic -%ifarch x86_64 aarch64 +%if 0%{with ld_mold} BuildRequires: mold %endif %if 0%{with tcmalloc} @@ -1447,7 +1456,7 @@ env | sort %if 0%{with system_utf8proc} -DWITH_SYSTEM_UTF8PROC:BOOL=ON \ %endif -%ifarch x86_64 aarch64 +%if 0%{with ld_mold} -DCMAKE_LINKER=%{_bindir}/ld.mold \ %endif %if 0%{with seastar} @@ -2606,6 +2615,9 @@ exit 0 %config %{_sysconfdir}/prometheus/ceph/ceph_default_alerts.yml %changelog +* Wed Jun 07 2023 Yaakov Selkowitz - 2:17.2.6-8 +- Do not use mold in RHEL/ELN builds + * Tue May 9 2023 Kaleb S. KEITHLEY - 2:17.2.6-7 - ceph-17.2.6, use ldconfig and ldconfig_scriptlet macros From 4f4defa7e2eb92f29156f829c237ec998a38be58 Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Tue, 13 Jun 2023 17:29:30 -0400 Subject: [PATCH 32/60] ceph-18.1.0 RC1 Signed-off-by: Kaleb S. KEITHLEY --- 0017-gcc-12-omnibus.patch | 27 +- ...src-rgw-store-dbstore-CMakeLists.txt.patch | 32 +- 0019-cmake-modules-CheckCxxAtomic.cmake.patch | 43 - 0021-cephfs-shell.patch | 1756 ----------------- ...-Replace-deprecated-use-of-format_to.patch | 28 - ...ect-include-s3select_parquet_intrf.h.patch | 218 -- 0024-gcc-13.patch | 30 - ...e-for-anon-inode-controls-enablement.patch | 42 - 0025-src-osd-scrubber-scrub_backend.h.patch | 32 + 0026-src-boost-libs-python-src-object.patch | 99 - 0026-src-osd-scrubber-scrub_backend.cc.patch | 199 ++ ...-src-kv-rocksdb_cache-ShardedCache.h.patch | 151 ++ ...-block_based-data_block_hash_index.h.patch | 40 - 0028-cmake-modules-BuildBoost.cmake.patch | 15 - 0029-src-rgw-rgw_amqp.cc.patch | 17 + 0030-src-CMakeLists.txt.patch | 10 - 0030-src-rgw-rgw_asio_client.cc.patch | 61 + 0032-cmake-modules-BuildBoost.cmake.patch | 24 + 0029-boost-asm.patch => 0033-boost-asm.patch | 0 ceph.spec | 175 +- sources | 2 +- 21 files changed, 601 insertions(+), 2400 deletions(-) delete mode 100644 0019-cmake-modules-CheckCxxAtomic.cmake.patch delete mode 100644 0021-cephfs-shell.patch delete mode 100644 0022-mon-Replace-deprecated-use-of-format_to.patch delete mode 100644 0023-src-s3select-include-s3select_parquet_intrf.h.patch delete mode 100644 0025-selinux-prepare-for-anon-inode-controls-enablement.patch create mode 100644 0025-src-osd-scrubber-scrub_backend.h.patch delete mode 100644 0026-src-boost-libs-python-src-object.patch create mode 100644 0026-src-osd-scrubber-scrub_backend.cc.patch create mode 100644 0027-src-kv-rocksdb_cache-ShardedCache.h.patch delete mode 100644 0027-src-rocksdb-table-block_based-data_block_hash_index.h.patch delete mode 100644 0028-cmake-modules-BuildBoost.cmake.patch create mode 100644 0029-src-rgw-rgw_amqp.cc.patch delete mode 100644 0030-src-CMakeLists.txt.patch create mode 100644 0030-src-rgw-rgw_asio_client.cc.patch create mode 100644 0032-cmake-modules-BuildBoost.cmake.patch rename 0029-boost-asm.patch => 0033-boost-asm.patch (100%) diff --git a/0017-gcc-12-omnibus.patch b/0017-gcc-12-omnibus.patch index 4440750..d725dc4 100644 --- a/0017-gcc-12-omnibus.patch +++ b/0017-gcc-12-omnibus.patch @@ -1,13 +1,3 @@ ---- ceph-16.2.7/src/include/buffer.h.orig 2022-01-17 12:17:19.193356237 -0500 -+++ ceph-16.2.7/src/include/buffer.h 2022-01-17 12:17:58.599639592 -0500 -@@ -38,6 +38,7 @@ - # include - #endif - -+#include - #include - #include - #include --- ceph-16.2.7/src/common/LogEntry.cc.orig 2022-01-17 13:52:10.799134159 -0500 +++ ceph-16.2.7/src/common/LogEntry.cc 2022-01-17 13:52:47.244469274 -0500 @@ -183,7 +183,7 @@ @@ -21,8 +11,8 @@ --- 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 @@ - #include "rgw/rgw_common.h" +@@ -120,7 +120,7 @@ + } void check_fp_oid_refcount(librados::IoCtx& ioctx, std::string foid, uint64_t count, - std::string fp_algo = NULL) @@ -30,7 +20,7 @@ { bufferlist t; int size = foid.length(); -@@ -142,7 +142,7 @@ +@@ -148,7 +148,7 @@ ASSERT_LE(count, refs.count()); } @@ -39,17 +29,6 @@ { if (fp_algo == "sha1") { unsigned char fingerprint[CEPH_CRYPTO_SHA1_DIGESTSIZE + 1]; ---- ceph-16.2.7/src/test/test_trans.cc.orig 2022-01-19 13:24:33.460008897 -0500 -+++ ceph-16.2.7/src/test/test_trans.cc 2022-01-19 13:24:58.211554005 -0500 -@@ -51,7 +51,7 @@ - cout << "#dev " << filename << std::endl; - cout << "#mb " << mb << std::endl; - -- ObjectStore *fs = new FileStore(cct.get(), filename, NULL); -+ ObjectStore *fs = new FileStore(cct.get(), filename, ""); - if (fs->mount() < 0) { - cout << "mount failed" << std::endl; - return -1; --- ceph-17.0.0-10335-gfd206722/src/s3select/include/s3select_functions.h.orig 2022-02-11 17:21:40.268627997 -0500 +++ ceph-17.0.0-10335-gfd206722/src/s3select/include/s3select_functions.h 2022-02-11 17:21:57.155325437 -0500 @@ -466,7 +466,7 @@ diff --git a/0018-src-rgw-store-dbstore-CMakeLists.txt.patch b/0018-src-rgw-store-dbstore-CMakeLists.txt.patch index 1adc56a..874bbcd 100644 --- a/0018-src-rgw-store-dbstore-CMakeLists.txt.patch +++ b/0018-src-rgw-store-dbstore-CMakeLists.txt.patch @@ -1,24 +1,15 @@ ---- ceph-17.1.0/src/rgw/store/dbstore/sqlite/CMakeLists.txt.orig 2022-03-01 08:19:04.974902872 -0500 -+++ ceph-17.1.0/src/rgw/store/dbstore/sqlite/CMakeLists.txt 2022-03-11 07:55:16.236261471 -0500 -@@ -12,5 +12,5 @@ - set(SQLITE_COMPILE_FLAGS "-DSQLITE_THREADSAFE=1") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SQLITE_COMPILE_FLAGS}") - --add_library(sqlite_db ${sqlite_db_srcs}) -+add_library(sqlite_db STATIC ${sqlite_db_srcs}) - target_link_libraries(sqlite_db sqlite3 dbstore_lib rgw_common) ---- ceph-17.1.0/src/rgw/store/dbstore/CMakeLists.txt.orig 2022-02-28 14:11:49.987077811 -0500 -+++ ceph-17.1.0/src/rgw/store/dbstore/CMakeLists.txt 2022-03-11 08:40:13.409682698 -0500 -@@ -16,7 +16,7 @@ +--- ceph-18.0.0-3078-gc4847bf8/src/rgw/driver/dbstore/CMakeLists.txt.orig 2023-05-10 08:23:50.000000000 -0400 ++++ ceph-18.0.0-3078-gc4847bf8/src/rgw/driver/dbstore/CMakeLists.txt 2023-05-11 08:21:13.794152904 -0400 +@@ -24,7 +24,7 @@ dbstore_mgr.cc ) -add_library(dbstore_lib ${dbstore_srcs}) +add_library(dbstore_lib STATIC ${dbstore_srcs}) - target_include_directories(dbstore_lib PUBLIC "${CMAKE_SOURCE_DIR}/src/fmt/include") - target_include_directories(dbstore_lib PUBLIC "${CMAKE_SOURCE_DIR}/src/rgw") - set(link_targets spawn) -@@ -38,6 +38,7 @@ + target_include_directories(dbstore_lib + PUBLIC "${CMAKE_SOURCE_DIR}/src/rgw" + PUBLIC "${CMAKE_SOURCE_DIR}/src/rgw/store/rados" +@@ -49,6 +49,7 @@ # add pthread library set (CMAKE_LINK_LIBRARIES ${CMAKE_LINK_LIBRARIES} pthread) @@ -26,12 +17,3 @@ find_package(gtest QUIET) if(WITH_TESTS) -@@ -47,7 +48,7 @@ - endif() - - include_directories(${CMAKE_INCLUDE_DIR}) --add_library(dbstore ${dbstore_mgr_srcs}) -+add_library(dbstore STATIC ${dbstore_mgr_srcs}) - target_link_libraries(dbstore ${CMAKE_LINK_LIBRARIES}) - - # testing purpose diff --git a/0019-cmake-modules-CheckCxxAtomic.cmake.patch b/0019-cmake-modules-CheckCxxAtomic.cmake.patch deleted file mode 100644 index f353e3c..0000000 --- a/0019-cmake-modules-CheckCxxAtomic.cmake.patch +++ /dev/null @@ -1,43 +0,0 @@ ---- ceph-17.2.0-359-gb2fe9ec8/cmake/modules/CheckCxxAtomic.cmake.orig 2022-06-03 08:45:32.341075140 -0400 -+++ ceph-17.2.0-359-gb2fe9ec8/cmake/modules/CheckCxxAtomic.cmake 2022-06-03 08:46:47.195775813 -0400 -@@ -10,8 +10,9 @@ - check_cxx_source_compiles(" - #include - #include -+#include - --#if defined(__s390x__) || defined(__mips__) -+#if defined(__SIZEOF_INT128__) - // Boost needs 16-byte atomics for tagged pointers. - // These are implemented via inline instructions on the platform - // if 16-byte alignment can be proven, and are delegated to libatomic -@@ -21,13 +22,27 @@ - // We specifically test access via an otherwise unknown pointer here - // to ensure we get the most complex case. If this access can be - // done without libatomic, then all accesses can be done. --bool atomic16(std::atomic *ptr) -+struct tagged_ptr { -+ int* ptr; -+ std::size_t tag; -+}; -+ -+void atomic16(std::atomic *ptr) __attribute__ ((used)); -+void atomic16(std::atomic *ptr) - { -- return *ptr != 0; -+ tagged_ptr p{nullptr, 1}; -+ ptr->store(p); -+ tagged_ptr f = ptr->load(); -+ tagged_ptr new_tag{nullptr, 0}; -+ ptr->compare_exchange_strong(f, new_tag); - } - #endif - - int main() { -+#if defined(__SIZEOF_INT128__) -+ std::atomic ptr; -+ atomic16(&ptr); -+#endif - std::atomic w1; - std::atomic w2; - std::atomic w4; diff --git a/0021-cephfs-shell.patch b/0021-cephfs-shell.patch deleted file mode 100644 index f85a91e..0000000 --- a/0021-cephfs-shell.patch +++ /dev/null @@ -1,1756 +0,0 @@ ---- ceph-17.2.1/src/tools/cephfs/CMakeLists.txt.orig 2022-07-05 19:26:04.629170597 -0400 -+++ ceph-17.2.1/src/tools/cephfs/CMakeLists.txt 2022-07-05 19:26:40.710580427 -0400 -@@ -49,12 +49,7 @@ - - option(WITH_CEPHFS_SHELL "install cephfs-shell" OFF) - if(WITH_CEPHFS_SHELL) -- include(Distutils) -- distutils_install_module(cephfs-shell) -- if(WITH_TESTS) -- include(AddCephTest) -- add_tox_test(cephfs-shell) -- endif() -+ add_subdirectory(shell) - endif() - - option(WITH_CEPHFS_TOP "install cephfs-top utility" ON) ---- /dev/null 2022-06-30 09:45:32.996000000 -0400 -+++ ceph-17.2.1/src/tools/cephfs/shell/CMakeLists.txt 2022-07-05 19:27:58.983300150 -0400 -@@ -0,0 +1,7 @@ -+include(Distutils) -+distutils_install_module(cephfs-shell) -+ -+if(WITH_TESTS) -+ include(AddCephTest) -+ add_tox_test(cephfs-shell) -+endif() ---- /dev/null 2022-06-30 09:45:32.996000000 -0400 -+++ ceph-17.2.1/src/tools/cephfs/shell/cephfs-shell 2022-06-23 10:41:35.000000000 -0400 -@@ -0,0 +1,1687 @@ -+#!/usr/bin/python3 -+# coding = utf-8 -+ -+import argparse -+import os -+import os.path -+import sys -+import cephfs as libcephfs -+import shutil -+import traceback -+import colorama -+import fnmatch -+import math -+import re -+import shlex -+import stat -+import errno -+ -+from cmd2 import Cmd -+from cmd2 import __version__ as cmd2_version -+from distutils.version import LooseVersion -+ -+if sys.version_info.major < 3: -+ raise RuntimeError("cephfs-shell is only compatible with python3") -+ -+try: -+ from cmd2 import with_argparser -+except ImportError: -+ def with_argparser(argparser): -+ import functools -+ -+ def argparser_decorator(func): -+ @functools.wraps(func) -+ def wrapper(thiz, cmdline): -+ if isinstance(cmdline, list): -+ arglist = cmdline -+ else: -+ # do not split if it's already a list -+ arglist = shlex.split(cmdline, posix=False) -+ # in case user quotes the command args -+ arglist = [arg.strip('\'""') for arg in arglist] -+ try: -+ args = argparser.parse_args(arglist) -+ except SystemExit: -+ shell.exit_code = 1 -+ # argparse exits at seeing bad arguments -+ return -+ else: -+ return func(thiz, args) -+ argparser.prog = func.__name__[3:] -+ if argparser.description is None and func.__doc__: -+ argparser.description = func.__doc__ -+ -+ return wrapper -+ -+ return argparser_decorator -+ -+ -+cephfs = None # holds CephFS Python bindings -+shell = None # holds instance of class CephFSShell -+exit_codes = {'Misc': 1, -+ 'KeyboardInterrupt': 2, -+ errno.EPERM: 3, -+ errno.EACCES: 4, -+ errno.ENOENT: 5, -+ errno.EIO: 6, -+ errno.ENOSPC: 7, -+ errno.EEXIST: 8, -+ errno.ENODATA: 9, -+ errno.EINVAL: 10, -+ errno.EOPNOTSUPP: 11, -+ errno.ERANGE: 12, -+ errno.EWOULDBLOCK: 13, -+ errno.ENOTEMPTY: 14, -+ errno.ENOTDIR: 15, -+ errno.EDQUOT: 16, -+ errno.EPIPE: 17, -+ errno.ESHUTDOWN: 18, -+ errno.ECONNABORTED: 19, -+ errno.ECONNREFUSED: 20, -+ errno.ECONNRESET: 21, -+ errno.EINTR: 22} -+ -+ -+######################################################################### -+# -+# Following are methods are generically useful through class CephFSShell -+# -+####################################################################### -+ -+ -+def poutput(s, end='\n'): -+ shell.poutput(s, end=end) -+ -+ -+def perror(msg, **kwargs): -+ shell.perror(msg, **kwargs) -+ -+ -+def set_exit_code_msg(errcode='Misc', msg=''): -+ """ -+ Set exit code and print error message -+ """ -+ if isinstance(msg, libcephfs.Error): -+ shell.exit_code = exit_codes[msg.get_error_code()] -+ else: -+ shell.exit_code = exit_codes[errcode] -+ if msg: -+ perror(msg) -+ -+ -+def mode_notation(mode): -+ """ -+ """ -+ permission_bits = {'0': '---', -+ '1': '--x', -+ '2': '-w-', -+ '3': '-wx', -+ '4': 'r--', -+ '5': 'r-x', -+ '6': 'rw-', -+ '7': 'rwx'} -+ mode = str(oct(mode)) -+ notation = '-' -+ if mode[2] == '4': -+ notation = 'd' -+ elif mode[2:4] == '12': -+ notation = 'l' -+ for i in mode[-3:]: -+ notation += permission_bits[i] -+ return notation -+ -+ -+def get_chunks(file_size): -+ chunk_start = 0 -+ chunk_size = 0x20000 # 131072 bytes, default max ssl buffer size -+ while chunk_start + chunk_size < file_size: -+ yield(chunk_start, chunk_size) -+ chunk_start += chunk_size -+ final_chunk_size = file_size - chunk_start -+ yield(chunk_start, final_chunk_size) -+ -+ -+def to_bytes(param): -+ # don't convert as follows as it can lead unusable results like coverting -+ # [1, 2, 3, 4] to '[1, 2, 3, 4]' - -+ # str(param).encode('utf-8') -+ if isinstance(param, bytes): -+ return param -+ elif isinstance(param, str): -+ return bytes(param, encoding='utf-8') -+ elif isinstance(param, list): -+ return [i.encode('utf-8') if isinstance(i, str) else to_bytes(i) for -+ i in param] -+ elif isinstance(param, int) or isinstance(param, float): -+ return str(param).encode('utf-8') -+ elif param is None: -+ return None -+ -+ -+def ls(path, opts=''): -+ # opts tries to be like /bin/ls opts -+ almost_all = 'A' in opts -+ try: -+ with cephfs.opendir(path) as d: -+ while True: -+ dent = cephfs.readdir(d) -+ if dent is None: -+ return -+ elif almost_all and dent.d_name in (b'.', b'..'): -+ continue -+ yield dent -+ except libcephfs.ObjectNotFound as e: -+ set_exit_code_msg(msg=e) -+ -+ -+def glob(path, pattern): -+ paths = [] -+ parent_dir = os.path.dirname(path) -+ if parent_dir == b'': -+ parent_dir = b'/' -+ if path == b'/' or is_dir_exists(os.path.basename(path), parent_dir): -+ for i in ls(path, opts='A'): -+ if fnmatch.fnmatch(i.d_name, pattern): -+ paths.append(os.path.join(path, i.d_name)) -+ return paths -+ -+ -+def locate_file(name, case_sensitive=True): -+ dir_list = sorted(set(dirwalk(cephfs.getcwd()))) -+ if not case_sensitive: -+ return [dname for dname in dir_list if name.lower() in dname.lower()] -+ else: -+ return [dname for dname in dir_list if name in dname] -+ -+ -+def get_all_possible_paths(pattern): -+ complete_pattern = pattern[:] -+ paths = [] -+ is_rel_path = not os.path.isabs(pattern) -+ if is_rel_path: -+ dir_ = cephfs.getcwd() -+ else: -+ dir_ = b'/' -+ pattern = pattern[1:] -+ patterns = pattern.split(b'/') -+ paths.extend(glob(dir_, patterns[0])) -+ patterns.pop(0) -+ for pattern in patterns: -+ for path in paths: -+ paths.extend(glob(path, pattern)) -+ if is_rel_path: -+ complete_pattern = os.path.join(cephfs.getcwd(), complete_pattern) -+ return [path for path in paths if fnmatch.fnmatch(path, complete_pattern)] -+ -+ -+suffixes = ['B', 'K', 'M', 'G', 'T', 'P'] -+ -+ -+def humansize(nbytes): -+ i = 0 -+ while nbytes >= 1024 and i < len(suffixes) - 1: -+ nbytes /= 1024. -+ i += 1 -+ nbytes = math.ceil(nbytes) -+ f = ('%d' % nbytes).rstrip('.') -+ return '%s%s' % (f, suffixes[i]) -+ -+ -+def style_listing(path, is_dir, is_symlink, ls_long=False): -+ if not (is_dir or is_symlink): -+ return path -+ pretty = colorama.Style.BRIGHT -+ if is_symlink: -+ pretty += colorama.Fore.CYAN + path -+ if ls_long: -+ # Add target path -+ pretty += ' -> ' + cephfs.readlink(path, size=255).decode('utf-8') -+ elif is_dir: -+ pretty += colorama.Fore.BLUE + path + '/' -+ pretty += colorama.Style.RESET_ALL -+ return pretty -+ -+ -+def print_long(path, is_dir, is_symlink, human_readable): -+ info = cephfs.stat(path, follow_symlink=(not is_symlink)) -+ pretty = style_listing(os.path.basename(path.decode('utf-8')), is_dir, is_symlink, True) -+ if human_readable: -+ sizefmt = '\t {:10s}'.format(humansize(info.st_size)) -+ else: -+ sizefmt = '{:12d}'.format(info.st_size) -+ poutput(f'{mode_notation(info.st_mode)} {sizefmt} {info.st_uid} {info.st_gid} {info.st_mtime}' -+ f' {pretty}') -+ -+ -+def word_len(word): -+ """ -+ Returns the word length, minus any color codes. -+ """ -+ if word[0] == '\x1b': -+ return len(word) - 9 -+ return len(word) -+ -+ -+def is_dir_exists(path, dir_=b''): -+ path_to_stat = os.path.join(dir_, path) -+ try: -+ return ((cephfs.stat(path_to_stat).st_mode & 0o0040000) != 0) -+ except libcephfs.Error: -+ return False -+ -+ -+def is_file_exists(path, dir_=b''): -+ try: -+ # if its not a directory, then its a file -+ return ((cephfs.stat(os.path.join(dir_, path)).st_mode & 0o0040000) == 0) -+ except libcephfs.Error: -+ return False -+ -+ -+def print_list(words, termwidth=79): -+ if not words: -+ return -+ words = [word.decode('utf-8') if isinstance(word, bytes) else word for word in words] -+ width = max([word_len(word) for word in words]) + 2 -+ nwords = len(words) -+ ncols = max(1, (termwidth + 1) // (width + 1)) -+ nrows = (nwords + ncols - 1) // ncols -+ for row in range(nrows): -+ for i in range(row, nwords, nrows): -+ word = words[i] -+ print_width = width -+ if word[0] == '\x1b': -+ print_width = print_width + 10 -+ -+ poutput('%-*s' % (print_width, words[i]), -+ end='\n' if i + nrows >= nwords else '') -+ -+ -+def copy_from_local(local_path, remote_path): -+ stdin = -1 -+ file_ = None -+ fd = None -+ convert_to_bytes = False -+ if local_path == b'-': -+ file_ = sys.stdin -+ convert_to_bytes = True -+ else: -+ try: -+ file_ = open(local_path, 'rb') -+ except PermissionError as e: -+ set_exit_code_msg(e.errno, 'error: no permission to read local file {}'.format( -+ local_path.decode('utf-8'))) -+ return -+ stdin = 1 -+ try: -+ fd = cephfs.open(remote_path, 'w', 0o666) -+ except libcephfs.Error as e: -+ set_exit_code_msg(msg=e) -+ return -+ progress = 0 -+ while True: -+ data = file_.read(65536) -+ if not data or len(data) == 0: -+ break -+ if convert_to_bytes: -+ data = to_bytes(data) -+ wrote = cephfs.write(fd, data, progress) -+ if wrote < 0: -+ break -+ progress += wrote -+ cephfs.close(fd) -+ if stdin > 0: -+ file_.close() -+ poutput('') -+ -+ -+def copy_to_local(remote_path, local_path): -+ fd = None -+ if local_path != b'-': -+ local_dir = os.path.dirname(local_path) -+ dir_list = remote_path.rsplit(b'/', 1) -+ if not os.path.exists(local_dir): -+ os.makedirs(local_dir) -+ if len(dir_list) > 2 and dir_list[1] == b'': -+ return -+ fd = open(local_path, 'wb+') -+ file_ = cephfs.open(remote_path, 'r') -+ file_size = cephfs.stat(remote_path).st_size -+ if file_size <= 0: -+ return -+ progress = 0 -+ for chunk_start, chunk_size in get_chunks(file_size): -+ file_chunk = cephfs.read(file_, chunk_start, chunk_size) -+ progress += len(file_chunk) -+ if fd: -+ fd.write(file_chunk) -+ else: -+ poutput(file_chunk.decode('utf-8')) -+ cephfs.close(file_) -+ if fd: -+ fd.close() -+ -+ -+def dirwalk(path): -+ """ -+ walk a directory tree, using a generator -+ """ -+ path = os.path.normpath(path) -+ for item in ls(path, opts='A'): -+ fullpath = os.path.join(path, item.d_name) -+ src_path = fullpath.rsplit(b'/', 1)[0] -+ -+ yield os.path.normpath(fullpath) -+ if is_dir_exists(item.d_name, src_path): -+ for x in dirwalk(fullpath): -+ yield x -+ -+ -+################################################################## -+# -+# Following methods are implementation for CephFS Shell commands -+# -+################################################################# -+ -+class CephFSShell(Cmd): -+ -+ def __init__(self): -+ super().__init__() -+ self.working_dir = cephfs.getcwd().decode('utf-8') -+ self.set_prompt() -+ self.interactive = False -+ self.umask = '2' -+ -+ def default(self, line): -+ perror('Unrecognized command') -+ -+ def set_prompt(self): -+ self.prompt = ('\033[01;33mCephFS:~' + colorama.Fore.LIGHTCYAN_EX -+ + self.working_dir + colorama.Style.RESET_ALL -+ + '\033[01;33m>>>\033[00m ') -+ -+ def create_argparser(self, command): -+ try: -+ argparse_args = getattr(self, 'argparse_' + command) -+ except AttributeError: -+ set_exit_code_msg() -+ return None -+ doc_lines = getattr( -+ self, 'do_' + command).__doc__.expandtabs().splitlines() -+ if '' in doc_lines: -+ blank_idx = doc_lines.index('') -+ usage = doc_lines[:blank_idx] -+ description = doc_lines[blank_idx + 1:] -+ else: -+ usage = doc_lines -+ description = [] -+ parser = argparse.ArgumentParser( -+ prog=command, -+ usage='\n'.join(usage), -+ description='\n'.join(description), -+ formatter_class=argparse.ArgumentDefaultsHelpFormatter -+ ) -+ for args, kwargs in argparse_args: -+ parser.add_argument(*args, **kwargs) -+ return parser -+ -+ def complete_filenames(self, text, line, begidx, endidx): -+ if not text: -+ completions = [x.d_name.decode('utf-8') + '/' * int(x.is_dir()) -+ for x in ls(b".", opts='A')] -+ else: -+ if text.count('/') > 0: -+ completions = [text.rsplit('/', 1)[0] + '/' -+ + x.d_name.decode('utf-8') + '/' -+ * int(x.is_dir()) for x in ls('/' -+ + text.rsplit('/', 1)[0], opts='A') -+ if x.d_name.decode('utf-8').startswith( -+ text.rsplit('/', 1)[1])] -+ else: -+ completions = [x.d_name.decode('utf-8') + '/' -+ * int(x.is_dir()) for x in ls(b".", opts='A') -+ if x.d_name.decode('utf-8').startswith(text)] -+ if len(completions) == 1 and completions[0][-1] == '/': -+ dir_, file_ = completions[0].rsplit('/', 1) -+ completions.extend([dir_ + '/' + x.d_name.decode('utf-8') -+ + '/' * int(x.is_dir()) for x in -+ ls('/' + dir_, opts='A') -+ if x.d_name.decode('utf-8').startswith(file_)]) -+ return self.delimiter_complete(text, line, begidx, endidx, completions, '/') -+ return completions -+ -+ def onecmd(self, line, **kwargs): -+ """ -+ Global error catcher -+ """ -+ try: -+ res = Cmd.onecmd(self, line, **kwargs) -+ if self.interactive: -+ self.set_prompt() -+ return res -+ except ConnectionError as e: -+ set_exit_code_msg(e.errno, f'***\n{e}') -+ except KeyboardInterrupt: -+ set_exit_code_msg('KeyboardInterrupt', 'Command aborted') -+ except (libcephfs.Error, Exception) as e: -+ if shell.debug: -+ traceback.print_exc(file=sys.stdout) -+ set_exit_code_msg(msg=e) -+ -+ class path_to_bytes(argparse.Action): -+ def __call__(self, parser, namespace, values, option_string=None): -+ values = to_bytes(values) -+ setattr(namespace, self.dest, values) -+ -+ # TODO: move the necessary contents from here to `class path_to_bytes`. -+ class get_list_of_bytes_path(argparse.Action): -+ def __call__(self, parser, namespace, values, option_string=None): -+ values = to_bytes(values) -+ -+ if values == b'.': -+ values = cephfs.getcwd() -+ else: -+ for i in values: -+ if i == b'.': -+ values[values.index(i)] = cephfs.getcwd() -+ -+ setattr(namespace, self.dest, values) -+ -+ def complete_mkdir(self, text, line, begidx, endidx): -+ """ -+ auto complete of file name. -+ """ -+ return self.complete_filenames(text, line, begidx, endidx) -+ -+ class ModeAction(argparse.Action): -+ def __init__(self, option_strings, dest, nargs=None, **kwargs): -+ if nargs is not None and nargs != '?': -+ raise ValueError("more than one modes not allowed") -+ super().__init__(option_strings, dest, **kwargs) -+ -+ def __call__(self, parser, namespace, values, option_string=None): -+ o_mode = 0 -+ res = None -+ try: -+ o_mode = int(values, base=8) -+ except ValueError: -+ res = re.match('((u?g?o?)|(a?))(=)(r?w?x?)', values) -+ if res is None: -+ parser.error("invalid mode: %s\n" -+ "mode must be a numeric octal literal\n" -+ "or ((u?g?o?)|(a?))(=)(r?w?x?)" % -+ values) -+ else: -+ # we are supporting only assignment of mode and not + or - -+ # as is generally available with the chmod command -+ # eg. -+ # >>> res = re.match('((u?g?o?)|(a?))(=)(r?w?x?)', 'go=') -+ # >>> res.groups() -+ # ('go', 'go', None, '=', '') -+ val = res.groups() -+ -+ if val[3] != '=': -+ parser.error("need assignment operator between user " -+ "and mode specifiers") -+ if val[4] == '': -+ parser.error("invalid mode: %s\n" -+ "mode must be combination of: r | w | x" % -+ values) -+ users = '' -+ if val[2] is None: -+ users = val[1] -+ else: -+ users = val[2] -+ -+ t_mode = 0 -+ if users == 'a': -+ users = 'ugo' -+ -+ if 'r' in val[4]: -+ t_mode |= 4 -+ if 'w' in val[4]: -+ t_mode |= 2 -+ if 'x' in val[4]: -+ t_mode |= 1 -+ -+ if 'u' in users: -+ o_mode |= (t_mode << 6) -+ if 'g' in users: -+ o_mode |= (t_mode << 3) -+ if 'o' in users: -+ o_mode |= t_mode -+ -+ if o_mode < 0: -+ parser.error("invalid mode: %s\n" -+ "mode cannot be negative" % values) -+ if o_mode > 0o777: -+ parser.error("invalid mode: %s\n" -+ "mode cannot be greater than octal 0777" % values) -+ -+ setattr(namespace, self.dest, str(oct(o_mode))) -+ -+ mkdir_parser = argparse.ArgumentParser( -+ description='Create the directory(ies), if they do not already exist.') -+ mkdir_parser.add_argument('dirs', type=str, -+ action=path_to_bytes, -+ metavar='DIR_NAME', -+ help='Name of new_directory.', -+ nargs='+') -+ mkdir_parser.add_argument('-m', '--mode', type=str, -+ action=ModeAction, -+ help='Sets the access mode for the new directory.') -+ mkdir_parser.add_argument('-p', '--parent', action='store_true', -+ help='Create parent directories as necessary. ' -+ 'When this option is specified, no error is' -+ 'reported if a directory already exists.') -+ -+ @with_argparser(mkdir_parser) -+ def do_mkdir(self, args): -+ """ -+ Create directory. -+ """ -+ for path in args.dirs: -+ if args.mode: -+ permission = int(args.mode, 8) -+ else: -+ permission = 0o777 -+ if args.parent: -+ cephfs.mkdirs(path, permission) -+ else: -+ try: -+ cephfs.mkdir(path, permission) -+ except libcephfs.Error as e: -+ set_exit_code_msg(e) -+ -+ def complete_put(self, text, line, begidx, endidx): -+ """ -+ auto complete of file name. -+ """ -+ index_dict = {1: self.path_complete} -+ return self.index_based_complete(text, line, begidx, endidx, index_dict) -+ -+ put_parser = argparse.ArgumentParser( -+ description='Copy a file/directory to Ceph File System from Local File System.') -+ put_parser.add_argument('local_path', type=str, action=path_to_bytes, -+ help='Path of the file in the local system') -+ put_parser.add_argument('remote_path', type=str, action=path_to_bytes, -+ help='Path of the file in the remote system') -+ put_parser.add_argument('-f', '--force', action='store_true', -+ help='Overwrites the destination if it already exists.') -+ -+ @with_argparser(put_parser) -+ def do_put(self, args): -+ """ -+ Copy a local file/directory to CephFS. -+ """ -+ if args.local_path != b'-' and not os.path.isfile(args.local_path) \ -+ and not os.path.isdir(args.local_path): -+ set_exit_code_msg(errno.ENOENT, -+ msg=f"error: " -+ f"{args.local_path.decode('utf-8')}: " -+ f"No such file or directory") -+ return -+ -+ if (is_file_exists(args.remote_path) or is_dir_exists( -+ args.remote_path)) and not args.force: -+ set_exit_code_msg(msg=f"error: file/directory " -+ f"{args.remote_path.decode('utf-8')} " -+ f"exists, use --force to overwrite") -+ return -+ -+ root_src_dir = args.local_path -+ root_dst_dir = args.remote_path -+ if args.local_path == b'.' or args.local_path == b'./': -+ root_src_dir = os.getcwdb() -+ elif len(args.local_path.rsplit(b'/', 1)) < 2: -+ root_src_dir = os.path.join(os.getcwdb(), args.local_path) -+ else: -+ p = args.local_path.split(b'/') -+ if p[0] == b'.': -+ root_src_dir = os.getcwdb() -+ p.pop(0) -+ while len(p) > 0: -+ root_src_dir += b'/' + p.pop(0) -+ -+ if root_dst_dir == b'.': -+ if args.local_path != b'-': -+ root_dst_dir = root_src_dir.rsplit(b'/', 1)[1] -+ if root_dst_dir == b'': -+ root_dst_dir = root_src_dir.rsplit(b'/', 1)[0] -+ a = root_dst_dir.rsplit(b'/', 1) -+ if len(a) > 1: -+ root_dst_dir = a[1] -+ else: -+ root_dst_dir = a[0] -+ else: -+ set_exit_code_msg(errno.EINVAL, 'error: no filename specified ' -+ 'for destination') -+ return -+ -+ if root_dst_dir[-1] != b'/': -+ root_dst_dir += b'/' -+ -+ if args.local_path == b'-' or os.path.isfile(root_src_dir): -+ if args.local_path == b'-': -+ root_src_dir = b'-' -+ copy_from_local(root_src_dir, root_dst_dir) -+ else: -+ for src_dir, dirs, files in os.walk(root_src_dir): -+ if isinstance(src_dir, str): -+ src_dir = to_bytes(src_dir) -+ dst_dir = src_dir.replace(root_src_dir, root_dst_dir, 1) -+ dst_dir = re.sub(rb'\/+', b'/', cephfs.getcwd() -+ + dst_dir) -+ if args.force and dst_dir != b'/' and not is_dir_exists( -+ dst_dir[:-1]) and not locate_file(dst_dir): -+ try: -+ cephfs.mkdirs(dst_dir, 0o777) -+ except libcephfs.Error: -+ pass -+ if (not args.force) and dst_dir != b'/' and not is_dir_exists( -+ dst_dir) and not os.path.isfile(root_src_dir): -+ try: -+ cephfs.mkdirs(dst_dir, 0o777) -+ except libcephfs.Error: -+ # TODO: perhaps, set retval to 1? -+ pass -+ -+ for dir_ in dirs: -+ dir_name = os.path.join(dst_dir, dir_) -+ if not is_dir_exists(dir_name): -+ try: -+ cephfs.mkdirs(dir_name, 0o777) -+ except libcephfs.Error: -+ # TODO: perhaps, set retval to 1? -+ pass -+ -+ for file_ in files: -+ src_file = os.path.join(src_dir, file_) -+ dst_file = re.sub(rb'\/+', b'/', b'/' + dst_dir + b'/' + file_) -+ if (not args.force) and is_file_exists(dst_file): -+ return -+ copy_from_local(src_file, os.path.join(cephfs.getcwd(), -+ dst_file)) -+ -+ def complete_get(self, text, line, begidx, endidx): -+ """ -+ auto complete of file name. -+ """ -+ return self.complete_filenames(text, line, begidx, endidx) -+ -+ get_parser = argparse.ArgumentParser( -+ description='Copy a file from Ceph File System to Local Directory.') -+ get_parser.add_argument('remote_path', type=str, action=path_to_bytes, -+ help='Path of the file in the remote system') -+ get_parser.add_argument('local_path', type=str, action=path_to_bytes, -+ help='Path of the file in the local system') -+ get_parser.add_argument('-f', '--force', action='store_true', -+ help='Overwrites the destination if it already exists.') -+ -+ @with_argparser(get_parser) -+ def do_get(self, args): -+ """ -+ Copy a file/directory from CephFS to given path. -+ """ -+ if not is_file_exists(args.remote_path) and not \ -+ is_dir_exists(args.remote_path): -+ set_exit_code_msg(errno.ENOENT, "error: no file/directory" -+ " found at specified remote " -+ "path") -+ return -+ if (os.path.isfile(args.local_path) or os.path.isdir( -+ args.local_path)) and not args.force: -+ set_exit_code_msg(msg=f"error: file/directory " -+ f"{args.local_path.decode('utf-8')}" -+ f" already exists, use --force to " -+ f"overwrite") -+ return -+ root_src_dir = args.remote_path -+ root_dst_dir = args.local_path -+ fname = root_src_dir.rsplit(b'/', 1) -+ if args.local_path == b'.': -+ root_dst_dir = os.getcwdb() -+ if args.remote_path == b'.': -+ root_src_dir = cephfs.getcwd() -+ if args.local_path == b'-': -+ if args.remote_path == b'.' or args.remote_path == b'./': -+ set_exit_code_msg(errno.EINVAL, 'error: no remote file name specified') -+ return -+ copy_to_local(root_src_dir, b'-') -+ elif is_file_exists(args.remote_path): -+ copy_to_local(root_src_dir, root_dst_dir) -+ elif b'/' in root_src_dir and is_file_exists(fname[1], fname[0]): -+ copy_to_local(root_src_dir, root_dst_dir) -+ else: -+ files = list(reversed(sorted(dirwalk(root_src_dir)))) -+ for file_ in files: -+ dst_dirpath, dst_file = file_.rsplit(b'/', 1) -+ if dst_dirpath in files: -+ files.remove(dst_dirpath) -+ dst_path = os.path.join(root_dst_dir, dst_dirpath, dst_file) -+ dst_path = os.path.normpath(dst_path) -+ if is_dir_exists(file_): -+ try: -+ os.makedirs(dst_path) -+ except OSError: -+ pass -+ else: -+ copy_to_local(file_, dst_path) -+ -+ return 0 -+ -+ def complete_ls(self, text, line, begidx, endidx): -+ """ -+ auto complete of file name. -+ """ -+ return self.complete_filenames(text, line, begidx, endidx) -+ -+ ls_parser = argparse.ArgumentParser( -+ description='Copy a file from Ceph File System from Local Directory.') -+ ls_parser.add_argument('-l', '--long', action='store_true', -+ help='Detailed list of items in the directory.') -+ ls_parser.add_argument('-r', '--reverse', action='store_true', -+ help='Reverse order of listing items in the directory.') -+ ls_parser.add_argument('-H', action='store_true', help='Human Readable') -+ ls_parser.add_argument('-a', '--all', action='store_true', -+ help='Do not Ignore entries starting with .') -+ ls_parser.add_argument('-S', action='store_true', help='Sort by file_size') -+ ls_parser.add_argument('paths', help='Name of Directories', -+ action=path_to_bytes, nargs='*', default=['.']) -+ -+ @with_argparser(ls_parser) -+ def do_ls(self, args): -+ """ -+ List all the files and directories in the current working directory -+ """ -+ paths = args.paths -+ for path in paths: -+ values = [] -+ items = [] -+ try: -+ if path.count(b'*') > 0: -+ all_items = get_all_possible_paths(path) -+ if len(all_items) == 0: -+ continue -+ path = all_items[0].rsplit(b'/', 1)[0] -+ if path == b'': -+ path = b'/' -+ dirs = [] -+ for i in all_items: -+ for item in ls(path): -+ d_name = item.d_name -+ if os.path.basename(i) == d_name: -+ if item.is_dir(): -+ dirs.append(os.path.join(path, d_name)) -+ else: -+ items.append(item) -+ if dirs: -+ paths.extend(dirs) -+ else: -+ poutput(path.decode('utf-8'), end=':\n') -+ items = sorted(items, key=lambda item: item.d_name) -+ else: -+ if path != b'' and path != cephfs.getcwd() and len(paths) > 1: -+ poutput(path.decode('utf-8'), end=':\n') -+ items = sorted(ls(path), key=lambda item: item.d_name) -+ if not args.all: -+ items = [i for i in items if not i.d_name.startswith(b'.')] -+ if args.S: -+ items = sorted(items, key=lambda item: cephfs.stat( -+ path + b'/' + item.d_name, follow_symlink=( -+ not item.is_symbol_file())).st_size) -+ if args.reverse: -+ items = reversed(items) -+ for item in items: -+ filepath = item.d_name -+ is_dir = item.is_dir() -+ is_sym_lnk = item.is_symbol_file() -+ try: -+ if args.long and args.H: -+ print_long(os.path.join(cephfs.getcwd(), path, filepath), is_dir, -+ is_sym_lnk, True) -+ elif args.long: -+ print_long(os.path.join(cephfs.getcwd(), path, filepath), is_dir, -+ is_sym_lnk, False) -+ elif is_sym_lnk or is_dir: -+ values.append(style_listing(filepath.decode('utf-8'), is_dir, -+ is_sym_lnk)) -+ else: -+ values.append(filepath) -+ except libcephfs.Error as e: -+ set_exit_code_msg(msg=e) -+ if not args.long: -+ print_list(values, shutil.get_terminal_size().columns) -+ if path != paths[-1]: -+ poutput('') -+ except libcephfs.Error as e: -+ set_exit_code_msg(msg=e) -+ -+ def complete_rmdir(self, text, line, begidx, endidx): -+ """ -+ auto complete of file name. -+ """ -+ return self.complete_filenames(text, line, begidx, endidx) -+ -+ rmdir_parser = argparse.ArgumentParser(description='Remove Directory.') -+ rmdir_parser.add_argument('paths', help='Directory Path.', nargs='+', -+ action=path_to_bytes) -+ rmdir_parser.add_argument('-p', '--parent', action='store_true', -+ help='Remove parent directories as necessary. ' -+ 'When this option is specified, no error ' -+ 'is reported if a directory has any ' -+ 'sub-directories, files') -+ -+ @with_argparser(rmdir_parser) -+ def do_rmdir(self, args): -+ self.do_rmdir_helper(args) -+ -+ def do_rmdir_helper(self, args): -+ """ -+ Remove a specific Directory -+ """ -+ is_pattern = False -+ paths = args.paths -+ for path in paths: -+ if path.count(b'*') > 0: -+ is_pattern = True -+ all_items = get_all_possible_paths(path) -+ if len(all_items) > 0: -+ path = all_items[0].rsplit(b'/', 1)[0] -+ if path == b'': -+ path = b'/' -+ dirs = [] -+ for i in all_items: -+ for item in ls(path): -+ d_name = item.d_name -+ if os.path.basename(i) == d_name: -+ if item.is_dir(): -+ dirs.append(os.path.join(path, d_name)) -+ paths.extend(dirs) -+ continue -+ else: -+ is_pattern = False -+ -+ if args.parent: -+ path = os.path.join(cephfs.getcwd(), path.rsplit(b'/')[0]) -+ files = list(sorted(set(dirwalk(path)), reverse=True)) -+ if not files: -+ path = b'.' -+ for filepath in files: -+ try: -+ cephfs.rmdir(os.path.normpath(filepath)) -+ except libcephfs.Error as e: -+ perror(e) -+ path = b'.' -+ break -+ else: -+ path = os.path.normpath(os.path.join(cephfs.getcwd(), path)) -+ if not is_pattern and path != os.path.normpath(b''): -+ try: -+ cephfs.rmdir(path) -+ except libcephfs.Error as e: -+ set_exit_code_msg(msg=e) -+ -+ def complete_rm(self, text, line, begidx, endidx): -+ """ -+ auto complete of file name. -+ """ -+ return self.complete_filenames(text, line, begidx, endidx) -+ -+ rm_parser = argparse.ArgumentParser(description='Remove File.') -+ rm_parser.add_argument('paths', help='File Path.', nargs='+', -+ action=path_to_bytes) -+ -+ @with_argparser(rm_parser) -+ def do_rm(self, args): -+ """ -+ Remove a specific file -+ """ -+ file_paths = args.paths -+ for path in file_paths: -+ if path.count(b'*') > 0: -+ file_paths.extend([i for i in get_all_possible_paths( -+ path) if is_file_exists(i)]) -+ else: -+ try: -+ cephfs.unlink(path) -+ except libcephfs.Error as e: -+ # NOTE: perhaps we need a better msg here -+ set_exit_code_msg(msg=e) -+ -+ def complete_mv(self, text, line, begidx, endidx): -+ """ -+ auto complete of file name. -+ """ -+ return self.complete_filenames(text, line, begidx, endidx) -+ -+ mv_parser = argparse.ArgumentParser(description='Move File.') -+ mv_parser.add_argument('src_path', type=str, action=path_to_bytes, -+ help='Source File Path.') -+ mv_parser.add_argument('dest_path', type=str, action=path_to_bytes, -+ help='Destination File Path.') -+ -+ @with_argparser(mv_parser) -+ def do_mv(self, args): -+ """ -+ Rename a file or Move a file from source path to the destination -+ """ -+ cephfs.rename(args.src_path, args.dest_path) -+ -+ def complete_cd(self, text, line, begidx, endidx): -+ """ -+ auto complete of file name. -+ """ -+ return self.complete_filenames(text, line, begidx, endidx) -+ -+ cd_parser = argparse.ArgumentParser(description='Change working directory') -+ cd_parser.add_argument('path', type=str, help='Name of the directory.', -+ action=path_to_bytes, nargs='?', default='/') -+ -+ @with_argparser(cd_parser) -+ def do_cd(self, args): -+ """ -+ Change working directory -+ """ -+ cephfs.chdir(args.path) -+ self.working_dir = cephfs.getcwd().decode('utf-8') -+ self.set_prompt() -+ -+ def do_cwd(self, arglist): -+ """ -+ Get current working directory. -+ """ -+ poutput(cephfs.getcwd().decode('utf-8')) -+ -+ def complete_chmod(self, text, line, begidx, endidx): -+ """ -+ auto complete of file name. -+ """ -+ return self.complete_filenames(text, line, begidx, endidx) -+ -+ chmod_parser = argparse.ArgumentParser(description='Create Directory.') -+ chmod_parser.add_argument('mode', type=str, action=ModeAction, help='Mode') -+ chmod_parser.add_argument('paths', type=str, action=path_to_bytes, -+ help='Name of the file', nargs='+') -+ -+ @with_argparser(chmod_parser) -+ def do_chmod(self, args): -+ """ -+ Change permission of a file -+ """ -+ for path in args.paths: -+ mode = int(args.mode, base=8) -+ try: -+ cephfs.chmod(path, mode) -+ except libcephfs.Error as e: -+ set_exit_code_msg(msg=e) -+ -+ def complete_cat(self, text, line, begidx, endidx): -+ """ -+ auto complete of file name. -+ """ -+ return self.complete_filenames(text, line, begidx, endidx) -+ -+ cat_parser = argparse.ArgumentParser(description='') -+ cat_parser.add_argument('paths', help='Name of Files', action=path_to_bytes, -+ nargs='+') -+ -+ @with_argparser(cat_parser) -+ def do_cat(self, args): -+ """ -+ Print contents of a file -+ """ -+ for path in args.paths: -+ if is_file_exists(path): -+ copy_to_local(path, b'-') -+ else: -+ set_exit_code_msg(errno.ENOENT, '{}: no such file'.format( -+ path.decode('utf-8'))) -+ -+ umask_parser = argparse.ArgumentParser(description='Set umask value.') -+ umask_parser.add_argument('mode', help='Mode', type=str, action=ModeAction, -+ nargs='?', default='') -+ -+ @with_argparser(umask_parser) -+ def do_umask(self, args): -+ """ -+ Set Umask value. -+ """ -+ if args.mode == '': -+ poutput(self.umask.zfill(4)) -+ else: -+ mode = int(args.mode, 8) -+ self.umask = str(oct(cephfs.umask(mode))[2:]) -+ -+ def complete_write(self, text, line, begidx, endidx): -+ """ -+ auto complete of file name. -+ """ -+ return self.complete_filenames(text, line, begidx, endidx) -+ -+ write_parser = argparse.ArgumentParser(description='Writes data into a file') -+ write_parser.add_argument('path', type=str, action=path_to_bytes, -+ help='Name of File') -+ -+ @with_argparser(write_parser) -+ def do_write(self, args): -+ """ -+ Write data into a file. -+ """ -+ -+ copy_from_local(b'-', args.path) -+ -+ def complete_lcd(self, text, line, begidx, endidx): -+ """ -+ auto complete of file name. -+ """ -+ index_dict = {1: self.path_complete} -+ return self.index_based_complete(text, line, begidx, endidx, index_dict) -+ -+ lcd_parser = argparse.ArgumentParser(description='') -+ lcd_parser.add_argument('path', type=str, action=path_to_bytes, help='Path') -+ -+ @with_argparser(lcd_parser) -+ def do_lcd(self, args): -+ """ -+ Moves into the given local directory -+ """ -+ try: -+ os.chdir(os.path.expanduser(args.path)) -+ except OSError as e: -+ set_exit_code_msg(e.errno, "Cannot change to " -+ f"{e.filename.decode('utf-8')}: {e.strerror}") -+ -+ def complete_lls(self, text, line, begidx, endidx): -+ """ -+ auto complete of file name. -+ """ -+ index_dict = {1: self.path_complete} -+ return self.index_based_complete(text, line, begidx, endidx, index_dict) -+ -+ lls_parser = argparse.ArgumentParser( -+ description='List files in local system.') -+ lls_parser.add_argument('paths', help='Paths', action=path_to_bytes, -+ nargs='*') -+ -+ @with_argparser(lls_parser) -+ def do_lls(self, args): -+ """ -+ Lists all files and folders in the current local directory -+ """ -+ if not args.paths: -+ print_list(os.listdir(os.getcwdb())) -+ else: -+ for path in args.paths: -+ try: -+ items = os.listdir(path) -+ poutput("{}:".format(path.decode('utf-8'))) -+ print_list(items) -+ except OSError as e: -+ set_exit_code_msg(e.errno, f"{e.filename.decode('utf-8')}: " -+ f"{e.strerror}") -+ # Arguments to the with_argpaser decorator function are sticky. -+ # The items in args.path do not get overwritten in subsequent calls. -+ # The arguments remain in args.paths after the function exits and we -+ # neeed to clean it up to ensure the next call works as expected. -+ args.paths.clear() -+ -+ def do_lpwd(self, arglist): -+ """ -+ Prints the absolute path of the current local directory -+ """ -+ poutput(os.getcwd()) -+ -+ def complete_df(self, text, line, begidx, endidx): -+ """ -+ auto complete of file name. -+ """ -+ return self.complete_filenames(text, line, begidx, endidx) -+ -+ df_parser = argparse.ArgumentParser(description='Show information about\ -+ the amount of available disk space') -+ df_parser.add_argument('file', help='Name of the file', nargs='*', -+ default=['.'], action=path_to_bytes) -+ -+ @with_argparser(df_parser) -+ def do_df(self, arglist): -+ """ -+ Display the amount of available disk space for file systems -+ """ -+ header = True # Set to true for printing header only once -+ if b'.' == arglist.file[0]: -+ arglist.file = ls(b'.') -+ -+ for file in arglist.file: -+ if isinstance(file, libcephfs.DirEntry): -+ file = file.d_name -+ if file == b'.' or file == b'..': -+ continue -+ try: -+ statfs = cephfs.statfs(file) -+ stat = cephfs.stat(file) -+ block_size = (statfs['f_blocks'] * statfs['f_bsize']) // 1024 -+ available = block_size - stat.st_size -+ use = 0 -+ -+ if block_size > 0: -+ use = (stat.st_size * 100) // block_size -+ -+ if header: -+ header = False -+ poutput('{:25s}\t{:5s}\t{:15s}{:10s}{}'.format( -+ "1K-blocks", "Used", "Available", "Use%", -+ "Stored on")) -+ -+ poutput('{:d}\t{:18d}\t{:8d}\t{:10s} {}'.format(block_size, -+ stat.st_size, available, str(int(use)) + '%', -+ file.decode('utf-8'))) -+ except libcephfs.OSError as e: -+ set_exit_code_msg(e.get_error_code(), "could not statfs {}: {}".format( -+ file.decode('utf-8'), e.strerror)) -+ -+ locate_parser = argparse.ArgumentParser( -+ description='Find file within file system') -+ locate_parser.add_argument('name', help='name', type=str, -+ action=path_to_bytes) -+ locate_parser.add_argument('-c', '--count', action='store_true', -+ help='Count list of items located.') -+ locate_parser.add_argument( -+ '-i', '--ignorecase', action='store_true', help='Ignore case') -+ -+ @with_argparser(locate_parser) -+ def do_locate(self, args): -+ """ -+ Find a file within the File System -+ """ -+ if args.name.count(b'*') == 1: -+ if args.name[0] == b'*': -+ args.name += b'/' -+ elif args.name[-1] == '*': -+ args.name = b'/' + args.name -+ args.name = args.name.replace(b'*', b'') -+ if args.ignorecase: -+ locations = locate_file(args.name, False) -+ else: -+ locations = locate_file(args.name) -+ if args.count: -+ poutput(len(locations)) -+ else: -+ poutput((b'\n'.join(locations)).decode('utf-8')) -+ -+ def complete_du(self, text, line, begidx, endidx): -+ """ -+ auto complete of file name. -+ """ -+ return self.complete_filenames(text, line, begidx, endidx) -+ -+ du_parser = argparse.ArgumentParser( -+ description='Disk Usage of a Directory') -+ du_parser.add_argument('paths', type=str, action=get_list_of_bytes_path, -+ help='Name of the directory.', nargs='*', -+ default=[b'.']) -+ du_parser.add_argument('-r', action='store_true', -+ help='Recursive Disk usage of all directories.') -+ -+ @with_argparser(du_parser) -+ def do_du(self, args): -+ """ -+ Print disk usage of a given path(s). -+ """ -+ def print_disk_usage(files): -+ if isinstance(files, bytes): -+ files = (files, ) -+ -+ for f in files: -+ try: -+ st = cephfs.lstat(f) -+ -+ if stat.S_ISDIR(st.st_mode): -+ dusage = int(cephfs.getxattr(f, -+ 'ceph.dir.rbytes').decode('utf-8')) -+ else: -+ dusage = st.st_size -+ -+ # print path in local context -+ f = os.path.normpath(f) -+ if f[0] is ord('/'): -+ f = b'.' + f -+ poutput('{:10s} {}'.format(humansize(dusage), -+ f.decode('utf-8'))) -+ except libcephfs.Error as e: -+ set_exit_code_msg(msg=e) -+ continue -+ -+ for path in args.paths: -+ if args.r: -+ print_disk_usage(sorted(set(dirwalk(path)).union({path}))) -+ else: -+ print_disk_usage(path) -+ -+ quota_parser = argparse.ArgumentParser( -+ description='Quota management for a Directory') -+ quota_parser.add_argument('op', choices=['get', 'set'], -+ help='Quota operation type.') -+ quota_parser.add_argument('path', type=str, action=path_to_bytes, -+ help='Name of the directory.') -+ quota_parser.add_argument('--max_bytes', type=int, default=-1, nargs='?', -+ help='Max cumulative size of the data under ' -+ 'this directory.') -+ quota_parser.add_argument('--max_files', type=int, default=-1, nargs='?', -+ help='Total number of files under this ' -+ 'directory tree.') -+ -+ @with_argparser(quota_parser) -+ def do_quota(self, args): -+ """ -+ Quota management. -+ """ -+ if not is_dir_exists(args.path): -+ set_exit_code_msg(errno.ENOENT, 'error: no such directory {}'.format( -+ args.path.decode('utf-8'))) -+ return -+ -+ if args.op == 'set': -+ if (args.max_bytes == -1) and (args.max_files == -1): -+ set_exit_code_msg(errno.EINVAL, 'please specify either ' -+ '--max_bytes or --max_files or both') -+ return -+ -+ if args.max_bytes >= 0: -+ max_bytes = to_bytes(str(args.max_bytes)) -+ try: -+ cephfs.setxattr(args.path, 'ceph.quota.max_bytes', -+ max_bytes, os.XATTR_CREATE) -+ poutput('max_bytes set to %d' % args.max_bytes) -+ except libcephfs.Error as e: -+ cephfs.setxattr(args.path, 'ceph.quota.max_bytes', -+ max_bytes, os.XATTR_REPLACE) -+ set_exit_code_msg(e.get_error_code(), 'max_bytes reset to ' -+ f'{args.max_bytes}') -+ -+ if args.max_files >= 0: -+ max_files = to_bytes(str(args.max_files)) -+ try: -+ cephfs.setxattr(args.path, 'ceph.quota.max_files', -+ max_files, os.XATTR_CREATE) -+ poutput('max_files set to %d' % args.max_files) -+ except libcephfs.Error as e: -+ cephfs.setxattr(args.path, 'ceph.quota.max_files', -+ max_files, os.XATTR_REPLACE) -+ set_exit_code_msg(e.get_error_code(), 'max_files reset to ' -+ f'{args.max_files}') -+ elif args.op == 'get': -+ max_bytes = '0' -+ max_files = '0' -+ try: -+ max_bytes = cephfs.getxattr(args.path, 'ceph.quota.max_bytes') -+ poutput('max_bytes: {}'.format(max_bytes.decode('utf-8'))) -+ except libcephfs.Error as e: -+ set_exit_code_msg(e.get_error_code(), 'max_bytes is not set') -+ -+ try: -+ max_files = cephfs.getxattr(args.path, 'ceph.quota.max_files') -+ poutput('max_files: {}'.format(max_files.decode('utf-8'))) -+ except libcephfs.Error as e: -+ set_exit_code_msg(e.get_error_code(), 'max_files is not set') -+ -+ snap_parser = argparse.ArgumentParser(description='Snapshot Management') -+ snap_parser.add_argument('op', type=str, -+ help='Snapshot operation: create or delete') -+ snap_parser.add_argument('name', type=str, action=path_to_bytes, -+ help='Name of snapshot') -+ snap_parser.add_argument('dir', type=str, action=path_to_bytes, -+ help='Directory for which snapshot ' -+ 'needs to be created or deleted') -+ -+ @with_argparser(snap_parser) -+ def do_snap(self, args): -+ """ -+ Snapshot management for the volume -+ """ -+ # setting self.colors to None turns off colorizing and -+ # perror emits plain text -+ self.colors = None -+ -+ snapdir = '.snap' -+ conf_snapdir = cephfs.conf_get('client_snapdir') -+ if conf_snapdir is not None: -+ snapdir = conf_snapdir -+ snapdir = to_bytes(snapdir) -+ if args.op == 'create': -+ try: -+ if is_dir_exists(args.dir): -+ cephfs.mkdir(os.path.join(args.dir, snapdir, args.name), 0o755) -+ else: -+ set_exit_code_msg(errno.ENOENT, "'{}': no such directory".format( -+ args.dir.decode('utf-8'))) -+ except libcephfs.Error as e: -+ set_exit_code_msg(e.get_error_code(), -+ "snapshot '{}' already exists".format( -+ args.name.decode('utf-8'))) -+ elif args.op == 'delete': -+ snap_dir = os.path.join(args.dir, snapdir, args.name) -+ try: -+ if is_dir_exists(snap_dir): -+ newargs = argparse.Namespace(paths=[snap_dir], parent=False) -+ self.do_rmdir_helper(newargs) -+ else: -+ set_exit_code_msg(errno.ENOENT, "'{}': no such snapshot".format( -+ args.name.decode('utf-8'))) -+ except libcephfs.Error as e: -+ set_exit_code_msg(e.get_error_code(), "error while deleting " -+ "'{}'".format(snap_dir.decode('utf-8'))) -+ else: -+ set_exit_code_msg(errno.EINVAL, "snapshot can only be created or " -+ "deleted; check - help snap") -+ -+ def do_help(self, line): -+ """ -+ Get details about a command. -+ Usage: help - for a specific command -+ help all - for all the commands -+ """ -+ if line == 'all': -+ for k in dir(self): -+ if k.startswith('do_'): -+ poutput('-' * 80) -+ super().do_help(k[3:]) -+ return -+ parser = self.create_argparser(line) -+ if parser: -+ parser.print_help() -+ else: -+ super().do_help(line) -+ -+ def complete_stat(self, text, line, begidx, endidx): -+ """ -+ auto complete of file name. -+ """ -+ return self.complete_filenames(text, line, begidx, endidx) -+ -+ stat_parser = argparse.ArgumentParser( -+ description='Display file or file system status') -+ stat_parser.add_argument('paths', type=str, help='file paths', -+ action=path_to_bytes, nargs='+') -+ -+ @with_argparser(stat_parser) -+ def do_stat(self, args): -+ """ -+ Display file or file system status -+ """ -+ for path in args.paths: -+ try: -+ stat = cephfs.stat(path) -+ atime = stat.st_atime.isoformat(' ') -+ mtime = stat.st_mtime.isoformat(' ') -+ ctime = stat.st_mtime.isoformat(' ') -+ -+ poutput("File: {}\nSize: {:d}\nBlocks: {:d}\nIO Block: {:d}\n" -+ "Device: {:d}\tInode: {:d}\tLinks: {:d}\nPermission: " -+ "{:o}/{}\tUid: {:d}\tGid: {:d}\nAccess: {}\nModify: " -+ "{}\nChange: {}".format(path.decode('utf-8'), -+ stat.st_size, stat.st_blocks, -+ stat.st_blksize, stat.st_dev, -+ stat.st_ino, stat.st_nlink, -+ stat.st_mode, -+ mode_notation(stat.st_mode), -+ stat.st_uid, stat.st_gid, atime, -+ mtime, ctime)) -+ except libcephfs.Error as e: -+ set_exit_code_msg(msg=e) -+ -+ setxattr_parser = argparse.ArgumentParser( -+ description='Set extended attribute for a file') -+ setxattr_parser.add_argument('path', type=str, action=path_to_bytes, help='Name of the file') -+ setxattr_parser.add_argument('name', type=str, help='Extended attribute name') -+ setxattr_parser.add_argument('value', type=str, help='Extended attribute value') -+ -+ @with_argparser(setxattr_parser) -+ def do_setxattr(self, args): -+ """ -+ Set extended attribute for a file -+ """ -+ val_bytes = to_bytes(args.value) -+ name_bytes = to_bytes(args.name) -+ try: -+ cephfs.setxattr(args.path, name_bytes, val_bytes, os.XATTR_CREATE) -+ poutput('{} is successfully set to {}'.format(args.name, args.value)) -+ except libcephfs.ObjectExists: -+ cephfs.setxattr(args.path, name_bytes, val_bytes, os.XATTR_REPLACE) -+ poutput('{} is successfully reset to {}'.format(args.name, args.value)) -+ except libcephfs.Error as e: -+ set_exit_code_msg(msg=e) -+ -+ getxattr_parser = argparse.ArgumentParser( -+ description='Get extended attribute set for a file') -+ getxattr_parser.add_argument('path', type=str, action=path_to_bytes, -+ help='Name of the file') -+ getxattr_parser.add_argument('name', type=str, help='Extended attribute name') -+ -+ @with_argparser(getxattr_parser) -+ def do_getxattr(self, args): -+ """ -+ Get extended attribute for a file -+ """ -+ try: -+ poutput('{}'.format(cephfs.getxattr(args.path, -+ to_bytes(args.name)).decode('utf-8'))) -+ except libcephfs.Error as e: -+ set_exit_code_msg(msg=e) -+ -+ listxattr_parser = argparse.ArgumentParser( -+ description='List extended attributes set for a file') -+ listxattr_parser.add_argument('path', type=str, action=path_to_bytes, -+ help='Name of the file') -+ -+ @with_argparser(listxattr_parser) -+ def do_listxattr(self, args): -+ """ -+ List extended attributes for a file -+ """ -+ try: -+ size, xattr_list = cephfs.listxattr(args.path) -+ if size > 0: -+ poutput('{}'.format(xattr_list.replace(b'\x00', b' ').decode('utf-8'))) -+ else: -+ poutput('No extended attribute is set') -+ except libcephfs.Error as e: -+ set_exit_code_msg(msg=e) -+ -+ -+####################################################### -+# -+# Following are methods that get cephfs-shell started. -+# -+##################################################### -+ -+def setup_cephfs(args): -+ """ -+ Mounting a cephfs -+ """ -+ global cephfs -+ try: -+ cephfs = libcephfs.LibCephFS(conffile='') -+ cephfs.mount(filesystem_name=args.fs) -+ except libcephfs.ObjectNotFound as e: -+ print('couldn\'t find ceph configuration not found') -+ sys.exit(e.get_error_code()) -+ except libcephfs.Error as e: -+ print(e) -+ sys.exit(e.get_error_code()) -+ -+ -+def str_to_bool(val): -+ """ -+ Return corresponding bool values for strings like 'true' or 'false'. -+ """ -+ if not isinstance(val, str): -+ return val -+ -+ val = val.replace('\n', '') -+ if val.lower() in ['true', 'yes']: -+ return True -+ elif val.lower() in ['false', 'no']: -+ return False -+ else: -+ return val -+ -+ -+def read_shell_conf(shell, shell_conf_file): -+ import configparser -+ -+ sec = 'cephfs-shell' -+ opts = [] -+ if LooseVersion(cmd2_version) >= LooseVersion("0.10.0"): -+ for attr in shell.settables.keys(): -+ opts.append(attr) -+ else: -+ if LooseVersion(cmd2_version) <= LooseVersion("0.9.13"): -+ # hardcoding options for 0.7.9 because - -+ # 1. we use cmd2 v0.7.9 with teuthology and -+ # 2. there's no way distinguish between a shell setting and shell -+ # object attribute until v0.10.0 -+ opts = ['abbrev', 'autorun_on_edit', 'colors', -+ 'continuation_prompt', 'debug', 'echo', 'editor', -+ 'feedback_to_output', 'locals_in_py', 'prompt', 'quiet', -+ 'timing'] -+ elif LooseVersion(cmd2_version) >= LooseVersion("0.9.23"): -+ opts.append('allow_style') -+ # no equivalent option was defined by cmd2. -+ else: -+ pass -+ -+ # default and only section in our conf file. -+ cp = configparser.ConfigParser(default_section=sec, strict=False) -+ cp.read(shell_conf_file) -+ for opt in opts: -+ if cp.has_option(sec, opt): -+ setattr(shell, opt, str_to_bool(cp.get(sec, opt))) -+ -+ -+def get_shell_conffile_path(arg_conf=''): -+ conf_filename = 'cephfs-shell.conf' -+ env_var = 'CEPHFS_SHELL_CONF' -+ -+ arg_conf = '' if not arg_conf else arg_conf -+ home_dir_conf = os.path.expanduser('~/.' + conf_filename) -+ env_conf = os.environ[env_var] if env_var in os.environ else '' -+ -+ # here's the priority by which conf gets read. -+ for path in (arg_conf, env_conf, home_dir_conf): -+ if os.path.isfile(path): -+ return path -+ else: -+ return '' -+ -+ -+def manage_args(): -+ main_parser = argparse.ArgumentParser(description='') -+ main_parser.add_argument('-b', '--batch', action='store', -+ help='Path to CephFS shell script/batch file' -+ 'containing CephFS shell commands', -+ type=str) -+ main_parser.add_argument('-c', '--config', action='store', -+ help='Path to Ceph configuration file.', -+ type=str) -+ main_parser.add_argument('-f', '--fs', action='store', -+ help='Name of filesystem to mount.', -+ type=str) -+ main_parser.add_argument('-t', '--test', action='store', -+ help='Test against transcript(s) in FILE', -+ nargs='+') -+ main_parser.add_argument('commands', nargs='*', help='Comma delimited ' -+ 'commands. The shell executes the given command ' -+ 'and quits immediately with the return value of ' -+ 'command. In case no commands are provided, the ' -+ 'shell is launched.', default=[]) -+ -+ args = main_parser.parse_args() -+ args.exe_and_quit = False # Execute and quit, don't launch the shell. -+ -+ if args.batch: -+ if LooseVersion(cmd2_version) <= LooseVersion("0.9.13"): -+ args.commands = ['load ' + args.batch, ',quit'] -+ else: -+ args.commands = ['run_script ' + args.batch, ',quit'] -+ if args.test: -+ args.commands.extend(['-t,'] + [arg + ',' for arg in args.test]) -+ if not args.batch and len(args.commands) > 0: -+ args.exe_and_quit = True -+ -+ manage_sys_argv(args) -+ -+ return args -+ -+ -+def manage_sys_argv(args): -+ exe = sys.argv[0] -+ sys.argv.clear() -+ sys.argv.append(exe) -+ sys.argv.extend([i.strip() for i in ' '.join(args.commands).split(',')]) -+ -+ setup_cephfs(args) -+ -+ -+def execute_cmd_args(args): -+ """ -+ Launch a shell session if no arguments were passed, else just execute -+ the given argument as a shell command and exit the shell session -+ immediately at (last) command's termination with the (last) command's -+ return value. -+ """ -+ if not args.exe_and_quit: -+ return shell.cmdloop() -+ return execute_cmds_and_quit(args) -+ -+ -+def execute_cmds_and_quit(args): -+ """ -+ Multiple commands might be passed separated by commas, feed onecmd() -+ one command at a time. -+ """ -+ # do_* methods triggered by cephfs-shell commands return None when they -+ # complete running successfully. Until 0.9.6, shell.onecmd() returned this -+ # value to indicate whether the execution of the commands should stop, but -+ # since 0.9.7 it returns the return value of do_* methods only if it's -+ # not None. When it is None it returns False instead of None. -+ if LooseVersion(cmd2_version) <= LooseVersion("0.9.6"): -+ stop_exec_val = None -+ else: -+ stop_exec_val = False -+ -+ args_to_onecmd = '' -+ if len(args.commands) <= 1: -+ args.commands = args.commands[0].split(' ') -+ for cmdarg in args.commands: -+ if ',' in cmdarg: -+ args_to_onecmd += ' ' + cmdarg[0:-1] -+ onecmd_retval = shell.onecmd(args_to_onecmd) -+ # if the curent command failed, let's abort the execution of -+ # series of commands passed. -+ if onecmd_retval is not stop_exec_val: -+ return onecmd_retval -+ if shell.exit_code != 0: -+ return shell.exit_code -+ -+ args_to_onecmd = '' -+ continue -+ -+ args_to_onecmd += ' ' + cmdarg -+ return shell.onecmd(args_to_onecmd) -+ -+ -+if __name__ == '__main__': -+ args = manage_args() -+ -+ shell = CephFSShell() -+ # TODO: perhaps, we should add an option to pass ceph.conf? -+ read_shell_conf(shell, get_shell_conffile_path(args.config)) -+ # XXX: setting shell.exit_code to zero so that in case there are no errors -+ # and exceptions, it is not set by any method or function of cephfs-shell -+ # and return values from shell.cmdloop() or shell.onecmd() is not an -+ # integer, we can treat it as the return value of cephfs-shell. -+ shell.exit_code = 0 -+ -+ retval = execute_cmd_args(args) -+ sys.exit(retval if retval else shell.exit_code) ---- /dev/null 2022-06-30 09:45:32.996000000 -0400 -+++ ceph-17.2.1/src/tools/cephfs/shell/setup.py 2022-07-05 11:00:12.411260682 -0400 -@@ -0,0 +1,27 @@ -+# -*- coding: utf-8 -*- -+ -+from setuptools import setup -+ -+__version__ = '0.0.1' -+ -+setup( -+ name='cephfs-shell', -+ version=__version__, -+ description='Interactive shell for Ceph file system', -+ keywords='cephfs, shell', -+ scripts=['cephfs-shell'], -+ install_requires=[ -+ 'cephfs', -+ 'cmd2', -+ 'colorama', -+ ], -+ classifiers=[ -+ 'Development Status :: 3 - Alpha', -+ 'Environment :: Console', -+ 'Intended Audience :: System Administrators', -+ 'License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+)', -+ 'Operating System :: POSIX :: Linux', -+ 'Programming Language :: Python :: 3' -+ ], -+ license='LGPLv2+', -+) ---- /dev/null 2022-06-30 09:45:32.996000000 -0400 -+++ ceph-17.2.1/src/tools/cephfs/shell/tox.ini 2022-06-23 10:41:35.000000000 -0400 -@@ -0,0 +1,7 @@ -+[tox] -+envlist = py3 -+skipsdist = true -+ -+[testenv:py3] -+deps = flake8 -+commands = flake8 --ignore=W503 --max-line-length=100 cephfs-shell diff --git a/0022-mon-Replace-deprecated-use-of-format_to.patch b/0022-mon-Replace-deprecated-use-of-format_to.patch deleted file mode 100644 index 76edaff..0000000 --- a/0022-mon-Replace-deprecated-use-of-format_to.patch +++ /dev/null @@ -1,28 +0,0 @@ -From fff72cd14c58d06774cbd0274e6144b42448af03 Mon Sep 17 00:00:00 2001 -From: "Adam C. Emerson" -Date: Mon, 7 Mar 2022 18:54:30 -0500 -Subject: [PATCH] mon: Replace deprecated use of format_to - -The non-deprecated version takes an explicit OutputIterator. - -Signed-off-by: Adam C. Emerson ---- - src/mon/LogMonitor.cc | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/mon/LogMonitor.cc b/src/mon/LogMonitor.cc -index 9103ddf7c5b..c196e8429fb 100644 ---- a/src/mon/LogMonitor.cc -+++ b/src/mon/LogMonitor.cc -@@ -411,7 +411,7 @@ void LogMonitor::log_external(const LogEntry& le) - } - - if (fd >= 0) { -- fmt::format_to(file_log_buffer, "{}\n", le); -+ fmt::format_to(std::back_inserter(file_log_buffer), "{}\n", le); - int err = safe_write(fd, file_log_buffer.data(), file_log_buffer.size()); - file_log_buffer.clear(); - if (err < 0) { --- -2.36.1 - diff --git a/0023-src-s3select-include-s3select_parquet_intrf.h.patch b/0023-src-s3select-include-s3select_parquet_intrf.h.patch deleted file mode 100644 index b11d1da..0000000 --- a/0023-src-s3select-include-s3select_parquet_intrf.h.patch +++ /dev/null @@ -1,218 +0,0 @@ ---- 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 index 2e0e048..8682ab6 100644 --- a/0024-gcc-13.patch +++ b/0024-gcc-13.patch @@ -90,16 +90,6 @@ 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 --- ceph-17.2.6/src/rocksdb/table/block_based/data_block_hash_index.h.orig 2023-04-21 17:46:42.186339184 -0400 +++ ceph-17.2.6/src/rocksdb/table/block_based/data_block_hash_index.h 2023-04-21 17:47:01.392005151 -0400 @@ -7,6 +7,7 @@ @@ -120,23 +110,3 @@ #include "rocksdb/rocksdb_namespace.h" ---- ceph-17.2.6/src/rocksdb/include/rocksdb/utilities/checkpoint.h.orig 2023-04-22 05:54:32.260798114 -0400 -+++ ceph-17.2.6/src/rocksdb/include/rocksdb/utilities/checkpoint.h 2023-04-22 05:55:42.997522143 -0400 -@@ -10,6 +10,7 @@ - - #include - #include -+#include - #include "rocksdb/status.h" - - namespace ROCKSDB_NAMESPACE { ---- ceph-17.2.6/src/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable-inl.h.orig 2023-04-22 06:14:55.624679075 -0400 -+++ ceph-17.2.6/src/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable-inl.h 2023-04-22 09:18:39.424624618 -0400 -@@ -13,6 +13,7 @@ - #include - #include - #include -+#include - #include - - namespace folly { diff --git a/0025-selinux-prepare-for-anon-inode-controls-enablement.patch b/0025-selinux-prepare-for-anon-inode-controls-enablement.patch deleted file mode 100644 index b989f91..0000000 --- a/0025-selinux-prepare-for-anon-inode-controls-enablement.patch +++ /dev/null @@ -1,42 +0,0 @@ -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/0025-src-osd-scrubber-scrub_backend.h.patch b/0025-src-osd-scrubber-scrub_backend.h.patch new file mode 100644 index 0000000..622daaa --- /dev/null +++ b/0025-src-osd-scrubber-scrub_backend.h.patch @@ -0,0 +1,32 @@ +--- ceph-18.0.0-1810-g728e8ac0/src/osd/scrubber/scrub_backend.h.orig 2023-01-18 16:35:03.398700052 -0500 ++++ ceph-18.0.0-1810-g728e8ac0/src/osd/scrubber/scrub_backend.h 2023-01-18 16:37:55.882677965 -0500 +@@ -183,20 +183,20 @@ + // note: 'if' chain, as hard to consistently (on all compilers) avoid some + // warnings for a switch plus multiple return paths + if (as_auth.possible_auth == shard_as_auth_t::usable_t::not_usable) { +- return format_to(ctx.out(), +- "{{shard-not-usable:{}}}", +- as_auth.error_text); ++ return fmt::format_to(ctx.out(), ++ "{{shard-not-usable:{}}}", ++ as_auth.error_text.c_str()); + } + if (as_auth.possible_auth == shard_as_auth_t::usable_t::not_found) { +- return format_to(ctx.out(), "{{shard-not-found}}"); ++ return fmt::format_to(ctx.out(), "{{shard-not-found}}"); + } +- return format_to(ctx.out(), +- "{{shard-usable: soid:{} {{txt:{}}} }}", +- as_auth.oi.soid, +- as_auth.error_text); ++ return fmt::format_to(ctx.out(), ++ "{{shard-usable: soid:{} {{txt:{}}} }}", ++ as_auth.oi.soid, ++ as_auth.error_text.c_str()); + + } else { +- return format_to( ++ return fmt::format_to( + ctx.out(), + "usable:{} soid:{} {{txt:{}}}", + (as_auth.possible_auth == shard_as_auth_t::usable_t::usable) ? "yes" diff --git a/0026-src-boost-libs-python-src-object.patch b/0026-src-boost-libs-python-src-object.patch deleted file mode 100644 index 3ed36b4..0000000 --- a/0026-src-boost-libs-python-src-object.patch +++ /dev/null @@ -1,99 +0,0 @@ ---- 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/0026-src-osd-scrubber-scrub_backend.cc.patch b/0026-src-osd-scrubber-scrub_backend.cc.patch new file mode 100644 index 0000000..2fdc52a --- /dev/null +++ b/0026-src-osd-scrubber-scrub_backend.cc.patch @@ -0,0 +1,199 @@ +--- ceph-18.0.0-2148-g9754cafc/src/osd/scrubber/scrub_backend.cc.orig 2023-02-08 16:01:53.800709761 -0500 ++++ ceph-18.0.0-2148-g9754cafc/src/osd/scrubber/scrub_backend.cc 2023-02-11 05:06:14.954254050 -0500 +@@ -507,11 +507,11 @@ + } + } + +- dout(10) << fmt::format("{}: selecting osd {} for obj {} with oi {}", ++ dout(10) << fmt::format("{}: selecting osd {} for obj {} with oi {:p}", + __func__, + ret_auth.auth_shard, + ho, +- ret_auth.auth_oi) ++ (void*)&ret_auth.auth_oi) + << dendl; + + return ret_auth; +@@ -1171,23 +1171,23 @@ + + if (auth.digest_present && candidate.digest_present && + auth.digest != candidate.digest) { +- format_to(std::back_inserter(out), +- "data_digest {:#x} != data_digest {:#x} from shard {}", +- candidate.digest, +- auth.digest, +- auth_shard); ++ fmt::format_to(std::back_inserter(out), ++ "data_digest {:#x} != data_digest {:#x} from shard {}", ++ candidate.digest, ++ auth.digest, ++ auth_shard); + error = true; + obj_result.set_data_digest_mismatch(); + } + + if (auth.omap_digest_present && candidate.omap_digest_present && + auth.omap_digest != candidate.omap_digest) { +- format_to(std::back_inserter(out), +- "{}omap_digest {:#x} != omap_digest {:#x} from shard {}", +- sep(error), +- candidate.omap_digest, +- auth.omap_digest, +- auth_shard); ++ fmt::format_to(std::back_inserter(out), ++ "{}omap_digest {:#x} != omap_digest {:#x} from shard {}", ++ sep(error), ++ candidate.omap_digest, ++ auth.omap_digest, ++ auth_shard); + obj_result.set_omap_digest_mismatch(); + } + +@@ -1195,24 +1195,24 @@ + if (m_is_replicated) { + if (auth_oi.is_data_digest() && candidate.digest_present && + auth_oi.data_digest != candidate.digest) { +- format_to(std::back_inserter(out), +- "{}data_digest {:#x} != data_digest {:#x} from auth oi {}", +- sep(error), +- candidate.digest, +- auth_oi.data_digest, +- auth_oi); ++ fmt::format_to(std::back_inserter(out), ++ "{}data_digest {:#x} != data_digest {:#x} from auth oi {:p}", ++ sep(error), ++ candidate.digest, ++ auth_oi.data_digest, ++ (void*)&auth_oi); + shard_result.set_data_digest_mismatch_info(); + } + + // for replicated: + if (auth_oi.is_omap_digest() && candidate.omap_digest_present && + auth_oi.omap_digest != candidate.omap_digest) { +- format_to(std::back_inserter(out), +- "{}omap_digest {:#x} != omap_digest {:#x} from auth oi {}", +- sep(error), +- candidate.omap_digest, +- auth_oi.omap_digest, +- auth_oi); ++ fmt::format_to(std::back_inserter(out), ++ "{}omap_digest {:#x} != omap_digest {:#x} from auth oi {:p}", ++ sep(error), ++ candidate.omap_digest, ++ auth_oi.omap_digest, ++ (void*)&auth_oi); + shard_result.set_omap_digest_mismatch_info(); + } + } +@@ -1241,7 +1241,7 @@ + auth_bl.push_back(auth_attr->second); + + if (!can_bl.contents_equal(auth_bl)) { +- format_to(std::back_inserter(out), "{}object info inconsistent ", sep(error)); ++ fmt::format_to(std::back_inserter(out), "{}object info inconsistent ", sep(error)); + obj_result.set_object_info_inconsistency(); + } + } +@@ -1261,7 +1261,7 @@ + auth_bl.push_back(auth_attr->second); + + if (!can_bl.contents_equal(auth_bl)) { +- format_to(std::back_inserter(out), "{}snapset inconsistent ", sep(error)); ++ fmt::format_to(std::back_inserter(out), "{}snapset inconsistent ", sep(error)); + obj_result.set_snapset_inconsistency(); + } + } +@@ -1284,7 +1284,7 @@ + auth_bl.push_back(auth_hi->second); + + if (!can_bl.contents_equal(auth_bl)) { +- format_to(std::back_inserter(out), "{}hinfo inconsistent ", sep(error)); ++ fmt::format_to(std::back_inserter(out), "{}hinfo inconsistent ", sep(error)); + obj_result.set_hinfo_inconsistency(); + } + } +@@ -1296,22 +1296,22 @@ + + uint64_t oi_size = logical_to_ondisk_size(auth_oi.size); + if (oi_size != candidate.size) { +- format_to(std::back_inserter(out), +- "{}size {} != size {} from auth oi {}", +- sep(error), +- candidate.size, +- oi_size, +- auth_oi); ++ fmt::format_to(std::back_inserter(out), ++ "{}size {} != size {} from auth oi {:p}", ++ sep(error), ++ candidate.size, ++ oi_size, ++ (void*)&auth_oi); + shard_result.set_size_mismatch_info(); + } + + if (auth.size != candidate.size) { +- format_to(std::back_inserter(out), +- "{}size {} != size {} from shard {}", +- sep(error), +- candidate.size, +- auth.size, +- auth_shard); ++ fmt::format_to(std::back_inserter(out), ++ "{}size {} != size {} from shard {}", ++ sep(error), ++ candidate.size, ++ auth.size, ++ auth_shard); + obj_result.set_size_mismatch(); + } + +@@ -1320,11 +1320,11 @@ + if (candidate.size > m_conf->osd_max_object_size && + !obj_result.has_size_too_large()) { + +- format_to(std::back_inserter(out), +- "{}size {} > {} is too large", +- sep(error), +- candidate.size, +- m_conf->osd_max_object_size); ++ fmt::format_to(std::back_inserter(out), ++ "{}size {} > {} is too large", ++ sep(error), ++ candidate.size, ++ m_conf->osd_max_object_size); + obj_result.set_size_too_large(); + } + +@@ -1340,10 +1340,10 @@ + + auto cand = candidate.attrs.find(k); + if (cand == candidate.attrs.end()) { +- format_to(std::back_inserter(out), "{}attr name mismatch '{}'", sep(error), k); ++ fmt::format_to(std::back_inserter(out), "{}attr name mismatch '{}'", sep(error), k); + obj_result.set_attr_name_mismatch(); + } else if (cand->second.cmp(v)) { +- format_to(std::back_inserter(out), "{}attr value mismatch '{}'", sep(error), k); ++ fmt::format_to(std::back_inserter(out), "{}attr value mismatch '{}'", sep(error), k); + obj_result.set_attr_value_mismatch(); + } + } +@@ -1356,7 +1356,7 @@ + + auto in_auth = auth.attrs.find(k); + if (in_auth == auth.attrs.end()) { +- format_to(std::back_inserter(out), "{}attr name mismatch '{}'", sep(error), k); ++ fmt::format_to(std::back_inserter(out), "{}attr name mismatch '{}'", sep(error), k); + obj_result.set_attr_name_mismatch(); + } + } +@@ -1823,8 +1823,7 @@ + SnapMapReaderI& snaps_getter) + { + using result_t = Scrub::SnapMapReaderI::result_t; +- dout(15) << fmt::format("{}: obj:{} snapset:{}", __func__, hoid, snapset) +- << dendl; ++ // dout(15) << fmt::format("{}: obj:{} snapset:{}", __func__, hoid, snapset) << dendl; + + auto p = snapset.clone_snaps.find(hoid.snap); + if (p == snapset.clone_snaps.end()) { diff --git a/0027-src-kv-rocksdb_cache-ShardedCache.h.patch b/0027-src-kv-rocksdb_cache-ShardedCache.h.patch new file mode 100644 index 0000000..347624e --- /dev/null +++ b/0027-src-kv-rocksdb_cache-ShardedCache.h.patch @@ -0,0 +1,151 @@ +--- ceph-17.2.6/src/kv/rocksdb_cache/ShardedCache.h.orig 2023-04-05 11:09:51.000000000 -0400 ++++ ceph-17.2.6/src/kv/rocksdb_cache/ShardedCache.h 2023-04-21 16:22:26.665067333 -0400 +@@ -15,7 +15,7 @@ + #include + + #include "rocksdb/version.h" +-#include "rocksdb/cache.h" ++#include "rocksdb/advanced_cache.h" + #include "include/ceph_hash.h" + #include "common/PriorityCache.h" + //#include "hash.h" +@@ -26,7 +26,8 @@ + + namespace rocksdb_cache { + +-using DeleterFn = void (*)(const rocksdb::Slice& key, void* value); ++// using DeleterFn = void (*)(const rocksdb::Slice& key, void* value); ++using DeleterFn = void (*)(rocksdb::Cache::ObjectPtr obj, rocksdb::MemoryAllocator* allocator); + + // Single cache shard interface. + class CacheShard { +@@ -34,11 +35,19 @@ + CacheShard() = default; + virtual ~CacheShard() = default; + +- virtual rocksdb::Status Insert(const rocksdb::Slice& key, uint32_t hash, void* value, +- size_t charge, +- DeleterFn deleter, +- rocksdb::Cache::Handle** handle, rocksdb::Cache::Priority priority) = 0; +- virtual rocksdb::Cache::Handle* Lookup(const rocksdb::Slice& key, uint32_t hash) = 0; ++ virtual rocksdb::Status Insert(const rocksdb::Slice& key, ++ rockdb::ObjectPtr obj, ++ const rocksdb::CacheItemHelper* helper, ++ size_t charge, ++ rocksdb:Handle** handle = nullptr, ++ Rocksdb::Priority priority = Rocksdb::Priority::LOW) ++ virtual rocksdb::Cache::Handle* Lookup(const rocksdb::Slice& key, ++ const rocksdb::CacheItemHelper* helper = nullptr, ++ rocksdb::CreateContext* create_context = nullptr, ++ rocksdb::Priority priority = rocksdb::Priority::LOW, ++ bool wait = true, ++ rocksdb::Statistics* stats = nullptr); ++ + virtual bool Ref(rocksdb::Cache::Handle* handle) = 0; + virtual bool Release(rocksdb::Cache::Handle* handle, bool force_erase = false) = 0; + virtual void Erase(const rocksdb::Slice& key, uint32_t hash) = 0; +@@ -68,8 +77,8 @@ + virtual const char* Name() const override = 0; + virtual rocksdb::Status Insert(const rocksdb::Slice& key, void* value, size_t charge, + DeleterFn, +- rocksdb::Cache::Handle** handle, Priority priority) override; +- virtual rocksdb::Cache::Handle* Lookup(const rocksdb::Slice& key, rocksdb::Statistics* stats) override; ++ rocksdb::Cache::Handle** handle, Priority priority); ++ virtual rocksdb::Cache::Handle* Lookup(const rocksdb::Slice& key, rocksdb::Statistics* stats); + virtual bool Ref(rocksdb::Cache::Handle* handle) override; + virtual bool Release(rocksdb::Cache::Handle* handle, bool force_erase = false) override; + virtual void* Value(Handle* handle) override = 0; +@@ -84,14 +93,17 @@ + virtual size_t GetPinnedUsage() const override; + virtual size_t GetCharge(Handle* handle) const = 0; + #if (ROCKSDB_MAJOR >= 7 || (ROCKSDB_MAJOR == 6 && ROCKSDB_MINOR >= 22)) +- virtual DeleterFn GetDeleter(Handle* handle) const override; ++ virtual DeleterFn GetDeleter(Handle* handle) const; + #endif + virtual void DisownData() override = 0; + #if (ROCKSDB_MAJOR >= 7 || (ROCKSDB_MAJOR == 6 && ROCKSDB_MINOR >= 22)) ++ virtual const rocksdb::CacheItemHelper* GetCacheItemHelper(rocksdb::Cache::Handle* handle) const; + virtual void ApplyToAllEntries( +- const std::function& callback, +- const ApplyToAllEntriesOptions& opts) override; ++ const std::function& callback, ++ const rocksdb::ApplyToAllEntriesOptions& opts); + #else + virtual void ApplyToAllCacheEntries(void (*callback)(void*, size_t), + bool thread_safe) override; +--- ceph-17.2.6/src/kv/RocksDBStore.cc.orig 2023-04-05 11:09:51.000000000 -0400 ++++ ceph-17.2.6/src/kv/RocksDBStore.cc 2023-04-20 16:19:29.280669881 -0400 +@@ -903,6 +903,19 @@ + // base_name - name of column without shard suffix: "-"+number + // options - additional options to apply + // cf_opt - column family options to update ++ ++rocksdb::Status GetColumnFamilyOptionsFromMap( ++ const rocksdb::ColumnFamilyOptions& base_options, ++ const std::unordered_map& opts_map, ++ rocksdb::ColumnFamilyOptions* new_options, bool input_strings_escaped, ++ bool ignore_unknown_options) { ++ rocksdb::ConfigOptions config_options; ++ config_options.ignore_unknown_options = ignore_unknown_options; ++ config_options.input_strings_escaped = input_strings_escaped; ++ return rocksdb::GetColumnFamilyOptionsFromMap(config_options, base_options, opts_map, ++ new_options); ++} ++ + int RocksDBStore::update_column_family_options(const std::string& base_name, + const std::string& more_options, + rocksdb::ColumnFamilyOptions* cf_opt) +@@ -916,7 +929,7 @@ + << " options=" << more_options << dendl; + return r; + } +- status = rocksdb::GetColumnFamilyOptionsFromMap(*cf_opt, options_map, cf_opt); ++ status = GetColumnFamilyOptionsFromMap(*cf_opt, options_map, cf_opt, false, false); + if (!status.ok()) { + dout(5) << __func__ << " invalid column family optionsp; column family=" + << base_name << " options=" << more_options << dendl; +@@ -937,6 +950,20 @@ + return 0; + } + ++rocksdb::Status GetBlockBasedTableOptionsFromMap( ++ const rocksdb::BlockBasedTableOptions& table_options, ++ const std::unordered_map& opts_map, ++ rocksdb::BlockBasedTableOptions* new_table_options, bool input_strings_escaped, ++ bool ignore_unknown_options) { ++ rocksdb::ConfigOptions config_options; ++ config_options.input_strings_escaped = input_strings_escaped; ++ config_options.ignore_unknown_options = ignore_unknown_options; ++ config_options.invoke_prepare_options = false; ++ ++ return rocksdb::GetBlockBasedTableOptionsFromMap(config_options, table_options, ++ opts_map, new_table_options); ++} ++ + int RocksDBStore::apply_block_cache_options(const std::string& column_name, + const std::string& block_cache_opt, + rocksdb::ColumnFamilyOptions* cf_opt) +@@ -981,7 +1008,7 @@ + } + + rocksdb::BlockBasedTableOptions column_bbt_opts; +- status = GetBlockBasedTableOptionsFromMap(bbt_opts, cache_options_map, &column_bbt_opts); ++ status = GetBlockBasedTableOptionsFromMap(bbt_opts, cache_options_map, &column_bbt_opts, false, false); + if (!status.ok()) { + dout(5) << __func__ << " invalid block cache options; column=" << column_name + << " options=" << block_cache_opt << dendl; +--- ceph-17.2.6/src/kv/rocksdb_cache/BinnedLRUCache.h.orig 2023-04-21 10:11:00.180387609 -0400 ++++ ceph-17.2.6/src/kv/rocksdb_cache/BinnedLRUCache.h 2023-04-21 10:17:15.527816193 -0400 +@@ -121,7 +121,7 @@ + void Free() { + ceph_assert((refs == 1 && InCache()) || (refs == 0 && !InCache())); + if (deleter) { +- (*deleter)(key(), value); ++ (*deleter)(this, nullptr); + } + delete[] key_data; + delete this; diff --git a/0027-src-rocksdb-table-block_based-data_block_hash_index.h.patch b/0027-src-rocksdb-table-block_based-data_block_hash_index.h.patch deleted file mode 100644 index d03276f..0000000 --- a/0027-src-rocksdb-table-block_based-data_block_hash_index.h.patch +++ /dev/null @@ -1,40 +0,0 @@ ---- ceph-17.2.6/src/rocksdb/table/block_based/data_block_hash_index.h.orig 2023-04-21 17:46:42.186339184 -0400 -+++ ceph-17.2.6/src/rocksdb/table/block_based/data_block_hash_index.h 2023-04-21 17:47:01.392005151 -0400 -@@ -7,6 +7,7 @@ - - #include - #include -+#include - - #include "rocksdb/slice.h" - ---- ceph-17.2.6/src/rocksdb/util/string_util.h.orig 2023-04-21 18:13:51.060496792 -0400 -+++ ceph-17.2.6/src/rocksdb/util/string_util.h 2023-04-21 18:14:06.496223220 -0400 -@@ -10,6 +10,7 @@ - #include - #include - #include -+#include - - #include "rocksdb/rocksdb_namespace.h" - ---- ceph-17.2.6/src/rocksdb/include/rocksdb/utilities/checkpoint.h.orig 2023-04-22 05:54:32.260798114 -0400 -+++ ceph-17.2.6/src/rocksdb/include/rocksdb/utilities/checkpoint.h 2023-04-22 05:55:42.997522143 -0400 -@@ -10,6 +10,7 @@ - - #include - #include -+#include - #include "rocksdb/status.h" - - namespace ROCKSDB_NAMESPACE { ---- ceph-17.2.6/src/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable-inl.h.orig 2023-04-22 06:14:55.624679075 -0400 -+++ ceph-17.2.6/src/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable-inl.h 2023-04-22 09:18:39.424624618 -0400 -@@ -13,6 +13,7 @@ - #include - #include - #include -+#include - #include - - namespace folly { diff --git a/0028-cmake-modules-BuildBoost.cmake.patch b/0028-cmake-modules-BuildBoost.cmake.patch deleted file mode 100644 index 631d072..0000000 --- a/0028-cmake-modules-BuildBoost.cmake.patch +++ /dev/null @@ -1,15 +0,0 @@ ---- ceph-17.2.6/cmake/modules/BuildBoost.cmake.orig 2023-04-27 14:00:28.239524778 -0400 -+++ ceph-17.2.6/cmake/modules/BuildBoost.cmake 2023-04-28 07:49:59.743342207 -0400 -@@ -63,7 +63,11 @@ - else() - list(APPEND boost_features "address-model=32") - endif() -- set(BOOST_CXXFLAGS "-fPIC -w") # check on arm, etc <---XXX -+ if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64") -+ set(BOOST_CXXFLAGS "-fPIC -w -fcf-protection") # check on arm, etc <---XXX -+ else() -+ set(BOOST_CXXFLAGS "-fPIC -w") # check on arm, etc <---XXX -+ endif() - list(APPEND boost_features "cxxflags=${BOOST_CXXFLAGS}") - - set(boost_with_libs) diff --git a/0029-src-rgw-rgw_amqp.cc.patch b/0029-src-rgw-rgw_amqp.cc.patch new file mode 100644 index 0000000..8cd8fa9 --- /dev/null +++ b/0029-src-rgw-rgw_amqp.cc.patch @@ -0,0 +1,17 @@ +--- ceph-18.0.0-2726-g7cea3740/src/rgw/rgw_amqp.cc.orig 2023-03-14 18:22:35.636864260 -0400 ++++ ceph-18.0.0-2726-g7cea3740/src/rgw/rgw_amqp.cc 2023-03-14 18:24:36.362756771 -0400 +@@ -2,10 +2,10 @@ + // vim: ts=8 sw=2 smarttab ft=cpp + + #include "rgw_amqp.h" +-#include +-#include +-#include +-#include ++#include ++#include ++#include ++#include + #include "include/ceph_assert.h" + #include + #include diff --git a/0030-src-CMakeLists.txt.patch b/0030-src-CMakeLists.txt.patch deleted file mode 100644 index bc363db..0000000 --- a/0030-src-CMakeLists.txt.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- ceph-17.2.6/src/CMakeLists.txt.orig 2023-05-10 10:00:58.457793274 -0400 -+++ ceph-17.2.6/src/CMakeLists.txt 2023-05-10 10:01:31.553198698 -0400 -@@ -809,6 +809,7 @@ - if(WITH_KRBD) - add_library(krbd STATIC krbd.cc - $) -+ add_dependencies(krbd legacy-option-headers) - target_link_libraries(krbd keyutils::keyutils) - endif() - add_subdirectory(librbd) diff --git a/0030-src-rgw-rgw_asio_client.cc.patch b/0030-src-rgw-rgw_asio_client.cc.patch new file mode 100644 index 0000000..bcb5fcc --- /dev/null +++ b/0030-src-rgw-rgw_asio_client.cc.patch @@ -0,0 +1,61 @@ +--- ceph-18.0.0-2726-g7cea3740/src/rgw/rgw_asio_client.cc.orig 2023-03-14 18:46:02.037195570 -0400 ++++ ceph-18.0.0-2726-g7cea3740/src/rgw/rgw_asio_client.cc 2023-03-14 18:55:14.446438244 -0400 +@@ -39,11 +39,13 @@ + const auto& value = header->value(); + + if (field == beast::http::field::content_length) { +- env.set("CONTENT_LENGTH", value.to_string()); ++ std::string scratch{value.data(), value.size()}; ++ env.set("CONTENT_LENGTH", scratch.c_str()); + continue; + } + if (field == beast::http::field::content_type) { +- env.set("CONTENT_TYPE", value.to_string()); ++ std::string scratch{value.data(), value.size()}; ++ env.set("CONTENT_TYPE", scratch.c_str()); + continue; + } + +@@ -62,26 +64,37 @@ + } + *dest = '\0'; + +- env.set(buf, value.to_string()); ++ std::string scratch{value.data(), value.size()}; ++ env.set(buf, scratch.c_str()); + } + + 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()); ++ { ++ std::string scratch {request.method_string().data(),request.method_string().size()}; ++ env.set("REQUEST_METHOD", scratch.c_str()); ++ } + + // 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()); ++ std::string scratch{query.data(), query.size()}; ++ env.set("QUERY_STRING", scratch.c_str()); + uri = uri.substr(0, pos); + } +- env.set("SCRIPT_URI", uri.to_string()); ++ { ++ std::string scratch {uri.data(), uri.size()}; ++ env.set("SCRIPT_URI", scratch.c_str()); ++ } + +- env.set("REQUEST_URI", request.target().to_string()); ++ { ++ std::string scratch {request.target().data(), request.target().size()}; ++ env.set("REQUEST_URI", scratch.c_str()); ++ } + + char port_buf[16]; + snprintf(port_buf, sizeof(port_buf), "%d", local_endpoint.port()); diff --git a/0032-cmake-modules-BuildBoost.cmake.patch b/0032-cmake-modules-BuildBoost.cmake.patch new file mode 100644 index 0000000..91c8d20 --- /dev/null +++ b/0032-cmake-modules-BuildBoost.cmake.patch @@ -0,0 +1,24 @@ +--- ceph-18.0.0-2950-g1c931bc4/cmake/modules/BuildBoost.cmake.orig 2023-04-28 18:30:19.133064577 -0400 ++++ ceph-18.0.0-2950-g1c931bc4/cmake/modules/BuildBoost.cmake 2023-04-28 18:31:55.290354383 -0400 +@@ -104,12 +104,21 @@ + set(user_config ${CMAKE_BINARY_DIR}/user-config.jam) + # edit the user-config.jam so b2 will be able to use the specified + # toolset and python ++if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64") ++ file(WRITE ${user_config} ++ "using ${toolset}" ++ " : " ++ " : ${CMAKE_CXX_COMPILER}" ++ " : -fPIC -w -fcf-protection -Wno-everything" ++ " ;\n") ++else() + file(WRITE ${user_config} + "using ${toolset}" + " : " + " : ${CMAKE_CXX_COMPILER}" + " : -fPIC -w -Wno-everything" + " ;\n") ++endif() + if(with_python_version) + find_package(Python3 ${with_python_version} QUIET REQUIRED + COMPONENTS Development) diff --git a/0029-boost-asm.patch b/0033-boost-asm.patch similarity index 100% rename from 0029-boost-asm.patch rename to 0033-boost-asm.patch diff --git a/ceph.spec b/ceph.spec index d70991e..95a21b4 100644 --- a/ceph.spec +++ b/ceph.spec @@ -35,15 +35,6 @@ %else %bcond_with rbd_rwl_cache %endif -%if 0%{?rhel} -%bcond_with ld_mold -%else -%ifarch x86_64 aarch64 -%bcond_without ld_mold -%else -%bcond_with ld_mold -%endif -%endif %if 0%{?fedora} || 0%{?rhel} %ifarch s390x %{arm64} %bcond_with system_pmdk @@ -51,11 +42,7 @@ %bcond_without system_pmdk %endif %bcond_without selinux -%if 0%{?rhel} >= 8 -%bcond_with cephfs_java -%else %bcond_without cephfs_java -%endif %bcond_without amqp_endpoint %bcond_without kafka_endpoint %bcond_without lttng @@ -66,7 +53,11 @@ %global _remote_tarball_prefix https://download.ceph.com/tarballs/ %endif %if 0%{?suse_version} +%ifarch s390x +%bcond_with system_pmdk +%else %bcond_without system_pmdk +%endif %bcond_with amqp_endpoint %bcond_with cephfs_java %bcond_with kafka_endpoint @@ -99,7 +90,11 @@ %endif %endif %bcond_with seastar +%if 0%{?suse_version} %bcond_with jaeger +%else +%bcond_without jaeger +%endif %if 0%{?fedora} || 0%{?suse_version} >= 1500 || 0%{?rhel} >= 10 # distros that ship cmd2 and/or colorama %bcond_without cephfs_shell @@ -107,8 +102,15 @@ # distros that do _not_ ship cmd2/colorama %bcond_with cephfs_shell %endif +%if 0%{?fedora} || 0%{?rhel} >= 9 %bcond_without system_arrow %bcond_without system_utf8proc +%else +# for centos 8, utf8proc-devel comes from the subversion-devel module which isn't available in EPEL8 +# this is tracked in https://bugzilla.redhat.com/2152265 +%bcond_with system_arrow +%bcond_with system_utf8proc +%endif %if 0%{?fedora} || 0%{?suse_version} || 0%{?rhel} >= 8 %global weak_deps 1 %endif @@ -129,7 +131,6 @@ %{!?python3_version: %global python3_version 3} %{!?gts_prefix: %global gts_prefix gcc-toolset-11} - %if ! 0%{?suse_version} # use multi-threaded xz compression: xz level 7 using ncpus threads %global _source_payload w7T%{_smp_build_ncpus}.xzdio @@ -168,8 +169,8 @@ # main package definition ################################################################################# Name: ceph -Version: 17.2.6 -Release: 8%{?dist} +Version: 18.1.0 +Release: 0.1%{?dist} %if 0%{?fedora} || 0%{?rhel} Epoch: 2 %endif @@ -180,13 +181,13 @@ Epoch: 2 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 -License: (LGPL-2.1-or-later OR LGPL-3.0-only) and CC-BY-SA-3.0 and GPL-2.0-only 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 %if 0%{?suse_version} Group: System/Filesystems %endif URL: http://ceph.com/ Source0: https://download.ceph.com/tarballs/ceph-%{version}.tar.gz +#Source0: https://1.chacra.ceph.com/r/ceph/quincy/ Patch0001: 0001-src-common-crc32c_intel_fast.patch Patch0003: 0003-src-common-bitstr.h.patch Patch0008: 0008-cmake-modules-Finduring.cmake.patch @@ -196,15 +197,14 @@ 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 -Patch0026: 0026-src-boost-libs-python-src-object.patch -Patch0028: 0028-cmake-modules-BuildBoost.cmake.patch -Patch0029: 0029-boost-asm.patch -Patch0030: 0030-src-CMakeLists.txt.patch +Patch0025: 0025-src-osd-scrubber-scrub_backend.h.patch +Patch0026: 0026-src-osd-scrubber-scrub_backend.cc.patch +Patch0029: 0029-src-rgw-rgw_amqp.cc.patch +Patch0030: 0030-src-rgw-rgw_asio_client.cc.patch +Patch0032: 0032-cmake-modules-BuildBoost.cmake.patch +Patch0033: 0033-boost-asm.patch # ceph 14.0.1 does not support 32-bit architectures, bugs #1727788, #1727787 ExcludeArch: i686 armv7hl %if 0%{?suse_version} @@ -221,6 +221,7 @@ Requires: ceph-mon = %{_epoch_prefix}%{version}-%{release} Requires(post): binutils %if 0%{with cephfs_java} BuildRequires: java-devel +BuildRequires: jpackage-utils BuildRequires: sharutils %endif %if 0%{with selinux} @@ -230,21 +231,31 @@ BuildRequires: selinux-policy-devel BuildRequires: gperf BuildRequires: cmake > 3.5 BuildRequires: fuse3-devel -%if 0%{?fedora} || 0%{?suse_version} || 0%{?rhel} == 9 +%if 0%{?fedora} || 0%{?suse_version} > 1500 || 0%{?rhel} >= 9 BuildRequires: gcc-c++ >= 11 %endif +%if 0%{?suse_version} == 1500 +BuildRequires: gcc11-c++ +%endif %if 0%{?rhel} == 8 BuildRequires: %{gts_prefix}-gcc-c++ BuildRequires: %{gts_prefix}-build -%ifarch aarch64 BuildRequires: %{gts_prefix}-libatomic-devel %endif -%endif -%if 0%{?fedora} || 0%{?rhel} == 9 -BuildRequires: libatomic +%if 0%{?fedora} || 0%{?rhel} >= 9 +BuildRequires: libatomic BuildRequires: gcc-c++ %endif BuildRequires: libatomic +%if 0%{?rhel} +%bcond_with ld_mold +%else +%ifarch x86_64 aarch64 +%bcond_without ld_mold +%else +%bcond_with ld_mold +%endif +%endif %if 0%{with ld_mold} BuildRequires: mold %endif @@ -265,8 +276,9 @@ BuildRequires: libaio-devel BuildRequires: libblkid-devel >= 2.17 BuildRequires: cryptsetup-devel BuildRequires: libcurl-devel +BuildRequires: libcap-devel BuildRequires: libcap-ng-devel -BuildRequires: fmt-devel >= 6.2.1 +#BuildRequires: fmt-devel >= 6.2.1 %if 0%{?fedora} || 0%{?rhel} >= 10 BuildRequires: rocksdb-devel Requires: rocksdb @@ -346,16 +358,18 @@ BuildRequires: nlohmann_json-devel BuildRequires: libevent-devel %endif %if 0%{with system_pmdk} +%if 0%{?suse_version} +BuildRequires: libndctl-devel >= 63 +%else +BuildRequires: ndctl-devel >= 63 +BuildRequires: daxctl-devel >= 63 +%endif BuildRequires: libpmem-devel -BuildRequires: libpmemobj-devel +BuildRequires: libpmemobj-devel >= 1.8 %endif %if 0%{with system_arrow} BuildRequires: libarrow-devel BuildRequires: parquet-libs-devel -%else -BuildRequires: xsimd-devel -%endif -%if 0%{with system_utf8proc} BuildRequires: utf8proc-devel %endif %if 0%{with seastar} @@ -371,10 +385,10 @@ BuildRequires: libubsan BuildRequires: libasan %endif %if 0%{?rhel} == 8 -BuildRequires: %{gts_prefix}-annobin -BuildRequires: %{gts_prefix}-annobin-plugin-gcc -BuildRequires: %{gts_prefix}-libubsan-devel -BuildRequires: %{gts_prefix}-libasan-devel +BuildRequires: %{gts_prefix}-annobin +BuildRequires: %{gts_prefix}-annobin-plugin-gcc +BuildRequires: %{gts_prefix}-libubsan-devel +BuildRequires: %{gts_prefix}-libasan-devel %endif %endif ################################################################################# @@ -413,6 +427,7 @@ BuildRequires: boost-devel BuildRequires: boost-random BuildRequires: nss-devel BuildRequires: keyutils-libs-devel +BuildRequires: libatomic BuildRequires: libibverbs-devel BuildRequires: librdmacm-devel BuildRequires: ninja-build @@ -511,7 +526,7 @@ Summary: Ceph Base Package %if 0%{?suse_version} Group: System/Filesystems %endif -Provides: ceph-test:/usr/bin/ceph-kvstore-tool = %{_epoch_prefix}%{version}-%{release} +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} @@ -611,7 +626,7 @@ Summary: Ceph Monitor Daemon %if 0%{?suse_version} Group: System/Filesystems %endif -Provides: ceph-test:/usr/bin/ceph-monstore-tool = %{_epoch_prefix}%{version}-%{release} +Provides: ceph-test:/usr/bin/ceph-monstore-tool Requires: ceph-base = %{_epoch_prefix}%{version}-%{release} %description mon ceph-mon is the cluster monitor daemon for the Ceph distributed file @@ -788,9 +803,9 @@ Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release} Daemon for mirroring CephFS snapshots between Ceph clusters. %package -n ceph-exporter -Summary: Daemon for exposing perf counters as Prometheus metrics +Summary: Daemon for exposing perf counters as Prometheus metrics %if 0%{?suse_version} -Group: System/Filesystems +Group: System/Filesystems %endif Requires: ceph-base = %{_epoch_prefix}%{version}-%{release} %description -n ceph-exporter @@ -889,7 +904,7 @@ Summary: Ceph Object Storage Daemon %if 0%{?suse_version} Group: System/Filesystems %endif -Provides: ceph-test:/usr/bin/ceph-osdomap-tool = %{_epoch_prefix}%{version}-%{release} +Provides: ceph-test:/usr/bin/ceph-osdomap-tool Requires: ceph-base = %{_epoch_prefix}%{version}-%{release} Requires: sudo Requires: libstoragemgmt @@ -1206,7 +1221,7 @@ Requires: python%{python3_pkgversion}-colorama Requires: python%{python3_pkgversion}-cephfs %description -n cephfs-shell This package contains an interactive tool that allows accessing a Ceph -file system without mounting it by providing a nice pseudo-shell which +file system without mounting it by providing a nice pseudo-shell which works like an FTP client. %endif @@ -1316,11 +1331,20 @@ Group: System/Monitoring %description prometheus-alerts This package provides Ceph default alerts for Prometheus. +%package mib +Summary: MIB for SNMP alerts +BuildArch: noarch +%if 0%{?suse_version} +Group: System/Monitoring +%endif +%description mib +This package provides a Ceph MIB for SNMP traps. + ################################################################################# # common ################################################################################# %prep -%autosetup -p1 +%autosetup -p1 -n %{name}-%{version} %build # Disable lto on systems that do not support symver attribute @@ -1354,7 +1378,10 @@ export CXXFLAGS="$RPM_OPT_FLAGS -DFMT_DEPRECATED_OSTREAM" %if 0%{with seastar} # seastar uses longjmp() to implement coroutine. and this annoys longjmp_chk() -%undefine _fortify_level +export CXXFLAGS=$(echo $RPM_OPT_FLAGS | sed -e 's/-Wp,-D_FORTIFY_SOURCE=2//g') +# remove from CFLAGS too because it causes the arrow submodule to fail with: +# warning _FORTIFY_SOURCE requires compiling with optimization (-O) +export CFLAGS=$(echo $RPM_OPT_FLAGS | sed -e 's/-Wp,-D_FORTIFY_SOURCE=2//g') %endif env | sort @@ -1378,6 +1405,8 @@ env | sort -DWITH_TESTS:BOOL=OFF \ %endif %if 0%{with cephfs_java} + -DJAVA_HOME=%{java_home} \ + -DJAVA_LIB_INSTALL_DIR=%{_jnidir} \ -DWITH_CEPHFS_JAVA:BOOL=ON \ %endif %if 0%{with selinux} @@ -1395,7 +1424,7 @@ env | sort -DWITH_OCF:BOOL=ON \ %endif %if 0%{?fedora} || 0%{?rhel} >= 10 - -DWITH_SYSTEM_ROCKSDB:BOOL=OFF \ + -DWITH_SYSTEM_ROCKSDB:BOOL=OFF\ %endif -DWITH_SYSTEM_LIBURING:BOOL=ON \ -DWITH_SYSTEM_BOOST:BOOL=OFF \ @@ -1435,8 +1464,8 @@ env | sort %if 0%{with system_pmdk} -DWITH_SYSTEM_PMDK:BOOL=ON \ %endif -%if 0%{with jaeger} - -DWITH_JAEGER:BOOL=ON \ +%if 0%{without jaeger} + -DWITH_JAEGER:BOOL=OFF \ %endif %if 0%{?suse_version} -DBOOST_J:STRING=%{jobs} \ @@ -1447,13 +1476,11 @@ env | sort -DWITH_SYSTEM_GTEST:BOOL=ON \ %endif -DWITH_SYSTEM_ZSTD:BOOL=ON \ -%if 0%{?rhel} +%if 0%{?fedora} || 0%{?rhel} -DWITH_FMT_HEADER_ONLY:BOOL=ON \ %endif %if 0%{with system_arrow} -DWITH_SYSTEM_ARROW:BOOL=ON \ -%endif -%if 0%{with system_utf8proc} -DWITH_SYSTEM_UTF8PROC:BOOL=ON \ %endif %if 0%{with ld_mold} @@ -1507,7 +1534,6 @@ install -m 0644 -D COPYING %{buildroot}%{_docdir}/ceph/COPYING install -m 0644 -D etc/sysctl/90-ceph-osd.conf %{buildroot}%{_sysctldir}/90-ceph-osd.conf install -m 0755 -D src/tools/rbd_nbd/rbd-nbd_quiesce %{buildroot}%{_libexecdir}/rbd-nbd/rbd-nbd_quiesce -install -m 0755 src/cephadm/cephadm %{buildroot}%{_sbindir}/cephadm mkdir -p %{buildroot}%{_sharedstatedir}/cephadm chmod 0700 %{buildroot}%{_sharedstatedir}/cephadm mkdir -p %{buildroot}%{_sharedstatedir}/cephadm/.ssh @@ -1516,7 +1542,7 @@ touch %{buildroot}%{_sharedstatedir}/cephadm/.ssh/authorized_keys chmod 0600 %{buildroot}%{_sharedstatedir}/cephadm/.ssh/authorized_keys # firewall templates and /sbin/mount.ceph symlink -%if 0%{?suse_version} && !0%{?usrmerged} +%if 0%{?suse_version} && 0%{?suse_version} < 1550 mkdir -p %{buildroot}/sbin ln -sf %{_sbindir}/mount.ceph %{buildroot}/sbin/mount.ceph %endif @@ -1554,6 +1580,9 @@ mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/bootstrap-rbd-mirror # prometheus alerts install -m 644 -D monitoring/ceph-mixin/prometheus_alerts.yml %{buildroot}/etc/prometheus/ceph/ceph_default_alerts.yml +# SNMP MIB +install -m 644 -D -t %{buildroot}%{_datadir}/snmp/mibs monitoring/snmp/CEPH-MIB.txt + %if 0%{?suse_version} # create __pycache__ directories and their contents %py3_compile %{buildroot}%{python3_sitelib} @@ -1586,6 +1615,8 @@ install -m 644 -D monitoring/ceph-mixin/prometheus_alerts.yml %{buildroot}/etc/p %dir %{_libdir}/ceph %dir %{_libdir}/ceph/erasure-code %{_libdir}/ceph/erasure-code/libec_*.so* +%dir %{_libdir}/ceph/extblkdev +%{_libdir}/ceph/extblkdev/libceph_*.so* %dir %{_libdir}/ceph/compressor %{_libdir}/ceph/compressor/libceph_*.so* %{_unitdir}/ceph-crash.service @@ -1685,8 +1716,12 @@ exit 0 %{_bindir}/rbd-replay %{_bindir}/rbd-replay-many %{_bindir}/rbdmap +%{_bindir}/rgw-gap-list +%{_bindir}/rgw-gap-list-comparator +%{_bindir}/rgw-orphan-list +%{_bindir}/rgw-restore-bucket-index %{_sbindir}/mount.ceph -%if 0%{?suse_version} && !0%{?usrmerged} +%if 0%{?suse_version} && 0%{?suse_version} < 1550 /sbin/mount.ceph %endif %if %{with lttng} @@ -1899,6 +1934,7 @@ fi %{_datadir}/ceph/mgr/prometheus %{_datadir}/ceph/mgr/rbd_support %{_datadir}/ceph/mgr/restful +%{_datadir}/ceph/mgr/rgw %{_datadir}/ceph/mgr/selftest %{_datadir}/ceph/mgr/snap_schedule %{_datadir}/ceph/mgr/stats @@ -2141,17 +2177,14 @@ fi %{_bindir}/radosgw-token %{_bindir}/radosgw-es %{_bindir}/radosgw-object-expirer -%{_bindir}/rgw-gap-list -%{_bindir}/rgw-gap-list-comparator -%{_bindir}/rgw-orphan-list -%{_libdir}/libradosgw.so* +%{_bindir}/rgw-policy-check %{_mandir}/man8/radosgw.8* +%{_mandir}/man8/rgw-policy-check.8* %dir %{_localstatedir}/lib/ceph/radosgw %{_unitdir}/ceph-radosgw@.service %{_unitdir}/ceph-radosgw.target %post radosgw -%{?ldconfig} %if 0%{?suse_version} if [ $1 -eq 1 ] ; then /usr/bin/systemctl preset ceph-radosgw@\*.service ceph-radosgw.target >/dev/null 2>&1 || : @@ -2173,7 +2206,6 @@ fi %endif %postun radosgw -%{?ldconfig} %systemd_postun ceph-radosgw@\*.service ceph-radosgw.target if [ $1 -ge 1 ] ; then # Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to @@ -2415,6 +2447,7 @@ fi %dir %{_includedir}/cephfs %{_includedir}/cephfs/libcephfs.h %{_includedir}/cephfs/ceph_ll_client.h +%{_includedir}/cephfs/types.h %dir %{_includedir}/cephfs/metrics %{_includedir}/cephfs/metrics/Types.h %{_libdir}/libcephfs.so @@ -2614,7 +2647,14 @@ exit 0 %attr(0755,root,root) %dir %{_sysconfdir}/prometheus/ceph %config %{_sysconfdir}/prometheus/ceph/ceph_default_alerts.yml +%files mib +%attr(0755,root,root) %dir %{_datadir}/snmp +%{_datadir}/snmp/mibs + %changelog +* Tue Jun 13 2023 Kaleb S. KEITHLEY - 2:18.1.0-0.1 +- ceph-18.1.0 RC1 + * Wed Jun 07 2023 Yaakov Selkowitz - 2:17.2.6-8 - Do not use mold in RHEL/ELN builds @@ -2714,9 +2754,6 @@ exit 0 * Sun Jul 17 2022 Robert-André Mauchin - 2:17.2.1-5 - Rebuild for new fmt -* Sun Jul 10 2022 Mamoru TASAKA - 2:17.2.1-4 -- Rebuild for new gtest - * Wed Jul 6 2022 Kaleb S. KEITHLEY - 2:17.2.1-3 - enable cephfs-shell @@ -2930,15 +2967,15 @@ exit 0 - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild * Tue Jul 21 2020 Kaleb S. KEITHLEY - 2:15.2.4-9 -- %%cmake_build and %%cmake_install +- %cmake_build and %cmake_install * Mon Jul 20 2020 Kaleb S. KEITHLEY - 2:15.2.4-8 - see 15.2.4-4 (f33-java11) for real this time -- and use %%make_install macro +- and use %make_install macro * Mon Jul 20 2020 Kaleb S. KEITHLEY - 2:15.2.4-7 - see 15.2.4-3, hopefully for real this time -- and use %%make_install macro +- and use %make_install macro * Fri Jul 17 2020 Kaleb S. KEITHLEY - 2:15.2.4-6 - see 15.2.4-4 diff --git a/sources b/sources index 11254c3..09af4c1 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (ceph-17.2.6.tar.gz) = dca9aea2ce210c15fcc34cb06a5dc5b4488ffa36d684166d47ebd87e48b54b6fee0882e1c67007a780e1c25754e9bc6e760cc10f60ea1183263f8504ef2dbd9b +SHA512 (ceph-18.1.0.tar.gz) = 9818b061da77e447143666c4be171cd3461b2bfeb4bad4fec5163b2b3b27bc3a5874426833465673204877b3c287b109b65099d9335544dde1323eb39da7f418 From 9c5f485aa976f31836001523dccf9fc73412351c Mon Sep 17 00:00:00 2001 From: Python Maint Date: Thu, 15 Jun 2023 15:34:18 +0200 Subject: [PATCH 33/60] Rebuilt for Python 3.12 --- ceph.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ceph.spec b/ceph.spec index 95a21b4..80caa9b 100644 --- a/ceph.spec +++ b/ceph.spec @@ -170,7 +170,7 @@ ################################################################################# Name: ceph Version: 18.1.0 -Release: 0.1%{?dist} +Release: 0.2%{?dist} %if 0%{?fedora} || 0%{?rhel} Epoch: 2 %endif @@ -2652,6 +2652,9 @@ exit 0 %{_datadir}/snmp/mibs %changelog +* Thu Jun 15 2023 Python Maint - 2:18.1.0-0.2 +- Rebuilt for Python 3.12 + * Tue Jun 13 2023 Kaleb S. KEITHLEY - 2:18.1.0-0.1 - ceph-18.1.0 RC1 From c89ec5de2b00c01a5722459f9ae138a5b4f8ee69 Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Thu, 15 Jun 2023 17:12:00 -0400 Subject: [PATCH 34/60] remove requires for nonexistant libjaeger, rhbz#2215320 sync w/ upstream ceph.spec(.in), sanity check Signed-off-by: Kaleb S. KEITHLEY --- ceph.spec | 907 +----------------------------------------------------- 1 file changed, 11 insertions(+), 896 deletions(-) diff --git a/ceph.spec b/ceph.spec index 80caa9b..74165c0 100644 --- a/ceph.spec +++ b/ceph.spec @@ -36,13 +36,16 @@ %bcond_with rbd_rwl_cache %endif %if 0%{?fedora} || 0%{?rhel} +%if 0%{?rhel} < 9 +%bcond_with system_pmdk +%else %ifarch s390x %{arm64} %bcond_with system_pmdk %else %bcond_without system_pmdk %endif +%endif %bcond_without selinux -%bcond_without cephfs_java %bcond_without amqp_endpoint %bcond_without kafka_endpoint %bcond_without lttng @@ -170,7 +173,7 @@ ################################################################################# Name: ceph Version: 18.1.0 -Release: 0.2%{?dist} +Release: 0.3%{?dist} %if 0%{?fedora} || 0%{?rhel} Epoch: 2 %endif @@ -180,7 +183,6 @@ Epoch: 2 %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 %if 0%{?suse_version} Group: System/Filesystems @@ -246,7 +248,6 @@ BuildRequires: %{gts_prefix}-libatomic-devel BuildRequires: libatomic BuildRequires: gcc-c++ %endif -BuildRequires: libatomic %if 0%{?rhel} %bcond_with ld_mold %else @@ -407,7 +408,6 @@ BuildRequires: mozilla-nss-devel BuildRequires: keyutils-devel BuildRequires: libopenssl-devel BuildRequires: ninja -BuildRequires: lsb-release BuildRequires: openldap2-devel #BuildRequires: krb5 #BuildRequires: krb5-devel @@ -430,7 +430,6 @@ BuildRequires: keyutils-libs-devel BuildRequires: libatomic BuildRequires: libibverbs-devel BuildRequires: librdmacm-devel -BuildRequires: ninja-build BuildRequires: openldap-devel #BuildRequires: krb5-devel BuildRequires: openssl-devel @@ -442,7 +441,6 @@ BuildRequires: python%{python3_pkgversion}-sphinx BuildRequires: lz4-devel >= 1.7 %endif # distro-conditional make check dependencies -BuildRequires: golang %if 0%{with make_check} BuildRequires: golang %if 0%{?fedora} || 0%{?rhel} @@ -502,7 +500,6 @@ BuildRequires: redhat-rpm-config %if 0%{?fedora} || 0%{?rhel} BuildRequires: cryptopp-devel BuildRequires: numactl-devel -BuildRequires: protobuf-compiler %endif %if 0%{?suse_version} BuildRequires: libcryptopp-devel @@ -538,7 +535,6 @@ Requires: ceph-selinux = %{_epoch_prefix}%{version}-%{release} Requires: findutils Requires: grep Requires: logrotate -Requires: parted Requires: psmisc Requires: util-linux Requires: which @@ -589,9 +585,6 @@ Requires: python%{python3_pkgversion}-cephfs = %{_epoch_prefix}%{version}-%{rele 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} -%if 0%{with jaeger} -Requires: libjaeger = %{_epoch_prefix}%{version}-%{release} -%endif %if 0%{?fedora} || 0%{?rhel} Requires: python%{python3_pkgversion}-prettytable %endif @@ -605,7 +598,6 @@ Requires: libradosstriper1 = %{_epoch_prefix}%{version}-%{release} %if 0%{?suse_version} Requires(pre): pwdutils %endif -Requires: systemd-udev %description -n ceph-common Common utilities to mount and interact with a ceph storage cluster. Comprised of files that are common to Ceph clients and servers. @@ -1353,7 +1345,6 @@ This package provides a Ceph MIB for SNMP traps. %define _lto_cflags %{nil} %endif - %if 0%{with cephfs_java} # Find jni.h for i in /usr/{lib64,lib}/jvm/java/include{,/linux}; do @@ -1513,6 +1504,7 @@ export GCC_COLORS= %cmake_install # we have dropped sysvinit bits rm -f %{buildroot}/%{_sysconfdir}/init.d/ceph + %if 0%{with seastar} # package crimson-osd with the name of ceph-osd install -m 0755 %{buildroot}%{_bindir}/crimson-osd %{buildroot}%{_bindir}/ceph-osd @@ -1760,6 +1752,7 @@ exit 0 %config %{_sysconfdir}/bash_completion.d/radosgw-admin %config(noreplace) %{_sysconfdir}/ceph/rbdmap %{_unitdir}/rbdmap.service +%dir %{_udevrulesdir} %{_udevrulesdir}/50-rbd.rules %attr(3770,ceph,ceph) %dir %{_localstatedir}/log/ceph/ %attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/ @@ -2652,6 +2645,10 @@ exit 0 %{_datadir}/snmp/mibs %changelog +* Thu Jun 15 2023 Kaleb S. KEITHLEY - 2:18.1.0-0.3 +- remove requires for nonexistant libjaeger, rhbz#2215320 +- sync w/ upstream ceph.spec(.in), sanity check + * Thu Jun 15 2023 Python Maint - 2:18.1.0-0.2 - Rebuilt for Python 3.12 @@ -2817,885 +2814,3 @@ exit 0 * Mon Feb 28 2022 Kaleb S. KEITHLEY - 2:17.1.0-0.1.rc1 - 17.1.0 RC1 -* Sat Feb 05 2022 Jiri Vanek - 2:16.2.7-10 -- Rebuilt for java-17-openjdk as system jdk - -* Wed Feb 2 2022 Kaleb S. KEITHLEY - 2:16.2.7-9 -- 16.2.7, python3.10 w/ __CHAR_UNSIGNED__ fix - -* Thu Jan 27 2022 Kaleb S. KEITHLEY - 2:16.2.7-8 -- 16.2.7, w/ modern linker (mold), x86_64 and aarch64, this time for real - -* Wed Jan 26 2022 Kaleb S. KEITHLEY - 2:16.2.7-7 -- 16.2.7, build with modern linker (mold), x86_64 and aarch64 -- reenable ppc64le - -* Tue Jan 25 2022 Kaleb S. KEITHLEY - 2:16.2.7-6 -- 16.2.7, more CET enablement, rhbz#2040091 - -* Thu Jan 20 2022 Kaleb S. KEITHLEY - 2:16.2.7-5 -- 16.2.7, rebuild with gcc-12, exclude ppc64le until fmt on ppc64le is fixed - -* Wed Jan 19 2022 Fedora Release Engineering - 2:16.2.7-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild - -* Mon Jan 10 2022 Kaleb S. KEITHLEY - 2:16.2.7-3 -- 16.2.7, rebuild with fmt-8.1.1 - -* Wed Dec 29 2021 Kaleb S. KEITHLEY - 2:16.2.7-2 -- 16.2.7, LGPLv2.1 -> LGPLv2+, rhbz#2036035 - -* Tue Dec 7 2021 Kaleb S. KEITHLEY - 2:16.2.7-1 -- 16.2.7 GA - -* Tue Nov 02 2021 Mamoru TASAKA - 2:16.2.6-3 -- rebuild against new liblttng-ust - -* Tue Oct 19 2021 Kaleb S. KEITHLEY - 2:16.2.6-2 -- 16.2.6, rebuild with rocksdb 6.25 - -* Fri Sep 17 2021 Kaleb S. KEITHLEY - 2:16.2.6-1 -- 16.2.6 GA - -* Tue Sep 14 2021 Sahana Prasad - 2:16.2.5-11 -- Rebuilt with OpenSSL 3.0.0 - -* Mon Sep 6 2021 Kaleb S. KEITHLEY - 2:16.2.5-10 -- Rebuilt for gtest 1.11.0 - -* Thu Aug 26 2021 Kaleb S. KEITHLEY - 2:16.2.5-9 -- Rebuilt for rocksdb 6.22 - -* Tue Aug 17 2021 Kaleb S. KEITHLEY - 2:16.2.5-8 -- build with ninja, -DWITH_SYSTEM_ZSTD, without gdbm - -* Sun Aug 8 2021 Kaleb S. KEITHLEY - 2:16.2.5-7 -- Rebuild for Boost 1.76 again - -* Fri Aug 06 2021 Jonathan Wakely - 2:16.2.5-6 -- Rebuilt for Boost 1.76 - -* Thu Aug 5 2021 Kaleb S. KEITHLEY - 2:16.2.5-5 -- Rebuild for leveldb-1.23-3 w/ reverted -fno-rtti - -* Tue Aug 3 2021 Kaleb S. KEITHLEY - 2:16.2.5-4 -- Rebuild for leveldb-1.23 - -* Wed Jul 21 2021 Fedora Release Engineering - 2:16.2.5-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild - -* Thu Jul 8 2021 Kaleb S. KEITHLEY - 2:16.2.5-2 -- Rebuild for new fmt version. - -* Thu Jul 8 2021 Kaleb S. KEITHLEY - 2:16.2.5-1 -- 16.2.5 GA - -* Mon Jul 05 2021 Richard Shaw - 2:16.2.4-6 -- Rebuild for new fmt version. - -* Fri Jun 11 2021 Kaleb S. KEITHLEY - 2:16.2.4-5 -- https://src.fedoraproject.org/rpms/ceph/pull-request/3# - -* Fri Jun 04 2021 Python Maint - 2:16.2.4-4 -- Rebuilt for Python 3.10 - -* Wed May 26 2021 Kaleb S. KEITHLEY - 2:16.2.4-3 -- 16.2.4, bz 1964858, snappy::uint32 - -* Wed May 19 2021 Pete Walter - 2:16.2.4-2 -- Rebuild for ICU 69 - -* Thu May 13 2021 Kaleb S. KEITHLEY - 2:16.2.4-1 -- 16.2.4 GA - -* Thu May 6 2021 Kaleb S. KEITHLEY - 2:16.2.3-1 -- 16.2.3 GA - -* Wed May 5 2021 Kaleb S. KEITHLEY - 2:16.2.2-1 -- 16.2.2 GA - -* Tue Apr 20 2021 Kaleb S. KEITHLEY - 2:16.2.1-1 -- 16.2.1 GA - -* Wed Apr 14 2021 Richard W.M. Jones - 2:16.2.0-3 -- Rebuild for updated liburing. - -* Sat Apr 10 2021 Kaleb S. KEITHLEY - 2:16.2.0-2 -- 16.2.0, libamqp_mock fix (FTBFS, #1947281), rgw fix - -* Wed Mar 31 2021 Kaleb S. KEITHLEY - 2:16.2.0-1 -- 16.2.0 GA - -* Tue Mar 30 2021 Jonathan Wakely - 2:16.1.0-2 -- Rebuilt for removed libstdc++ symbol (#1937698) - -* Thu Mar 25 2021 Kaleb S. KEITHLEY - 2:16.1.0-1 -- 16.1.0 RC - -* Tue Mar 23 2021 Kaleb S. KEITHLEY - 2:16.1.0-0.8.snapshot -- 16.1.0 RC (ceph-16.1.0-944-ge53ee8bd plus fix trailing slash bluestore) - -* Sat Mar 20 2021 Kaleb S. KEITHLEY - 2:16.1.0-0.7.snapshot -- 16.1.0 RC (ceph-16.1.0-944-ge53ee8bd) - -* Fri Mar 19 2021 Kaleb S. KEITHLEY - 2:16.1.0-0.6.snapshot -- 16.1.0 RC (ceph-16.1.0-308-gabe639eb) - -* Fri Mar 5 2021 Kaleb S. KEITHLEY - 2:16.1.0-0.5.snapshot -- ceph 16.1.0 RC (ceph-16.1.0-308-gabe639eb) -- rpmbuild apparently unable to automatically derive 'Requires: rocksdb' from 'BuildRequires: rocksdb-devel' for librocksdb.so.6.13 - -* Sat Feb 20 2021 Kaleb S. KEITHLEY - 2:16.1.0-0.4.snapshot -- ceph 16.1.0 RC (ceph-16.1.0-308-gabe639eb) - -* Thu Feb 4 2021 Kaleb S. KEITHLEY - 2:16.1.0-0.3.snapshot -- rocksdb not available in el8+, use bundled rocksdb - -* Mon Feb 1 2021 Kaleb S. KEITHLEY - 2:16.1.0-0.2.snapshot -- libblk.so -> libblk.a -- libneoradostest-support.so -> libneoradostest-support.a -- w/ liburing-devel, -DWITH_SYSTEM_LIBURING=ON -- w/ rocksdb-devel, -DWITH_SYSTEM_ROCKSDB=ON - -* Fri Jan 29 2021 Kaleb S. KEITHLEY - 2:16.1.0-0.1.snapshot -- ceph 16.1.0 RC (ceph-16.1.0-43-g6b74fb5c) - -* Wed Sep 16 2020 Kaleb S. KEITHLEY - 2:15.2.5-1 -- ceph 15.2.5 GA - -* Wed Jul 29 2020 Richard W.M. Jones - 2:15.2.4-11 -- Rebuild against fmt 7. - -* Mon Jul 27 2020 Fedora Release Engineering - 2:15.2.4-10 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - -* Tue Jul 21 2020 Kaleb S. KEITHLEY - 2:15.2.4-9 -- %cmake_build and %cmake_install - -* Mon Jul 20 2020 Kaleb S. KEITHLEY - 2:15.2.4-8 -- see 15.2.4-4 (f33-java11) for real this time -- and use %make_install macro - -* Mon Jul 20 2020 Kaleb S. KEITHLEY - 2:15.2.4-7 -- see 15.2.4-3, hopefully for real this time -- and use %make_install macro - -* Fri Jul 17 2020 Kaleb S. KEITHLEY - 2:15.2.4-6 -- see 15.2.4-4 - -* Fri Jul 17 2020 Kaleb S. KEITHLEY - 2:15.2.4-5 -- see 15.2.4-3 - -* Fri Jul 17 2020 Kaleb S. KEITHLEY - 2:15.2.4-4 -- Rebuilt for JDK-11, see https://fedoraproject.org/wiki/Changes/Java11 - -* Fri Jul 17 2020 Kaleb S. KEITHLEY - 2:15.2.4-3 -- use `ld -r -z ibt -z shstk...` instead of magic hackery to get CET ibt - and shstk. N.B. updated yasm in f33/rawhide now has support for - .note.gnu.properties so even this will go away in the next build -- signal_handler.cc, use HAVE_REENTRANT_STRSIGNAL, strsignal(3) - -* Fri Jul 10 2020 Jiri Vanek - 2:15.2.4-2 -- Rebuilt for JDK-11, see https://fedoraproject.org/wiki/Changes/Java11 - -* Wed Jul 1 2020 Kaleb S. KEITHLEY - 2:15.2.4-1 -- ceph 15.2.4 GA - -* Tue Jun 23 2020 Kaleb S. KEITHLEY -- explicit BuildRequires python3-setuptools - -* Mon Jun 1 2020 Kaleb S. KEITHLEY - 2:15.2.3-1 -- ceph 15.2.3 GA - -* Tue May 26 2020 Kaleb S. KEITHLEY - 2:15.2.2-3 -- ceph 15.2.2, CET enable src/common/crc32c_intel_*_asm.s; shstk, ibt -- and other fixes -- see https://github.com/intel/isa-l/blob/master/crc/crc32_iscsi_00.asm - -* Tue May 26 2020 Miro Hrončok - 2:15.2.2-2 -- Rebuilt for Python 3.9 - -* Mon May 18 2020 Kaleb S. KEITHLEY - 2:15.2.2-1 -- ceph 15.2.2 GA - -* Mon May 18 2020 Kaleb S. KEITHLEY - 2:15.2.1-2 -- ceph 15.2.1, gmock and gtest. (although gmock last built for f27) - -* Fri Apr 10 2020 Kaleb S. KEITHLEY - 2:15.2.1-1 -- ceph 15.2.1 GA - -* Mon Mar 23 2020 Kaleb S. KEITHLEY - 2:15.2.0-1 -- ceph 15.2.0 GA - -* Mon Mar 16 2020 Kaleb S. KEITHLEY - 2:15.1.1-2 -- ceph 15.1.1 fmt, rhbz#1805422 again - -* Mon Mar 16 2020 Kaleb S. KEITHLEY - 2:15.1.1-1 -- ceph 15.1.1 RC - -* Thu Mar 5 2020 Kaleb S. KEITHLEY - 2:15.1.0-3 -- ceph 15.1.0, rhbz#1809799 - -* Thu Feb 20 2020 Kaleb S. KEITHLEY - 2:15.1.0-2 -- ceph 15.1.0, fmt, rhbz#1805422 - -* Tue Feb 11 2020 Kaleb S. KEITHLEY - 2:15.1.0-1 -- ceph 15.1.0 RC - -* Mon Feb 3 2020 Kaleb S. KEITHLEY - 2:14.2.7-2 -- ceph 14.2.7 python3-remoto #1784216 - -* Sat Feb 1 2020 Kaleb S. KEITHLEY - 2:14.2.7-1 -- ceph 14.2.7 GA - -* Wed Jan 29 2020 Kaleb S. KEITHLEY - 2:14.2.6-4 -- ceph 14.2.6, https://tracker.ceph.com/issues/43649 - -* Mon Jan 27 2020 Kaleb S. KEITHLEY - 2:14.2.6-3 -- ceph 14.2.6, (temporarily) disable unit tests - -* Fri Jan 24 2020 Kaleb S. KEITHLEY -- ceph 14.2.6, gcc-10, missing includes - -* Thu Jan 9 2020 Kaleb S. KEITHLEY - 2:14.2.6-2 -- ceph 14.2.6 - -* Thu Jan 9 2020 Kaleb S. KEITHLEY - 2:14.2.6-1 -- ceph 14.2.6 GA - -* Tue Dec 10 2019 Kaleb S. KEITHLEY - 2:14.2.5-1 -- ceph 14.2.5 GA - -* Mon Nov 11 2019 Kaleb S. KEITHLEY - 2:14.2.4-3 -- ceph 14.2.4, fix typo - -* Tue Nov 5 2019 Kaleb S. KEITHLEY - 2:14.2.4-2 -- ceph 14.2.4, partial fix for bz#1768017 - -* Tue Sep 17 2019 Kaleb S. KEITHLEY - 2:14.2.4-1 -- ceph 14.2.4 GA - -* Wed Sep 4 2019 Kaleb S. KEITHLEY - 2:14.2.3-1 -- ceph 14.2.3 GA - -* Mon Aug 19 2019 Miro Hrončok - 2:14.2.2-3 -- Rebuilt for Python 3.8 - -* Wed Jul 24 2019 Fedora Release Engineering - 2:14.2.2-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild - -* Fri Jul 19 2019 Kaleb S. KEITHLEY - 2:14.2.2-1 -- ceph 14.2.2 GA - -* Tue May 28 2019 Kaleb S. KEITHLEY - 2:14.2.0-2 -- numpy -> python3-numpy, bz#1712203 (and why I like to keep upstream - and fedora .spec files in sync) - -* Wed May 8 2019 Kaleb S. KEITHLEY -- sync w/ upstream to minimize diffs/drift - -* Mon Apr 29 2019 Boris Ranto - 2:14.2.1-1 -- Rebase to latest upstream version (14.2.1) - -* Tue Mar 19 2019 Kaleb S. KEITHLEY - 2:14.2.0-1 -- ceph 14.2.0 GA - -* Wed Mar 13 2019 Boris Ranto - 2:14.1.1-1 -- Rebase to latest upstream version - -* Thu Mar 07 2019 Adam Williamson - 2:14.1.0-3 -- Return epoch to 2, epochs cannot ever go backwards - -* Wed Mar 6 2019 Kaleb S. KEITHLEY - 1:14.1.0-2 -- ceph 14.1.0 w/ static libcrc32 - -* Wed Feb 27 2019 Boris Ranto - 1:14.1.0-1 -- Rebase to v14.1.0 (updated for fixes in upstream nautilus branch) - -* Thu Feb 21 2019 Kaleb S. KEITHLEY - 1:14.0.1-2 -- Eliminate redundant CMAKE_* macros when using %%cmake global -- Add CMAKE_BUILD_TYPE=RelWithDeb(ug)Info and BUILD_CONFIG=rpmbuild - -* Wed Feb 20 2019 Kaleb S. KEITHLEY - 1:14.0.1-1 -- rebuild for f31/rawhide, including: -- use the %%{cmake} %%global to get all the extra Fedora cmake options. - (This is Fedora, so don't care so much about rhel/rhel7 cmake3.) -- reset epoch to 1. Note we use (have been using) epoch=1 in Fedora since - forever. I presume this is so that people can install Ceph RPMs from - ceph.com if they prefer those, which use epoch=2, and not run into issues - when updating. - -* Thu Feb 7 2019 Kaleb S. KEITHLEY - 2:14.0.1-4 -- w/ fixes for gcc9 - -* Thu Jan 31 2019 Fedora Release Engineering - 2:14.0.1-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild - -* Sat Dec 08 2018 Boris Ranto - 2:14.0.1-2 -- fix pyOpenSSL depemdency - -* Tue Dec 04 2018 Boris Ranto - 2:14.0.1-1 -- New release (2:14.0.1-1) -- Sync with upstream -- Drop 32-bit support - -* Wed Nov 21 2018 Boris Ranto - 2:13.2.2-1 -- New release (2:13.2.2-1) -- Sync with upstream - -* Mon Oct 29 2018 Kaleb S. KEITHLEY - 1:12.2.9-1 -- New release (1:12.2.9-1) - -* Wed Sep 12 2018 Kaleb S. KEITHLEY - 1:12.2.8-2 -- Fedora 30 python3. Note ceph-mgr subpackage, ceph-detect-init, ceph-disk, - ceph-volume, and ceph-volume-systemd are missing in this build - -* Fri Aug 31 2018 Kaleb S. KEITHLEY - 1:12.2.8-1 -- New release (1:12.2.8-1) - -* Wed Jul 18 2018 Kaleb S. KEITHLEY - 1:12.2.7-1 -- New release (1:12.2.7-1) - -* Thu Jul 12 2018 Fedora Release Engineering - 1:12.2.6-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild - -* Wed Jul 11 2018 Kaleb S. KEITHLEY - 1:12.2.6-1 -- New release (1:12.2.6-1) - -* Mon Jul 2 2018 Kaleb S. KEITHLEY - 1:12.2.5-3 -- New release (1:12.2.5-3) w/ python-3.7 - -* Fri Jun 29 2018 Kaleb S. KEITHLEY - 1:12.2.5-2 -- New release (1:12.2.5-2) - -* Fri Apr 27 2018 Kaleb S. KEITHLEY - 1:12.2.5-1 -- New release (1:12.2.5-1) - -* Fri Apr 13 2018 Rafael dos Santos - 1:12.2.4-2 -- Use standard Fedora linker flags (bug #1547552) - -* Fri Mar 2 2018 Kaleb S. KEITHLEY - 1:12.2.4-1 -- New release (1:12.2.4-1) -- rhbz#1446610, rhbz#1546611, cephbz#23039 - -* Wed Feb 21 2018 Kaleb S. KEITHLEY - 1:12.2.3-1 -- New release (1:12.2.3-1) - -* Thu Feb 15 2018 Kaleb S. KEITHLEY - 1:12.2.2-3 -- no ldconfig in F28 - -* Wed Feb 07 2018 Fedora Release Engineering - 1:12.2.2-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild - -* Tue Dec 5 2017 Kaleb S. KEITHLEY - 1:12.2.2-1 -- New release (1:12.2.2-1) -- Fix build error on arm - -* Thu Oct 05 2017 Boris Ranto - 1:12.2.1-2 -- Obsolete ceph-libs-compat package - -* Wed Sep 27 2017 Kaleb S. KEITHLEY - 1:12.2.1-1 -- New release (1:12.2.1-1) - -* Tue Aug 29 2017 Kaleb S. KEITHLEY - 1:12.2.0-1 -- New release (1:12.2.0-1) - -* Thu Aug 24 2017 Kaleb S. KEITHLEY - 1:12.1.4-5 -- libibverbs(-devel) is superceded by rdma-core(-devel), again - -* Thu Aug 24 2017 Kaleb S. KEITHLEY - 1:12.1.4-4 -- libibverbs(-devel) is superceded by rdma-core(-devel) - -* Tue Aug 22 2017 Adam Williamson - 1:12.1.4-3 -- Disable RDMA support on 32-bit ARM (#1484155) - -* Thu Aug 17 2017 Kaleb S. KEITHLEY - 1:12.1.4-2 -- fix %%epoch in comment, ppc64le lowmem_builder - -* Wed Aug 16 2017 Kaleb S. KEITHLEY - 1:12.1.4-1 -- New release (1:12.1.4-1) - -* Sat Aug 12 2017 Kaleb S. KEITHLEY - 1:12.1.3-1 -- New release (1:12.1.3-1) - -* Fri Aug 11 2017 Kaleb S. KEITHLEY - 1:12.1.2-3 -- rebuild with librpm.so.7 - -* Thu Aug 10 2017 Kaleb S. KEITHLEY - 1:12.1.2-2 -- Fix 32-bit alignment - -* Thu Aug 3 2017 Kaleb S. KEITHLEY - 1:12.1.2-1 -- New release (1:12.1.2-1) - -* Tue Aug 1 2017 Boris Ranto - 1:12.1.1-8 -- Fix ppc64 build - -* Tue Aug 1 2017 Kaleb S. KEITHLEY - 1:12.1.1-7 -- python34 and other nits -- still no fix for ppc64 - -* Sun Jul 30 2017 Florian Weimer - 1:12.1.1-6 -- Reenable ppc64le, with binutils fix for ppc64le (#1475636) - -* Fri Jul 28 2017 Kaleb S. KEITHLEY - 1:12.1.1-5 -- ppc64le disabled until bz #1475636 resolution - -* Fri Jul 28 2017 Kaleb S. KEITHLEY - 1:12.1.1-4 -- 12.1.1 w/ hacks for armv7hl: low mem, no java jni -- WTIH_BABELTRACE -> WITH_BABELTRACE for all archs -- still no fix for ppc64 - -* Wed Jul 26 2017 Fedora Release Engineering - 1:12.1.1-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild - -* Sat Jul 22 2017 Kaleb S. KEITHLEY - 1:12.1.1-2 -- 12.1.1 w/ rocksdb patch (i686) - -* Sat Jul 22 2017 Kaleb S. KEITHLEY - 1:12.1.1-1 -- New release (1:12.1.1-1) - -* Fri Jul 21 2017 Kaleb S. KEITHLEY - 1:12.1.1-0 -- New release (1:12.1.1-0) - -* Fri Jul 21 2017 Kalev Lember - 1:10.2.7-3 -- Rebuilt for Boost 1.64 - -* Mon May 15 2017 Fedora Release Engineering - 1:10.2.7-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_27_Mass_Rebuild - -* Mon Apr 17 2017 Kaleb S. KEITHLEY - 1:10.2.7-1 -- New release (1:10.2.7-1) - -* Wed Feb 08 2017 Boris Ranto - 1:10.2.5-2 -- New release (1:10.2.5-2) - -* Fri Jan 13 2017 Boris Ranto - 1:10.2.5-1 -- New release (1:10.2.5-1) -- hack: do not test for libxfs, assume it is present - -* Wed Dec 14 2016 Boris Ranto - 1:10.2.4-2 -- New version (1:10.2.4-2) -- This syncs up with the upstream 10.2.5 -- Doing it this way because of broken lookaside cache -- Fix the -devel obsoletes - -* Thu Dec 08 2016 Boris Ranto - 1:10.2.4-1 -- New version (1:10.2.4-1) -- Disable erasure_codelib neon build -- Use newer -devel package format -- Sync up the spec file - -* Wed Oct 26 2016 Ken Dreyer - 1:10.2.3-4 -- librgw: add API version defines for librgw and rgw_file - -* Wed Oct 26 2016 Ken Dreyer - 1:10.2.3-3 -- update patches style for rdopkg - -* Thu Sep 29 2016 Boris Ranto - 1:10.2.3-2 -- New release (1:10.2.3-2) -- common: instantiate strict_si_cast not - -* Thu Sep 29 2016 Boris Ranto - 1:10.2.3-1 -- New version (1:10.2.3-1) -- Disable erasure_codelib neon build - -* Sun Aug 07 2016 Igor Gnatenko - 1:10.2.2-4 -- Rebuild for LevelDB 1.18 - -* Tue Jul 19 2016 Fedora Release Engineering - 1:10.2.2-3 -- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages - -* Tue Jun 21 2016 Boris Ranto - 1:10.2.2-2 -- New release (1:10.2.2-2) -- fix tcmalloc handling in spec file - -* Mon Jun 20 2016 Boris Ranto - 1:10.2.2-1 -- New version (1:10.2.2-1) -- Disable erasure_codelib neon build -- Do not use -momit-leaf-frame-pointer flag - -* Mon May 16 2016 Boris Ranto - 1:10.2.1-1 -- New version (1:10.2.1-1) -- Disable erasure_codelib neon build -- Do not use -momit-leaf-frame-pointer flag - -* Fri May 06 2016 Dan Horák - 10.2.0-3 -- fix build on s390(x) - gperftools/tcmalloc not available there - -* Fri Apr 22 2016 Boris Ranto - 10.2.0-2 -- Do not use -momit-leaf-frame-pointer flag - -* Fri Apr 22 2016 Boris Ranto - - -- Rebase to version 10.2.0 -- Disable erasure_codelib neon build - -* Mon Apr 11 2016 Richard W.M. Jones - 1:9.2.0-5 -- Fix large startup times of processes linking to -lrbd. - Backport upstream commit 1c2831a2, fixes RHBZ#1319483. -- Add workaround for XFS header brokenness. - -* Wed Feb 03 2016 Fedora Release Engineering - 1:9.2.0-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild - -* Thu Jan 14 2016 Jonathan Wakely - 1:9.2.0-3 -- Rebuilt for Boost 1.60 - -* Mon Dec 14 2015 Dan Horák - 1:9.2.0-2 -- fix build on s390(x) - gperftools/tcmalloc not available there - -* Tue Nov 10 2015 Boris Ranto - 1:9.2.0-1 -- Rebase to latest stable upstream version (9.2.0 - infernalis) -- Use upstream spec file - -* Tue Oct 27 2015 Boris Ranto - 1:0.94.5-1 -- Rebase to latest upstream version - -* Tue Oct 20 2015 Boris Ranto - 1:0.94.4-1 -- Rebase to latest upstream version -- The rtdsc patch got merged upstream and is already present in the release - -* Thu Aug 27 2015 Jonathan Wakely - 1:0.94.3-2 -- Rebuilt for Boost 1.59 - -* Thu Aug 27 2015 Boris Ranto - 1:0.94.3-1 -- Rebase to latest upstream version -- The boost patch got merged upstream and is already present in the release - -* Fri Jul 31 2015 Richard W.M. Jones - 1:0.94.2-4 -- Fix build against boost 1.58 (http://tracker.ceph.com/issues/11576). - -* Wed Jul 29 2015 Fedora Release Engineering - 1:0.94.2-3 -- Rebuilt for https://fedoraproject.org/wiki/Changes/F23Boost159 - -* Wed Jul 22 2015 David Tardon - 1:0.94.2-2 -- rebuild for Boost 1.58 - -* Thu Jul 16 2015 Boris Ranto - 1:0.94.2-1 -- Rebase to latest upstream version - -* Wed Jun 17 2015 Fedora Release Engineering - 1:0.94.1-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild - -* Mon Jun 08 2015 Dan Horák - 1:0.94.1-4 -- fix build on s390(x) - no gperftools there - -* Thu May 21 2015 Boris Ranto - 1:0.94.1-3 -- Disable lttng support (rhbz#1223319) - -* Mon May 18 2015 Boris Ranto - 1:0.94.1-2 -- Fix arm linking issue (rhbz#1222286) - -* Tue Apr 14 2015 Boris Ranto - 1:0.94.1-1 -- Rebase to latest upstream version and sync-up the spec file -- Add arm compilation patches - -* Wed Apr 01 2015 Ken Dreyer - 1:0.87.1-3 -- add version numbers to Obsoletes (RHBZ #1193182) - -* Wed Mar 4 2015 Boris Ranto - 1:0.87.1-2 -- Perform a hardened build -- Use git-formatted patches -- Add patch for pthreads rwlock unlock problem -- Do not remove conf files on uninstall -- Remove the cleanup function, it is only necessary for f20 and f21 - -* Wed Feb 25 2015 Boris Ranto - 1:0.87.1-1 -- Rebase to latest upstream -- Remove boost patch, it is in upstream tarball -- Build with yasm, tarball contains fix for the SELinux issue - -* Thu Jan 29 2015 Petr Machata - 1:0.87-2 -- Rebuild for boost 1.57.0 -- Include instead of - . Keep the old dumping behavior in - osd/ECBackend.cc (ceph-0.87-boost157.patch) - -* Mon Nov 3 2014 Boris Ranto - 1:0.87-1 -- Rebase to latest major version (firefly -> giant) - -* Thu Oct 16 2014 Boris Ranto - 1:0.80.6-3 -- Fix a typo in librados-devel vs librados2-devel dependency - -* Fri Oct 10 2014 Boris Ranto - 1:0.80.6-2 -- Provide empty file list for python-ceph-compat and ceph-devel-compat - -* Fri Oct 10 2014 Boris Ranto - 1:0.80.6-1 -- Rebase to 0.80.6 -- Split ceph-devel and python-ceph packages - -* Tue Sep 9 2014 Dan Horák - 1:0.80.5-10 -- update Requires for s390(x) - -* Wed Sep 3 2014 Boris Ranto - 1:0.80.5-9 -- Symlink librd.so.1 to /usr/lib64/qemu only on rhel6+ x86_64 (1136811) - -* Thu Aug 21 2014 Boris Ranto - 1:0.80.5-8 -- Revert the previous change -- Fix bz 1118504, second attempt (yasm appears to be the package that caused this -- Fix bogus dates - -* Wed Aug 20 2014 Boris Ranto - 1:0.80.5-7 -- Several more merges from file to try to fix the selinux issue (1118504) - -* Sun Aug 17 2014 Kalev Lember - 1:0.80.5-6 -- Obsolete ceph-libcephfs - -* Sat Aug 16 2014 Boris Ranto - 1:0.80.5-5 -- Do not require xfsprogs/xfsprogs-devel for el6 -- Require gperftools-devel for non-ppc*/s390* architectures only -- Do not require junit -- no need to build libcephfs-test.jar -- Build without libxfs for el6 -- Build without tcmalloc for ppc*/s390* architectures -- Location of mkcephfs must depend on a rhel release -- Use epoch in the Requires fields [1130700] - -* Sat Aug 16 2014 Boris Ranto - 1:0.80.5-4 -- Use the proper version name in Obsoletes - -* Fri Aug 15 2014 Fedora Release Engineering - 1:0.80.5-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild - -* Fri Aug 15 2014 Boris Ranto - 1:0.80.5-2 -- Add the arm pthread hack - -* Fri Aug 15 2014 Boris Ranto - 1:0.80.5-1 -- Bump the Epoch, we need to keep the latest stable, not development, ceph version in fedora -- Use the upstream spec file with the ceph-libs split -- Add libs-compat subpackage [1116546] -- use fedora in rhel 7 checks -- obsolete libcephfs [1116614] -- depend on redhat-lsb-core for the initscript [1108696] - -* Wed Aug 13 2014 Kalev Lember - 0.81.0-6 -- Add obsoletes to keep the upgrade path working (#1118510) - -* Mon Jul 7 2014 Kaleb S. KEITHLEY - 0.81.0-5 -- revert to old spec until after f21 branch - -* Fri Jul 4 2014 Kaleb S. KEITHLEY -- temporary exclude f21/armv7hl. N.B. it builds fine on f20/armv7hl. - -* Fri Jul 4 2014 Kaleb S. KEITHLEY - 0.81.0-4 -- upstream ceph.spec file - -* Tue Jul 1 2014 Kaleb S. KEITHLEY - 0.81.0-3 -- upstream ceph.spec file - -* Sat Jun 07 2014 Fedora Release Engineering - 0.81.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild - -* Thu Jun 5 2014 Kaleb S. KEITHLEY -- el6 ppc64 likewise for tcmalloc, merge from origin/el6 - -* Thu Jun 5 2014 Kaleb S. KEITHLEY -- el6 ppc64 does not have gperftools, merge from origin/el6 - -* Thu Jun 5 2014 Kaleb S. KEITHLEY - 0.81.0-1 -- ceph-0.81.0 - -* Wed Jun 4 2014 Peter Robinson 0.80.1-5 -- gperftools now available on aarch64/ppc64 - -* Fri May 23 2014 Petr Machata - 0.80.1-4 -- Rebuild for boost 1.55.0 - -* Fri May 23 2014 David Tardon - 0.80.1-3 -- rebuild for boost 1.55.0 - -* Wed May 14 2014 Kaleb S. KEITHLEY - 0.80.1-2 -- build epel-6 -- exclude %%{_libdir}/ceph/erasure-code in base package - -* Tue May 13 2014 Kaleb S. KEITHLEY - 0.80.1-1 -- Update to latest stable upstream release, BZ 1095201 -- PIE, _hardened_build, BZ 955174 - -* Thu Feb 06 2014 Ken Dreyer - 0.72.2-2 -- Move plugins from -devel into -libs package (#891993). Thanks Michael - Schwendt. - -* Mon Jan 06 2014 Ken Dreyer 0.72.2-1 -- Update to latest stable upstream release -- Use HTTPS for URLs -- Submit Automake 1.12 patch upstream -- Move unversioned shared libs from ceph-libs into ceph-devel - -* Wed Dec 18 2013 Marcin Juszkiewicz 0.67.3-4 -- build without tcmalloc on aarch64 (no gperftools) - -* Sat Nov 30 2013 Peter Robinson 0.67.3-3 -- gperftools not currently available on aarch64 - -* Mon Oct 07 2013 Dan Horák - 0.67.3-2 -- fix build on non-x86_64 64-bit arches - -* Wed Sep 11 2013 Josef Bacik - 0.67.3-1 -- update to 0.67.3 - -* Wed Sep 11 2013 Michael Schwendt - 0.61.7-3 -- let base package include all its documentation files via %%doc magic, - so for Fedora 20 Unversioned Docdirs no files are included accidentally -- include the sample config files again (instead of just an empty docdir - that has been added for #846735) -- don't include librbd.so.1 also in -devel package (#1003202) -- move one misplaced rados plugin from -devel into -libs package (#891993) -- include missing directories in -devel and -libs packages -- move librados-config into the -devel pkg where its manual page is, too -- add %%_isa to subpackage dependencies -- don't use %%defattr anymore -- add V=1 to make invocation for verbose build output - -* Wed Jul 31 2013 Peter Robinson 0.61.7-2 -- re-enable tmalloc on arm now gperftools is fixed - -* Mon Jul 29 2013 Josef Bacik - 0.61.7-1 -- Update to 0.61.7 - -* Sat Jul 27 2013 pmachata@redhat.com - 0.56.4-2 -- Rebuild for boost 1.54.0 - -* Fri Mar 29 2013 Josef Bacik - 0.56.4-1 -- Update to 0.56.4 -- Add upstream d02340d90c9d30d44c962bea7171db3fe3bfba8e to fix logrotate - -* Wed Feb 20 2013 Josef Bacik - 0.56.3-1 -- Update to 0.56.3 - -* Mon Feb 11 2013 Richard W.M. Jones - 0.53-2 -- Rebuilt to try to fix boost dependency problem in Rawhide. - -* Thu Nov 1 2012 Josef Bacik - 0.53-1 -- Update to 0.53 - -* Mon Sep 24 2012 Jonathan Dieter - 0.51-3 -- Fix automake 1.12 error -- Rebuild after buildroot was messed up - -* Tue Sep 18 2012 Jonathan Dieter - 0.51-2 -- Use system leveldb - -* Fri Sep 07 2012 David Nalley - 0.51-1 -- Updating to 0.51 -- Updated url and source url. - -* Wed Jul 18 2012 Fedora Release Engineering - 0.46-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild - -* Wed May 9 2012 Josef Bacik - 0.46-1 -- updated to upstream 0.46 -- broke out libcephfs (rhbz# 812975) - -* Mon Apr 23 2012 Dan Horák - 0.45-2 -- fix detection of C++11 atomic header - -* Thu Apr 12 2012 Josef Bacik - 0.45-1 -- updating to upstream 0.45 - -* Wed Apr 4 2012 Niels de Vos - 0.44-5 -- Add LDFLAGS=-lpthread on any ARM architecture -- Add CFLAGS=-DAO_USE_PTHREAD_DEFS on ARMv5tel - -* Mon Mar 26 2012 Dan Horák 0.44-4 -- gperftools not available also on ppc - -* Mon Mar 26 2012 Jonathan Dieter - 0.44-3 -- Remove unneeded patch - -* Sun Mar 25 2012 Jonathan Dieter - 0.44-2 -- Update to 0.44 -- Fix build problems - -* Mon Mar 5 2012 Jonathan Dieter - 0.43-1 -- Update to 0.43 -- Remove upstreamed compile fixes patch -- Remove obsoleted dump_pop patch - -* Tue Feb 28 2012 Fedora Release Engineering - 0.41-2 -- Rebuilt for c++ ABI breakage - -* Thu Feb 16 2012 Tom Callaway 0.41-1 -- update to 0.41 -- fix issues preventing build -- rebuild against gperftools - -* Sat Dec 03 2011 David Nalley 0.38-1 -- updating to upstream 0.39 - -* Sat Nov 05 2011 David Nalley 0.37-1 -- create /etc/ceph - bug 745462 -- upgrading to 0.37, fixing 745460, 691033 -- fixing various logrotate bugs 748930, 747101 - -* Fri Aug 19 2011 Dan Horák 0.31-4 -- google-perftools not available also on s390(x) - -* Mon Jul 25 2011 Karsten Hopp 0.31-3 -- build without tcmalloc on ppc64, BR google-perftools is not available there - -* Tue Jul 12 2011 Josef Bacik 0.31-2 -- Remove curl/types.h include since we don't use it anymore - -* Tue Jul 12 2011 Josef Bacik 0.31-1 -- Update to 0.31 - -* Tue Apr 5 2011 Josef Bacik 0.26-2 -- Add the compile fix patch - -* Tue Apr 5 2011 Josef Bacik 0.26 -- Update to 0.26 - -* Tue Mar 22 2011 Josef Bacik 0.25.1-1 -- Update to 0.25.1 - -* Tue Feb 08 2011 Fedora Release Engineering - 0.21.3-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild - -* Wed Sep 29 2010 Steven Pritchard 0.21.3-1 -- Update to 0.21.3. - -* Mon Aug 30 2010 Steven Pritchard 0.21.2-1 -- Update to 0.21.2. - -* Thu Aug 26 2010 Steven Pritchard 0.21.1-1 -- Update to 0.21.1. -- Sample configs moved to /usr/share/doc/ceph/. -- Added cclass, rbd, and cclsinfo. -- Dropped mkmonfs and rbdtool. -- mkcephfs moved to /sbin. -- Add libcls_rbd.so. - -* Tue Jul 6 2010 Josef Bacik 0.20.2-1 -- update to 0.20.2 - -* Wed May 5 2010 Josef Bacik 0.20-1 -- update to 0.20 -- disable hadoop building -- remove all the test binaries properly - -* Fri Apr 30 2010 Sage Weil 0.19.1-5 -- Remove java deps (no need to build hadoop by default) -- Include all required librados helpers -- Include fetch_config sample -- Include rbdtool -- Remove misc debugging, test binaries - -* Fri Apr 30 2010 Josef Bacik 0.19.1-4 -- Add java-devel and java tricks to get hadoop to build - -* Mon Apr 26 2010 Josef Bacik 0.19.1-3 -- Move the rados and cauthtool man pages into the base package - -* Sun Apr 25 2010 Jonathan Dieter 0.19.1-2 -- Add missing libhadoopcephfs.so* to file list -- Add COPYING to all subpackages -- Fix ownership of /usr/lib[64]/ceph -- Enhance description of fuse client - -* Tue Apr 20 2010 Josef Bacik 0.19.1-1 -- Update to 0.19.1 - -* Mon Feb 8 2010 Josef Bacik 0.18-1 -- Initial spec file creation, based on the template provided in the ceph src From 35042fccaa9633762751a31cd0849eee48fca255 Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Thu, 15 Jun 2023 18:03:55 -0400 Subject: [PATCH 35/60] Rebuilt for Python 3.12 Signed-off-by: Kaleb S. KEITHLEY --- ceph.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ceph.spec b/ceph.spec index 74165c0..015eac2 100644 --- a/ceph.spec +++ b/ceph.spec @@ -173,7 +173,7 @@ ################################################################################# Name: ceph Version: 18.1.0 -Release: 0.3%{?dist} +Release: 0.4%{?dist} %if 0%{?fedora} || 0%{?rhel} Epoch: 2 %endif @@ -2645,6 +2645,9 @@ exit 0 %{_datadir}/snmp/mibs %changelog +* Thu Jun 15 2023 Kaleb S. KEITHLEY - 2:18.1.0-0.4 +- Rebuilt for Python 3.12 + * Thu Jun 15 2023 Kaleb S. KEITHLEY - 2:18.1.0-0.3 - remove requires for nonexistant libjaeger, rhbz#2215320 - sync w/ upstream ceph.spec(.in), sanity check From 617d53725318e8e08702af923957948f8f7b91d8 Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Sun, 18 Jun 2023 13:07:33 -0400 Subject: [PATCH 36/60] ceph-18.1.1 RC2 Signed-off-by: Kaleb S. KEITHLEY --- ceph.spec | 7 +++++-- sources | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/ceph.spec b/ceph.spec index 015eac2..8c084b6 100644 --- a/ceph.spec +++ b/ceph.spec @@ -172,8 +172,8 @@ # main package definition ################################################################################# Name: ceph -Version: 18.1.0 -Release: 0.4%{?dist} +Version: 18.1.1 +Release: 0.1%{?dist} %if 0%{?fedora} || 0%{?rhel} Epoch: 2 %endif @@ -2645,6 +2645,9 @@ exit 0 %{_datadir}/snmp/mibs %changelog +* Sun Jun 18 2023 Kaleb S. KEITHLEY - 2:18.1.1-0.1 +- ceph-18.1.1 RC2 + * Thu Jun 15 2023 Kaleb S. KEITHLEY - 2:18.1.0-0.4 - Rebuilt for Python 3.12 diff --git a/sources b/sources index 09af4c1..cbd2c7c 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (ceph-18.1.0.tar.gz) = 9818b061da77e447143666c4be171cd3461b2bfeb4bad4fec5163b2b3b27bc3a5874426833465673204877b3c287b109b65099d9335544dde1323eb39da7f418 +SHA512 (ceph-18.1.1.tar.gz) = 6becab524630c96c12433bac69eaeb3f020e7f4221a5079bef30d1fa4793b97af75d0a58b77750a280a904f87301d7dee8d7feb5fc3be578ab694981c8b1aed1 From ca81cd25150f0754c2fc1615632844cac373a5e8 Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Sun, 18 Jun 2023 13:09:10 -0400 Subject: [PATCH 37/60] Rebuilt for Python 3.12 Signed-off-by: Kaleb S. KEITHLEY --- ceph.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ceph.spec b/ceph.spec index 8c084b6..4faafc1 100644 --- a/ceph.spec +++ b/ceph.spec @@ -173,7 +173,7 @@ ################################################################################# Name: ceph Version: 18.1.1 -Release: 0.1%{?dist} +Release: 0.2%{?dist} %if 0%{?fedora} || 0%{?rhel} Epoch: 2 %endif @@ -2645,6 +2645,9 @@ exit 0 %{_datadir}/snmp/mibs %changelog +* Sun Jun 18 2023 Kaleb S. KEITHLEY - 2:18.1.1-0.2 +- Rebuilt for Python 3.12 + * Sun Jun 18 2023 Kaleb S. KEITHLEY - 2:18.1.1-0.1 - ceph-18.1.1 RC2 From 91dd896847c40986a7cc13890b3f72743199ad2e Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Sun, 18 Jun 2023 13:49:57 -0400 Subject: [PATCH 38/60] ceph-18.1.1 RC2 Signed-off-by: Kaleb S. KEITHLEY --- ceph.spec | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/ceph.spec b/ceph.spec index 4faafc1..8c084b6 100644 --- a/ceph.spec +++ b/ceph.spec @@ -173,7 +173,7 @@ ################################################################################# Name: ceph Version: 18.1.1 -Release: 0.2%{?dist} +Release: 0.1%{?dist} %if 0%{?fedora} || 0%{?rhel} Epoch: 2 %endif @@ -2645,9 +2645,6 @@ exit 0 %{_datadir}/snmp/mibs %changelog -* Sun Jun 18 2023 Kaleb S. KEITHLEY - 2:18.1.1-0.2 -- Rebuilt for Python 3.12 - * Sun Jun 18 2023 Kaleb S. KEITHLEY - 2:18.1.1-0.1 - ceph-18.1.1 RC2 From 1980396784793b0627a810985487c8da8fbe42a2 Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Sun, 18 Jun 2023 14:12:00 -0400 Subject: [PATCH 39/60] Rebuilt for Python 3.12 Signed-off-by: Kaleb S. KEITHLEY --- ceph.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ceph.spec b/ceph.spec index 8c084b6..4faafc1 100644 --- a/ceph.spec +++ b/ceph.spec @@ -173,7 +173,7 @@ ################################################################################# Name: ceph Version: 18.1.1 -Release: 0.1%{?dist} +Release: 0.2%{?dist} %if 0%{?fedora} || 0%{?rhel} Epoch: 2 %endif @@ -2645,6 +2645,9 @@ exit 0 %{_datadir}/snmp/mibs %changelog +* Sun Jun 18 2023 Kaleb S. KEITHLEY - 2:18.1.1-0.2 +- Rebuilt for Python 3.12 + * Sun Jun 18 2023 Kaleb S. KEITHLEY - 2:18.1.1-0.1 - ceph-18.1.1 RC2 From 468a2c36abd33170f3d398e879065f3e2f56fcca Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Tue, 4 Jul 2023 23:39:25 -0400 Subject: [PATCH 40/60] ceph-18.1.2 RC3 Signed-off-by: Kaleb S. KEITHLEY --- 0024-gcc-13.patch | 94 ++++++----------------------------------------- ceph.spec | 15 +++----- sources | 2 +- 3 files changed, 18 insertions(+), 93 deletions(-) diff --git a/0024-gcc-13.patch b/0024-gcc-13.patch index 8682ab6..4a16101 100644 --- a/0024-gcc-13.patch +++ b/0024-gcc-13.patch @@ -1,6 +1,6 @@ ---- 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 @@ +--- ceph-18.1.2/src/common/subsys_types.h.orig 2023-06-27 15:59:59.000000000 -0400 ++++ ceph-18.1.2/src/common/subsys_types.h 2023-07-04 19:36:55.941238973 -0400 +@@ -54,7 +54,7 @@ #undef DEFAULT_SUBSYS } @@ -9,28 +9,8 @@ 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 +--- ceph-18.1.2/src/msg/async/crypto_onwire.h.orig 2023-06-27 15:59:59.000000000 -0400 ++++ ceph-18.1.2/src/msg/async/crypto_onwire.h 2023-07-04 19:36:55.957238704 -0400 @@ -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 @@ -40,69 +20,19 @@ // 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.6/src/rocksdb/table/block_based/data_block_hash_index.h.orig 2023-04-21 17:46:42.186339184 -0400 -+++ ceph-17.2.6/src/rocksdb/table/block_based/data_block_hash_index.h 2023-04-21 17:47:01.392005151 -0400 -@@ -7,6 +7,7 @@ - +--- ceph-18.1.2/src/rocksdb/table/block_based/data_block_hash_index.h.orig 2023-05-24 15:55:23.000000000 -0400 ++++ ceph-18.1.2/src/rocksdb/table/block_based/data_block_hash_index.h 2023-07-04 19:36:55.971238469 -0400 +@@ -8,6 +8,7 @@ + #include #include #include +#include #include "rocksdb/slice.h" ---- ceph-17.2.6/src/rocksdb/util/string_util.h.orig 2023-04-21 18:13:51.060496792 -0400 -+++ ceph-17.2.6/src/rocksdb/util/string_util.h 2023-04-21 18:14:06.496223220 -0400 -@@ -10,6 +10,7 @@ +--- ceph-18.1.2/src/rocksdb/util/string_util.h.orig 2023-05-24 15:55:23.000000000 -0400 ++++ ceph-18.1.2/src/rocksdb/util/string_util.h 2023-07-04 19:36:55.991238133 -0400 +@@ -11,6 +11,7 @@ #include #include #include diff --git a/ceph.spec b/ceph.spec index 4faafc1..082fa96 100644 --- a/ceph.spec +++ b/ceph.spec @@ -172,8 +172,8 @@ # main package definition ################################################################################# Name: ceph -Version: 18.1.1 -Release: 0.2%{?dist} +Version: 18.1.2 +Release: 0.1%{?dist} %if 0%{?fedora} || 0%{?rhel} Epoch: 2 %endif @@ -201,8 +201,6 @@ Patch0017: 0017-gcc-12-omnibus.patch Patch0018: 0018-src-rgw-store-dbstore-CMakeLists.txt.patch Patch0020: 0020-src-arrow-cpp-cmake_modules-ThirdpartyToolchain.cmake.patch Patch0024: 0024-gcc-13.patch -Patch0025: 0025-src-osd-scrubber-scrub_backend.h.patch -Patch0026: 0026-src-osd-scrubber-scrub_backend.cc.patch Patch0029: 0029-src-rgw-rgw_amqp.cc.patch Patch0030: 0030-src-rgw-rgw_asio_client.cc.patch Patch0032: 0032-cmake-modules-BuildBoost.cmake.patch @@ -1361,12 +1359,6 @@ export CFLAGS="$RPM_OPT_FLAGS" export CXXFLAGS="$RPM_OPT_FLAGS" export LDFLAGS="$RPM_LD_FLAGS" -# Workaround to https://tracker.ceph.com/issues/56610 -%if 0%{?fedora} >= 37 || 0%{?rhel} >= 10 -export CFLAGS="$RPM_OPT_FLAGS -DFMT_DEPRECATED_OSTREAM" -export CXXFLAGS="$RPM_OPT_FLAGS -DFMT_DEPRECATED_OSTREAM" -%endif - %if 0%{with seastar} # seastar uses longjmp() to implement coroutine. and this annoys longjmp_chk() export CXXFLAGS=$(echo $RPM_OPT_FLAGS | sed -e 's/-Wp,-D_FORTIFY_SOURCE=2//g') @@ -2645,6 +2637,9 @@ exit 0 %{_datadir}/snmp/mibs %changelog +* Fri Jun 30 2023 Kaleb S. KEITHLEY - 2:18.1.2-0.1 +- ceph-18.1.2 RC3 + * Sun Jun 18 2023 Kaleb S. KEITHLEY - 2:18.1.1-0.2 - Rebuilt for Python 3.12 diff --git a/sources b/sources index cbd2c7c..28a286d 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (ceph-18.1.1.tar.gz) = 6becab524630c96c12433bac69eaeb3f020e7f4221a5079bef30d1fa4793b97af75d0a58b77750a280a904f87301d7dee8d7feb5fc3be578ab694981c8b1aed1 +SHA512 (ceph-18.1.2.tar.gz) = e197036d2b5d89b987a5b16b7ee2e976c8efaeec52f6e6fa07e419fe43f5d9b313029f4a3d3f2371e97a1fc36e6c63b0af698f7689055328e7de9263fe98f9d8 From aa691eb6d2aef812f033365a249806b84091be6f Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Tue, 4 Jul 2023 23:44:05 -0400 Subject: [PATCH 41/60] Rebuilt for Python 3.12 Signed-off-by: Kaleb S. KEITHLEY --- ceph.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ceph.spec b/ceph.spec index 082fa96..0cf1d1b 100644 --- a/ceph.spec +++ b/ceph.spec @@ -173,7 +173,7 @@ ################################################################################# Name: ceph Version: 18.1.2 -Release: 0.1%{?dist} +Release: 0.2%{?dist} %if 0%{?fedora} || 0%{?rhel} Epoch: 2 %endif @@ -2637,6 +2637,9 @@ exit 0 %{_datadir}/snmp/mibs %changelog +* Fri Jun 30 2023 Kaleb S. KEITHLEY - 2:18.1.2-0.2 +- Rebuilt for Python 3.12 + * Fri Jun 30 2023 Kaleb S. KEITHLEY - 2:18.1.2-0.1 - ceph-18.1.2 RC3 From 085cd612d413a68fcd15814b8cf7a07a8ce0fa87 Mon Sep 17 00:00:00 2001 From: Yaakov Selkowitz Date: Thu, 6 Jul 2023 13:21:33 -0400 Subject: [PATCH 42/60] Fix rocksdb conditional Use of the system rocksdb is disabled for Fedora and RHEL 10+, not enabled, because rocksdb there is too new. --- ceph.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ceph.spec b/ceph.spec index 0cf1d1b..2de97c4 100644 --- a/ceph.spec +++ b/ceph.spec @@ -278,7 +278,7 @@ BuildRequires: libcurl-devel BuildRequires: libcap-devel BuildRequires: libcap-ng-devel #BuildRequires: fmt-devel >= 6.2.1 -%if 0%{?fedora} || 0%{?rhel} >= 10 +%if ! (0%{?fedora} || 0%{?rhel} >= 10) BuildRequires: rocksdb-devel Requires: rocksdb %endif From 6f9f7e2e4a896eed26a0628d716bc7ecff12c229 Mon Sep 17 00:00:00 2001 From: Yaakov Selkowitz Date: Thu, 6 Jul 2023 13:28:46 -0400 Subject: [PATCH 43/60] Fix build with Python 3.12 pathfix.py is no longer installed, but this macro is compatible with all supported versions. --- ceph.spec | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/ceph.spec b/ceph.spec index 2de97c4..2b820d1 100644 --- a/ceph.spec +++ b/ceph.spec @@ -504,9 +504,6 @@ BuildRequires: libcryptopp-devel BuildRequires: libnuma-devel %endif %endif -%if 0%{?rhel} >= 8 -BuildRequires: /usr/bin/pathfix.py -%endif %description Ceph is a massively scalable, open-source, distributed storage system that runs @@ -1538,8 +1535,7 @@ install -m 0644 -D udev/50-rbd.rules %{buildroot}%{_udevrulesdir}/50-rbd.rules install -m 0440 -D sudoers.d/ceph-smartctl %{buildroot}%{_sysconfdir}/sudoers.d/ceph-smartctl %if 0%{?rhel} >= 8 -pathfix.py -pni "%{__python3} %{py3_shbang_opts}" %{buildroot}%{_bindir}/* -pathfix.py -pni "%{__python3} %{py3_shbang_opts}" %{buildroot}%{_sbindir}/* +%py3_shebang_fix %{buildroot}%{_bindir}/* %{buildroot}%{_sbindir}/* %endif #set up placeholder directories From 5e76bc0ad42c1edeca4063efdcb12b4e8316f8af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franti=C5=A1ek=20Zatloukal?= Date: Tue, 11 Jul 2023 23:26:31 +0200 Subject: [PATCH 44/60] Rebuilt for ICU 73.2 --- ceph.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ceph.spec b/ceph.spec index 2b820d1..16269b0 100644 --- a/ceph.spec +++ b/ceph.spec @@ -173,7 +173,7 @@ ################################################################################# Name: ceph Version: 18.1.2 -Release: 0.2%{?dist} +Release: 0.3%{?dist} %if 0%{?fedora} || 0%{?rhel} Epoch: 2 %endif @@ -2633,6 +2633,9 @@ exit 0 %{_datadir}/snmp/mibs %changelog +* Tue Jul 11 2023 František Zatloukal - 2:18.1.2-0.3 +- Rebuilt for ICU 73.2 + * Fri Jun 30 2023 Kaleb S. KEITHLEY - 2:18.1.2-0.2 - Rebuilt for Python 3.12 From 0d1cc731ad2e553b3fe86a92dc4d66e3d244ec3f Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 19 Jul 2023 15:29:34 +0000 Subject: [PATCH 45/60] Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- ceph.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ceph.spec b/ceph.spec index 16269b0..41500d9 100644 --- a/ceph.spec +++ b/ceph.spec @@ -173,7 +173,7 @@ ################################################################################# Name: ceph Version: 18.1.2 -Release: 0.3%{?dist} +Release: 0.4%{?dist} %if 0%{?fedora} || 0%{?rhel} Epoch: 2 %endif @@ -2633,6 +2633,9 @@ exit 0 %{_datadir}/snmp/mibs %changelog +* Wed Jul 19 2023 Fedora Release Engineering - 2:18.1.2-0.4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + * Tue Jul 11 2023 František Zatloukal - 2:18.1.2-0.3 - Rebuilt for ICU 73.2 From 6f79abf9c3ca6c56d2b5c3c5894c98fc7d8a3f7b Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Thu, 20 Jul 2023 18:05:16 -0400 Subject: [PATCH 46/60] Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild with python3-Cython -> python3dist(cython) < 3~~ Signed-off-by: Kaleb S. KEITHLEY --- ceph.spec | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ceph.spec b/ceph.spec index 41500d9..282a09c 100644 --- a/ceph.spec +++ b/ceph.spec @@ -299,7 +299,7 @@ BuildRequires: procps BuildRequires: python%{python3_pkgversion} BuildRequires: python%{python3_pkgversion}-devel BuildRequires: python%{python3_pkgversion}-setuptools -BuildRequires: python%{python3_pkgversion}-Cython +BuildRequires: python3dist(cython) < 3~~ BuildRequires: snappy-devel BuildRequires: sqlite-devel BuildRequires: sudo @@ -2633,8 +2633,10 @@ exit 0 %{_datadir}/snmp/mibs %changelog + * Wed Jul 19 2023 Fedora Release Engineering - 2:18.1.2-0.4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild +- with python3-Cython -> python3dist(cython) < 3~~ * Tue Jul 11 2023 František Zatloukal - 2:18.1.2-0.3 - Rebuilt for ICU 73.2 From 88108d8c98f9a2a3d9713f69d733207991c610f7 Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Mon, 24 Jul 2023 14:37:02 -0400 Subject: [PATCH 47/60] Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild revert python3-Cython -> python3dist(cython) < 3~~ Signed-off-by: Kaleb S. KEITHLEY --- 0034-src-pybind-rbd-rbd.pyx.patch | 24 ++++++++++++++++++++++++ ceph.spec | 9 +++++++-- 2 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 0034-src-pybind-rbd-rbd.pyx.patch diff --git a/0034-src-pybind-rbd-rbd.pyx.patch b/0034-src-pybind-rbd-rbd.pyx.patch new file mode 100644 index 0000000..03f3418 --- /dev/null +++ b/0034-src-pybind-rbd-rbd.pyx.patch @@ -0,0 +1,24 @@ +--- ceph-18.1.2/src/pybind/rbd/rbd.pyx.orig 2023-07-21 13:30:08.156825317 -0400 ++++ ceph-18.1.2/src/pybind/rbd/rbd.pyx 2023-07-24 09:09:27.930137117 -0400 +@@ -371,10 +371,10 @@ + cdef rados_ioctx_t convert_ioctx(rados.Ioctx ioctx) except? NULL: + return ioctx.io + +-cdef int progress_callback(uint64_t offset, uint64_t total, void* ptr) with gil: ++cdef int progress_callback(uint64_t offset, uint64_t total, void* ptr) noexcept with gil: + return (ptr)(offset, total) + +-cdef int no_op_progress_callback(uint64_t offset, uint64_t total, void* ptr): ++cdef int no_op_progress_callback(uint64_t offset, uint64_t total, void* ptr) noexcept with gil: + return 0 + + def cstr(val, name, encoding="utf-8", opt=False): +@@ -426,7 +426,7 @@ + + cdef class Completion + +-cdef void __aio_complete_cb(rbd_completion_t completion, void *args) with gil: ++cdef void __aio_complete_cb(rbd_completion_t completion, void *args) noexcept with gil: + """ + Callback to oncomplete() for asynchronous operations + """ diff --git a/ceph.spec b/ceph.spec index 282a09c..76f8d95 100644 --- a/ceph.spec +++ b/ceph.spec @@ -173,7 +173,7 @@ ################################################################################# Name: ceph Version: 18.1.2 -Release: 0.4%{?dist} +Release: 0.5%{?dist} %if 0%{?fedora} || 0%{?rhel} Epoch: 2 %endif @@ -205,6 +205,7 @@ Patch0029: 0029-src-rgw-rgw_amqp.cc.patch Patch0030: 0030-src-rgw-rgw_asio_client.cc.patch Patch0032: 0032-cmake-modules-BuildBoost.cmake.patch Patch0033: 0033-boost-asm.patch +Patch0034: 0034-src-pybind-rbd-rbd.pyx.patch # ceph 14.0.1 does not support 32-bit architectures, bugs #1727788, #1727787 ExcludeArch: i686 armv7hl %if 0%{?suse_version} @@ -299,7 +300,7 @@ BuildRequires: procps BuildRequires: python%{python3_pkgversion} BuildRequires: python%{python3_pkgversion}-devel BuildRequires: python%{python3_pkgversion}-setuptools -BuildRequires: python3dist(cython) < 3~~ +BuildRequires: python%{python3_pkgversion}-Cython BuildRequires: snappy-devel BuildRequires: sqlite-devel BuildRequires: sudo @@ -2634,6 +2635,10 @@ exit 0 %changelog +* Fri Jul 21 2023 Fedora Release Engineering - 2:18.1.2-0.5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild +- revert python3-Cython -> python3dist(cython) < 3~~ + * Wed Jul 19 2023 Fedora Release Engineering - 2:18.1.2-0.4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild - with python3-Cython -> python3dist(cython) < 3~~ From 1ca647a4b9729c9f5c95591c403ce80a33494548 Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Wed, 26 Jul 2023 11:14:27 -0400 Subject: [PATCH 48/60] ceph-18.1.3 RC4 Signed-off-by: Kaleb S. KEITHLEY --- ceph.spec | 6 ++++-- sources | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/ceph.spec b/ceph.spec index 76f8d95..3b37675 100644 --- a/ceph.spec +++ b/ceph.spec @@ -172,8 +172,8 @@ # main package definition ################################################################################# Name: ceph -Version: 18.1.2 -Release: 0.5%{?dist} +Version: 18.1.3 +Release: 0.6%{?dist} %if 0%{?fedora} || 0%{?rhel} Epoch: 2 %endif @@ -2634,6 +2634,8 @@ exit 0 %{_datadir}/snmp/mibs %changelog +* Wed Jul 26 2023 Kaleb S. KEITHLEY - 2:18.1.3-0.1 +- ceph-18.1.3 RC4 * Fri Jul 21 2023 Fedora Release Engineering - 2:18.1.2-0.5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild diff --git a/sources b/sources index 28a286d..bd6664d 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (ceph-18.1.2.tar.gz) = e197036d2b5d89b987a5b16b7ee2e976c8efaeec52f6e6fa07e419fe43f5d9b313029f4a3d3f2371e97a1fc36e6c63b0af698f7689055328e7de9263fe98f9d8 +SHA512 (ceph-18.1.3.tar.gz) = 4f88d0b85bdda0cafc857ceb6574ea5c80a8695064529397c836c1204b4979f37941540835e4fc90fffdf479632bd5ee8c2ee5a82e9bba873479d190b8b66b95 From 93a4fe7597db28f490e04f5191a26dce6990f96d Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Wed, 26 Jul 2023 14:00:08 -0400 Subject: [PATCH 49/60] ceph-18.1.3 RC4 Signed-off-by: Kaleb S. KEITHLEY --- ceph.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ceph.spec b/ceph.spec index 3b37675..66dec73 100644 --- a/ceph.spec +++ b/ceph.spec @@ -173,7 +173,7 @@ ################################################################################# Name: ceph Version: 18.1.3 -Release: 0.6%{?dist} +Release: 0.1%{?dist} %if 0%{?fedora} || 0%{?rhel} Epoch: 2 %endif From 1bf01fccf73576adf0e91f9d2661ca12e6f1ee0c Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Tue, 1 Aug 2023 18:10:21 -0400 Subject: [PATCH 50/60] ceph-18.1.3 RC4, rebuild with libarrow-13.0.0 Signed-off-by: Kaleb S. KEITHLEY --- ceph.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ceph.spec b/ceph.spec index 66dec73..fb6fd4b 100644 --- a/ceph.spec +++ b/ceph.spec @@ -173,7 +173,7 @@ ################################################################################# Name: ceph Version: 18.1.3 -Release: 0.1%{?dist} +Release: 0.2%{?dist} %if 0%{?fedora} || 0%{?rhel} Epoch: 2 %endif @@ -2634,6 +2634,9 @@ exit 0 %{_datadir}/snmp/mibs %changelog +* Tue Aug 1 2023 Kaleb S. KEITHLEY - 2:18.1.3-0.2 +- ceph-18.1.3 RC4, rebuild with libarrow-13.0.0 + * Wed Jul 26 2023 Kaleb S. KEITHLEY - 2:18.1.3-0.1 - ceph-18.1.3 RC4 From ed9b5e1f747d04e617f3c8c2163fd104b09b96e8 Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Fri, 4 Aug 2023 07:49:13 -0400 Subject: [PATCH 51/60] ceph-18.2.0 GA Signed-off-by: Kaleb S. KEITHLEY --- 0034-src-pybind-rbd-rbd.pyx.patch | 2 +- ceph.spec | 7 +++++-- sources | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/0034-src-pybind-rbd-rbd.pyx.patch b/0034-src-pybind-rbd-rbd.pyx.patch index 03f3418..1f5ff7a 100644 --- a/0034-src-pybind-rbd-rbd.pyx.patch +++ b/0034-src-pybind-rbd-rbd.pyx.patch @@ -9,7 +9,7 @@ return (ptr)(offset, total) -cdef int no_op_progress_callback(uint64_t offset, uint64_t total, void* ptr): -+cdef int no_op_progress_callback(uint64_t offset, uint64_t total, void* ptr) noexcept with gil: ++cdef int no_op_progress_callback(uint64_t offset, uint64_t total, void* ptr) noexcept: return 0 def cstr(val, name, encoding="utf-8", opt=False): diff --git a/ceph.spec b/ceph.spec index fb6fd4b..b87a8c5 100644 --- a/ceph.spec +++ b/ceph.spec @@ -172,8 +172,8 @@ # main package definition ################################################################################# Name: ceph -Version: 18.1.3 -Release: 0.2%{?dist} +Version: 18.2.0 +Release: 1%{?dist} %if 0%{?fedora} || 0%{?rhel} Epoch: 2 %endif @@ -2634,6 +2634,9 @@ exit 0 %{_datadir}/snmp/mibs %changelog +* Fri Aug 4 2023 Kaleb S. KEITHLEY - 2:18.2.0-1 +- ceph-18.2.0 GA + * Tue Aug 1 2023 Kaleb S. KEITHLEY - 2:18.1.3-0.2 - ceph-18.1.3 RC4, rebuild with libarrow-13.0.0 diff --git a/sources b/sources index bd6664d..b56df51 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (ceph-18.1.3.tar.gz) = 4f88d0b85bdda0cafc857ceb6574ea5c80a8695064529397c836c1204b4979f37941540835e4fc90fffdf479632bd5ee8c2ee5a82e9bba873479d190b8b66b95 +SHA512 (ceph-18.2.0.tar.gz) = fe6a3ca4227cc05b5effc33a02670c466583ec9e4c7c025241248223992254e6e6551d7db486d5ead36bf0ba922d54e0aabc2aaf456d4593679376ec88bd971a From 649f961fa0a2dced22283e63723ff55f814e5c3b Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Thu, 5 Oct 2023 11:36:47 -0400 Subject: [PATCH 52/60] ceph-18.2.0, rebuild in side tag (f40-build-side-74974) Signed-off-by: Kaleb S. KEITHLEY --- ceph.spec | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/ceph.spec b/ceph.spec index b87a8c5..6de1096 100644 --- a/ceph.spec +++ b/ceph.spec @@ -173,7 +173,7 @@ ################################################################################# Name: ceph Version: 18.2.0 -Release: 1%{?dist} +Release: 2%{?dist} %if 0%{?fedora} || 0%{?rhel} Epoch: 2 %endif @@ -279,10 +279,10 @@ BuildRequires: libcurl-devel BuildRequires: libcap-devel BuildRequires: libcap-ng-devel #BuildRequires: fmt-devel >= 6.2.1 -%if ! (0%{?fedora} || 0%{?rhel} >= 10) -BuildRequires: rocksdb-devel -Requires: rocksdb -%endif +#%if ( 0%{?fedora} || 0%{?rhel} >= 10 ) +#BuildRequires: rocksdb-devel +#Requires: rocksdb +#%endif BuildRequires: liburing-devel BuildRequires: pkgconfig(libudev) BuildRequires: libnl3-devel @@ -1405,7 +1405,7 @@ env | sort -DWITH_OCF:BOOL=ON \ %endif %if 0%{?fedora} || 0%{?rhel} >= 10 - -DWITH_SYSTEM_ROCKSDB:BOOL=OFF\ + -DWITH_SYSTEM_ROCKSDB:BOOL=OFF \ %endif -DWITH_SYSTEM_LIBURING:BOOL=ON \ -DWITH_SYSTEM_BOOST:BOOL=OFF \ @@ -2634,6 +2634,9 @@ exit 0 %{_datadir}/snmp/mibs %changelog +* Thu Oct 5 2023 Kaleb S. KEITHLEY - 2:18.2.0-2 +- ceph-18.2.0, rebuild in side tag (f40-build-side-74974) + * Fri Aug 4 2023 Kaleb S. KEITHLEY - 2:18.2.0-1 - ceph-18.2.0 GA From df3c9e92fb1c6970f856967b27abd6121883d985 Mon Sep 17 00:00:00 2001 From: Terje Rosten Date: Tue, 31 Oct 2023 20:02:10 +0100 Subject: [PATCH 53/60] Rebuild for gtest 1.14.0 --- ceph.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ceph.spec b/ceph.spec index 6de1096..9114793 100644 --- a/ceph.spec +++ b/ceph.spec @@ -173,7 +173,7 @@ ################################################################################# Name: ceph Version: 18.2.0 -Release: 2%{?dist} +Release: 3%{?dist} %if 0%{?fedora} || 0%{?rhel} Epoch: 2 %endif @@ -2634,6 +2634,9 @@ exit 0 %{_datadir}/snmp/mibs %changelog +* Tue Oct 31 2023 Terje Rosten - 2:18.2.0-3 +- Rebuild for gtest 1.14.0 + * Thu Oct 5 2023 Kaleb S. KEITHLEY - 2:18.2.0-2 - ceph-18.2.0, rebuild in side tag (f40-build-side-74974) From 3430d480f20b5a12b34db000fb76007cd225010e Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Wed, 1 Nov 2023 09:08:39 -0400 Subject: [PATCH 54/60] Rebuild for gtest 1.14.0 Signed-off-by: Kaleb S. KEITHLEY --- ceph.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ceph.spec b/ceph.spec index 9114793..33afde0 100644 --- a/ceph.spec +++ b/ceph.spec @@ -774,7 +774,7 @@ Summary: Ceph fuse-based client %if 0%{?suse_version} Group: System/Filesystems %endif -Requires: fuse +Requires: fuse3 Requires: python%{python3_pkgversion} %description fuse FUSE based client for Ceph distributed network file system From f7b9e5805068d8f45a6e88c07ede5d2687f42426 Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Wed, 1 Nov 2023 10:14:23 -0400 Subject: [PATCH 55/60] Rebuild for Apache Arrow (libarrow) 14.0.0 Signed-off-by: Kaleb S. KEITHLEY --- ceph.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ceph.spec b/ceph.spec index 33afde0..a153b02 100644 --- a/ceph.spec +++ b/ceph.spec @@ -2634,8 +2634,8 @@ exit 0 %{_datadir}/snmp/mibs %changelog -* Tue Oct 31 2023 Terje Rosten - 2:18.2.0-3 -- Rebuild for gtest 1.14.0 +* Wed Nov 1 2023 Terje Rosten - 2:18.2.0-3 +- Rebuild for Apache Arrow (libarrow) 14.0.0 * Thu Oct 5 2023 Kaleb S. KEITHLEY - 2:18.2.0-2 - ceph-18.2.0, rebuild in side tag (f40-build-side-74974) From dae4d4a3acdc35857ff2811928c335397b18d87d Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Wed, 1 Nov 2023 13:15:02 -0400 Subject: [PATCH 56/60] Rebuild for Apache Arrow (libarrow) 14.0.0 Signed-off-by: Kaleb S. KEITHLEY --- 0035-src-CMakeLists.txt.patch | 10 ++++++++++ ceph.spec | 1 + 2 files changed, 11 insertions(+) create mode 100644 0035-src-CMakeLists.txt.patch diff --git a/0035-src-CMakeLists.txt.patch b/0035-src-CMakeLists.txt.patch new file mode 100644 index 0000000..e748d6a --- /dev/null +++ b/0035-src-CMakeLists.txt.patch @@ -0,0 +1,10 @@ +--- a/src/CMakeLists.txt.orig 2023-11-01 11:53:53.618167190 -0400 ++++ b/src/CMakeLists.txt 2023-11-01 11:55:16.944749427 -0400 +@@ -625,6 +625,7 @@ + add_subdirectory(perfglue) + + add_library(rados_snap_set_diff_obj OBJECT librados/snap_set_diff.cc) ++add_dependencies(rados_snap_set_diff_obj legacy-option-headers) + + option(WITH_LIBRADOSSTRIPER "build with libradosstriper support" ON) + diff --git a/ceph.spec b/ceph.spec index a153b02..b9ad1a7 100644 --- a/ceph.spec +++ b/ceph.spec @@ -206,6 +206,7 @@ Patch0030: 0030-src-rgw-rgw_asio_client.cc.patch Patch0032: 0032-cmake-modules-BuildBoost.cmake.patch Patch0033: 0033-boost-asm.patch Patch0034: 0034-src-pybind-rbd-rbd.pyx.patch +Patch0035: 0035-src-CMakeLists.txt.patch # ceph 14.0.1 does not support 32-bit architectures, bugs #1727788, #1727787 ExcludeArch: i686 armv7hl %if 0%{?suse_version} From 1add7973a9c8e0046b6f1116d7ff44c9a9d5d250 Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Wed, 1 Nov 2023 14:40:24 -0400 Subject: [PATCH 57/60] Rebuild for Apache Arrow (libarrow) 14.0.0 Signed-off-by: Kaleb S. KEITHLEY --- 0035-src-CMakeLists.txt.patch | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/0035-src-CMakeLists.txt.patch b/0035-src-CMakeLists.txt.patch index e748d6a..466e2b0 100644 --- a/0035-src-CMakeLists.txt.patch +++ b/0035-src-CMakeLists.txt.patch @@ -1,5 +1,5 @@ ---- a/src/CMakeLists.txt.orig 2023-11-01 11:53:53.618167190 -0400 -+++ b/src/CMakeLists.txt 2023-11-01 11:55:16.944749427 -0400 +--- ceph/src/CMakeLists.txt.orig 2023-11-01 11:53:53.618167190 -0400 ++++ ceph/src/CMakeLists.txt 2023-11-01 13:52:51.292643490 -0400 @@ -625,6 +625,7 @@ add_subdirectory(perfglue) @@ -8,3 +8,11 @@ option(WITH_LIBRADOSSTRIPER "build with libradosstriper support" ON) +@@ -881,6 +882,7 @@ + add_library(krbd STATIC krbd.cc + $) + target_link_libraries(krbd keyutils::keyutils) ++ add_dependencies(krbd legacy-option-headers) + endif() + add_subdirectory(librbd) + if(WITH_FUSE) From e61e83bf2e00d5ff9857da418496c2fbfd7b4089 Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Wed, 1 Nov 2023 15:52:10 -0400 Subject: [PATCH 58/60] Rebuild for gtest 1.14.0 and libarrow 14.0.0 Signed-off-by: Kaleb S. KEITHLEY --- ceph.spec | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/ceph.spec b/ceph.spec index b9ad1a7..7cc6af5 100644 --- a/ceph.spec +++ b/ceph.spec @@ -173,7 +173,7 @@ ################################################################################# Name: ceph Version: 18.2.0 -Release: 3%{?dist} +Release: 4%{?dist} %if 0%{?fedora} || 0%{?rhel} Epoch: 2 %endif @@ -2635,7 +2635,10 @@ exit 0 %{_datadir}/snmp/mibs %changelog -* Wed Nov 1 2023 Terje Rosten - 2:18.2.0-3 +* Wed Nov 1 2023 Terje Rosten - 2:18.2.0-4 +- Rebuild for gtest 1.14.0 and libarrow 14.0.0 + +* Wed Nov 1 2023 Kaleb S. KEITHLEY - 2:18.2.0-3 - Rebuild for Apache Arrow (libarrow) 14.0.0 * Thu Oct 5 2023 Kaleb S. KEITHLEY - 2:18.2.0-2 From 30fd6bd2352551ee5d764714013e3b3d4ecd9dd8 Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Wed, 15 Nov 2023 10:11:37 -0500 Subject: [PATCH 59/60] ceph-18.2.1 GA Signed-off-by: Kaleb S. KEITHLEY --- ceph.spec | 7 +++++-- sources | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/ceph.spec b/ceph.spec index 7cc6af5..433af4a 100644 --- a/ceph.spec +++ b/ceph.spec @@ -172,8 +172,8 @@ # main package definition ################################################################################# Name: ceph -Version: 18.2.0 -Release: 4%{?dist} +Version: 18.2.1 +Release: 1%{?dist} %if 0%{?fedora} || 0%{?rhel} Epoch: 2 %endif @@ -2635,6 +2635,9 @@ exit 0 %{_datadir}/snmp/mibs %changelog +* Wed Nov 15 2023 Kaleb S. KEITHLEY - 2:18.2.1-1 +- ceph-18.2.1 GA + * Wed Nov 1 2023 Terje Rosten - 2:18.2.0-4 - Rebuild for gtest 1.14.0 and libarrow 14.0.0 diff --git a/sources b/sources index b56df51..97cf66a 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (ceph-18.2.0.tar.gz) = fe6a3ca4227cc05b5effc33a02670c466583ec9e4c7c025241248223992254e6e6551d7db486d5ead36bf0ba922d54e0aabc2aaf456d4593679376ec88bd971a +SHA512 (ceph-18.2.1.tar.gz) = 88e1c18bc6c824b6203cf026cca4c9409000e7cf5b2b986e22ab74d2790d8b93d91556bd3af15a320dbdd0cf2302308f0b2c75fd1243bc5a65f76fc6b3d70736 From ae476e040f99860aa4ab7fc514b63a753f084391 Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Wed, 15 Nov 2023 19:41:31 -0500 Subject: [PATCH 60/60] ceph-18.2.1, rebuild for f40-build-side-76708, w/ libarrow-14.0.1, and liborc-1.9.2 Signed-off-by: Kaleb S. KEITHLEY --- ceph.spec | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ceph.spec b/ceph.spec index 433af4a..e65f86e 100644 --- a/ceph.spec +++ b/ceph.spec @@ -173,7 +173,7 @@ ################################################################################# Name: ceph Version: 18.2.1 -Release: 1%{?dist} +Release: 2%{?dist} %if 0%{?fedora} || 0%{?rhel} Epoch: 2 %endif @@ -2635,6 +2635,10 @@ exit 0 %{_datadir}/snmp/mibs %changelog +* Wed Nov 15 2023 Kaleb S. KEITHLEY - 2:18.2.1-2 +- ceph-18.2.1, rebuild for f40-build-side-76708, w/ libarrow-14.0.1, + and liborc-1.9.2 + * Wed Nov 15 2023 Kaleb S. KEITHLEY - 2:18.2.1-1 - ceph-18.2.1 GA