From 1b99d0d08cbbd6307065421f6f8067bbb7e06fbd Mon Sep 17 00:00:00 2001 From: Wong Hoi Sing Edison Date: Fri, 23 Feb 2024 20:26:55 +0800 Subject: [PATCH] alvistack/v17.2.7 git clean -xdf git submodule sync --recursive git submodule update --recursive --init git submodule foreach --recursive git checkout -- . git submodule foreach --recursive git clean -xdf ./make-debs.sh cp /tmp/release/Ubuntu/WORKDIR/*ceph*17.2.7*.{bz2,xz,dsc} /osc/home\:alvistack/ceph-ceph-17.2.7/ cp ceph.spec /osc/home\:alvistack/ceph-ceph-17.2.7/ceph_17.2.7-1.spec cp ceph.rpmlintrc /osc/home\:alvistack/ceph-ceph-17.2.7/ cp debian/patches/*.patch /osc/home\:alvistack/ceph-ceph-17.2.7/ cp _constraints /osc/home\:alvistack/ceph-ceph-17.2.7/ rm -rf /tmp/release/Ubuntu/WORKDIR See https://github.com/spdk/spdk/issues/2637 See https://github.com/ceph/ceph/pull/47712 See https://github.com/ceph/ceph/pull/47982 See https://github.com/ceph/ceph/pull/53698 See https://tracker.ceph.com/issues/56610 See https://build.opensuse.org/package/show/filesystems:ceph:quincy:upstream/ceph See https://src.fedoraproject.org/rpms/ceph/tree/rawhide See https://packages.ubuntu.com/source/lunar/ceph Signed-off-by: Wong Hoi Sing Edison --- .gitignore | 1 + CMakeLists.txt | 4 +- _constraints | 12 + ceph.rpmlintrc | 109 ++ ceph.spec.in | 1565 ++++++----------- cmake/modules/BuildBoost.cmake | 26 +- debian/.gitignore | 11 - debian/ceph-base.install | 8 +- debian/ceph-common.install | 6 +- debian/ceph-osd.install | 8 +- debian/ceph-test.install | 20 - debian/ceph-volume.install | 4 +- debian/cephfs-shell.install | 2 +- debian/cephfs-top.install | 2 +- debian/changelog | 824 +-------- debian/compat | 1 - debian/control | 746 ++------ debian/libcephfs-dev.install | 2 +- debian/libcephfs-java.jlibs | 1 - debian/libcephfs-jni.install | 1 - debian/libcephfs2.install | 2 +- debian/librados-dev.install | 3 +- debian/librados2.install | 5 +- debian/libradosstriper-dev.install | 2 +- debian/libradosstriper1.install | 2 +- debian/librbd-dev.install | 3 +- debian/librbd1.install | 5 +- debian/librgw-dev.install | 2 +- debian/librgw2.install | 2 +- debian/libsqlite3-mod-ceph.install | 2 +- debian/libsqlite3-mod-ceph.symbols | 37 - debian/patches/0002-47712.patch | 13 + .../0003-45925-bionic-miss-statx.patch | 28 + debian/patches/0004-HAVE_EXPLICIT_BZERO.patch | 28 + debian/patches/0014-47029.patch | 13 + debian/patches/0015-WITH_SYSTEM_FMT.patch | 19 + .../0016-53698-fmtlib-10-compile-errors.patch | 151 ++ ...7-54710-replace_jwt_with_pure_python.patch | 175 ++ debian/patches/0018-54670-wip-cython-3.patch | 84 + .../0019-52121-wip-blkdev-nodiscard.patch | 13 + debian/patches/0020-54974-c99.patch | 188 ++ debian/patches/0021-55306-wip-bug-64050.patch | 37 + .../patches/0022-fix-bundled-rapidjson.patch | 13 + .../2001-src-common-crc32c_intel_fast.patch | 55 + debian/patches/2003-src-common-bitstr.h.patch | 10 + .../2008-cmake-modules-Finduring.cmake.patch | 11 + ...rker-to-crc32c_intel_fast_zero_asm.s.patch | 27 + ...T-marker-to-x86-64-crc32-assembly-co.patch | 172 ++ debian/patches/2016-src-tracing.patch | 23 + debian/patches/2017-gcc-12-omnibus.patch | 63 + ...src-rgw-store-dbstore-CMakeLists.txt.patch | 37 + ...9-cmake-modules-CheckCxxAtomic.cmake.patch | 43 + ...ke_modules-ThirdpartyToolchain.cmake.patch | 11 + ...ect-include-s3select_parquet_intrf.h.patch | 218 +++ debian/patches/2024-gcc-13.patch | 178 ++ ...e-for-anon-inode-controls-enablement.patch | 42 + .../2030-src-rgw-rgw_asio_client.cc.patch | 63 + .../2032-cmake-modules-BuildBoost.cmake.patch | 26 + debian/patches/2033-boost-asm.patch | 61 + .../patches/2034-src-pybind-rbd-rbd.pyx.patch | 26 + debian/patches/3005-enable-python311.patch | 16 + .../3006-lp1986747-fix-osd-class-dir.patch | 23 + debian/patches/3007-enable-strsignal.patch | 13 + ...3008-update-java-source-target-flags.patch | 23 + debian/patches/3009-disable-crypto.patch | 14 + .../3010-debian-armel-armhf-buildflags.patch | 45 + debian/patches/3012-32bit-fixes.patch | 175 ++ .../patches/3013-riscv64-link-pthread.patch | 12 + debian/patches/3014-bug1914584.patch | 20 + .../3016-compress-common-depends.patch | 19 + .../3019-fix-CheckCxxAtomic-riscv64.patch | 13 + debian/patches/3020-patch-out-exporter.patch | 1004 +++++++++++ .../3021-fix-ceph-osd-systemd-target.patch | 17 + debian/patches/series | 42 + debian/python3-ceph-argparse.install | 6 +- debian/python3-ceph-common.install | 4 +- debian/python3-cephfs.install | 6 +- debian/python3-rados.install | 4 +- debian/python3-rbd.install | 4 +- debian/python3-rgw.install | 4 +- debian/radosgw.install | 2 +- debian/rbd-nbd.install | 1 - debian/rules | 145 +- debian/source/format | 2 +- debian/watch | 2 - make-debs.sh | 4 +- make-dist | 16 +- 87 files changed, 4228 insertions(+), 2654 deletions(-) create mode 100644 _constraints create mode 100644 ceph.rpmlintrc delete mode 100644 debian/ceph-test.install delete mode 100644 debian/compat delete mode 100644 debian/libcephfs-java.jlibs delete mode 100644 debian/libcephfs-jni.install delete mode 100644 debian/libsqlite3-mod-ceph.symbols create mode 100644 debian/patches/0002-47712.patch create mode 100644 debian/patches/0003-45925-bionic-miss-statx.patch create mode 100644 debian/patches/0004-HAVE_EXPLICIT_BZERO.patch create mode 100644 debian/patches/0014-47029.patch create mode 100644 debian/patches/0015-WITH_SYSTEM_FMT.patch create mode 100644 debian/patches/0016-53698-fmtlib-10-compile-errors.patch create mode 100644 debian/patches/0017-54710-replace_jwt_with_pure_python.patch create mode 100644 debian/patches/0018-54670-wip-cython-3.patch create mode 100644 debian/patches/0019-52121-wip-blkdev-nodiscard.patch create mode 100644 debian/patches/0020-54974-c99.patch create mode 100644 debian/patches/0021-55306-wip-bug-64050.patch create mode 100644 debian/patches/0022-fix-bundled-rapidjson.patch create mode 100644 debian/patches/2001-src-common-crc32c_intel_fast.patch create mode 100644 debian/patches/2003-src-common-bitstr.h.patch create mode 100644 debian/patches/2008-cmake-modules-Finduring.cmake.patch create mode 100644 debian/patches/2010-CET-Add-CET-marker-to-crc32c_intel_fast_zero_asm.s.patch create mode 100644 debian/patches/2011-isa-l-CET-Add-CET-marker-to-x86-64-crc32-assembly-co.patch create mode 100644 debian/patches/2016-src-tracing.patch create mode 100644 debian/patches/2017-gcc-12-omnibus.patch create mode 100644 debian/patches/2018-src-rgw-store-dbstore-CMakeLists.txt.patch create mode 100644 debian/patches/2019-cmake-modules-CheckCxxAtomic.cmake.patch create mode 100644 debian/patches/2020-src-arrow-cpp-cmake_modules-ThirdpartyToolchain.cmake.patch create mode 100644 debian/patches/2023-src-s3select-include-s3select_parquet_intrf.h.patch create mode 100644 debian/patches/2024-gcc-13.patch create mode 100644 debian/patches/2025-selinux-prepare-for-anon-inode-controls-enablement.patch create mode 100644 debian/patches/2030-src-rgw-rgw_asio_client.cc.patch create mode 100644 debian/patches/2032-cmake-modules-BuildBoost.cmake.patch create mode 100644 debian/patches/2033-boost-asm.patch create mode 100644 debian/patches/2034-src-pybind-rbd-rbd.pyx.patch create mode 100644 debian/patches/3005-enable-python311.patch create mode 100644 debian/patches/3006-lp1986747-fix-osd-class-dir.patch create mode 100644 debian/patches/3007-enable-strsignal.patch create mode 100644 debian/patches/3008-update-java-source-target-flags.patch create mode 100644 debian/patches/3009-disable-crypto.patch create mode 100644 debian/patches/3010-debian-armel-armhf-buildflags.patch create mode 100644 debian/patches/3012-32bit-fixes.patch create mode 100644 debian/patches/3013-riscv64-link-pthread.patch create mode 100644 debian/patches/3014-bug1914584.patch create mode 100644 debian/patches/3016-compress-common-depends.patch create mode 100644 debian/patches/3019-fix-CheckCxxAtomic-riscv64.patch create mode 100644 debian/patches/3020-patch-out-exporter.patch create mode 100644 debian/patches/3021-fix-ceph-osd-systemd-target.patch create mode 100644 debian/patches/series delete mode 100644 debian/watch diff --git a/.gitignore b/.gitignore index b01aef839bef69..041c15f53a657c 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ *.co *.diff *.deb +*.tar *.tar.gz *.tar.bz2 *.dsc diff --git a/CMakeLists.txt b/CMakeLists.txt index f37cdae2ad8996..0e92cc088ede3e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,7 +21,7 @@ endif() list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules/") if(NOT CMAKE_BUILD_TYPE AND EXISTS "${CMAKE_SOURCE_DIR}/.git") - set(default_build_type "Debug") + set(default_build_type "Release") set(CMAKE_BUILD_TYPE "${default_build_type}" CACHE STRING "Default BUILD_TYPE is Debug, other options are: RelWithDebInfo, Release, and MinSizeRel." FORCE) endif() @@ -83,7 +83,7 @@ endif(WITH_CCACHE) option(WITH_MANPAGE "Build man pages." ON) if(WITH_MANPAGE) find_program(SPHINX_BUILD - NAMES sphinx-build sphinx-build-3) + NAMES sphinx-build sphinx-build-3 sphinx-build-3.6) if(NOT SPHINX_BUILD) message(FATAL_ERROR "Can't find sphinx-build.") endif(NOT SPHINX_BUILD) diff --git a/_constraints b/_constraints new file mode 100644 index 00000000000000..45f9ec8330e30d --- /dev/null +++ b/_constraints @@ -0,0 +1,12 @@ + + + kvm + + + 72 + + + 24 + + + diff --git a/ceph.rpmlintrc b/ceph.rpmlintrc new file mode 100644 index 00000000000000..2b2a90a6e0c0ac --- /dev/null +++ b/ceph.rpmlintrc @@ -0,0 +1,109 @@ +# Upstream has fixed share library dependencies, all within the +# ceph src package. Eliminating them is a long-term effort. +addFilter("shlib-fixed-dependency") + +# ceph-base RPM ships some internal static libraries +addFilter("ceph-base.*devel-file-in-non-devel-package.*compressor") +addFilter("ceph-base.*devel-file-in-non-devel-package.*rados-classes") +addFilter("ceph-base.*devel-file-in-non-devel-package.*libceph_crypto") +addFilter("ceph-base.*devel-file-in-non-devel-package.*libos_tp") +addFilter("ceph-base.*devel-file-in-non-devel-package.*libosd_tp") + +# env shebang hack is required because the same script has to run in FreeBSD as +# well as Linux (Fedora, CentOS, SUSE, Debian, Ubuntu, etc.) +addFilter("ceph-common.*env-script-interpreter.*rbd-replay-many") +addFilter("ceph-common.*env-script-interpreter.*rbdmap") + +# cephadm intentionally ships an empty file (.ssh/authorized_keys) +# and a hidden directory (/var/lib/cephadm/.ssh) +addFilter("cephadm.*zero-length") +addFilter("cephadm.*hidden-file-or-dir") + +# ceph-mgr-dashboard ships a bunch of empty files and hidden files: need to audit if they are needed (WIP) +addFilter("ceph-mgr-dashboard.*zero-length") +addFilter("ceph-mgr-dashboard.*hidden-file-or-dir") + +# ceph-immutable-object-cache has a weird description (WIP) +addFilter("ceph-immutable-object-cache.*description-shorter-than-summary") + +# ceph-osd depends on libstoragemgmt explicitly (WIP) +addFilter("ceph-osd.*explicit-lib-dependency.*libstoragemgmt") + +# we have a problem with RPM names that are too long for Joliet filesystem (WIP) +addFilter("filename-too-long-for-joliet") + +# ceph-base intentionally calls its logrotate file "etc/logrotate.d/ceph" +addFilter("ceph-base.*incoherent-logrotate-file") + +# many ceph executables might not be relinquishing groups (WIP) +addFilter("missing-call-to-setgroups-before-setuid") + +# package summary might intentionally contain the word "Ceph" +addFilter("name-repeated-in-summary") + +# the ceph RPM should be of the noarch architecture because it contains no binaries (WIP) +addFilter("ceph.*no-binary") + +# cephfs-shell might be missing a Requires (WIP) +addFilter("cephfs-shell.*no-dependency-on.*python-base") + +# ceph-osd ships /etc/sudoers.d/ceph-osd-smartctl without %config (WIP) +addFilter("ceph-osd.*non-conffile-in-etc.*sudoers") + +# cephadm ships /etc/sudoers.d/cephadm without %config (WIP) +addFilter("cephadm.*non-conffile-in-etc.*sudoers") + +# ceph-osd ships /usr/lib/sysctl.d/90-ceph-osd.conf with %config (WIP) +addFilter("ceph-osd.*non-etc-or-var-file-marked-as-conffile.*sysctl.d") + +# ceph-dashboard ships several scripts that don't have executable bit set (WIP) +addFilter("ceph-mgr-dashboard.*non-executable-script") + +# ceph-mgr-rook ships a script that doesn't have executable bit set (WIP) +addFilter("ceph-mgr-rook.*non-executable-script.*generate_rook_ceph_client.sh") + +# some devel packages obsolete the deprecated "ceph-devel" package without providing it (WIP) +addFilter("obsolete-not-provided.*ceph-devel") + +# libcephfs2 obsoletes libcephfs1 without providing it (WIP) +addFilter("libcephfs2.*obsolete-not-provided.*libcephfs1") + +# librgw2 calls exit() or _exit(), probably in a non-fork() context (WIP) +addFilter("librgw2.*shared-lib-calls-exit") + +# ceph-base ships with shared libraries - these are internal and upstream does +# not want to split them into separate RPMS +addFilter("ceph-base.*shlib-policy-missing-suffix") + +# the ceph RPM is a "meta" RPM without any files. These are discouraged by SUSE, +# but upstream relies on this construct and we just have to live with it. +addFilter("ceph\..*suse-filelist-empty") + +# ceph-common ships bash-completion files in the wrong directory (WIP) +addFilter("ceph-common.*suse-filelist-forbidden-bashcomp-userdirs") + +# ceph-base ships a logrotate file in /etc/logrotate.d/ceph but does not not +# package the log directory /var/log/ceph (WIP) +addFilter("ceph-base.*suse-logrotate-log-dir-not-packaged") + +# our packages are missing "rcFOO" symlinks - I doubt if this is worth fixing +addFilter("suse-missing-rclink") + +# %post scriptlets do not call service_add_post (WIP) +addFilter("systemd-service-without-service_add_post") + +# %pre scriptlets do not call service_add_pre (WIP) +addFilter("systemd-service-without-service_add_pre") + +# %postun scriptlets do not call service_del_postun (WIP) +addFilter("systemd-service-without-service_del_postun") + +# %preun scriptlets do not call service_del_preun (WIP) +addFilter("systemd-service-without-service_del_preun") + +# /run/ceph needs to be added to %files section as %ghost (WIP) +addFilter("ceph-common.*tmpfile-not-in-filelist") + +# ceph-radosgw ships a SO that belongs in librgw-devel (WIP) +addFilter("ceph-radosgw.*devel-file-in-non-devel-package") + diff --git a/ceph.spec.in b/ceph.spec.in index e4cbbef6943b88..57918281e53bb7 100644 --- a/ceph.spec.in +++ b/ceph.spec.in @@ -14,6 +14,20 @@ # Please submit bugfixes or comments via http://tracker.ceph.com/ # +%global debug_package %{nil} + +%global source_date_epoch_from_changelog 0 + +%global _lto_cflags %{?_lto_cflags} -ffat-lto-objects + +%global _package_note_flags %{nil} + +%global _smp_ncpus_max 16 + +%global _enable_debug_packages 0 + +%global _annotated_build %{nil} + ################################################################################# # conditional build section # @@ -45,12 +59,7 @@ %bcond_without system_pmdk %endif %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,17 +75,12 @@ %else %bcond_without system_pmdk %endif -%bcond_with amqp_endpoint -%bcond_with cephfs_java -%bcond_with kafka_endpoint -%bcond_with libradosstriper -%ifarch x86_64 aarch64 ppc64le +%bcond_without amqp_endpoint +%bcond_without cephfs_java +%bcond_without kafka_endpoint +%bcond_without libradosstriper %bcond_without lttng -%else -%bcond_with lttng -%endif -%bcond_with ocf -%bcond_with selinux +%bcond_without ocf #Compat macro for _fillupdir macro introduced in Nov 2017 %if ! %{defined _fillupdir} %global _fillupdir /var/adm/fillup-templates @@ -108,25 +112,12 @@ %endif %bcond_with system_arrow %bcond_with system_utf8proc -%if 0%{?fedora} || 0%{?suse_version} || 0%{?rhel} >= 8 -%global weak_deps 1 -%endif -%if %{with selinux} -# get selinux policy version -# Force 0.0.0 policy version for centos builds to avoid repository sync issues between rhel and centos -%if 0%{?centos} -%global _selinux_policy_version 0.0.0 -%else -%{!?_selinux_policy_version: %global _selinux_policy_version 0.0.0} -%endif -%endif %{!?_udevrulesdir: %global _udevrulesdir /lib/udev/rules.d} %{!?tmpfiles_create: %global tmpfiles_create systemd-tmpfiles --create} %{!?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 @@ -134,329 +125,256 @@ %global _binary_payload w7T%{_smp_build_ncpus}.xzdio %endif -%define smp_limit_mem_per_job() %( \ - kb_per_job=%1 \ - kb_total=$(head -3 /proc/meminfo | sed -n 's/MemAvailable:\\s*\\(.*\\) kB.*/\\1/p') \ - jobs=$(( $kb_total / $kb_per_job )) \ - [ $jobs -lt 1 ] && jobs=1 \ - echo $jobs ) - -%if 0%{?_smp_ncpus_max} == 0 -%if 0%{?__isa_bits} == 32 -# 32-bit builds can use 3G memory max, which is not enough even for -j2 -%global _smp_ncpus_max 1 -%else -# 3.0 GiB mem per job -# SUSE distros use limit_build in the place of smp_limit_mem_per_job, please -# be sure to update it (in the build section, below) as well when changing this -# number. -%global _smp_ncpus_max %{smp_limit_mem_per_job 3000000} -%endif -%endif - -# 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: @PROJECT_VERSION@ -Release: @RPM_RELEASE@%{?dist} -%if 0%{?fedora} || 0%{?rhel} -Epoch: 2 -%endif +Name: ceph +Epoch: 100 +Version: 17.2.7 +Release: 1%{?dist} # define _epoch_prefix macro which will expand to the empty string if epoch is # undefined %global _epoch_prefix %{?epoch:%{epoch}:} -Summary: User space components of the Ceph file system -License: LGPL-2.1 and LGPL-3.0 and CC-BY-SA-3.0 and GPL-2.0 and BSL-1.0 and BSD-3-Clause and MIT +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 %if 0%{?suse_version} -Group: System/Filesystems +Group: System/Filesystems %endif -URL: http://ceph.com/ -Source0: %{?_remote_tarball_prefix}@TARBALL_BASENAME@.tar.bz2 +URL: http://ceph.com/ +Source0: %{name}_%{version}.orig.tar.bz2 +Source99: %{name}.rpmlintrc +Patch0002: 0002-47712.patch +Patch0003: 0003-45925-bionic-miss-statx.patch +Patch0004: 0004-HAVE_EXPLICIT_BZERO.patch +Patch0014: 0014-47029.patch +Patch0015: 0015-WITH_SYSTEM_FMT.patch +Patch0016: 0016-53698-fmtlib-10-compile-errors.patch +Patch0017: 0017-54710-replace_jwt_with_pure_python.patch +Patch0018: 0018-54670-wip-cython-3.patch +Patch0019: 0019-52121-wip-blkdev-nodiscard.patch +Patch0020: 0020-54974-c99.patch +Patch0021: 0021-55306-wip-bug-64050.patch +Patch0022: 0022-fix-bundled-rapidjson.patch +Patch2001: 2001-src-common-crc32c_intel_fast.patch +Patch2003: 2003-src-common-bitstr.h.patch +Patch2008: 2008-cmake-modules-Finduring.cmake.patch +Patch2010: 2010-CET-Add-CET-marker-to-crc32c_intel_fast_zero_asm.s.patch +Patch2011: 2011-isa-l-CET-Add-CET-marker-to-x86-64-crc32-assembly-co.patch +Patch2016: 2016-src-tracing.patch +Patch2017: 2017-gcc-12-omnibus.patch +Patch2018: 2018-src-rgw-store-dbstore-CMakeLists.txt.patch +Patch2019: 2019-cmake-modules-CheckCxxAtomic.cmake.patch +Patch2020: 2020-src-arrow-cpp-cmake_modules-ThirdpartyToolchain.cmake.patch +Patch2023: 2023-src-s3select-include-s3select_parquet_intrf.h.patch +Patch2024: 2024-gcc-13.patch +Patch2025: 2025-selinux-prepare-for-anon-inode-controls-enablement.patch +Patch2030: 2030-src-rgw-rgw_asio_client.cc.patch +Patch2032: 2032-cmake-modules-BuildBoost.cmake.patch +Patch2033: 2033-boost-asm.patch +Patch2034: 2034-src-pybind-rbd-rbd.pyx.patch +Patch3005: 3005-enable-python311.patch +Patch3006: 3006-lp1986747-fix-osd-class-dir.patch +Patch3007: 3007-enable-strsignal.patch +Patch3008: 3008-update-java-source-target-flags.patch +Patch3009: 3009-disable-crypto.patch +Patch3010: 3010-debian-armel-armhf-buildflags.patch +Patch3012: 3012-32bit-fixes.patch +Patch3013: 3013-riscv64-link-pthread.patch +Patch3014: 3014-bug1914584.patch +Patch3016: 3016-compress-common-depends.patch +Patch3019: 3019-fix-CheckCxxAtomic-riscv64.patch +Patch3020: 3020-patch-out-exporter.patch +Patch3021: 3021-fix-ceph-osd-systemd-target.patch %if 0%{?suse_version} # _insert_obs_source_lines_here -ExclusiveArch: x86_64 aarch64 ppc64le s390x +ExclusiveArch: x86_64 aarch64 ppc64le s390x %endif ################################################################################# # dependencies that apply across all distro families ################################################################################# -Requires: ceph-osd = %{_epoch_prefix}%{version}-%{release} -Requires: ceph-mds = %{_epoch_prefix}%{version}-%{release} -Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release} -Requires: ceph-mon = %{_epoch_prefix}%{version}-%{release} -Requires(post): binutils -%if 0%{with cephfs_java} -BuildRequires: java-devel -BuildRequires: sharutils -%endif -%if 0%{with selinux} -BuildRequires: checkpolicy -BuildRequires: selinux-policy-devel -%endif -BuildRequires: gperf -BuildRequires: cmake > 3.5 -BuildRequires: fuse-devel +Requires: ceph-osd >= %{_epoch_prefix}%{version}-%{release} +Requires: ceph-mds >= %{_epoch_prefix}%{version}-%{release} +Requires: ceph-mgr >= %{_epoch_prefix}%{version}-%{release} +Requires: ceph-mon >= %{_epoch_prefix}%{version}-%{release} +Requires(post): binutils +BuildRequires: git +BuildRequires: gperf +BuildRequires: cmake > 3.5 +BuildRequires: fuse-devel %if 0%{?fedora} || 0%{?suse_version} > 1500 || 0%{?rhel} == 9 -BuildRequires: gcc-c++ >= 11 +BuildRequires: gcc-c++ >= 11 %endif -%if 0%{?suse_version} == 1500 +%if 0%{?sle_version} > 150000 BuildRequires: gcc11-c++ %endif -%if 0%{?rhel} == 8 -BuildRequires: %{gts_prefix}-gcc-c++ -BuildRequires: %{gts_prefix}-build -%ifarch aarch64 -BuildRequires: %{gts_prefix}-libatomic-devel +%if 0%{?rhel} == 7 +BuildRequires: devtoolset-11 +BuildRequires: devtoolset-11-gcc +BuildRequires: devtoolset-11-gcc-c++ +BuildRequires: devtoolset-11-libatomic-devel %endif +%if 0%{?rhel} == 8 +BuildRequires: gcc-toolset-12 +BuildRequires: gcc-toolset-12-build +BuildRequires: gcc-toolset-12-gcc +BuildRequires: gcc-toolset-12-gcc-c++ +BuildRequires: gcc-toolset-12-libasan-devel +BuildRequires: gcc-toolset-12-libatomic-devel +BuildRequires: gcc-toolset-12-libstdc++-devel +BuildRequires: gcc-toolset-12-libubsan-devel %endif %if 0%{?fedora} || 0%{?rhel} == 9 -BuildRequires: libatomic +BuildRequires: libasan +BuildRequires: libatomic +BuildRequires: libstdc++-static +BuildRequires: libubsan +%endif +%if 0%{?fedora} +BuildRequires: libasan-static +BuildRequires: libatomic-static +BuildRequires: libubsan-static %endif %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: gperftools-devel >= 2.7.90 %endif %if 0%{?rhel} && 0%{?rhel} < 8 -BuildRequires: gperftools-devel >= 2.6.1 -%endif -%if 0%{?suse_version} -BuildRequires: gperftools-devel >= 2.4 -%endif -%endif -BuildRequires: libaio-devel -BuildRequires: libblkid-devel >= 2.17 -BuildRequires: cryptsetup-devel -BuildRequires: libcurl-devel -BuildRequires: libcap-ng-devel -BuildRequires: fmt-devel >= 6.2.1 -BuildRequires: pkgconfig(libudev) -BuildRequires: libnl3-devel -BuildRequires: liboath-devel -BuildRequires: libtool -BuildRequires: libxml2-devel -BuildRequires: make -BuildRequires: ncurses-devel -BuildRequires: libicu-devel -BuildRequires: patch -BuildRequires: perl -BuildRequires: pkgconfig -BuildRequires: procps -BuildRequires: python%{python3_pkgversion} -BuildRequires: python%{python3_pkgversion}-devel -BuildRequires: python%{python3_pkgversion}-setuptools -BuildRequires: python%{python3_pkgversion}-Cython -BuildRequires: snappy-devel -BuildRequires: sqlite-devel -BuildRequires: sudo -BuildRequires: pkgconfig(udev) -BuildRequires: valgrind-devel -BuildRequires: which -BuildRequires: xfsprogs-devel -BuildRequires: xmlstarlet -BuildRequires: nasm -BuildRequires: lua-devel +BuildRequires: gperftools-devel >= 2.6.1 +%endif +%if 0%{?suse_version} +BuildRequires: gperftools-devel >= 2.4 +%endif +%endif +BuildRequires: leveldb-devel > 1.2 +BuildRequires: libaio-devel +BuildRequires: libblkid-devel >= 2.17 +BuildRequires: libcurl-devel +BuildRequires: libcap-ng-devel +BuildRequires: pkgconfig(libudev) +BuildRequires: libnl3-devel +BuildRequires: liboath-devel +BuildRequires: libtool +BuildRequires: libxml2-devel +BuildRequires: make +BuildRequires: ncurses-devel +BuildRequires: libicu-devel +BuildRequires: parted +BuildRequires: patch +BuildRequires: perl +BuildRequires: pkgconfig +BuildRequires: procps +BuildRequires: python%{python3_pkgversion} +BuildRequires: python%{python3_pkgversion}-devel +BuildRequires: python%{python3_pkgversion}-setuptools +BuildRequires: python%{python3_pkgversion}-Cython0 +BuildRequires: snappy-devel +BuildRequires: sqlite-devel +BuildRequires: sudo +BuildRequires: pkgconfig(udev) +BuildRequires: util-linux +BuildRequires: valgrind-devel +BuildRequires: which +BuildRequires: xfsprogs +BuildRequires: xfsprogs-devel +BuildRequires: xmlstarlet +BuildRequires: nasm +BuildRequires: lua-devel +BuildRequires: libzstd-devel +BuildRequires: ccache +BuildRequires: libpmem-devel +BuildRequires: libpmemobj-devel %if 0%{with seastar} || 0%{with jaeger} -BuildRequires: yaml-cpp-devel >= 0.6 +BuildRequires: yaml-cpp-devel >= 0.6 %endif %if 0%{with amqp_endpoint} -BuildRequires: librabbitmq-devel +BuildRequires: librabbitmq-devel %endif %if 0%{with kafka_endpoint} -BuildRequires: librdkafka-devel +BuildRequires: librdkafka-devel %endif %if 0%{with lua_packages} -BuildRequires: %{luarocks_package_name} -%endif -%if 0%{with make_check} -BuildRequires: hostname -BuildRequires: jq -BuildRequires: libuuid-devel -BuildRequires: python%{python3_pkgversion}-bcrypt -BuildRequires: python%{python3_pkgversion}-pecan -BuildRequires: python%{python3_pkgversion}-requests -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 -%endif -%if 0%{?suse_version} -BuildRequires: libthrift-devel >= 0.13.0 -%else -BuildRequires: thrift-devel >= 0.13.0 -%endif -BuildRequires: re2-devel -%if 0%{with jaeger} -BuildRequires: bison -BuildRequires: flex -%if 0%{?fedora} || 0%{?rhel} -BuildRequires: json-devel -%endif -%if 0%{?suse_version} -BuildRequires: nlohmann_json-devel -%endif -BuildRequires: libevent-devel -%endif -%if 0%{with system_pmdk} -BuildRequires: libpmem-devel -BuildRequires: libpmemobj-devel -%endif -%if 0%{with system_arrow} -BuildRequires: arrow-devel -BuildRequires: parquet-devel -%endif -%if 0%{with system_utf8proc} -BuildRequires: utf8proc-devel -%endif -%if 0%{with seastar} -BuildRequires: c-ares-devel -BuildRequires: gnutls-devel -BuildRequires: hwloc-devel -BuildRequires: libpciaccess-devel -BuildRequires: lksctp-tools-devel -BuildRequires: ragel -BuildRequires: systemtap-sdt-devel -%if 0%{?fedora} -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 -%endif +BuildRequires: %{luarocks_package_name} %endif ################################################################################# # distro-conditional dependencies ################################################################################# %if 0%{?suse_version} -BuildRequires: pkgconfig(systemd) -BuildRequires: systemd-rpm-macros +BuildRequires: libcryptsetup-devel +BuildRequires: pkgconfig(systemd) +BuildRequires: systemd-rpm-macros %{?systemd_requires} -PreReq: %fillup_prereq -BuildRequires: fdupes -BuildRequires: memory-constraints -BuildRequires: net-tools -BuildRequires: libbz2-devel -BuildRequires: mozilla-nss-devel -BuildRequires: keyutils-devel -BuildRequires: libopenssl-devel -BuildRequires: ninja -BuildRequires: openldap2-devel -#BuildRequires: krb5 -#BuildRequires: krb5-devel -BuildRequires: cunit-devel -BuildRequires: python%{python3_pkgversion}-PrettyTable -BuildRequires: python%{python3_pkgversion}-PyYAML -BuildRequires: python%{python3_pkgversion}-Sphinx -BuildRequires: rdma-core-devel -BuildRequires: liblz4-devel >= 1.7 -# for prometheus-alerts -BuildRequires: golang-github-prometheus-prometheus -BuildRequires: jsonnet +PreReq: %fillup_prereq +BuildRequires: fdupes +BuildRequires: memory-constraints +BuildRequires: net-tools +BuildRequires: libbz2-devel +BuildRequires: mozilla-nss-devel +BuildRequires: keyutils-devel +BuildRequires: libopenssl-devel +BuildRequires: ninja +BuildRequires: openldap2-devel +#BuildRequires: krb5 +#BuildRequires: krb5-devel +BuildRequires: cunit-devel +BuildRequires: python%{python3_pkgversion}-PrettyTable +BuildRequires: python%{python3_pkgversion}-PyYAML +BuildRequires: python%{python3_pkgversion}-Sphinx +BuildRequires: python%{python3_pkgversion}-packaging +BuildRequires: rdma-core-devel +BuildRequires: liblz4-devel >= 1.7 %endif %if 0%{?fedora} || 0%{?rhel} -Requires: systemd -BuildRequires: boost-random -BuildRequires: nss-devel -BuildRequires: keyutils-libs-devel -BuildRequires: libibverbs-devel -BuildRequires: librdmacm-devel -BuildRequires: ninja-build -BuildRequires: openldap-devel -#BuildRequires: krb5-devel -BuildRequires: openssl-devel -BuildRequires: CUnit-devel -BuildRequires: python%{python3_pkgversion}-devel -BuildRequires: python%{python3_pkgversion}-prettytable -BuildRequires: python%{python3_pkgversion}-pyyaml -BuildRequires: python%{python3_pkgversion}-sphinx -BuildRequires: lz4-devel >= 1.7 -%endif -# distro-conditional make check dependencies -%if 0%{with make_check} -BuildRequires: golang -%if 0%{?fedora} || 0%{?rhel} -BuildRequires: golang-github-prometheus -BuildRequires: libtool-ltdl-devel -BuildRequires: xmlsec1 -BuildRequires: xmlsec1-devel -%ifarch x86_64 -BuildRequires: xmlsec1-nss -%endif -BuildRequires: xmlsec1-openssl -BuildRequires: xmlsec1-openssl-devel -BuildRequires: python%{python3_pkgversion}-cherrypy -BuildRequires: python%{python3_pkgversion}-jwt -BuildRequires: python%{python3_pkgversion}-routes -BuildRequires: python%{python3_pkgversion}-scipy -BuildRequires: python%{python3_pkgversion}-werkzeug -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 -BuildRequires: python%{python3_pkgversion}-CherryPy -BuildRequires: python%{python3_pkgversion}-PyJWT -BuildRequires: python%{python3_pkgversion}-Routes -BuildRequires: python%{python3_pkgversion}-Werkzeug -BuildRequires: python%{python3_pkgversion}-numpy-devel -BuildRequires: xmlsec1-devel -BuildRequires: xmlsec1-openssl-devel -%endif +Requires: systemd +BuildRequires: cryptsetup-devel +BuildRequires: nss-devel +BuildRequires: keyutils-libs-devel +BuildRequires: libibverbs-devel +BuildRequires: librdmacm-devel +BuildRequires: ninja-build +BuildRequires: openldap-devel +#BuildRequires: krb5-devel +BuildRequires: openssl-devel +BuildRequires: CUnit-devel +BuildRequires: python%{python3_pkgversion}-devel +BuildRequires: python%{python3_pkgversion}-prettytable +BuildRequires: python%{python3_pkgversion}-pyyaml +BuildRequires: python%{python3_pkgversion}-sphinx +BuildRequires: python%{python3_pkgversion}-packaging +BuildRequires: lz4-devel >= 1.7 %endif # lttng and babeltrace for rbd-replay-prep %if %{with lttng} %if 0%{?fedora} || 0%{?rhel} -BuildRequires: lttng-ust-devel -BuildRequires: libbabeltrace-devel +BuildRequires: lttng-ust-devel +BuildRequires: libbabeltrace-devel %endif %if 0%{?suse_version} -BuildRequires: lttng-ust-devel -BuildRequires: babeltrace-devel +BuildRequires: lttng-ust-devel +BuildRequires: babeltrace-devel %endif %endif %if 0%{?suse_version} -BuildRequires: libexpat-devel +BuildRequires: libexpat-devel %endif %if 0%{?rhel} || 0%{?fedora} -BuildRequires: expat-devel +BuildRequires: expat-devel %endif #hardened-cc1 %if 0%{?fedora} || 0%{?rhel} -BuildRequires: redhat-rpm-config +BuildRequires: redhat-rpm-config %endif %if 0%{with seastar} %if 0%{?fedora} || 0%{?rhel} -BuildRequires: cryptopp-devel -BuildRequires: numactl-devel +BuildRequires: cryptopp-devel +BuildRequires: numactl-devel %endif %if 0%{?suse_version} -BuildRequires: libcryptopp-devel -BuildRequires: libnuma-devel -%endif +BuildRequires: libcryptopp-devel +BuildRequires: libnuma-devel %endif -%if 0%{?rhel} >= 8 -BuildRequires: /usr/bin/pathfix.py %endif %description @@ -468,107 +386,95 @@ on commodity hardware and delivers object, block and file system storage. # subpackages ################################################################################# %package base -Summary: Ceph Base Package -%if 0%{?suse_version} -Group: System/Filesystems -%endif -Provides: ceph-test:/usr/bin/ceph-kvstore-tool -Requires: ceph-common = %{_epoch_prefix}%{version}-%{release} -Requires: librbd1 = %{_epoch_prefix}%{version}-%{release} -Requires: librados2 = %{_epoch_prefix}%{version}-%{release} -Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release} -Requires: librgw2 = %{_epoch_prefix}%{version}-%{release} -%if 0%{with selinux} -Requires: ceph-selinux = %{_epoch_prefix}%{version}-%{release} -%endif -Requires: findutils -Requires: grep -Requires: logrotate -Requires: psmisc -Requires: util-linux -Requires: which +Summary: Ceph Base Package +%if 0%{?suse_version} +Group: System/Filesystems +%endif +Requires: ceph-common >= %{_epoch_prefix}%{version}-%{release} +Requires: librbd1 >= %{_epoch_prefix}%{version}-%{release} +Requires: librados2 >= %{_epoch_prefix}%{version}-%{release} +Requires: libcephfs2 >= %{_epoch_prefix}%{version}-%{release} +Requires: librgw2 >= %{_epoch_prefix}%{version}-%{release} +Requires: cryptsetup +Requires: e2fsprogs +Requires: findutils +Requires: grep +Requires: logrotate +Requires: parted +Requires: psmisc +Requires: python%{python3_pkgversion}-setuptools +Requires: util-linux +Requires: xfsprogs +Requires: which %if 0%{?rhel} && 0%{?rhel} < 8 # The following is necessary due to tracker 36508 and can be removed once the # associated upstream bugs are resolved. %if 0%{with tcmalloc} -Requires: gperftools-libs >= 2.6.1 -%endif -%endif -%if 0%{?weak_deps} -Recommends: chrony -Recommends: nvme-cli -%if 0%{?suse_version} -Requires: smartmontools -%else -Recommends: smartmontools +Requires: gperftools-libs >= 2.6.1 %endif %endif %description base Base is the package that includes all the files shared amongst ceph servers %package -n cephadm -Summary: Utility to bootstrap Ceph clusters -BuildArch: noarch -Requires: lvm2 -Requires: python%{python3_pkgversion} -Requires: openssh-server -Requires: which -%if 0%{?weak_deps} -Recommends: podman >= 2.0.2 -%endif +Summary: Utility to bootstrap Ceph clusters +BuildArch: noarch +Requires: lvm2 +Requires: python%{python3_pkgversion} +Requires: openssh-server +Requires: which %description -n cephadm Utility to bootstrap a Ceph cluster and manage Ceph daemons deployed with systemd and podman. %package -n ceph-common -Summary: Ceph Common -%if 0%{?suse_version} -Group: System/Filesystems -%endif -Requires: librbd1 = %{_epoch_prefix}%{version}-%{release} -Requires: librados2 = %{_epoch_prefix}%{version}-%{release} -Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release} -Requires: python%{python3_pkgversion}-rados = %{_epoch_prefix}%{version}-%{release} -Requires: python%{python3_pkgversion}-rbd = %{_epoch_prefix}%{version}-%{release} -Requires: python%{python3_pkgversion}-cephfs = %{_epoch_prefix}%{version}-%{release} -Requires: python%{python3_pkgversion}-rgw = %{_epoch_prefix}%{version}-%{release} -Requires: python%{python3_pkgversion}-ceph-argparse = %{_epoch_prefix}%{version}-%{release} -Requires: python%{python3_pkgversion}-ceph-common = %{_epoch_prefix}%{version}-%{release} +Summary: Ceph Common +%if 0%{?suse_version} +Group: System/Filesystems +%endif +Requires: librbd1 >= %{_epoch_prefix}%{version}-%{release} +Requires: librados2 >= %{_epoch_prefix}%{version}-%{release} +Requires: libcephfs2 >= %{_epoch_prefix}%{version}-%{release} +Requires: python%{python3_pkgversion}-rados >= %{_epoch_prefix}%{version}-%{release} +Requires: python%{python3_pkgversion}-rbd >= %{_epoch_prefix}%{version}-%{release} +Requires: python%{python3_pkgversion}-cephfs >= %{_epoch_prefix}%{version}-%{release} +Requires: python%{python3_pkgversion}-rgw >= %{_epoch_prefix}%{version}-%{release} +Requires: python%{python3_pkgversion}-ceph-argparse >= %{_epoch_prefix}%{version}-%{release} +Requires: python%{python3_pkgversion}-ceph-common >= %{_epoch_prefix}%{version}-%{release} %if 0%{?fedora} || 0%{?rhel} -Requires: python%{python3_pkgversion}-prettytable +Requires: python%{python3_pkgversion}-prettytable %endif %if 0%{?suse_version} -Requires: python%{python3_pkgversion}-PrettyTable +Requires: python%{python3_pkgversion}-PrettyTable %endif %if 0%{with libradosstriper} -Requires: libradosstriper1 = %{_epoch_prefix}%{version}-%{release} +Requires: libradosstriper1 >= %{_epoch_prefix}%{version}-%{release} %endif %{?systemd_requires} %if 0%{?suse_version} -Requires(pre): pwdutils +Requires(pre): pwdutils %endif %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. %package mds -Summary: Ceph Metadata Server Daemon +Summary: Ceph Metadata Server Daemon %if 0%{?suse_version} -Group: System/Filesystems +Group: System/Filesystems %endif -Requires: ceph-base = %{_epoch_prefix}%{version}-%{release} +Requires: ceph-base >= %{_epoch_prefix}%{version}-%{release} %description mds ceph-mds is the metadata server daemon for the Ceph distributed file system. One or more instances of ceph-mds collectively manage the file system namespace, coordinating access to the shared OSD cluster. %package mon -Summary: Ceph Monitor Daemon +Summary: Ceph Monitor Daemon %if 0%{?suse_version} -Group: System/Filesystems +Group: System/Filesystems %endif -Provides: ceph-test:/usr/bin/ceph-monstore-tool -Requires: ceph-base = %{_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 system. One or more instances of ceph-mon form a Paxos part-time @@ -576,20 +482,13 @@ parliament cluster that provides extremely reliable and durable storage of cluster membership, configuration, and state. %package mgr -Summary: Ceph Manager Daemon +Summary: Ceph Manager Daemon %if 0%{?suse_version} -Group: System/Filesystems -%endif -Requires: ceph-base = %{_epoch_prefix}%{version}-%{release} -Requires: ceph-mgr-modules-core = %{_epoch_prefix}%{version}-%{release} -Requires: libcephsqlite = %{_epoch_prefix}%{version}-%{release} -%if 0%{?weak_deps} -Recommends: ceph-mgr-dashboard = %{_epoch_prefix}%{version}-%{release} -Recommends: ceph-mgr-diskprediction-local = %{_epoch_prefix}%{version}-%{release} -Recommends: ceph-mgr-k8sevents = %{_epoch_prefix}%{version}-%{release} -Recommends: ceph-mgr-cephadm = %{_epoch_prefix}%{version}-%{release} -Recommends: python%{python3_pkgversion}-influxdb +Group: System/Filesystems %endif +Requires: ceph-base >= %{_epoch_prefix}%{version}-%{release} +Requires: ceph-mgr-modules-core >= %{_epoch_prefix}%{version}-%{release} +Requires: libcephsqlite >= %{_epoch_prefix}%{version}-%{release} %description mgr ceph-mgr enables python modules that provide services (such as the REST module derived from Calamari) and expose CLI hooks. ceph-mgr gathers @@ -597,30 +496,26 @@ the cluster maps, the daemon metadata, and performance counters, and exposes all these to the python modules. %package mgr-dashboard -Summary: Ceph Dashboard -BuildArch: noarch +Summary: Ceph Dashboard +BuildArch: noarch %if 0%{?suse_version} -Group: System/Filesystems +Group: System/Filesystems %endif -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 +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 -Requires: python%{python3_pkgversion}-routes -Requires: python%{python3_pkgversion}-werkzeug -%if 0%{?weak_deps} -Recommends: python%{python3_pkgversion}-saml -%endif +Requires: python%{python3_pkgversion}-cherrypy +Requires: python%{python3_pkgversion}-jwt +Requires: python%{python3_pkgversion}-routes +Requires: python%{python3_pkgversion}-werkzeug %endif %if 0%{?suse_version} -Requires: python%{python3_pkgversion}-CherryPy -Requires: python%{python3_pkgversion}-PyJWT -Requires: python%{python3_pkgversion}-Routes -Requires: python%{python3_pkgversion}-Werkzeug -Recommends: python%{python3_pkgversion}-python3-saml +Requires: python%{python3_pkgversion}-CherryPy +Requires: python%{python3_pkgversion}-PyJWT +Requires: python%{python3_pkgversion}-Routes +Requires: python%{python3_pkgversion}-Werkzeug %endif %description mgr-dashboard ceph-mgr-dashboard is a manager module, providing a web-based application @@ -629,187 +524,169 @@ See the Dashboard documentation at http://docs.ceph.com/ for details and a detailed feature overview. %package mgr-diskprediction-local -Summary: Ceph Manager module for predicting disk failures -BuildArch: noarch +Summary: Ceph Manager module for predicting disk failures +BuildArch: noarch %if 0%{?suse_version} -Group: System/Filesystems +Group: System/Filesystems %endif -Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release} -Requires: python%{python3_pkgversion}-numpy +Requires: ceph-mgr >= %{_epoch_prefix}%{version}-%{release} +Requires: python%{python3_pkgversion}-numpy %if 0%{?fedora} || 0%{?suse_version} -Requires: python%{python3_pkgversion}-scikit-learn +Requires: python%{python3_pkgversion}-scikit-learn %endif -Requires: python3-scipy +Requires: python3-scipy %description mgr-diskprediction-local ceph-mgr-diskprediction-local is a ceph-mgr module that tries to predict disk failures using local algorithms and machine-learning databases. %package mgr-modules-core -Summary: Ceph Manager modules which are always enabled -BuildArch: noarch +Summary: Ceph Manager modules which are always enabled +BuildArch: noarch %if 0%{?suse_version} -Group: System/Filesystems +Group: System/Filesystems %endif -Requires: python%{python3_pkgversion}-bcrypt -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 +Requires: python%{python3_pkgversion}-bcrypt +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 -Requires: python%{python3_pkgversion}-werkzeug +Requires: python%{python3_pkgversion}-cherrypy +Requires: python%{python3_pkgversion}-pyyaml +Requires: python%{python3_pkgversion}-werkzeug %endif %if 0%{?suse_version} -Requires: python%{python3_pkgversion}-CherryPy -Requires: python%{python3_pkgversion}-PyYAML -Requires: python%{python3_pkgversion}-Werkzeug -%endif -%if 0%{?weak_deps} -Recommends: ceph-mgr-rook = %{_epoch_prefix}%{version}-%{release} +Requires: python%{python3_pkgversion}-CherryPy +Requires: python%{python3_pkgversion}-PyYAML +Requires: python%{python3_pkgversion}-Werkzeug %endif %description mgr-modules-core ceph-mgr-modules-core provides a set of modules which are always enabled by ceph-mgr. %package mgr-rook -BuildArch: noarch -Summary: Ceph Manager module for Rook-based orchestration +BuildArch: noarch +Summary: Ceph Manager module for Rook-based orchestration %if 0%{?suse_version} -Group: System/Filesystems +Group: System/Filesystems %endif -Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release} -Requires: python%{python3_pkgversion}-kubernetes -Requires: python%{python3_pkgversion}-jsonpatch +Requires: ceph-mgr >= %{_epoch_prefix}%{version}-%{release} +Requires: python%{python3_pkgversion}-kubernetes +Requires: python%{python3_pkgversion}-jsonpatch %description mgr-rook ceph-mgr-rook is a ceph-mgr module for orchestration functions using a Rook backend. %package mgr-k8sevents -BuildArch: noarch -Summary: Ceph Manager module to orchestrate ceph-events to kubernetes' events API +BuildArch: noarch +Summary: Ceph Manager module to orchestrate ceph-events to kubernetes' events API %if 0%{?suse_version} -Group: System/Filesystems +Group: System/Filesystems %endif -Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release} -Requires: python%{python3_pkgversion}-kubernetes +Requires: ceph-mgr >= %{_epoch_prefix}%{version}-%{release} +Requires: python%{python3_pkgversion}-kubernetes %description mgr-k8sevents ceph-mgr-k8sevents is a ceph-mgr module that sends every ceph-events to kubernetes' events API %package mgr-cephadm -Summary: Ceph Manager module for cephadm-based orchestration -BuildArch: noarch +Summary: Ceph Manager module for cephadm-based orchestration +BuildArch: noarch %if 0%{?suse_version} -Group: System/Filesystems +Group: System/Filesystems %endif -Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release} -Requires: python%{python3_pkgversion}-asyncssh -Requires: python%{python3_pkgversion}-natsort -Requires: cephadm = %{_epoch_prefix}%{version}-%{release} +Requires: ceph-mgr >= %{_epoch_prefix}%{version}-%{release} +Requires: python%{python3_pkgversion}-asyncssh +Requires: python%{python3_pkgversion}-natsort +Requires: cephadm >= %{_epoch_prefix}%{version}-%{release} %if 0%{?suse_version} -Requires: openssh -Requires: python%{python3_pkgversion}-CherryPy -Requires: python%{python3_pkgversion}-Jinja2 +Requires: openssh +Requires: python%{python3_pkgversion}-CherryPy +Requires: python%{python3_pkgversion}-Jinja2 %endif %if 0%{?rhel} || 0%{?fedora} -Requires: openssh-clients -Requires: python%{python3_pkgversion}-cherrypy -Requires: python%{python3_pkgversion}-jinja2 +Requires: openssh-clients +Requires: python%{python3_pkgversion}-cherrypy +Requires: python%{python3_pkgversion}-jinja2 %endif %description mgr-cephadm ceph-mgr-cephadm is a ceph-mgr module for orchestration functions using the integrated cephadm deployment tool management operations. %package fuse -Summary: Ceph fuse-based client +Summary: Ceph fuse-based client %if 0%{?suse_version} -Group: System/Filesystems +Group: System/Filesystems %endif -Requires: fuse -Requires: python%{python3_pkgversion} +Requires: fuse +Requires: python%{python3_pkgversion} %description fuse 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} -Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release} +Requires: ceph-base >= %{_epoch_prefix}%{version}-%{release} +Requires: librados2 >= %{_epoch_prefix}%{version}-%{release} +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 +Summary: Ceph fuse-based client %if 0%{?suse_version} -Group: System/Filesystems +Group: System/Filesystems %endif -Requires: librados2 = %{_epoch_prefix}%{version}-%{release} -Requires: librbd1 = %{_epoch_prefix}%{version}-%{release} +Requires: librados2 >= %{_epoch_prefix}%{version}-%{release} +Requires: librbd1 >= %{_epoch_prefix}%{version}-%{release} %description -n rbd-fuse FUSE based client to map Ceph rbd images to files %package -n rbd-mirror -Summary: Ceph daemon for mirroring RBD images +Summary: Ceph daemon for mirroring RBD images %if 0%{?suse_version} -Group: System/Filesystems +Group: System/Filesystems %endif -Requires: ceph-base = %{_epoch_prefix}%{version}-%{release} -Requires: librados2 = %{_epoch_prefix}%{version}-%{release} -Requires: librbd1 = %{_epoch_prefix}%{version}-%{release} +Requires: ceph-base >= %{_epoch_prefix}%{version}-%{release} +Requires: librados2 >= %{_epoch_prefix}%{version}-%{release} +Requires: librbd1 >= %{_epoch_prefix}%{version}-%{release} %description -n rbd-mirror Daemon for mirroring RBD images between Ceph clusters, streaming changes asynchronously. %package immutable-object-cache -Summary: Ceph daemon for immutable object cache +Summary: Ceph daemon for immutable object cache %if 0%{?suse_version} -Group: System/Filesystems +Group: System/Filesystems %endif -Requires: ceph-base = %{_epoch_prefix}%{version}-%{release} -Requires: librados2 = %{_epoch_prefix}%{version}-%{release} +Requires: ceph-base >= %{_epoch_prefix}%{version}-%{release} +Requires: librados2 >= %{_epoch_prefix}%{version}-%{release} %description immutable-object-cache Daemon for immutable object cache. %package -n rbd-nbd -Summary: Ceph RBD client base on NBD +Summary: Ceph RBD client base on NBD %if 0%{?suse_version} -Group: System/Filesystems +Group: System/Filesystems %endif -Requires: librados2 = %{_epoch_prefix}%{version}-%{release} -Requires: librbd1 = %{_epoch_prefix}%{version}-%{release} +Requires: librados2 >= %{_epoch_prefix}%{version}-%{release} +Requires: librbd1 >= %{_epoch_prefix}%{version}-%{release} %description -n rbd-nbd NBD based client to map Ceph rbd images to local device %package radosgw -Summary: Rados REST gateway +Summary: Rados REST gateway %if 0%{?suse_version} -Group: System/Filesystems -%endif -Requires: ceph-base = %{_epoch_prefix}%{version}-%{release} -%if 0%{with selinux} -Requires: ceph-selinux = %{_epoch_prefix}%{version}-%{release} +Group: System/Filesystems %endif -Requires: librados2 = %{_epoch_prefix}%{version}-%{release} -Requires: librgw2 = %{_epoch_prefix}%{version}-%{release} +Requires: ceph-base >= %{_epoch_prefix}%{version}-%{release} +Requires: librados2 >= %{_epoch_prefix}%{version}-%{release} +Requires: librgw2 >= %{_epoch_prefix}%{version}-%{release} %if 0%{?rhel} || 0%{?fedora} -Requires: mailcap -%endif -%if 0%{?weak_deps} -Recommends: gawk +Requires: mailcap %endif %description radosgw RADOS is a distributed object store used by the Ceph distributed @@ -818,22 +695,22 @@ object store that aims to implement a superset of Amazon's S3 service as well as the OpenStack Object Storage ("Swift") API. %package -n cephfs-top -Summary: top(1) like utility for Ceph Filesystem -BuildArch: noarch -Requires: python%{python3_pkgversion}-rados +Summary: top(1) like utility for Ceph Filesystem +BuildArch: noarch +Requires: python%{python3_pkgversion}-rados %description -n cephfs-top This package provides a top(1) like utility to display Ceph Filesystem metrics in realtime. %if %{with ocf} %package resource-agents -Summary: OCF-compliant resource agents for Ceph daemons -BuildArch: noarch +Summary: OCF-compliant resource agents for Ceph daemons +BuildArch: noarch %if 0%{?suse_version} -Group: System/Filesystems +Group: System/Filesystems %endif -Requires: ceph-base = %{_epoch_prefix}%{version} -Requires: resource-agents +Requires: ceph-base = %{_epoch_prefix}%{version} +Requires: resource-agents %description resource-agents Resource agents for monitoring and managing Ceph daemons under Open Cluster Framework (OCF) compliant resource @@ -841,17 +718,15 @@ managers such as Pacemaker. %endif %package osd -Summary: Ceph Object Storage Daemon +Summary: Ceph Object Storage Daemon %if 0%{?suse_version} -Group: System/Filesystems -%endif -Provides: ceph-test:/usr/bin/ceph-osdomap-tool -Requires: ceph-base = %{_epoch_prefix}%{version}-%{release} -Requires: sudo -Requires: libstoragemgmt -%if 0%{?weak_deps} -Recommends: ceph-volume = %{_epoch_prefix}%{version}-%{release} +Group: System/Filesystems %endif +Requires: ceph-base >= %{_epoch_prefix}%{version}-%{release} +Requires: lvm2 +Requires: sudo +Requires: libstoragemgmt +Requires: python%{python3_pkgversion}-ceph-common >= %{_epoch_prefix}%{version}-%{release} %description osd ceph-osd is the object storage daemon for the Ceph distributed file system. It is responsible for storing objects on a local file system @@ -859,12 +734,12 @@ and providing access to them over the network. %if 0%{with seastar} %package crimson-osd -Summary: Ceph Object Storage Daemon (crimson) +Summary: Ceph Object Storage Daemon (crimson) %if 0%{?suse_version} -Group: System/Filesystems +Group: System/Filesystems %endif -Requires: ceph-osd = %{_epoch_prefix}%{version}-%{release} -Requires: binutils +Requires: ceph-osd >= %{_epoch_prefix}%{version}-%{release} +Requires: binutils %description crimson-osd crimson-osd is the object storage daemon for the Ceph distributed file system. It is responsible for storing objects on a local file system @@ -877,27 +752,28 @@ BuildArch: noarch %if 0%{?suse_version} Group: System/Filesystems %endif -Requires: ceph-osd = %{_epoch_prefix}%{version}-%{release} +Requires: ceph-osd >= %{_epoch_prefix}%{version}-%{release} Requires: cryptsetup Requires: e2fsprogs Requires: lvm2 +Requires: numactl Requires: parted Requires: util-linux Requires: xfsprogs Requires: python%{python3_pkgversion}-setuptools -Requires: python%{python3_pkgversion}-ceph-common = %{_epoch_prefix}%{version}-%{release} +Requires: python%{python3_pkgversion}-ceph-common >= %{_epoch_prefix}%{version}-%{release} %description volume This package contains a tool to deploy OSD with different devices like lvm or physical disks, and trying to follow a predictable, and robust way of preparing, activating, and starting the deployed OSD. %package -n librados2 -Summary: RADOS distributed object store client library +Summary: RADOS distributed object store client library %if 0%{?suse_version} -Group: System/Libraries +Group: System/Libraries %endif %if 0%{?rhel} || 0%{?fedora} -Obsoletes: ceph-libs < %{_epoch_prefix}%{version}-%{release} +Obsoletes: ceph-libs < %{_epoch_prefix}%{version}-%{release} %endif %description -n librados2 RADOS is a reliable, autonomic distributed object storage cluster @@ -906,145 +782,145 @@ shared library allowing applications to access the distributed object store using a simple file-like interface. %package -n librados-devel -Summary: RADOS headers +Summary: RADOS headers %if 0%{?suse_version} -Group: Development/Libraries/C and C++ +Group: Development/Libraries/C and C++ %endif -Requires: librados2 = %{_epoch_prefix}%{version}-%{release} -Obsoletes: ceph-devel < %{_epoch_prefix}%{version}-%{release} -Provides: librados2-devel = %{_epoch_prefix}%{version}-%{release} -Obsoletes: librados2-devel < %{_epoch_prefix}%{version}-%{release} +Requires: librados2 >= %{_epoch_prefix}%{version}-%{release} +Obsoletes: ceph-devel < %{_epoch_prefix}%{version}-%{release} +Provides: librados2-devel >= %{_epoch_prefix}%{version}-%{release} +Obsoletes: librados2-devel < %{_epoch_prefix}%{version}-%{release} %description -n librados-devel This package contains C libraries and headers needed to develop programs that use RADOS object store. %package -n libradospp-devel -Summary: RADOS headers +Summary: RADOS headers %if 0%{?suse_version} -Group: Development/Libraries/C and C++ +Group: Development/Libraries/C and C++ %endif -Requires: librados2 = %{_epoch_prefix}%{version}-%{release} -Requires: librados-devel = %{_epoch_prefix}%{version}-%{release} +Requires: librados2 >= %{_epoch_prefix}%{version}-%{release} +Requires: librados-devel >= %{_epoch_prefix}%{version}-%{release} %description -n libradospp-devel This package contains C++ libraries and headers needed to develop programs that use RADOS object store. %package -n librgw2 -Summary: RADOS gateway client library +Summary: RADOS gateway client library %if 0%{?suse_version} -Group: System/Libraries +Group: System/Libraries %endif -Requires: librados2 = %{_epoch_prefix}%{version}-%{release} +Requires: librados2 >= %{_epoch_prefix}%{version}-%{release} %description -n librgw2 This package provides a library implementation of the RADOS gateway (distributed object store with S3 and Swift personalities). %package -n librgw-devel -Summary: RADOS gateway client library +Summary: RADOS gateway client library %if 0%{?suse_version} -Group: Development/Libraries/C and C++ +Group: Development/Libraries/C and C++ %endif -Requires: librados-devel = %{_epoch_prefix}%{version}-%{release} -Requires: librgw2 = %{_epoch_prefix}%{version}-%{release} -Provides: librgw2-devel = %{_epoch_prefix}%{version}-%{release} -Obsoletes: librgw2-devel < %{_epoch_prefix}%{version}-%{release} +Requires: librados-devel >= %{_epoch_prefix}%{version}-%{release} +Requires: librgw2 >= %{_epoch_prefix}%{version}-%{release} +Provides: librgw2-devel >= %{_epoch_prefix}%{version}-%{release} +Obsoletes: librgw2-devel < %{_epoch_prefix}%{version}-%{release} %description -n librgw-devel This package contains libraries and headers needed to develop programs that use RADOS gateway client library. %package -n python%{python3_pkgversion}-rgw -Summary: Python 3 libraries for the RADOS gateway +Summary: Python 3 libraries for the RADOS gateway %if 0%{?suse_version} -Group: Development/Libraries/Python +Group: Development/Libraries/Python %endif -Requires: librgw2 = %{_epoch_prefix}%{version}-%{release} -Requires: python%{python3_pkgversion}-rados = %{_epoch_prefix}%{version}-%{release} +Requires: librgw2 >= %{_epoch_prefix}%{version}-%{release} +Requires: python%{python3_pkgversion}-rados >= %{_epoch_prefix}%{version}-%{release} %{?python_provide:%python_provide python%{python3_pkgversion}-rgw} -Provides: python-rgw = %{_epoch_prefix}%{version}-%{release} -Obsoletes: python-rgw < %{_epoch_prefix}%{version}-%{release} +Provides: python-rgw >= %{_epoch_prefix}%{version}-%{release} +Obsoletes: python-rgw < %{_epoch_prefix}%{version}-%{release} %description -n python%{python3_pkgversion}-rgw This package contains Python 3 libraries for interacting with Ceph RADOS gateway. %package -n python%{python3_pkgversion}-rados -Summary: Python 3 libraries for the RADOS object store +Summary: Python 3 libraries for the RADOS object store %if 0%{?suse_version} -Group: Development/Libraries/Python +Group: Development/Libraries/Python %endif -Requires: python%{python3_pkgversion} -Requires: librados2 = %{_epoch_prefix}%{version}-%{release} +Requires: python%{python3_pkgversion} +Requires: librados2 >= %{_epoch_prefix}%{version}-%{release} %{?python_provide:%python_provide python%{python3_pkgversion}-rados} -Provides: python-rados = %{_epoch_prefix}%{version}-%{release} -Obsoletes: python-rados < %{_epoch_prefix}%{version}-%{release} +Provides: python-rados >= %{_epoch_prefix}%{version}-%{release} +Obsoletes: python-rados < %{_epoch_prefix}%{version}-%{release} %description -n python%{python3_pkgversion}-rados This package contains Python 3 libraries for interacting with Ceph RADOS object store. %package -n libcephsqlite -Summary: SQLite3 VFS for Ceph +Summary: SQLite3 VFS for Ceph %if 0%{?suse_version} -Group: System/Libraries +Group: System/Libraries %endif -Requires: librados2 = %{_epoch_prefix}%{version}-%{release} +Requires: librados2 >= %{_epoch_prefix}%{version}-%{release} %description -n libcephsqlite A SQLite3 VFS for storing and manipulating databases stored on Ceph's RADOS distributed object store. %package -n libcephsqlite-devel -Summary: SQLite3 VFS for Ceph headers +Summary: SQLite3 VFS for Ceph headers %if 0%{?suse_version} -Group: Development/Libraries/C and C++ +Group: Development/Libraries/C and C++ %endif -Requires: sqlite-devel -Requires: libcephsqlite = %{_epoch_prefix}%{version}-%{release} -Requires: librados-devel = %{_epoch_prefix}%{version}-%{release} -Requires: libradospp-devel = %{_epoch_prefix}%{version}-%{release} -Obsoletes: ceph-devel < %{_epoch_prefix}%{version}-%{release} -Provides: libcephsqlite-devel = %{_epoch_prefix}%{version}-%{release} -Obsoletes: libcephsqlite-devel < %{_epoch_prefix}%{version}-%{release} +Requires: sqlite-devel +Requires: libcephsqlite >= %{_epoch_prefix}%{version}-%{release} +Requires: librados-devel >= %{_epoch_prefix}%{version}-%{release} +Requires: libradospp-devel >= %{_epoch_prefix}%{version}-%{release} +Obsoletes: ceph-devel < %{_epoch_prefix}%{version}-%{release} +Provides: libcephsqlite-devel >= %{_epoch_prefix}%{version}-%{release} +Obsoletes: libcephsqlite-devel < %{_epoch_prefix}%{version}-%{release} %description -n libcephsqlite-devel A SQLite3 VFS for storing and manipulating databases stored on Ceph's RADOS distributed object store. %if 0%{with libradosstriper} %package -n libradosstriper1 -Summary: RADOS striping interface +Summary: RADOS striping interface %if 0%{?suse_version} -Group: System/Libraries +Group: System/Libraries %endif -Requires: librados2 = %{_epoch_prefix}%{version}-%{release} +Requires: librados2 >= %{_epoch_prefix}%{version}-%{release} %description -n libradosstriper1 Striping interface built on top of the rados library, allowing to stripe bigger objects onto several standard rados objects using an interface very similar to the rados one. %package -n libradosstriper-devel -Summary: RADOS striping interface headers +Summary: RADOS striping interface headers %if 0%{?suse_version} -Group: Development/Libraries/C and C++ +Group: Development/Libraries/C and C++ %endif -Requires: libradosstriper1 = %{_epoch_prefix}%{version}-%{release} -Requires: librados-devel = %{_epoch_prefix}%{version}-%{release} -Requires: libradospp-devel = %{_epoch_prefix}%{version}-%{release} -Obsoletes: ceph-devel < %{_epoch_prefix}%{version}-%{release} -Provides: libradosstriper1-devel = %{_epoch_prefix}%{version}-%{release} -Obsoletes: libradosstriper1-devel < %{_epoch_prefix}%{version}-%{release} +Requires: libradosstriper1 >= %{_epoch_prefix}%{version}-%{release} +Requires: librados-devel >= %{_epoch_prefix}%{version}-%{release} +Requires: libradospp-devel >= %{_epoch_prefix}%{version}-%{release} +Obsoletes: ceph-devel < %{_epoch_prefix}%{version}-%{release} +Provides: libradosstriper1-devel >= %{_epoch_prefix}%{version}-%{release} +Obsoletes: libradosstriper1-devel < %{_epoch_prefix}%{version}-%{release} %description -n libradosstriper-devel This package contains libraries and headers needed to develop programs that use RADOS striping interface. %endif %package -n librbd1 -Summary: RADOS block device client library +Summary: RADOS block device client library %if 0%{?suse_version} -Group: System/Libraries +Group: System/Libraries %endif -Requires: librados2 = %{_epoch_prefix}%{version}-%{release} +Requires: librados2 >= %{_epoch_prefix}%{version}-%{release} %if 0%{?suse_version} Requires(post): coreutils %endif %if 0%{?rhel} || 0%{?fedora} -Obsoletes: ceph-libs < %{_epoch_prefix}%{version}-%{release} +Obsoletes: ceph-libs < %{_epoch_prefix}%{version}-%{release} %endif %description -n librbd1 RBD is a block device striped across multiple distributed objects in @@ -1053,43 +929,43 @@ developed as part of the Ceph distributed storage system. This is a shared library allowing applications to manage these block devices. %package -n librbd-devel -Summary: RADOS block device headers +Summary: RADOS block device headers %if 0%{?suse_version} -Group: Development/Libraries/C and C++ +Group: Development/Libraries/C and C++ %endif -Requires: librbd1 = %{_epoch_prefix}%{version}-%{release} -Requires: librados-devel = %{_epoch_prefix}%{version}-%{release} -Requires: libradospp-devel = %{_epoch_prefix}%{version}-%{release} -Obsoletes: ceph-devel < %{_epoch_prefix}%{version}-%{release} -Provides: librbd1-devel = %{_epoch_prefix}%{version}-%{release} -Obsoletes: librbd1-devel < %{_epoch_prefix}%{version}-%{release} +Requires: librbd1 >= %{_epoch_prefix}%{version}-%{release} +Requires: librados-devel >= %{_epoch_prefix}%{version}-%{release} +Requires: libradospp-devel >= %{_epoch_prefix}%{version}-%{release} +Obsoletes: ceph-devel < %{_epoch_prefix}%{version}-%{release} +Provides: librbd1-devel >= %{_epoch_prefix}%{version}-%{release} +Obsoletes: librbd1-devel < %{_epoch_prefix}%{version}-%{release} %description -n librbd-devel This package contains libraries and headers needed to develop programs that use RADOS block device. %package -n python%{python3_pkgversion}-rbd -Summary: Python 3 libraries for the RADOS block device +Summary: Python 3 libraries for the RADOS block device %if 0%{?suse_version} -Group: Development/Libraries/Python +Group: Development/Libraries/Python %endif -Requires: librbd1 = %{_epoch_prefix}%{version}-%{release} -Requires: python%{python3_pkgversion}-rados = %{_epoch_prefix}%{version}-%{release} +Requires: librbd1 >= %{_epoch_prefix}%{version}-%{release} +Requires: python%{python3_pkgversion}-rados >= %{_epoch_prefix}%{version}-%{release} %{?python_provide:%python_provide python%{python3_pkgversion}-rbd} -Provides: python-rbd = %{_epoch_prefix}%{version}-%{release} -Obsoletes: python-rbd < %{_epoch_prefix}%{version}-%{release} +Provides: python-rbd >= %{_epoch_prefix}%{version}-%{release} +Obsoletes: python-rbd < %{_epoch_prefix}%{version}-%{release} %description -n python%{python3_pkgversion}-rbd This package contains Python 3 libraries for interacting with Ceph RADOS block device. %package -n libcephfs2 -Summary: Ceph distributed file system client library +Summary: Ceph distributed file system client library %if 0%{?suse_version} -Group: System/Libraries +Group: System/Libraries %endif -Obsoletes: libcephfs1 < %{_epoch_prefix}%{version}-%{release} +Obsoletes: libcephfs1 < %{_epoch_prefix}%{version}-%{release} %if 0%{?rhel} || 0%{?fedora} -Obsoletes: ceph-libs < %{_epoch_prefix}%{version}-%{release} -Obsoletes: ceph-libcephfs +Obsoletes: ceph-libs < %{_epoch_prefix}%{version}-%{release} +Obsoletes: ceph-libcephfs < %{_epoch_prefix}%{version}-%{release} %endif %description -n libcephfs2 Ceph is a distributed network file system designed to provide excellent @@ -1098,38 +974,38 @@ allowing applications to access a Ceph distributed file system via a POSIX-like interface. %package -n libcephfs-devel -Summary: Ceph distributed file system headers +Summary: Ceph distributed file system headers %if 0%{?suse_version} -Group: Development/Libraries/C and C++ +Group: Development/Libraries/C and C++ %endif -Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release} -Requires: librados-devel = %{_epoch_prefix}%{version}-%{release} -Obsoletes: ceph-devel < %{_epoch_prefix}%{version}-%{release} -Provides: libcephfs2-devel = %{_epoch_prefix}%{version}-%{release} -Obsoletes: libcephfs2-devel < %{_epoch_prefix}%{version}-%{release} +Requires: libcephfs2 >= %{_epoch_prefix}%{version}-%{release} +Requires: librados-devel >= %{_epoch_prefix}%{version}-%{release} +Obsoletes: ceph-devel < %{_epoch_prefix}%{version}-%{release} +Provides: libcephfs2-devel >= %{_epoch_prefix}%{version}-%{release} +Obsoletes: libcephfs2-devel < %{_epoch_prefix}%{version}-%{release} %description -n libcephfs-devel This package contains libraries and headers needed to develop programs that use Ceph distributed file system. %package -n python%{python3_pkgversion}-cephfs -Summary: Python 3 libraries for Ceph distributed file system +Summary: Python 3 libraries for Ceph distributed file system %if 0%{?suse_version} -Group: Development/Libraries/Python +Group: Development/Libraries/Python %endif -Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release} -Requires: python%{python3_pkgversion}-rados = %{_epoch_prefix}%{version}-%{release} -Requires: python%{python3_pkgversion}-ceph-argparse = %{_epoch_prefix}%{version}-%{release} +Requires: libcephfs2 >= %{_epoch_prefix}%{version}-%{release} +Requires: python%{python3_pkgversion}-rados >= %{_epoch_prefix}%{version}-%{release} +Requires: python%{python3_pkgversion}-ceph-argparse >= %{_epoch_prefix}%{version}-%{release} %{?python_provide:%python_provide python%{python3_pkgversion}-cephfs} -Provides: python-cephfs = %{_epoch_prefix}%{version}-%{release} -Obsoletes: python-cephfs < %{_epoch_prefix}%{version}-%{release} +Provides: python-cephfs >= %{_epoch_prefix}%{version}-%{release} +Obsoletes: python-cephfs < %{_epoch_prefix}%{version}-%{release} %description -n python%{python3_pkgversion}-cephfs This package contains Python 3 libraries for interacting with Ceph distributed file system. %package -n python%{python3_pkgversion}-ceph-argparse -Summary: Python 3 utility libraries for Ceph CLI +Summary: Python 3 utility libraries for Ceph CLI %if 0%{?suse_version} -Group: Development/Libraries/Python +Group: Development/Libraries/Python %endif %{?python_provide:%python_provide python%{python3_pkgversion}-ceph-argparse} %description -n python%{python3_pkgversion}-ceph-argparse @@ -1139,22 +1015,21 @@ command-description information, validating user command input against those descriptions, and submitting the command to the appropriate daemon. %package -n python%{python3_pkgversion}-ceph-common -Summary: Python 3 utility libraries for Ceph +Summary: Python 3 utility libraries for Ceph %if 0%{?fedora} || 0%{?rhel} >= 8 -Requires: python%{python3_pkgversion}-pyyaml +Requires: python%{python3_pkgversion}-pyyaml %endif %if 0%{?suse_version} -Requires: python%{python3_pkgversion}-PyYAML +Requires: python%{python3_pkgversion}-PyYAML %endif %if 0%{?suse_version} -Group: Development/Libraries/Python +Group: Development/Libraries/Python %endif %{?python_provide:%python_provide python%{python3_pkgversion}-ceph-common} %description -n python%{python3_pkgversion}-ceph-common This package contains data structures, classes and functions used by Ceph. It also contains utilities used for the cephadm orchestrator. -%if 0%{with cephfs_shell} %package -n cephfs-shell Summary: Interactive shell for Ceph file system Requires: python%{python3_pkgversion}-cmd2 @@ -1164,97 +1039,22 @@ Requires: python%{python3_pkgversion}-cephfs This package contains an interactive tool that allows accessing a Ceph file system without mounting it by providing a nice pseudo-shell which works like an FTP client. -%endif - -%if 0%{with ceph_test_package} -%package -n ceph-test -Summary: Ceph benchmarks and test tools -%if 0%{?suse_version} -Group: System/Benchmark -%endif -Requires: ceph-common = %{_epoch_prefix}%{version}-%{release} -Requires: xmlstarlet -Requires: jq -Requires: socat -%description -n ceph-test -This package contains Ceph benchmarks and test tools. -%endif - -%if 0%{with cephfs_java} - -%package -n libcephfs_jni1 -Summary: Java Native Interface library for CephFS Java bindings -%if 0%{?suse_version} -Group: System/Libraries -%endif -Requires: java -Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release} -%description -n libcephfs_jni1 -This package contains the Java Native Interface library for CephFS Java -bindings. - -%package -n libcephfs_jni-devel -Summary: Development files for CephFS Java Native Interface library -%if 0%{?suse_version} -Group: Development/Libraries/Java -%endif -Requires: java -Requires: libcephfs_jni1 = %{_epoch_prefix}%{version}-%{release} -Obsoletes: ceph-devel < %{_epoch_prefix}%{version}-%{release} -Provides: libcephfs_jni1-devel = %{_epoch_prefix}%{version}-%{release} -Obsoletes: libcephfs_jni1-devel < %{_epoch_prefix}%{version}-%{release} -%description -n libcephfs_jni-devel -This package contains the development files for CephFS Java Native Interface -library. - -%package -n cephfs-java -Summary: Java libraries for the Ceph File System -%if 0%{?suse_version} -Group: System/Libraries -%endif -Requires: java -Requires: libcephfs_jni1 = %{_epoch_prefix}%{version}-%{release} -Requires: junit -BuildRequires: junit -%description -n cephfs-java -This package contains the Java libraries for the Ceph File System. - -%endif %package -n rados-objclass-devel -Summary: RADOS object class development kit +Summary: RADOS object class development kit %if 0%{?suse_version} -Group: Development/Libraries/C and C++ +Group: Development/Libraries/C and C++ %endif -Requires: libradospp-devel = %{_epoch_prefix}%{version}-%{release} +Requires: libradospp-devel >= %{_epoch_prefix}%{version}-%{release} %description -n rados-objclass-devel This package contains libraries and headers needed to develop RADOS object class plugins. -%if 0%{with selinux} - -%package selinux -Summary: SELinux support for Ceph MON, OSD and MDS -%if 0%{?suse_version} -Group: System/Filesystems -%endif -Requires: ceph-base = %{_epoch_prefix}%{version}-%{release} -Requires: policycoreutils, libselinux-utils -Requires(post): ceph-base = %{_epoch_prefix}%{version}-%{release} -Requires(post): selinux-policy-base >= %{_selinux_policy_version}, policycoreutils, gawk -Requires(postun): policycoreutils -%description selinux -This package contains SELinux support for Ceph MON, OSD and MDS. The package -also performs file-system relabelling which can take a long time on heavily -populated file-systems. - -%endif - %package grafana-dashboards -Summary: The set of Grafana dashboards for monitoring purposes -BuildArch: noarch +Summary: The set of Grafana dashboards for monitoring purposes +BuildArch: noarch %if 0%{?suse_version} -Group: System/Filesystems +Group: System/Filesystems %endif %description grafana-dashboards This package provides a set of Grafana dashboards for monitoring of @@ -1264,9 +1064,9 @@ project "node_exporter" module. The dashboards are designed to be integrated with the Ceph Manager Dashboard web UI. %package prometheus-alerts -Summary: Prometheus alerts for a Ceph deployment -BuildArch: noarch -Group: System/Monitoring +Summary: Prometheus alerts for a Ceph deployment +BuildArch: noarch +Group: System/Monitoring %description prometheus-alerts This package provides Ceph default alerts for Prometheus. @@ -1274,7 +1074,7 @@ This package provides Ceph default alerts for Prometheus. # common ################################################################################# %prep -%autosetup -p1 -n @TARBALL_BASENAME@ +%autosetup -p1 %build # Disable lto on systems that do not support symver attribute @@ -1283,165 +1083,84 @@ This package provides Ceph default alerts for Prometheus. %define _lto_cflags %{nil} %endif -%if 0%{with cephfs_java} -# Find jni.h -for i in /usr/{lib64,lib}/jvm/java/include{,/linux}; do - [ -d $i ] && java_inc="$java_inc -I$i" -done +%if 0%{?rhel} == 7 +. /opt/rh/devtoolset-11/enable %endif - -%if 0%{?suse_version} -%limit_build -m 3000 +%if 0%{?rhel} == 8 +. /opt/rh/gcc-toolset-12/enable +%endif +%if 0%{?sle_version} > 150000 +ln -fs /usr/bin/gcc-11 $PWD/bin/gcc +ln -fs /usr/bin/g++-11 $PWD/bin/g++ +export PATH=$PWD/bin:$PATH %endif -export CPPFLAGS="$java_inc" -export CFLAGS="$RPM_OPT_FLAGS" -export CXXFLAGS="$RPM_OPT_FLAGS" -export LDFLAGS="$RPM_LD_FLAGS" +export CFLAGS="-O3 -DNDEBUG -fstack-protector-strong -Wformat -Werror=format-security -Wno-maybe-uninitialized -Wno-unused-variable -Wno-deprecated-declarations" +export CPPFLAGS="-Wdate-time -D_FORTIFY_SOURCE=2" +export CXXFLAGS="-O3 -DNDEBUG -fstack-protector-strong -Wformat -Werror=format-security -Wno-maybe-uninitialized -Wno-unused-variable -Wno-deprecated-declarations" +export LDFLAGS="-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,--as-needed -lstdc++" -%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') -%endif +export CC="$(which gcc-13 || which gcc-12 || which gcc-11 || which gcc-10 || which gcc-9 || which gcc-8 || which gcc-7 || which gcc)" +export CXX="$(which g++-13 || which g++-12 || which g++-11 || which g++-10 || which g++-9 || which g++-8 || which g++-7 || which g++)" env | sort -%{?!_vpath_builddir:%global _vpath_builddir %{_target_platform}} - -# TODO: drop this step once we can use `cmake -B` -mkdir -p %{_vpath_builddir} -pushd %{_vpath_builddir} -cmake .. \ -%if 0%{?suse_version} == 1500 - -DCMAKE_C_COMPILER=gcc-11 \ - -DCMAKE_CXX_COMPILER=g++-11 \ -%endif +%cmake \ + -DCMAKE_C_COMPILER=$CC \ + -DCMAKE_CXX_COMPILER=$CXX \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_C_FLAGS="$CFLAGS" \ + -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ + -DCMAKE_EXE_LINKER_FLAGS="$LDFLAGS" \ + -DCMAKE_SHARED_LINKER_FLAGS="$LDFLAGS" \ + -DBUILD_SHARED_LIBS=ON \ + -DPOSITION_INDEPENDENT_CODE=ON \ -DCMAKE_INSTALL_PREFIX=%{_prefix} \ - -DCMAKE_INSTALL_LIBDIR:PATH=%{_libdir} \ - -DCMAKE_INSTALL_LIBEXECDIR:PATH=%{_libexecdir} \ - -DCMAKE_INSTALL_LOCALSTATEDIR:PATH=%{_localstatedir} \ - -DCMAKE_INSTALL_SYSCONFDIR:PATH=%{_sysconfdir} \ - -DCMAKE_INSTALL_MANDIR:PATH=%{_mandir} \ - -DCMAKE_INSTALL_DOCDIR:PATH=%{_docdir}/ceph \ - -DCMAKE_INSTALL_INCLUDEDIR:PATH=%{_includedir} \ - -DSYSTEMD_SYSTEM_UNIT_DIR:PATH=%{_unitdir} \ - -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 -%if 0%{with cephfs_java} - -DWITH_CEPHFS_JAVA:BOOL=ON \ -%endif -%if 0%{with selinux} - -DWITH_SELINUX:BOOL=ON \ -%endif -%if %{with lttng} - -DWITH_LTTNG:BOOL=ON \ - -DWITH_BABELTRACE:BOOL=ON \ -%else - -DWITH_LTTNG:BOOL=OFF \ - -DWITH_BABELTRACE:BOOL=OFF \ -%endif - $CEPH_EXTRA_CMAKE_ARGS \ -%if 0%{with ocf} - -DWITH_OCF:BOOL=ON \ -%endif -%if 0%{with cephfs_shell} - -DWITH_CEPHFS_SHELL:BOOL=ON \ -%endif -%if 0%{with libradosstriper} - -DWITH_LIBRADOSSTRIPER:BOOL=ON \ -%else - -DWITH_LIBRADOSSTRIPER:BOOL=OFF \ -%endif -%if 0%{with amqp_endpoint} - -DWITH_RADOSGW_AMQP_ENDPOINT:BOOL=ON \ -%else - -DWITH_RADOSGW_AMQP_ENDPOINT:BOOL=OFF \ -%endif -%if 0%{with kafka_endpoint} - -DWITH_RADOSGW_KAFKA_ENDPOINT:BOOL=ON \ -%else - -DWITH_RADOSGW_KAFKA_ENDPOINT:BOOL=OFF \ -%endif -%if 0%{without lua_packages} - -DWITH_RADOSGW_LUA_PACKAGES:BOOL=OFF \ -%endif -%if 0%{with zbd} - -DWITH_ZBD:BOOL=ON \ -%endif -%if 0%{with cmake_verbose_logging} - -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \ -%endif -%if 0%{with rbd_rwl_cache} - -DWITH_RBD_RWL:BOOL=ON \ -%endif -%if 0%{with rbd_ssd_cache} - -DWITH_RBD_SSD_CACHE:BOOL=ON \ -%endif -%if 0%{with system_pmdk} - -DWITH_SYSTEM_PMDK:BOOL=ON \ -%endif -%if 0%{with jaeger} - -DWITH_JAEGER:BOOL=ON \ -%endif -%if 0%{?suse_version} - -DBOOST_J:STRING=%{jobs} \ -%else - -DBOOST_J:STRING=%{_smp_build_ncpus} \ -%endif -%if 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 seastar} - -DWITH_SEASTAR:BOOL=ON \ - -DWITH_JAEGER:BOOL=OFF \ -%endif - -DWITH_GRAFANA:BOOL=ON - -%if %{with cmake_verbose_logging} -cat ./CMakeFiles/CMakeOutput.log -cat ./CMakeFiles/CMakeError.log -%endif - -%if 0%{?suse_version} -make %{_smp_mflags} -%else -%make_build -%endif - -popd + -DCMAKE_INSTALL_LIBDIR=%{_libdir} \ + -DCMAKE_INSTALL_LIBEXECDIR=%{_libexecdir} \ + -DCMAKE_INSTALL_LOCALSTATEDIR=%{_localstatedir} \ + -DCMAKE_INSTALL_SYSCONFDIR=%{_sysconfdir} \ + -DCMAKE_INSTALL_MANDIR=%{_mandir} \ + -DCMAKE_INSTALL_DOCDIR=%{_docdir}/ceph \ + -DCMAKE_INSTALL_INCLUDEDIR=%{_includedir} \ + -DSYSTEMD_SYSTEM_UNIT_DIR=%{_unitdir} \ + -DWITH_BLUESTORE_PMEM=OFF \ + -DWITH_CCACHE=ON \ + -DWITH_CEPHFS_JAVA=OFF \ + -DWITH_CEPHFS_SHELL=ON \ + -DWITH_DEBUG=OFF \ + -DWITH_EMBEDDED=OFF \ + -DWITH_GRAFANA=ON \ + -DWITH_JAEGER=OFF \ + -DWITH_LIBURING=ON \ + -DWITH_LTTNG=OFF \ + -DWITH_MGR_DASHBOARD_FRONTEND=OFF \ + -DWITH_NSS=ON \ + -DWITH_OCF=ON \ + -DWITH_PYTHON2=OFF \ + -DWITH_PYTHON3=%{python3_version} \ + -DWITH_RADOSGW_KAFKA_ENDPOINT=OFF \ + -DWITH_RADOSGW_SELECT_PARQUET=OFF \ + -DWITH_RBD_RWL=OFF \ + -DWITH_RBD_SSD_CACHE=OFF \ + -DWITH_SELINUX=OFF \ + -DWITH_SPDK=OFF \ + -DWITH_SYSTEMD=ON \ + -DWITH_SYSTEM_ARROW=OFF \ + -DWITH_SYSTEM_BOOST=OFF \ + -DWITH_SYSTEM_FMT=OFF \ + -DWITH_SYSTEM_LIBURING=OFF \ + -DWITH_SYSTEM_PMDK=OFF \ + -DWITH_SYSTEM_UTF8PROC=OFF \ + -DWITH_TESTS=OFF +%cmake_build -%if 0%{with make_check} %check -# run in-tree unittests -pushd %{_vpath_builddir} -ctest %{_smp_mflags} -popd -%endif - %install - -pushd %{_vpath_builddir} -%make_install +%cmake_install # we have dropped sysvinit bits rm -f %{buildroot}/%{_sysconfdir}/init.d/ceph -popd %if 0%{with seastar} # package crimson-osd with the name of ceph-osd @@ -1484,11 +1203,6 @@ install -m 0644 -D udev/50-rbd.rules %{buildroot}%{_udevrulesdir}/50-rbd.rules # sudoers.d 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}/* -%endif - #set up placeholder directories mkdir -p %{buildroot}%{_sysconfdir}/ceph mkdir -p %{buildroot}%{_localstatedir}/run/ceph @@ -1554,10 +1268,6 @@ rm -rf %{_vpath_builddir} %{_unitdir}/ceph-crash.service %dir %{_libdir}/ceph/crypto %{_libdir}/ceph/crypto/libceph_*.so* -%if %{with lttng} -%{_libdir}/libos_tp.so* -%{_libdir}/libosd_tp.so* -%endif %config(noreplace) %{_sysconfdir}/logrotate.d/ceph %if 0%{?fedora} || 0%{?rhel} %config(noreplace) %{_sysconfdir}/sysconfig/ceph @@ -2005,9 +1715,6 @@ 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* @@ -2269,9 +1976,6 @@ fi %{_libdir}/librados.so.* %dir %{_libdir}/ceph %{_libdir}/ceph/libceph-common.so.* -%if %{with lttng} -%{_libdir}/librados_tp.so.* -%endif %dir %{_sysconfdir}/ceph %post -n librados2 -p /sbin/ldconfig @@ -2283,9 +1987,6 @@ fi %{_includedir}/rados/librados.h %{_includedir}/rados/rados_types.h %{_libdir}/librados.so -%if %{with lttng} -%{_libdir}/librados_tp.so -%endif %{_bindir}/librados-config %{_mandir}/man8/librados-config.8* @@ -2331,9 +2032,6 @@ fi %files -n librbd1 %{_libdir}/librbd.so.* -%if %{with lttng} -%{_libdir}/librbd_tp.so.* -%endif %dir %{_libdir}/ceph/librbd %{_libdir}/ceph/librbd/libceph_*.so* @@ -2347,16 +2045,9 @@ fi %{_includedir}/rbd/librbd.hpp %{_includedir}/rbd/features.h %{_libdir}/librbd.so -%if %{with lttng} -%{_libdir}/librbd_tp.so -%endif %files -n librgw2 %{_libdir}/librgw.so.* -%if %{with lttng} -%{_libdir}/librgw_op_tp.so.* -%{_libdir}/librgw_rados_tp.so.* -%endif %post -n librgw2 -p /sbin/ldconfig @@ -2367,10 +2058,6 @@ fi %{_includedir}/rados/librgw.h %{_includedir}/rados/rgw_file.h %{_libdir}/librgw.so -%if %{with lttng} -%{_libdir}/librgw_op_tp.so -%{_libdir}/librgw_rados_tp.so -%endif %files -n python%{python3_pkgversion}-rgw %{python3_sitearch}/rgw.cpython*.so @@ -2410,174 +2097,20 @@ fi %{python3_sitelib}/ceph %{python3_sitelib}/ceph-*.egg-info -%if 0%{with cephfs_shell} %files -n cephfs-shell %{python3_sitelib}/cephfs_shell-*.egg-info %{_bindir}/cephfs-shell %{_mandir}/man8/cephfs-shell.8* -%endif %files -n cephfs-top %{python3_sitelib}/cephfs_top-*.egg-info %{_bindir}/cephfs-top %{_mandir}/man8/cephfs-top.8* -%if 0%{with ceph_test_package} -%files -n ceph-test -%{_bindir}/ceph-client-debug -%{_bindir}/ceph_bench_log -%{_bindir}/ceph_multi_stress_watch -%{_bindir}/ceph_erasure_code_benchmark -%{_bindir}/ceph_omapbench -%{_bindir}/ceph_objectstore_bench -%{_bindir}/ceph_perf_objectstore -%{_bindir}/ceph_perf_local -%{_bindir}/ceph_perf_msgr_client -%{_bindir}/ceph_perf_msgr_server -%{_bindir}/ceph_psim -%{_bindir}/ceph_radosacl -%{_bindir}/ceph_rgw_jsonparser -%{_bindir}/ceph_rgw_multiparser -%{_bindir}/ceph_scratchtool -%{_bindir}/ceph_scratchtoolpp -%{_bindir}/ceph_test_* -%{_bindir}/ceph-coverage -%{_bindir}/ceph-debugpack -%{_bindir}/ceph-dedup-tool -%if 0%{with seastar} -%{_bindir}/crimson-store-nbd -%endif -%{_mandir}/man8/ceph-debugpack.8* -%dir %{_libdir}/ceph -%{_libdir}/ceph/ceph-monstore-update-crush.sh -%endif - -%if 0%{with cephfs_java} -%files -n libcephfs_jni1 -%{_libdir}/libcephfs_jni.so.* - -%post -n libcephfs_jni1 -p /sbin/ldconfig - -%postun -n libcephfs_jni1 -p /sbin/ldconfig - -%files -n libcephfs_jni-devel -%{_libdir}/libcephfs_jni.so - -%files -n cephfs-java -%{_javadir}/libcephfs.jar -%{_javadir}/libcephfs-test.jar -%endif - %files -n rados-objclass-devel %dir %{_includedir}/rados %{_includedir}/rados/objclass.h -%if 0%{with selinux} -%files selinux -%attr(0600,root,root) %{_datadir}/selinux/packages/ceph.pp -%{_datadir}/selinux/devel/include/contrib/ceph.if -%{_mandir}/man8/ceph_selinux.8* - -%post selinux -# backup file_contexts before update -. /etc/selinux/config -FILE_CONTEXT=/etc/selinux/${SELINUXTYPE}/contexts/files/file_contexts -cp ${FILE_CONTEXT} ${FILE_CONTEXT}.pre - -# Install the policy -/usr/sbin/semodule -i %{_datadir}/selinux/packages/ceph.pp - -# Load the policy if SELinux is enabled -if ! /usr/sbin/selinuxenabled; then - # Do not relabel if selinux is not enabled - exit 0 -fi - -if diff ${FILE_CONTEXT} ${FILE_CONTEXT}.pre > /dev/null 2>&1; then - # Do not relabel if file contexts did not change - exit 0 -fi - -# Stop ceph.target while relabeling if CEPH_AUTO_RESTART_ON_UPGRADE=yes -SYSCONF_CEPH=%{_sysconfdir}/sysconfig/ceph -if [ -f $SYSCONF_CEPH -a -r $SYSCONF_CEPH ] ; then - source $SYSCONF_CEPH -fi - -# Check whether the daemons are running -/usr/bin/systemctl status ceph.target > /dev/null 2>&1 -STATUS=$? - -# Stop the daemons if they were running -if test $STATUS -eq 0; then - if [ "X$CEPH_AUTO_RESTART_ON_UPGRADE" = "Xyes" ] ; then - /usr/bin/systemctl stop ceph.target > /dev/null 2>&1 - fi -fi - -# Relabel the files fix for first package install -/usr/sbin/fixfiles -C ${FILE_CONTEXT}.pre restore 2> /dev/null - -rm -f ${FILE_CONTEXT}.pre -# The fixfiles command won't fix label for /var/run/ceph -/usr/sbin/restorecon -R /var/run/ceph > /dev/null 2>&1 - -# Start the daemons iff they were running before -if test $STATUS -eq 0; then - if [ "X$CEPH_AUTO_RESTART_ON_UPGRADE" = "Xyes" ] ; then - /usr/bin/systemctl start ceph.target > /dev/null 2>&1 || : - fi -fi -exit 0 - -%postun selinux -if [ $1 -eq 0 ]; then - # backup file_contexts before update - . /etc/selinux/config - FILE_CONTEXT=/etc/selinux/${SELINUXTYPE}/contexts/files/file_contexts - cp ${FILE_CONTEXT} ${FILE_CONTEXT}.pre - - # Remove the module - /usr/sbin/semodule -n -r ceph > /dev/null 2>&1 - - # Reload the policy if SELinux is enabled - if ! /usr/sbin/selinuxenabled ; then - # Do not relabel if SELinux is not enabled - exit 0 - fi - - # Stop ceph.target while relabeling if CEPH_AUTO_RESTART_ON_UPGRADE=yes - SYSCONF_CEPH=%{_sysconfdir}/sysconfig/ceph - if [ -f $SYSCONF_CEPH -a -r $SYSCONF_CEPH ] ; then - source $SYSCONF_CEPH - fi - - # Check whether the daemons are running - /usr/bin/systemctl status ceph.target > /dev/null 2>&1 - STATUS=$? - - # Stop the daemons if they were running - if test $STATUS -eq 0; then - if [ "X$CEPH_AUTO_RESTART_ON_UPGRADE" = "Xyes" ] ; then - /usr/bin/systemctl stop ceph.target > /dev/null 2>&1 - fi - fi - - /usr/sbin/fixfiles -C ${FILE_CONTEXT}.pre restore 2> /dev/null - rm -f ${FILE_CONTEXT}.pre - # The fixfiles command won't fix label for /var/run/ceph - /usr/sbin/restorecon -R /var/run/ceph > /dev/null 2>&1 - - # Start the daemons if they were running before - if test $STATUS -eq 0; then - if [ "X$CEPH_AUTO_RESTART_ON_UPGRADE" = "Xyes" ] ; then - /usr/bin/systemctl start ceph.target > /dev/null 2>&1 || : - fi - fi -fi -exit 0 -%endif - %files grafana-dashboards %if 0%{?suse_version} %attr(0755,root,root) %dir %{_sysconfdir}/grafana diff --git a/cmake/modules/BuildBoost.cmake b/cmake/modules/BuildBoost.cmake index bd9497f1c093fd..202e98cdf78845 100644 --- a/cmake/modules/BuildBoost.cmake +++ b/cmake/modules/BuildBoost.cmake @@ -63,8 +63,6 @@ function(do_build_boost root_dir version) else() list(APPEND boost_features "address-model=32") endif() - set(BOOST_CXXFLAGS "-fPIC -w") # check on arm, etc <---XXX - list(APPEND boost_features "cxxflags=${BOOST_CXXFLAGS}") set(boost_with_libs) foreach(c ${Boost_BUILD_COMPONENTS}) @@ -110,6 +108,7 @@ function(do_build_boost root_dir version) "using ${toolset}" " : " " : ${CMAKE_CXX_COMPILER}" + " : -fPIC -w -Wno-everything" " ;\n") if(with_python_version) find_package(Python3 ${with_python_version} QUIET REQUIRED @@ -137,6 +136,9 @@ function(do_build_boost root_dir version) if(WITH_BOOST_VALGRIND) list(APPEND b2 valgrind=on) endif() + if(WITH_ASAN) + list(APPEND b2 context-impl=ucontext) + endif() set(build_command ${b2} headers stage #"--buildid=ceph" # changes lib names--can omit for static @@ -147,23 +149,17 @@ function(do_build_boost root_dir version) check_boost_version("${PROJECT_SOURCE_DIR}/src/boost" ${version}) set(source_dir SOURCE_DIR "${PROJECT_SOURCE_DIR}/src/boost") - elseif(version VERSION_GREATER 1.75) + elseif(version VERSION_GREATER 1.79) message(FATAL_ERROR "Unknown BOOST_REQUESTED_VERSION: ${version}") else() message(STATUS "boost will be downloaded...") # NOTE: If you change this version number make sure the package is available # at the three URLs below (may involve uploading to download.ceph.com) - set(boost_version 1.75.0) - set(boost_sha256 953db31e016db7bb207f11432bef7df100516eeb746843fa0486a222e3fd49cb) + set(boost_version 1.79.0) + set(boost_sha256 475d589d51a7f8b3ba2ba4eda022b170e562ca3b760ee922c146b6c65856ef39) string(REPLACE "." "_" boost_version_underscore ${boost_version} ) - set(boost_url - https://boostorg.jfrog.io/artifactory/main/release/${boost_version}/source/boost_${boost_version_underscore}.tar.bz2) - if(CMAKE_VERSION VERSION_GREATER 3.7) - set(boost_url - "${boost_url} http://downloads.sourceforge.net/project/boost/boost/${boost_version}/boost_${boost_version_underscore}.tar.bz2") - set(boost_url - "${boost_url} https://download.ceph.com/qa/boost_${boost_version_underscore}.tar.bz2") - endif() + string(JOIN " " boost_url + https://download.ceph.com/qa/boost_${boost_version_underscore}.tar.bz2) set(source_dir URL ${boost_url} URL_HASH SHA256=${boost_sha256} @@ -238,6 +234,10 @@ macro(build_boost version) set_target_properties(Boost::${c} PROPERTIES INTERFACE_COMPILE_DEFINITIONS "BOOST_USE_VALGRIND") endif() + if((c MATCHES "context") AND (WITH_ASAN)) + set_target_properties(Boost::${c} PROPERTIES + INTERFACE_COMPILE_DEFINITIONS "BOOST_USE_ASAN;BOOST_USE_UCONTEXT") + endif() list(APPEND Boost_LIBRARIES ${Boost_${upper_c}_LIBRARY}) endforeach() foreach(c ${Boost_BUILD_COMPONENTS}) diff --git a/debian/.gitignore b/debian/.gitignore index 32ca866d7536d6..6ddcaf73ae868b 100644 --- a/debian/.gitignore +++ b/debian/.gitignore @@ -1,18 +1,11 @@ /*.substvars /*.debhelper.log -/ceph-common-dbg /ceph-common -/ceph-fuse-dbg /ceph-fuse -/ceph-fs-common-dbg /ceph-fs-common -/ceph-mds-dbg /ceph-mds -/ceph-mgr-dbg /ceph-mgr -/ceph-mon-dbg /ceph-mon -/ceph-osd-dbg /ceph-osd /ceph-resource-agents /ceph.init @@ -21,16 +14,12 @@ /*.debhelper /ceph /files -/libcephfs2-dbg /libcephfs-dev /libcephfs2 -/librados2-dbg /librados-dev /librados2 -/librbd1-dbg /librbd-dev /librbd1 -/radosgw-dbg /radosgw /python-ceph /python-rados diff --git a/debian/ceph-base.install b/debian/ceph-base.install index 80aadd909e81c9..23cc6cfc8c950d 100644 --- a/debian/ceph-base.install +++ b/debian/ceph-base.install @@ -1,19 +1,17 @@ etc/init.d/ceph lib/systemd/system/ceph-crash.service usr/bin/ceph-crash -usr/bin/ceph-debugpack usr/bin/ceph-run usr/bin/crushtool usr/bin/monmaptool usr/bin/osdmaptool usr/bin/ceph-kvstore-tool -usr/libexec/ceph/ceph_common.sh -usr/lib/ceph/erasure-code/* -usr/lib/rados-classes/* +usr/lib/ceph/ceph_common.sh +usr/lib/*/ceph/erasure-code/* +usr/lib/*/rados-classes/* usr/sbin/ceph-create-keys usr/share/doc/ceph/sample.ceph.conf usr/share/man/man8/ceph-create-keys.8 -usr/share/man/man8/ceph-debugpack.8 usr/share/man/man8/ceph-run.8 usr/share/man/man8/crushtool.8 usr/share/man/man8/monmaptool.8 diff --git a/debian/ceph-common.install b/debian/ceph-common.install index c3bc9dbaa4ee74..ebc11015c4ce03 100755 --- a/debian/ceph-common.install +++ b/debian/ceph-common.install @@ -23,9 +23,9 @@ usr/bin/rbdmap usr/bin/rbd-replay* usr/bin/ceph-post-file usr/sbin/mount.ceph sbin -usr/lib/ceph/compressor/* -usr/lib/ceph/denc/* -usr/lib/ceph/crypto/* [amd64] +usr/lib/*/ceph/compressor/* +usr/lib/*/ceph/denc/* +usr/lib/*/ceph/crypto/* [amd64] usr/share/man/man8/ceph-authtool.8 usr/share/man/man8/ceph-conf.8 usr/share/man/man8/ceph-dencoder.8 diff --git a/debian/ceph-osd.install b/debian/ceph-osd.install index 2a8ac886338dc4..149c028d8fa03b 100755 --- a/debian/ceph-osd.install +++ b/debian/ceph-osd.install @@ -6,12 +6,8 @@ usr/bin/ceph-clsinfo usr/bin/ceph-erasure-code-tool usr/bin/ceph-objectstore-tool usr/bin/ceph-osdomap-tool - usr/bin/crimson-store-nbd -usr/bin/${CEPH_OSD_BASENAME} => /usr/bin/ceph-osd -usr/bin/ceph_objectstore_bench -usr/libexec/ceph/ceph-osd-prestart.sh -usr/lib/libos_tp.so* -usr/lib/libosd_tp.so* +usr/bin/ceph-osd +usr/lib/ceph/ceph-osd-prestart.sh usr/share/man/man8/ceph-clsinfo.8 usr/share/man/man8/ceph-osd.8 usr/share/man/man8/ceph-bluestore-tool.8 diff --git a/debian/ceph-test.install b/debian/ceph-test.install deleted file mode 100644 index aeab6fac3d9678..00000000000000 --- a/debian/ceph-test.install +++ /dev/null @@ -1,20 +0,0 @@ -usr/bin/ceph-client-debug -usr/bin/ceph-coverage -usr/bin/ceph_bench_log -usr/bin/ceph_erasure_code_benchmark -usr/bin/ceph_multi_stress_watch -usr/bin/ceph_omapbench -usr/bin/ceph_perf_local -usr/bin/ceph_perf_msgr_client -usr/bin/ceph_perf_msgr_server -usr/bin/ceph_perf_objectstore -usr/bin/ceph_psim -usr/bin/ceph_radosacl -usr/bin/ceph_rgw_jsonparser -usr/bin/ceph_rgw_multiparser -usr/bin/ceph_scratchtool -usr/bin/ceph_scratchtoolpp -usr/bin/ceph_test_* -usr/bin/ceph-dedup-tool -usr/lib/ceph/ceph-monstore-update-crush.sh -usr/share/java/libcephfs-test.jar diff --git a/debian/ceph-volume.install b/debian/ceph-volume.install index b43f08ae828141..afa0418c08ba44 100644 --- a/debian/ceph-volume.install +++ b/debian/ceph-volume.install @@ -1,6 +1,6 @@ lib/systemd/system/ceph-volume@.service -usr/lib/python*/dist-packages/ceph_volume/* -usr/lib/python*/dist-packages/ceph_volume-* +usr/lib/python*/*-packages/ceph_volume/* +usr/lib/python*/*-packages/ceph_volume-* usr/sbin/ceph-volume usr/sbin/ceph-volume-systemd usr/share/man/man8/ceph-volume.8 diff --git a/debian/cephfs-shell.install b/debian/cephfs-shell.install index ee9e1399ff8081..8b68733c60de5c 100644 --- a/debian/cephfs-shell.install +++ b/debian/cephfs-shell.install @@ -1,3 +1,3 @@ usr/bin/cephfs-shell -usr/lib/python3*/dist-packages/cephfs_shell-*.egg-info +usr/lib/python*/*-packages/cephfs_shell-*.egg-info usr/share/man/man8/cephfs-shell.8 diff --git a/debian/cephfs-top.install b/debian/cephfs-top.install index 930396b0c68f3b..34b180628009b5 100644 --- a/debian/cephfs-top.install +++ b/debian/cephfs-top.install @@ -1,2 +1,2 @@ usr/bin/cephfs-top -usr/lib/python3*/dist-packages/cephfs_top-*.egg-info +usr/lib/python*/*-packages/cephfs_top-*.egg-info diff --git a/debian/changelog b/debian/changelog index 6a3119fc4552a5..cfc39b9ec65dbf 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,823 +1,5 @@ -ceph (17.2.7-1) stable; urgency=medium +ceph (100:17.2.7-1) UNRELEASED; urgency=medium - * New upstream release + * https://github.com/ceph/ceph/releases/tag/v17.2.7 - -- Ceph Release Team Wed, 25 Oct 2023 23:46:13 +0000 - -ceph (17.2.6-1) stable; urgency=medium - - * New upstream release - - -- Ceph Release Team Wed, 05 Apr 2023 15:09:49 +0000 - -ceph (17.2.5-1) stable; urgency=medium - - * New upstream release - - -- Ceph Release Team Mon, 17 Oct 2022 20:07:27 +0000 - -ceph (17.2.4-1) stable; urgency=medium - - * New upstream release - - -- Ceph Release Team Wed, 28 Sep 2022 22:55:56 +0000 - -ceph (17.2.3-1) stable; urgency=medium - - * New upstream release - - -- Ceph Release Team Thu, 28 Jul 2022 21:52:09 +0000 - -ceph (17.2.2-1) stable; urgency=medium - - * New upstream release - - -- Ceph Release Team Thu, 21 Jul 2022 17:29:31 +0000 - -ceph (17.2.1-1) stable; urgency=medium - - * New upstream release - - -- Ceph Release Team Thu, 23 Jun 2022 14:41:32 +0000 - -ceph (17.2.0-1) stable; urgency=medium - - * New upstream release - - -- Ceph Release Team Mon, 18 Apr 2022 22:08:25 +0000 - -ceph (17.1.0-1) stable; urgency=medium - - * New upstream release - - -- Ceph Release Team Thu, 24 Feb 2022 23:06:32 +0000 - -ceph (15.2.0-1) stable; urgency=medium - - * New upstream release - - -- Ceph Release Team Mon, 23 Mar 2020 17:47:44 +0000 - -ceph (15.1.1-1) stable; urgency=medium - - * New upstream release - - -- Ceph Release Team Fri, 13 Mar 2020 17:05:36 +0000 - -ceph (15.1.0-1) stable; urgency=medium - - * New upstream release - - -- Ceph Release Team Wed, 29 Jan 2020 22:10:22 +0000 - -ceph (14.2.0-1) stable; urgency=medium - - * New upstream release - - -- Ceph Release Team Mon, 18 Mar 2019 10:08:27 +0000 - -ceph (14.1.1-1) stable; urgency=medium - - * New upstream release - - -- Ceph Release Team Mon, 11 Mar 2019 16:42:54 +0000 - -ceph (14.1.0-1) stable; urgency=medium - - * New upstream release - - -- Ceph Release Team Fri, 22 Feb 2019 18:07:06 +0000 - -ceph (13.1.0-1) stable; urgency=medium - - * New upstream release - - -- Ceph Release Team Thu, 03 May 2018 17:57:32 +0000 - -ceph (12.1.2-1) stable; urgency=medium - - * New upstream release - - -- Ceph Release Team Tue, 01 Aug 2017 17:55:37 +0000 - -ceph (12.1.1-1) stable; urgency=medium - - * New upstream release - - -- Ceph Release Team Mon, 17 Jul 2017 16:55:59 +0000 - -ceph (12.1.0-1) stable; urgency=medium - - * New upstream release - - -- Ceph Release Team Thu, 22 Jun 2017 15:43:47 +0000 - -ceph (12.0.3-1) stable; urgency=medium - - * New upstream release - - -- Ceph Release Team Tue, 16 May 2017 12:42:53 +0000 - -ceph (12.0.2-1) stable; urgency=medium - - * New upstream release - - -- Ceph Release Team Thu, 20 Apr 2017 19:59:57 +0000 - -ceph (12.0.1-1) stable; urgency=medium - - * New upstream release - - -- Ceph Release Team Fri, 24 Mar 2017 15:47:57 +0000 - -ceph (12.0.0-1) stable; urgency=medium - - * New upstream release - - -- Ceph Release Team Wed, 08 Feb 2017 13:57:30 +0000 - -ceph (11.1.0-1) stable; urgency=medium - - * New upstream release - - -- Alfredo Deza Mon, 12 Dec 2016 18:27:51 +0000 - -ceph (11.0.2-1) stable; urgency=medium - - * New upstream release - - -- Alfredo Deza Mon, 17 Oct 2016 11:16:49 +0000 - -ceph (11.0.1-1) stable; urgency=medium - - * New upstream release - - -- Alfredo Deza Tue, 11 Oct 2016 16:27:56 +0000 - -ceph (11.0.0-1) stable; urgency=low - - * New upstream release - - -- Sage Weil Tue, 28 Jun 2016 11:41:16 -0400 - -ceph (10.2.0-1) stable; urgency=medium - - * New upstream release - - -- Alfredo Deza Wed, 20 Apr 2016 11:29:47 +0000 - -ceph (10.1.2-1) stable; urgency=medium - - * New upstream release - - -- Alfredo Deza Tue, 12 Apr 2016 17:42:55 +0000 - -ceph (10.1.1-1) stable; urgency=medium - - * New upstream release - - -- Alfredo Deza Wed, 06 Apr 2016 00:45:18 +0000 - -ceph (10.1.0-1) stable; urgency=medium - - * New upstream release - - -- Alfredo Deza Thu, 24 Mar 2016 10:53:47 +0000 - -ceph (10.0.5) stable; urgency=low - - * New upstream release (just fixing changelog) - - -- Sage Weil Fri, 11 Mar 2016 12:04:26 -0500 - -ceph (10.0.4) stable; urgency=low - - * New upstream release - - -- Sage Weil Thu, 03 Mar 2016 13:34:18 -0500 - -ceph (10.0.3) stable; urgency=low - - * New upstream release - - -- Sage Weil Mon, 08 Feb 2016 17:10:25 -0500 - -ceph (10.0.2-1) stable; urgency=low - - * New upstream release - - -- Alfredo Deza Wed, 13 Jan 2016 16:22:26 +0000 - -ceph (10.0.1-1) stable; urgency=low - - * New upstream release - - -- Alfredo Deza Mon, 14 Dec 2015 23:48:54 +0000 - -ceph (10.0.0-1) stable; urgency=low - - * New upstream release - - -- Alfredo Deza Mon, 16 Nov 2015 21:41:53 +0000 - -ceph (9.2.0-1) stable; urgency=low - - * New upstream release - - -- Jenkins Build Slave User Tue, 03 Nov 2015 16:58:32 +0000 - -ceph (9.1.0-1) stable; urgency=low - - * New upstream release - - -- Alfredo Deza Tue, 13 Oct 2015 05:56:36 -0700 - -ceph (9.0.3-1) stable; urgency=low - - * New upstream release - - -- Alfredo Deza Fri, 21 Aug 2015 12:46:31 -0700 - -ceph (9.0.2-1) stable; urgency=low - - * New upstream release - - -- Alfredo Deza Tue, 14 Jul 2015 13:10:31 -0700 - -ceph (9.0.1-1) stable; urgency=low - - * New upstream release - - -- Alfredo Deza Fri, 05 Jun 2015 10:59:02 -0700 - -ceph (9.0.0-1) stable; urgency=low - - * New upstream release - - -- Alfredo Deza Mon, 04 May 2015 12:32:58 -0700 - -ceph (0.94-1) stable; urgency=low - - * New upstream release - - -- Alfredo Deza Tue, 07 Apr 2015 10:05:40 -0700 - -ceph (0.93-1) stable; urgency=low - - * New upstream release - - -- Alfredo Deza Fri, 27 Feb 2015 09:52:53 -0800 - -ceph (0.92-1) stable; urgency=low - - * New upstream release - - -- Alfredo Deza Mon, 02 Feb 2015 10:35:27 -0800 - -ceph (0.91-1) stable; urgency=low - - * New upstream release - - -- Alfredo Deza Tue, 13 Jan 2015 12:10:22 -0800 - -ceph (0.90-1) stable; urgency=low - - * New upstream release - - -- Alfredo Deza Fri, 19 Dec 2014 06:56:22 -0800 - -ceph (0.89-1) stable; urgency=low - - * New upstream release - - -- Alfredo Deza Wed, 03 Dec 2014 08:18:33 -0800 - -ceph (0.88-1) stable; urgency=low - - * New upstream release - - -- Alfredo Deza Tue, 11 Nov 2014 09:33:12 -0800 - -ceph (0.87-1) stable; urgency=low - - * New upstream release - - -- Alfredo Deza Wed, 29 Oct 2014 11:03:55 -0700 - -ceph (0.86-1) stable; urgency=low - - * New upstream release - - -- Alfredo Deza Tue, 07 Oct 2014 06:20:21 -0700 - -ceph (0.85-1) stable; urgency=low - - * Development release - - -- Alfredo Deza Mon, 08 Sep 2014 06:31:31 -0700 - -ceph (0.84-1) stable; urgency=low - - * Development release - - -- Alfredo Deza Mon, 18 Aug 2014 09:02:20 -0700 - -ceph (0.83-1) stable; urgency=low - - * Development release - - -- Alfredo Deza Tue, 29 Jul 2014 13:42:53 -0700 - -ceph (0.82-1) stable; urgency=low - - * Development release - - -- Alfredo Deza Wed, 25 Jun 2014 16:47:51 +0000 - -ceph (0.81-1) stable; urgency=low - - * Development release - - -- Alfredo Deza Mon, 02 Jun 2014 18:37:27 +0000 - -ceph (0.80-1) stable; urgency=low - - * New upstream release - - -- Alfredo Deza Tue, 06 May 2014 14:03:27 +0000 - -ceph (0.80-rc1-1) stable; urgency=low - - * New upstream release - - -- Alfredo Deza Tue, 22 Apr 2014 21:21:44 +0000 - -ceph (0.79-1) stable; urgency=low - - * New upstream release - - -- Alfredo Deza Mon, 07 Apr 2014 16:48:36 +0000 - -ceph (0.78-1) stable; urgency=low - - * New upstream release - - -- Alfredo Deza Fri, 21 Mar 2014 22:05:12 +0000 - -ceph (0.77-1) stable; urgency=low - - * New upstream release - - -- Ken Dreyer Wed, 19 Feb 2014 22:54:06 +0000 - -ceph (0.76-1) stable; urgency=low - - * New upstream release - - -- Ken Dreyer Mon, 03 Feb 2014 18:14:59 +0000 - -ceph (0.75-1) stable; urgency=low - - * New upstream release - - -- Ken Dreyer Mon, 13 Jan 2014 21:05:07 +0000 - -ceph (0.74-1) stable; urgency=low - - * New upstream release - - -- Gary Lowell Mon, 30 Dec 2013 21:02:35 +0000 - -ceph (0.73-1) precise; urgency=low - - * New upstream release - - -- Gary Lowell Tue, 10 Dec 2013 04:55:06 +0000 - -ceph (0.72-1) stable; urgency=low - - * New upstream release - - -- Gary Lowell Thu, 07 Nov 2013 20:25:18 +0000 - -ceph (0.72-rc1-1) stable; urgency=low - - * New upstream release - - -- Gary Lowell Wed, 30 Oct 2013 00:44:25 +0000 - -ceph (0.71-1) stable; urgency=low - - * New upstream release - - -- Gary Lowell Thu, 17 Oct 2013 09:19:02 +0000 - -ceph (0.70-1) stable; urgency=low - - * New upstream release - - -- Gary Lowell Fri, 04 Oct 2013 20:11:51 +0000 - -ceph (0.69-1) precise; urgency=low - - * New upstream release - - -- Gary Lowell Wed, 18 Sep 2013 01:39:47 +0000 - -ceph (0.68-1) precise; urgency=low - - * New upstream release - - -- Gary Lowell Tue, 03 Sep 2013 16:10:11 -0700 - -ceph (0.67-1) precise; urgency=low - - * New upstream release - - -- Gary Lowell Tue, 13 Aug 2013 10:44:30 -0700 - -ceph (0.67-rc3-1) precise; urgency=low - - * New upstream release - - -- Gary Lowell Tue, 30 Jul 2013 14:37:40 -0700 - -ceph (0.67-rc2-1) precise; urgency=low - - * New upstream release - - -- Gary Lowell Wed, 24 Jul 2013 16:18:33 -0700 - -ceph (0.67-rc1-1) precise; urgency=low - - * New upstream release - - -- Gary Lowell Mon, 22 Jul 2013 11:57:01 -0700 - -ceph (0.66-1) precise; urgency=low - - * New upstream release - - -- Gary Lowell Mon, 08 Jul 2013 15:44:45 -0700 - -ceph (0.65-1) precise; urgency=low - - * New upstream release - - -- Gary Lowell Tue, 25 Jun 2013 09:19:14 -0700 - -ceph (0.64-1) precise; urgency=low - - * New upstream release - - -- Gary Lowell Wed, 12 Jun 2013 09:53:54 -0700 - -ceph (0.63-1) precise; urgency=low - - * New upstream release - - -- Gary Lowell Tue, 28 May 2013 13:57:53 -0700 - -ceph (0.62) precise; urgency=low - - * New upstream release - - -- Gary Lowell Tue, 14 May 2013 09:08:21 -0700 - -ceph (0.61-1) precise; urgency=low - - * New upstream release - - -- Gary Lowell Mon, 06 May 2013 13:18:43 -0700 - -ceph (0.60-1) precise; urgency=low - - * New upstream release - - -- Gary Lowell Mon, 01 Apr 2013 12:22:30 -0700 - -ceph (0.59-1) precise; urgency=low - - * New upstream release - - -- Gary Lowell Tue, 19 Mar 2013 22:26:37 -0700 - -ceph (0.58-1) precise; urgency=low - - * New upstream release - - -- Gary Lowell Mon, 04 Mar 2013 15:17:58 -0800 - -ceph (0.57-1) quantal; urgency=low - - * New upstream release - - -- Gary Lowell Tue, 19 Feb 2013 10:06:39 -0800 - -ceph (0.56-1) quantal; urgency=low - - * New upstream release - - -- Gary Lowell Mon, 31 Dec 2012 17:08:45 -0800 - -ceph (0.55.1-1) precise; urgency=low - - * New upstream release - - -- Gary Lowell Wed, 12 Dec 2012 16:24:13 -0800 - -ceph (0.55-1) precise; urgency=low - - * New upstream release - - -- Gary Lowell Mon, 03 Dec 2012 19:08:14 -0800 - -ceph (0.54-1) precise; urgency=low - - * New upstream release - - -- Gary Lowell Tue, 13 Nov 2012 13:17:19 -0800 - -ceph (0.53-1) precise; urgency=low - - * New upstream release - - -- Gary Lowell Tue, 16 Oct 2012 17:40:46 +0000 - -ceph (0.52-1) precise; urgency=low - - * New upstream release - - -- Ubuntu Thu, 27 Sep 2012 16:16:52 +0000 - -ceph (0.51-1) experimental; urgency=low - - * New upstream release - - -- Sage Weil Sat, 25 Aug 2012 15:58:23 -0700 - -ceph (0.50-1) experimental; urgency=low - - * New upstream release - - -- Sage Weil Mon, 13 Aug 2012 09:44:40 -0700 - -ceph (0.49-1) experimental; urgency=low - - * New upstream release - - -- Sage Weil Fri, 20 Jul 2012 23:26:43 -0700 - -ceph (0.48argonaut-1) experimental; urgency=low - - * New upstream release - - -- Sage Weil Sat, 30 Jun 2012 14:49:30 -0700 - -ceph (0.47.3-1) experimental; urgency=low - - * New upstream release - - -- Sage Weil Wed, 20 Jun 2012 10:57:03 -0700 - -ceph (0.47.2-1) experimental; urgency=low - - * New upstream release - - -- Sage Weil Wed, 23 May 2012 09:00:43 -0700 - -ceph (0.47.1-1) experimental; urgency=low - - * New upstream release - - -- Sage Weil Mon, 21 May 2012 14:28:30 -0700 - -ceph (0.47-1) experimental; urgency=low - - * New upstream release - - -- Sage Weil Sun, 20 May 2012 15:16:03 -0700 - -ceph (0.46-1) experimental; urgency=low - - * New upstream release - - -- Sage Weil Sun, 29 Apr 2012 21:21:01 -0700 - -ceph (0.45-1) experimental; urgency=low - - * New upstream release - - -- Sage Weil Tue, 10 Apr 2012 10:41:57 -0700 - -ceph (0.44.2-1) experimental; urgency=low - - * New upstream release - - -- Sage Weil Thu, 05 Apr 2012 14:54:17 -0700 - -ceph (0.44.1-1) experimental; urgency=low - - * New upstream release - - -- Sage Weil Tue, 27 Mar 2012 13:02:00 -0700 - -ceph (0.44-1) experimental; urgency=low - - * New upstream release - - -- Sage Weil Sun, 18 Mar 2012 12:03:38 -0700 - -ceph (0.43-1) experimental; urgency=low - - * New upstream release - - -- Sage Weil Fri, 02 Mar 2012 08:53:10 -0800 - -ceph (0.42.2-1) experimental; urgency=low - - * New upstream release - - -- Sage Weil Fri, 24 Feb 2012 12:59:38 -0800 - -ceph (0.42.1-1) experimental; urgency=low - - * New upstream release - - -- Sage Weil Thu, 23 Feb 2012 18:46:23 -0800 - -ceph (0.42-1) experimental; urgency=low - - * New upstream release - - -- Sage Weil Sun, 19 Feb 2012 15:30:20 -0800 - -ceph (0.41-1) experimental; urgency=low - - * New upstream release - - -- Sage Weil Fri, 27 Jan 2012 10:42:11 -0800 - -ceph (0.40-1) experimental; urgency=low - - * New upstream release - - -- Sage Weil Fri, 13 Jan 2012 08:36:02 -0800 - -ceph (0.39-1) experimental; urgency=low - - * New upstream release - - -- Sage Weil Fri, 02 Dec 2011 09:01:20 -0800 - -ceph (0.38-1) experimental; urgency=low - - * New upstream release - - -- Sage Weil Thu, 10 Nov 2011 15:06:44 -0800 - -ceph (0.37-1) experimental; urgency=low - - * New upstream release - - -- Sage Weil Mon, 17 Oct 2011 08:35:42 -0700 - -ceph (0.36-1) experimental; urgency=low - - * New upstream release - - -- Sage Weil Fri, 30 Sep 2011 09:29:29 -0700 - -ceph (0.35-1) experimental; urgency=low - - * New upstream release - - -- Sage Weil Wed, 21 Sep 2011 09:36:03 -0700 - -ceph (0.34-1) experimental; urgency=low - - * New upstream release - - -- Sage Weil Fri, 26 Aug 2011 21:48:35 -0700 - -ceph (0.33-1) experimental; urgency=low - - * New upstream release. - - -- Sage Weil Mon, 15 Aug 2011 16:42:07 -0700 - -ceph (0.32-1) experimental; urgency=low - - * New upstream release - - -- Sage Weil Fri, 29 Jul 2011 21:42:08 -0700 - -ceph (0.30-1) experimental; urgency=low - - * New upstream release - - -- Sage Weil Mon, 27 Jun 2011 20:06:06 -0700 - -ceph (0.29.1-1) experimental; urgency=low - - * New upstream release - - -- Sage Weil Thu, 16 Jun 2011 13:10:47 -0700 - -ceph (0.29-1) experimental; urgency=low - - * New upstream release - - -- Sage Weil Mon, 06 Jun 2011 09:59:25 -0700 - -ceph (0.28.2-1) experimental; urgency=low - - * New upstream release. - - -- Sage Weil Sat, 28 May 2011 09:14:17 -0700 - -ceph (0.28.1-1) experimental; urgency=low - - * New upstream release. - - -- Sage Weil Mon, 23 May 2011 21:11:30 -0700 - -ceph (0.28-1) experimental; urgency=low - - * New upstream release. - - -- Sage Weil Tue, 17 May 2011 18:03:11 -0700 - -ceph (0.27.1-1) experimental; urgency=low - - * New upstream release. - - -- Sage Weil Thu, 05 May 2011 13:42:06 -0700 - -ceph (0.27-1) experimental; urgency=low - - * New upstream release. - - -- Sage Weil Fri, 22 Apr 2011 16:51:49 -0700 - -ceph (0.26-1) experimental; urgency=low - - * New upstream release. - * Make Ceph Linux only and build on all Linux archs (closes: #614890), - but only build-depend google-perftools on x86 and x64 archs only. - * Correct section of libcrush1, librados1, librbd1 and libceph1 to libs. - * Make Ceph cross buildable (closes: #618939), thanks to Hector Oron. - * Disable libatomic-ops on ARMv4t (armel) archs to prevent FTBFS - (closes: #615235), thanks go to Hector Oron again. - * Rename librados1{,-dbg,-dev} packages to librados2{,-dbg,-dev} ones; - conflict with and replace the former ones. - - -- Laszlo Boszormenyi (GCS) Fri, 01 Apr 2011 16:28:11 +0100 - -ceph (0.25.2-1) experimental; urgency=low - - * New upstream release - - -- Sage Weil Sun, 20 Mar 2011 21:07:38 -0700 - -ceph (0.25.1-1) experimental; urgency=low - - * New upstream release - - -- Sage Weil Mon, 14 Mar 2011 14:43:47 -0700 - -ceph (0.25-1) experimental; urgency=low - - * New upstream release - - -- Sage Weil Fri, 04 Mar 2011 14:39:54 -0800 - -ceph (0.24.3-1) experimental; urgency=low - - * New upstream release - - -- Sage Weil Thu, 10 Feb 2011 09:14:00 -0800 - -ceph (0.24.2-1) experimental; urgency=low - - * New upstream release. - - -- Sage Weil Mon, 24 Jan 2011 11:02:24 -0800 - -ceph (0.24.1-1) experimental; urgency=low - - * New upstream release. - - -- Sage Weil Fri, 07 Jan 2011 16:49:48 -0800 - -ceph (0.24-1) experimental; urgency=low - - * New upstream release. - - -- Laszlo Boszormenyi (GCS) Wed, 01 Dec 2010 09:26:25 -0800 - -ceph (0.23.1-1) experimental; urgency=low - - * Initial release (Closes: #506040) - - -- Sage Weil Sun, 21 Nov 2010 15:22:21 -0800 + -- Wong Hoi Sing Edison Sat, 28 Oct 2023 18:19:18 +0800 diff --git a/debian/compat b/debian/compat deleted file mode 100644 index ec635144f60048..00000000000000 --- a/debian/compat +++ /dev/null @@ -1 +0,0 @@ -9 diff --git a/debian/control b/debian/control index bc5ac8dd014aee..63a74a802ade2f 100644 --- a/debian/control +++ b/debian/control @@ -1,127 +1,94 @@ Source: ceph Section: admin Priority: optional -Homepage: http://ceph.com/ +Homepage: https://github.com/ceph/ceph/tags Vcs-Git: git://github.com/ceph/ceph.git Vcs-Browser: https://github.com/ceph/ceph Maintainer: Ceph Maintainers Uploaders: Ken Dreyer , Alfredo Deza , -Build-Depends: automake, - bison , - cmake (>= 3.10.2), - cpio, - cython3, - debhelper (>= 10), - default-jdk, - dh-exec, - dh-python, - flex , - git, - golang, - gperf, - g++ (>= 7), - hostname , - javahelper, - jq , - jsonnet , - junit4, - libarrow-dev , - libparquet-dev , - libaio-dev, - libbabeltrace-ctf-dev, - libbabeltrace-dev, - libblkid-dev (>= 2.17), - libc-ares-dev , - libcrypto++-dev , - libcryptsetup-dev, - libcap-ng-dev, - libcunit1-dev, - libcurl4-openssl-dev, - libevent-dev , - libexpat1-dev, - libffi-dev [!amd64] , - libfmt-dev (>= 6.1.2), - libfuse-dev, - libgoogle-perftools-dev [i386 amd64 arm64], - libgnutls28-dev , - libhwloc-dev , - libibverbs-dev, - libicu-dev, - librdmacm-dev, - libkeyutils-dev, - libldap2-dev, - liblttng-ust-dev, - liblua5.3-dev, - liblz4-dev (>= 0.0~r131), - libncurses-dev, - libnss3-dev, - liboath-dev, - libnuma-dev , - libpciaccess-dev , - libsctp-dev , - libsnappy-dev, - libsqlite3-dev, - libssl-dev, - libtool, - libudev-dev, - libnl-genl-3-dev, - libxml2-dev, - librabbitmq-dev, - libre2-dev, - libutf8proc-dev (>= 2.2.0), - librdkafka-dev, - luarocks, - libthrift-dev (>= 0.13.0), - libyaml-cpp-dev (>= 0.6) , - libzstd-dev , - libxmlsec1 , - libxmlsec1-nss , - libxmlsec1-openssl , - libxmlsec1-dev , - ninja-build, - nlohmann-json3-dev , - patch, - pkg-config, - prometheus , - python3-all-dev, - python3-cherrypy3, - python3-natsort, - python3-jwt , - python3-pecan , - python3-bcrypt , - tox , - python3-coverage , - python3-dateutil , - python3-pkg-resources , - python3-openssl , - python3-prettytable , - python3-requests , - python3-scipy , - python3-setuptools, - python3-sphinx, - python3-venv, - python3-werkzeug , - python3-yaml, - ragel , - socat , - systemd, - systemtap-sdt-dev , - uuid-dev , - uuid-runtime, - valgrind, - xfslibs-dev, - xmlstarlet , - nasm [amd64], - zlib1g-dev, -Standards-Version: 4.4.0 +Build-Depends: + ccache, + cmake, + cpio, + cython0, + debhelper, + debhelper-compat (= 10), + default-jdk, + dh-exec, + dh-python, + dpkg-dev (>= 1.16.1~), + g++-13 | g++-12 | g++-11 | g++-10 | g++-9 | g++-8 (>= 8.1), + gcc-13 | gcc-12 | gcc-11 | gcc-10 | gcc-9 | gcc-8 (>= 8.1), + git, + gperf, + javahelper, + junit4, + libaio-dev, + libbabeltrace-ctf-dev, + libbabeltrace-dev, + libblkid-dev (>= 2.17), + libbz2-dev, + libcap-ng-dev, + libcryptsetup-dev, + libcunit1-dev, + libcurl4-gnutls-dev, + libexpat1-dev, + libfuse3-dev, + libgoogle-perftools-dev [i386 amd64 arm64], + libibverbs-dev, + libicu-dev, + libkeyutils-dev, + libldap2-dev, + libleveldb-dev, + liblttng-ust-dev, + liblua5.3-dev, + liblz4-dev (>= 0.0~r131), + libncurses-dev, + libnl-genl-3-dev, + libnss3-dev, + liboath-dev, + libpmem-dev (>= 1.10) [amd64], + libpmemobj-dev [amd64], + libprotobuf-dev, + librabbitmq-dev, + librdmacm-dev, + libsnappy-dev, + libsqlite3-dev, + libssl-dev, + libtool, + libudev-dev, + libunwind-dev, + libxml2-dev, + libzstd-dev, + lsb-release, + luarocks, + nasm [amd64], + ninja-build, + patch, + pkg-config, + protobuf-compiler, + python3-cherrypy3, + python3-dev, + python3-natsort, + python3-setuptools, + python3-sphinx, + python3-venv, + python3-yaml, + reprepro, + systemd, + uuid-runtime, + valgrind, + virtualenv, + xfslibs-dev, + zlib1g-dev, +Standards-Version: 4.5.0 Package: ceph Architecture: linux-any -Depends: ceph-mgr (= ${binary:Version}), - ceph-mon (= ${binary:Version}), - ceph-osd (= ${binary:Version}), -Recommends: ceph-mds (= ${binary:Version}), +Depends: ceph-mgr (>= ${binary:Version}), + ceph-mon (>= ${binary:Version}), + ceph-osd (>= ${binary:Version}), Description: distributed storage and file system Ceph is a massively scalable, open-source, distributed storage system that runs on commodity hardware and delivers object, @@ -130,24 +97,19 @@ Description: distributed storage and file system Package: ceph-base Architecture: linux-any Depends: binutils, - ceph-common (= ${binary:Version}), + ceph-common (>= ${binary:Version}), + cryptsetup-bin | cryptsetup, debianutils, + e2fsprogs, findutils, grep, logrotate, parted, psmisc, + xfsprogs, ${misc:Depends}, ${python:Depends}, ${shlibs:Depends}, -Recommends: btrfs-tools, - ceph-mds (= ${binary:Version}), - librados2 (= ${binary:Version}), - libradosstriper1 (= ${binary:Version}), - librbd1 (= ${binary:Version}), - ntp | time-daemon, - nvme-cli, - smartmontools, Replaces: ceph (<< 10), ceph-common (<< 0.78-500), ceph-test (<< 12.2.2-14), @@ -164,28 +126,10 @@ Description: common ceph daemon libraries and management tools the Ceph server daemons (ceph-mon, ceph-mgr, ceph-osd, ceph-mds). These tools are necessary for creating, running, and administering a Ceph storage cluster. -Package: ceph-base-dbg -Architecture: linux-any -Section: debug -Priority: extra -Depends: ceph-base (= ${binary:Version}), - ${misc:Depends}, -Description: debugging symbols for ceph-base - Ceph is a massively scalable, open-source, distributed - storage system that runs on commodity hardware and delivers object, - block and file system storage. - . - This package contains the libraries and management tools that are common among - the Ceph server daemons (ceph-mon, ceph-mgr, ceph-osd, ceph-mds). These tools - are necessary for creating, running, and administering a Ceph storage cluster. - . - This package contains the debugging symbols for ceph-base. - Package: cephadm Architecture: linux-any -Recommends: podman (>= 2.0.2) | docker.io Depends: lvm2, - ${python:Depends}, + ${python:Depends}, Description: cephadm utility to bootstrap ceph daemons with systemd and containers Ceph is a massively scalable, open-source, distributed storage system that runs on commodity hardware and delivers object, @@ -196,11 +140,9 @@ Description: cephadm utility to bootstrap ceph daemons with systemd and containe Package: ceph-mds Architecture: linux-any -Depends: ceph-base (= ${binary:Version}), +Depends: ceph-base (>= ${binary:Version}), ${misc:Depends}, ${shlibs:Depends}, -Recommends: ceph-fuse (= ${binary:Version}), - libcephfs2 (= ${binary:Version}), Replaces: ceph (<< 0.93-417), Breaks: ceph (<< 0.93-417), Description: metadata server for the ceph distributed file system @@ -211,23 +153,10 @@ Description: metadata server for the ceph distributed file system This package contains the metadata server daemon, which is used to create a distributed file system on top of the ceph storage cluster. -Package: ceph-mds-dbg -Architecture: linux-any -Section: debug -Priority: extra -Depends: ceph-mds (= ${binary:Version}), - ${misc:Depends}, -Description: debugging symbols for ceph-mds - Ceph is a massively scalable, open-source, distributed - storage system that runs on commodity hardware and delivers object, - block and file system storage. - . - This package contains the debugging symbols for ceph-mds. - Package: ceph-mgr Architecture: linux-any -Depends: ceph-base (= ${binary:Version}), - ceph-mgr-modules-core (= ${binary:Version}), +Depends: ceph-base (>= ${binary:Version}), + ceph-mgr-modules-core (>= ${binary:Version}), python3-bcrypt, python3-cherrypy3, python3-natsort, @@ -237,16 +166,12 @@ Depends: ceph-base (= ${binary:Version}), python3-pecan, python3-requests, python3-werkzeug, - libsqlite3-mod-ceph (= ${binary:Version}), - librados2 (= ${binary:Version}), + libsqlite3-mod-ceph (>= ${binary:Version}), + librados2 (>= ${binary:Version}), ${misc:Depends}, ${python:Depends}, ${shlibs:Depends}, -Recommends: ceph-mgr-dashboard, - ceph-mgr-diskprediction-local, - ceph-mgr-k8sevents, - ceph-mgr-cephadm -Suggests: python3-influxdb +Suggests: python3-influxdb, Replaces: ceph (<< 0.93-417), Breaks: ceph (<< 0.93-417), Description: manager for the ceph distributed storage system @@ -259,7 +184,7 @@ Description: manager for the ceph distributed storage system Package: ceph-mgr-dashboard Architecture: all -Depends: ceph-mgr (= ${binary:Version}), +Depends: ceph-mgr (>= ${binary:Version}), python3-cherrypy3, python3-jwt, python3-bcrypt, @@ -283,7 +208,7 @@ Description: dashboard module for ceph-mgr Package: ceph-mgr-diskprediction-local Architecture: all -Depends: ceph-mgr (= ${binary:Version}), +Depends: ceph-mgr (>= ${binary:Version}), python3-numpy, python3-scipy, python3-sklearn, @@ -317,8 +242,8 @@ Description: ceph manager modules which are always enabled Package: ceph-mgr-rook Architecture: all -Depends: ceph-mgr (= ${binary:Version}), - python3-jsonpatch +Depends: ceph-mgr (>= ${binary:Version}), + python3-jsonpatch, ${misc:Depends}, ${python:Depends}, ${shlibs:Depends}, @@ -333,7 +258,7 @@ Description: rook module for ceph-mgr Package: ceph-mgr-k8sevents Architecture: all -Depends: ceph-mgr (= ${binary:Version}), +Depends: ceph-mgr (>= ${binary:Version}), python3-kubernetes, ${misc:Depends}, ${python:Depends}, @@ -348,14 +273,14 @@ Description: kubernetes events module for ceph-mgr Package: ceph-mgr-cephadm Architecture: all -Depends: ceph-mgr (= ${binary:Version}), - cephadm, +Depends: ceph-mgr (>= ${binary:Version}), + cephadm, ${misc:Depends}, ${python:Depends}, openssh-client, python3-jinja2, python3-cherrypy3, - python3-natsort + python3-natsort, Description: cephadm orchestrator module for ceph-mgr Ceph is a massively scalable, open-source, distributed storage system that runs on commodity hardware and delivers object, @@ -365,26 +290,15 @@ Description: cephadm orchestrator module for ceph-mgr functionality, to allow ceph-mgr to perform orchestration functions over a standard SSH connection. -Package: ceph-mgr-dbg -Architecture: linux-any -Section: debug -Priority: extra -Depends: ceph-mgr (= ${binary:Version}), - ${misc:Depends}, -Description: debugging symbols for ceph-mgr - Ceph is a massively scalable, open-source, distributed - storage system that runs on commodity hardware and delivers object, - block and file system storage. - . - This package contains the debugging symbols for ceph-mgr. - Package: ceph-mon Architecture: linux-any -Depends: ceph-base (= ${binary:Version}), +Depends: ceph-base (>= ${binary:Version}), ${misc:Depends}, ${shlibs:Depends}, -Replaces: ceph (<< 10), ceph-test (<< 12.2.2-14) -Breaks: ceph (<< 10), ceph-test (<< 12.2.2-14) +Replaces: ceph (<< 10), + ceph-test (<< 12.2.2-14), +Breaks: ceph (<< 10), + ceph-test (<< 12.2.2-14), Description: monitor server for the ceph storage system Ceph is a massively scalable, open-source, distributed storage system that runs on commodity hardware and delivers object, @@ -395,35 +309,20 @@ Description: monitor server for the ceph storage system cluster that provides extremely reliable and durable storage of cluster membership, configuration, and state. -Package: ceph-mon-dbg -Architecture: linux-any -Section: debug -Priority: extra -Depends: ceph-mon (= ${binary:Version}), - ${misc:Depends}, -Description: debugging symbols for ceph-mon - Ceph is a massively scalable, open-source, distributed - storage system that runs on commodity hardware and delivers object, - block and file system storage. - . - This package contains the debugging symbols for ceph-mon. - Package: ceph-osd Architecture: linux-any -Depends: ceph-base (= ${binary:Version}), +Depends: ceph-base (>= ${binary:Version}), + lvm2, sudo, ${misc:Depends}, ${python:Depends}, ${shlibs:Depends}, Replaces: ceph (<< 10), ceph-test (<< 12.2.2-14), - ceph-osd (<< 17.0.0) + ceph-osd (<< 17.0.0), Breaks: ceph (<< 10), ceph-test (<< 12.2.2-14), - ceph-osd (<< 17.0.0) -Recommends: ceph-volume (= ${binary:Version}), - nvme-cli, - smartmontools, + ceph-osd (<< 17.0.0), Description: OSD server for the ceph storage system Ceph is a massively scalable, open-source, distributed storage system that runs on commodity hardware and delivers object, @@ -433,31 +332,19 @@ Description: OSD server for the ceph storage system It is responsible for storing objects on a local file system and providing access to them over the network. -Package: ceph-osd-dbg -Architecture: linux-any -Section: debug -Priority: extra -Depends: ceph-osd (= ${binary:Version}), - ${misc:Depends}, -Description: debugging symbols for ceph-osd - Ceph is a massively scalable, open-source, distributed - storage system that runs on commodity hardware and delivers object, - block and file system storage. - . - This package contains the debugging symbols for ceph-osd. - Package: ceph-volume Architecture: all Section: python -Depends: ceph-osd (= ${binary:Version}), +Depends: ceph-osd (>= ${binary:Version}), cryptsetup-bin, e2fsprogs, lvm2, + numactl, parted, util-linux, xfsprogs, ${misc:Depends}, - ${python3:Depends} + ${python3:Depends}, Description: tool to facilidate OSD deployment Ceph is a massively scalable, open-source, distributed storage system that runs on commodity hardware and delivers object, @@ -486,26 +373,11 @@ Description: FUSE-based client for the Ceph distributed file system (insufficient privileges, older kernel, etc.), then the FUSE client will do. -Package: ceph-fuse-dbg -Architecture: linux-any -Section: debug -Priority: extra -Depends: ceph-fuse (= ${binary:Version}), - ${misc:Depends}, -Description: debugging symbols for ceph-fuse - Ceph is a massively scalable, open-source, distributed - storage system that runs on commodity hardware and delivers object, - block and file system storage. This is a - FUSE-based client that allows one to mount a Ceph file system without - root privileges. - . - This package contains the debugging symbols for ceph-fuse. - Package: cephfs-mirror Architecture: linux-any -Depends: ceph-common (= ${binary:Version}), - librados2 (= ${binary:Version}), - libcephfs2 (= ${binary:Version}), +Depends: ceph-common (>= ${binary:Version}), + librados2 (>= ${binary:Version}), + libcephfs2 (>= ${binary:Version}), ${misc:Depends}, ${shlibs:Depends}, Description: Ceph is a massively scalable, open-source, distributed @@ -513,23 +385,10 @@ Description: Ceph is a massively scalable, open-source, distributed block and file system storage. This is a daemon for mirroring CephFS directory snapshots between Ceph clusters. -Package: cephfs-mirror-dbg -Architecture: linux-any -Section: debug -Priority: extra -Depends: cephfs-mirror (= ${binary:Version}), - ${misc:Depends} -Description: debugging symbols for cephfs-mirror - Ceph is a massively scalable, open-source, distributed - storage system that runs on commodity hardware and delivers object, - block and file system storage. This is a daemon for mirroring CephFS - directory snapshots between Ceph clusters. - Package: rbd-fuse Architecture: linux-any Depends: ${misc:Depends}, ${shlibs:Depends}, -Recommends: fuse, Description: FUSE-based rbd client for the Ceph distributed file system Ceph is a massively scalable, open-source, distributed storage system that runs on commodity hardware and delivers object, @@ -538,24 +397,10 @@ Description: FUSE-based rbd client for the Ceph distributed file system . FUSE base client that allows one to map Ceph rbd images as files. -Package: rbd-fuse-dbg -Architecture: linux-any -Section: debug -Priority: extra -Depends: rbd-fuse (= ${binary:Version}), - ${misc:Depends}, -Description: debugging symbols for rbd-fuse - Ceph is a massively scalable, open-source, distributed - storage system that runs on commodity hardware and delivers object, - block and file system storage. This is a - FUSE-based client that allows one to map Ceph rbd images as files. - . - This package contains the debugging symbols for rbd-fuse. - Package: ceph-immutable-object-cache Architecture: linux-any -Depends: ceph-common (= ${binary:Version}), - librados2 (= ${binary:Version}), +Depends: ceph-common (>= ${binary:Version}), + librados2 (>= ${binary:Version}), ${misc:Depends}, ${shlibs:Depends}, Description: Ceph daemon for immutable object cache @@ -564,24 +409,10 @@ Description: Ceph daemon for immutable object cache block and file system storage. This is a daemon for immutable object cache. -Package: ceph-immutable-object-cache-dbg -Architecture: linux-any -Section: debug -Priority: extra -Depends: ceph-immutable-object-cache (= ${binary:Version}), - ${misc:Depends}, -Description: debugging symbols for ceph-immutable-object-cache - Ceph is a massively scalable, open-source, distributed - storage system that runs on commodity hardware and delivers object, - block and file system storage. This is a daemon for immutable - object cache. - . - This package contains the debugging symbols for ceph-immutable-object-cache. - Package: rbd-mirror Architecture: linux-any -Depends: ceph-common (= ${binary:Version}), - librados2 (= ${binary:Version}), +Depends: ceph-common (>= ${binary:Version}), + librados2 (>= ${binary:Version}), ${misc:Depends}, ${shlibs:Depends}, Description: Ceph daemon for mirroring RBD images @@ -591,21 +422,6 @@ Description: Ceph daemon for mirroring RBD images daemon for mirroring RBD images between Ceph clusters, streaming changes asynchronously. -Package: rbd-mirror-dbg -Architecture: linux-any -Section: debug -Priority: extra -Depends: rbd-mirror (= ${binary:Version}), - ${misc:Depends}, -Description: debugging symbols for rbd-mirror - Ceph is a massively scalable, open-source, distributed - storage system that runs on commodity hardware and delivers object, - block and file system storage. This is a - daemon for mirroring RBD images between Ceph clusters, streaming - changes asynchronously. - . - This package contains the debugging symbols for rbd-mirror. - Package: rbd-nbd Architecture: linux-any Depends: ${misc:Depends}, @@ -620,31 +436,16 @@ Description: NBD-based rbd client for the Ceph distributed file system NBD base client that allows one to map Ceph rbd images as local block device. -Package: rbd-nbd-dbg -Architecture: linux-any -Section: debug -Priority: extra -Depends: rbd-nbd (= ${binary:Version}), - ${misc:Depends}, -Description: debugging symbols for rbd-nbd - Ceph is a massively scalable, open-source, distributed - storage system that runs on commodity hardware and delivers object, - block and file system storage. This is a - NBD-based client that allows one to map Ceph rbd images as local - block device. - . - This package contains the debugging symbols for rbd-nbd. - Package: ceph-common Architecture: linux-any -Depends: librbd1 (= ${binary:Version}), - python3-cephfs (= ${binary:Version}), - python3-ceph-argparse (= ${binary:Version}), - python3-ceph-common (= ${binary:Version}), +Depends: librbd1 (>= ${binary:Version}), + python3-cephfs (>= ${binary:Version}), + python3-ceph-argparse (>= ${binary:Version}), + python3-ceph-common (>= ${binary:Version}), python3-prettytable, - python3-rados (= ${binary:Version}), - python3-rbd (= ${binary:Version}), - python3-rgw (= ${binary:Version}), + python3-rados (>= ${binary:Version}), + python3-rbd (>= ${binary:Version}), + python3-rgw (>= ${binary:Version}), ${misc:Depends}, ${python:Depends}, ${shlibs:Depends}, @@ -655,44 +456,25 @@ Replaces: ceph (<< 10), ceph-test (<< 9.0.3-1646), librbd1 (<< 0.92-1238), python-ceph (<< 0.92-1223), - radosgw (<< 12.0.3) + radosgw (<< 12.0.3), Breaks: ceph (<< 10), ceph-fs-common (<< 11.0), ceph-test (<< 9.0.3-1646), librbd1 (<< 0.92-1238), python-ceph (<< 0.92-1223), - radosgw (<< 12.0.3) -Suggests: ceph-base (= ${binary:Version}), - ceph-mds (= ${binary:Version}), + radosgw (<< 12.0.3), +Suggests: ceph-base (>= ${binary:Version}), + ceph-mds (>= ${binary:Version}), Description: common utilities to mount and interact with a ceph storage cluster Ceph is a massively scalable, open-source, distributed storage system that runs on commodity hardware and delivers object, block and file system storage. This is a collection of common tools that allow one to interact with and administer a Ceph cluster. -Package: ceph-common-dbg -Architecture: linux-any -Depends: ceph-common (= ${binary:Version}), - ${misc:Depends}, -Conflicts: ceph-client-tools-dbg, -Replaces: ceph-client-tools-dbg, - ceph-test-dbg (<< 9.0.3-1646), -Breaks: ceph-test-dbg (<< 9.0.3-1646), -Section: debug -Priority: extra -Description: debugging symbols for ceph-common - Ceph is a massively scalable, open-source, distributed - storage system that runs on commodity hardware and delivers object, - block and file system storage. This is a collection - of common tools that allow one to interact with and administer a Ceph cluster. - . - This package contains the debugging symbols for ceph-common. - Package: ceph-resource-agents Architecture: linux-any -Recommends: pacemaker, Priority: extra -Depends: ceph (= ${binary:Version}), +Depends: ceph (>= ${binary:Version}), resource-agents, ${misc:Depends}, Description: OCF-compliant resource agents for Ceph @@ -717,24 +499,10 @@ Description: RADOS distributed object store client library shared library allowing applications to access the distributed object store using a simple file-like interface. -Package: librados2-dbg -Architecture: linux-any -Section: debug -Priority: extra -Depends: librados2 (= ${binary:Version}), - ${misc:Depends}, -Description: debugging symbols for librados - RADOS is a reliable, autonomic distributed object storage cluster - developed as part of the Ceph distributed storage system. This is a - shared library allowing applications to access the distributed object - store using a simple file-like interface. - . - This package contains debugging symbols for librados. - Package: librados-dev Architecture: linux-any Section: libdevel -Depends: librados2 (= ${binary:Version}), +Depends: librados2 (>= ${binary:Version}), ${misc:Depends}, ${shlibs:Depends}, Conflicts: librados1-dev, @@ -753,7 +521,7 @@ Description: RADOS distributed object store client library (development files) Package: libradospp-dev Architecture: linux-any Section: libdevel -Depends: librados-dev (= ${binary:Version}), +Depends: librados-dev (>= ${binary:Version}), ${misc:Depends}, ${shlibs:Depends}, Description: RADOS distributed object store client C++ library (development files) @@ -768,7 +536,7 @@ Description: RADOS distributed object store client C++ library (development file Package: libsqlite3-mod-ceph Architecture: any Section: libs -Depends: librados2 (= ${binary:Version}), +Depends: librados2 (>= ${binary:Version}), ${misc:Depends}, ${shlibs:Depends}, Description: SQLite3 VFS for Ceph @@ -777,23 +545,10 @@ Description: SQLite3 VFS for Ceph . This packages contains the loadable extension module for SQLite3. -Package: libsqlite3-mod-ceph-dbg -Architecture: any -Section: debug -Priority: extra -Depends: libsqlite3-mod-ceph (= ${binary:Version}), - libsqlite3-0-dbgsym - ${misc:Depends}, -Description: debugging symbols for libsqlite3-mod-ceph - A SQLite3 VFS for storing and manipulating databases stored on Ceph's RADOS - distributed object store. - . - This package contains debugging symbols for libsqlite3-mod-ceph. - Package: libsqlite3-mod-ceph-dev Architecture: any Section: libdevel -Depends: libsqlite3-mod-ceph (= ${binary:Version}), +Depends: libsqlite3-mod-ceph (>= ${binary:Version}), libsqlite3-dev, ${misc:Depends}, Description: SQLite3 VFS for Ceph (development files) @@ -806,7 +561,7 @@ Description: SQLite3 VFS for Ceph (development files) Package: libradosstriper1 Architecture: linux-any Section: libs -Depends: librados2 (= ${binary:Version}), +Depends: librados2 (>= ${binary:Version}), ${misc:Depends}, ${shlibs:Depends}, Description: RADOS striping interface @@ -814,23 +569,10 @@ Description: RADOS striping interface to stripe bigger objects onto several standard rados objects using an interface very similar to the rados one. -Package: libradosstriper1-dbg -Architecture: linux-any -Section: debug -Priority: extra -Depends: libradosstriper1 (= ${binary:Version}), - ${misc:Depends}, -Description: debugging symbols for libradosstriper - libradosstriper is a striping interface built on top of the rados - library, allowing to stripe bigger objects onto several standard - rados objects using an interface very similar to the rados one. - . - This package contains debugging symbols for libradosstriper. - Package: libradosstriper-dev Architecture: linux-any Section: libdevel -Depends: libradosstriper1 (= ${binary:Version}), +Depends: libradosstriper1 (>= ${binary:Version}), ${misc:Depends}, Description: RADOS striping interface (development files) libradosstriper is a striping interface built on top of the rados @@ -843,7 +585,7 @@ Description: RADOS striping interface (development files) Package: librbd1 Architecture: linux-any Section: libs -Depends: librados2 (= ${binary:Version}), +Depends: librados2 (>= ${binary:Version}), ${misc:Depends}, ${shlibs:Depends}, Description: RADOS block device client library @@ -852,25 +594,11 @@ Description: RADOS block device client library developed as part of the Ceph distributed storage system. This is a shared library allowing applications to manage these block devices. -Package: librbd1-dbg -Architecture: linux-any -Section: debug -Priority: extra -Depends: librbd1 (= ${binary:Version}), - ${misc:Depends}, -Description: debugging symbols for librbd1 - RBD is a block device striped across multiple distributed objects - in RADOS, a reliable, autonomic distributed object storage cluster - developed as part of the Ceph distributed storage system. This is a - shared library allowing applications to manage these block devices. - . - This package contains debugging symbols for librbd1. - Package: librbd-dev Architecture: linux-any Section: libdevel -Depends: librados-dev (= ${binary:Version}), - librbd1 (= ${binary:Version}), +Depends: librados-dev (>= ${binary:Version}), + librbd1 (>= ${binary:Version}), ${misc:Depends}, Conflicts: librbd1-dev, Replaces: librbd1-dev, @@ -901,27 +629,10 @@ Description: Ceph distributed file system client library shared library allowing applications to access a Ceph distributed file system via a POSIX-like interface. -Package: libcephfs2-dbg -Architecture: linux-any -Section: debug -Priority: extra -Depends: libcephfs2 (= ${binary:Version}), - ${misc:Depends}, -Conflicts: libceph1-dbg, -Replaces: libceph1-dbg, -Description: debugging symbols for libcephfs2 - Ceph is a massively scalable, open-source, distributed - storage system that runs on commodity hardware and delivers object, - block and file system storage. This is a - shared library allowing applications to access a Ceph distributed - file system via a POSIX-like interface. - . - This package contains debugging symbols for libcephfs2. - Package: libcephfs-dev Architecture: linux-any Section: libdevel -Depends: libcephfs2 (= ${binary:Version}), +Depends: libcephfs2 (>= ${binary:Version}), ${misc:Depends}, Conflicts: libceph-dev, libceph1-dev, @@ -942,7 +653,7 @@ Description: Ceph distributed file system client library (development files) Package: librgw2 Architecture: linux-any Section: libs -Depends: librados2 (= ${binary:Version}), +Depends: librados2 (>= ${binary:Version}), ${misc:Depends}, ${shlibs:Depends}, Description: RADOS Gateway client library @@ -953,25 +664,11 @@ Description: RADOS Gateway client library . This package contains the library interface and headers only. -Package: librgw2-dbg -Architecture: linux-any -Section: debug -Priority: extra -Depends: librgw2 (= ${binary:Version}), - ${misc:Depends}, -Description: debugging symbols for librbd1 - RADOS is a distributed object store used by the Ceph distributed - storage system. This package provides a REST gateway to the - object store that aims to implement a superset of Amazon's S3 - service. - . - This package contains debugging symbols for librgw2. - Package: librgw-dev Architecture: linux-any Section: libdevel -Depends: librados-dev (= ${binary:Version}), - librgw2 (= ${binary:Version}), +Depends: librados-dev (>= ${binary:Version}), + librgw2 (>= ${binary:Version}), ${misc:Depends}, Description: RADOS client library (development files) RADOS is a distributed object store used by the Ceph distributed @@ -984,13 +681,12 @@ Description: RADOS client library (development files) Package: radosgw Architecture: linux-any -Depends: ceph-common (= ${binary:Version}), - librgw2 (= ${binary:Version}), +Depends: ceph-common (>= ${binary:Version}), + librgw2 (>= ${binary:Version}), mime-support, ${misc:Depends}, ${shlibs:Depends}, Suggests: gawk, -Recommends: ntp | time-daemon, Description: REST gateway for RADOS distributed object store RADOS is a distributed object store used by the Ceph distributed storage system. This package provides a REST gateway to the @@ -999,53 +695,13 @@ Description: REST gateway for RADOS distributed object store . This package contains the proxy daemon and related tools only. -Package: radosgw-dbg -Architecture: linux-any -Section: debug -Priority: extra -Depends: radosgw (= ${binary:Version}), - ${misc:Depends}, -Description: debugging symbols for radosgw - RADOS is a distributed object store used by the Ceph distributed - storage system. This package provides a REST gateway to the - object store that aims to implement a superset of Amazon's S3 - service as well as the OpenStack Object Storage ("Swift") API. - . - This package contains debugging symbols for radosgw. - -Package: ceph-test -Architecture: linux-any -Depends: ceph-common, - curl, - jq, - socat, - xmlstarlet, - ${misc:Depends}, - ${shlibs:Depends}, -Replaces: ceph-base (<< 11) -Breaks: ceph-base (<< 1) -Description: Ceph test and benchmarking tools - This package contains tools for testing and benchmarking Ceph. - -Package: ceph-test-dbg -Architecture: linux-any -Section: debug -Priority: extra -Depends: ceph-common (= ${binary:Version}), - ceph-test (= ${binary:Version}), - curl, - ${misc:Depends}, -Description: Ceph test and benchmarking tools - . - This package contains the debugging symbols for ceph-test. - Package: python3-ceph Architecture: linux-any Section: python -Depends: python3-cephfs (= ${binary:Version}), - python3-rados (= ${binary:Version}), - python3-rbd (= ${binary:Version}), - python3-rgw (= ${binary:Version}), +Depends: python3-cephfs (>= ${binary:Version}), + python3-rados (>= ${binary:Version}), + python3-rbd (>= ${binary:Version}), + python3-rgw (>= ${binary:Version}), Description: Meta-package for python libraries for the Ceph libraries Ceph is a massively scalable, open-source, distributed storage system that runs on commodity hardware and delivers object, @@ -1068,23 +724,6 @@ Description: Python 3 libraries for the Ceph librados library This package contains Python 3 libraries for interacting with Ceph's RADOS object storage. -Package: python3-rados-dbg -Architecture: linux-any -Section: debug -Priority: extra -Depends: python3-rados (= ${binary:Version}), - python3-dbg, - ${misc:Depends} -Description: Python 3 libraries for the Ceph librados library - Ceph is a massively scalable, open-source, distributed - storage system that runs on commodity hardware and delivers object, - block and file system storage. - . - This package contains Python 3 libraries for interacting with Ceph's - RADOS object storage. - . - This package contains the debugging symbols for python3-rados. - Package: python3-rbd Architecture: linux-any Section: python @@ -1100,28 +739,11 @@ Description: Python 3 libraries for the Ceph librbd library This package contains Python 3 libraries for interacting with Ceph's RBD block device library. -Package: python3-rbd-dbg -Architecture: linux-any -Section: debug -Priority: extra -Depends: python3-rbd (= ${binary:Version}), - python3-dbg, - ${misc:Depends}, -Description: Python 3 libraries for the Ceph librbd library - Ceph is a massively scalable, open-source, distributed - storage system that runs on commodity hardware and delivers object, - block and file system storage. - . - This package contains Python 3 libraries for interacting with Ceph's - RBD block device library. - . - This package contains the debugging symbols for python3-rbd. - Package: python3-rgw Architecture: linux-any Section: python Depends: librgw2 (>= ${binary:Version}), - python3-rados (= ${binary:Version}), + python3-rados (>= ${binary:Version}), ${misc:Depends}, ${python3:Depends}, ${shlibs:Depends}, @@ -1133,29 +755,12 @@ Description: Python 3 libraries for the Ceph librgw library This package contains Python 3 libraries for interacting with Ceph's RGW library. -Package: python3-rgw-dbg -Architecture: linux-any -Section: debug -Priority: extra -Depends: python3-rgw (= ${binary:Version}), - python3-dbg, - ${misc:Depends}, -Description: Python 3 libraries for the Ceph librgw library - Ceph is a massively scalable, open-source, distributed - storage system that runs on commodity hardware and delivers object, - block and file system storage. - . - This package contains Python 3 libraries for interacting with Ceph's - RGW library. - . - This package contains the debugging symbols for python3-rgw. - Package: python3-cephfs Architecture: linux-any Section: python -Depends: libcephfs2 (= ${binary:Version}), - python3-rados (= ${binary:Version}), - python3-ceph-argparse (= ${binary:Version}), +Depends: libcephfs2 (>= ${binary:Version}), + python3-rados (>= ${binary:Version}), + python3-ceph-argparse (>= ${binary:Version}), ${misc:Depends}, ${python3:Depends}, ${shlibs:Depends}, @@ -1167,23 +772,6 @@ Description: Python 3 libraries for the Ceph libcephfs library This package contains Python 3 libraries for interacting with Ceph's CephFS file system client library. -Package: python3-cephfs-dbg -Architecture: linux-any -Section: debug -Priority: extra -Depends: python3-cephfs (= ${binary:Version}), - python3-dbg, - ${misc:Depends}, -Description: Python 3 libraries for the Ceph libcephfs library - Ceph is a massively scalable, open-source, distributed - storage system that runs on commodity hardware and delivers object, - block and file system storage. - . - This package contains Python 3 libraries for interacting with Ceph's - CephFS file system client library. - . - This package contains the debugging symbols for python3-cephfs. - Package: python3-ceph-argparse Architecture: all Section: python @@ -1210,35 +798,19 @@ Description: Python 3 utility libraries for Ceph This package contains data structures, classes and functions used by Ceph. It also contains utilities used for the cephadm orchestrator. -Package: libcephfs-java -Section: java -Architecture: all -Depends: libcephfs-jni (= ${binary:Version}), - ${java:Depends}, - ${misc:Depends}, -Description: Java libraries for the Ceph File System - -Package: libcephfs-jni -Architecture: linux-any -Section: java -Depends: libcephfs2 (= ${binary:Version}), - ${java:Depends}, - ${misc:Depends}, - ${shlibs:Depends}, -Description: Java Native Interface library for CephFS Java bindings - Package: rados-objclass-dev Architecture: linux-any Section: libdevel -Depends: librados-dev (= ${binary:Version}) ${misc:Depends}, +Depends: librados-dev (>= ${binary:Version}), + ${misc:Depends}, Description: RADOS object class development kit. . This package contains development files needed for building RADOS object class plugins. Package: cephfs-shell Architecture: all -Depends: ${misc:Depends} - ${python3:Depends} +Depends: ${misc:Depends}, + ${python3:Depends}, Description: interactive shell for the Ceph distributed file system Ceph is a massively scalable, open-source, distributed storage system that runs on commodity hardware and delivers object, @@ -1250,8 +822,8 @@ Description: interactive shell for the Ceph distributed file system Package: cephfs-top Architecture: all -Depends: ${misc:Depends} - ${python3:Depends} +Depends: ${misc:Depends}, + ${python3:Depends}, Description: This package provides a top(1) like utility to display various filesystem metrics in realtime. . diff --git a/debian/libcephfs-dev.install b/debian/libcephfs-dev.install index e06363ad7008a9..7674931a5a8cd4 100644 --- a/debian/libcephfs-dev.install +++ b/debian/libcephfs-dev.install @@ -1,4 +1,4 @@ usr/include/cephfs/ceph_ll_client.h usr/include/cephfs/libcephfs.h usr/include/cephfs/metrics/Types.h -usr/lib/libcephfs.so +usr/lib/*/libcephfs.so diff --git a/debian/libcephfs-java.jlibs b/debian/libcephfs-java.jlibs deleted file mode 100644 index 1029fb53d40fdb..00000000000000 --- a/debian/libcephfs-java.jlibs +++ /dev/null @@ -1 +0,0 @@ -debian/tmp/usr/share/java/libcephfs.jar diff --git a/debian/libcephfs-jni.install b/debian/libcephfs-jni.install deleted file mode 100644 index 072b9903310d29..00000000000000 --- a/debian/libcephfs-jni.install +++ /dev/null @@ -1 +0,0 @@ -usr/lib/libcephfs_jni.so* usr/lib/jni diff --git a/debian/libcephfs2.install b/debian/libcephfs2.install index b7c0eb0581e959..f09e93ca5af1b7 100644 --- a/debian/libcephfs2.install +++ b/debian/libcephfs2.install @@ -1 +1 @@ -usr/lib/libcephfs.so.* +usr/lib/*/libcephfs.so.* diff --git a/debian/librados-dev.install b/debian/librados-dev.install index 75d5ea7de733e5..edaa359fc6a1f2 100644 --- a/debian/librados-dev.install +++ b/debian/librados-dev.install @@ -1,6 +1,5 @@ usr/bin/librados-config usr/include/rados/librados.h usr/include/rados/rados_types.h -usr/lib/librados.so -usr/lib/librados_tp.so +usr/lib/*/librados.so usr/share/man/man8/librados-config.8 diff --git a/debian/librados2.install b/debian/librados2.install index 816e55fce2fa16..59d97f3041c578 100644 --- a/debian/librados2.install +++ b/debian/librados2.install @@ -1,3 +1,2 @@ -usr/lib/ceph/libceph-common.so.* -usr/lib/librados.so.* -usr/lib/librados_tp.so.* +usr/lib/*/ceph/libceph-common.so.* +usr/lib/*/librados.so.* diff --git a/debian/libradosstriper-dev.install b/debian/libradosstriper-dev.install index f7986d30f2d7ce..4d6d7b5a093642 100644 --- a/debian/libradosstriper-dev.install +++ b/debian/libradosstriper-dev.install @@ -1,3 +1,3 @@ usr/include/radosstriper/libradosstriper.h usr/include/radosstriper/libradosstriper.hpp -usr/lib/libradosstriper.so +usr/lib/*/libradosstriper.so diff --git a/debian/libradosstriper1.install b/debian/libradosstriper1.install index 46235acff31a84..742549ba970199 100644 --- a/debian/libradosstriper1.install +++ b/debian/libradosstriper1.install @@ -1 +1 @@ -usr/lib/libradosstriper.so.* +usr/lib/*/libradosstriper.so.* diff --git a/debian/librbd-dev.install b/debian/librbd-dev.install index 6028f4288cd06e..c6b455e58d9130 100644 --- a/debian/librbd-dev.install +++ b/debian/librbd-dev.install @@ -1,5 +1,4 @@ usr/include/rbd/features.h usr/include/rbd/librbd.h usr/include/rbd/librbd.hpp -usr/lib/librbd.so -usr/lib/librbd_tp.so +usr/lib/*/librbd.so diff --git a/debian/librbd1.install b/debian/librbd1.install index 8c9fc46a2ca57d..dd5410cdac38f6 100644 --- a/debian/librbd1.install +++ b/debian/librbd1.install @@ -1,3 +1,2 @@ -usr/lib/librbd.so.* -usr/lib/librbd_tp.so.* -usr/lib/ceph/librbd/* +usr/lib/*/librbd.so.* +usr/lib/*/ceph/librbd/* diff --git a/debian/librgw-dev.install b/debian/librgw-dev.install index ed2a81dba5013a..56d4da0085d25e 100644 --- a/debian/librgw-dev.install +++ b/debian/librgw-dev.install @@ -1,3 +1,3 @@ usr/include/rados/librgw.h usr/include/rados/rgw_file.h -usr/lib/librgw.so +usr/lib/*/librgw.so diff --git a/debian/librgw2.install b/debian/librgw2.install index b86fb891e2c255..267c561138b833 100644 --- a/debian/librgw2.install +++ b/debian/librgw2.install @@ -1 +1 @@ -usr/lib/librgw.so.* +usr/lib/*/librgw.so.* diff --git a/debian/libsqlite3-mod-ceph.install b/debian/libsqlite3-mod-ceph.install index f327c7fc8ae708..c33877245b2467 100644 --- a/debian/libsqlite3-mod-ceph.install +++ b/debian/libsqlite3-mod-ceph.install @@ -1 +1 @@ -usr/lib/libcephsqlite.so +usr/lib/*/libcephsqlite.so diff --git a/debian/libsqlite3-mod-ceph.symbols b/debian/libsqlite3-mod-ceph.symbols deleted file mode 100644 index d9679a13d51f2f..00000000000000 --- a/debian/libsqlite3-mod-ceph.symbols +++ /dev/null @@ -1,37 +0,0 @@ -libcephsqlite.so libsqlite3-mod-ceph #MINVER# - _ZGVN18SimpleRADOSStriper7biglockB5cxx11E@Base 15.2.0-1 - _ZGVN18SimpleRADOSStriper8lockdescB5cxx11E@Base 15.2.0-1 - _ZN18SimpleRADOSStriper10XATTR_EXCLE@Base 15.2.0-1 - _ZN18SimpleRADOSStriper10XATTR_SIZEE@Base 15.2.0-1 - _ZN18SimpleRADOSStriper12recover_lockEv@Base 15.2.0-1 - _ZN18SimpleRADOSStriper12set_metadataEmb@Base 15.2.0-1 - _ZN18SimpleRADOSStriper12shrink_allocEm@Base 15.2.0-1 - _ZN18SimpleRADOSStriper13XATTR_VERSIONE@Base 15.2.0-1 - _ZN18SimpleRADOSStriper13config_loggerEPN4ceph6common11CephContextESt17basic_string_viewIcSt11char_traitsIcEEPSt10shared_ptrINS1_12PerfCountersEE@Base 15.2.0-1 - _ZN18SimpleRADOSStriper13print_lockersERSo@Base 15.2.0-1 - _ZN18SimpleRADOSStriper13wait_for_aiosEb@Base 15.2.0-1 - _ZN18SimpleRADOSStriper15XATTR_ALLOCATEDE@Base 15.2.0-1 - _ZN18SimpleRADOSStriper16lock_keeper_mainEv@Base 15.2.0-1 - _ZN18SimpleRADOSStriper18maybe_shrink_allocEv@Base 15.2.0-1 - _ZN18SimpleRADOSStriper24XATTR_LAYOUT_OBJECT_SIZEE@Base 15.2.0-1 - _ZN18SimpleRADOSStriper24XATTR_LAYOUT_STRIPE_UNITE@Base 15.2.0-1 - _ZN18SimpleRADOSStriper25XATTR_LAYOUT_STRIPE_COUNTE@Base 15.2.0-1 - _ZN18SimpleRADOSStriper4lockEm@Base 15.2.0-1 - _ZN18SimpleRADOSStriper4openEv@Base 15.2.0-1 - _ZN18SimpleRADOSStriper4readEPvmm@Base 15.2.0-1 - _ZN18SimpleRADOSStriper4statEPm@Base 15.2.0-1 - _ZN18SimpleRADOSStriper5flushEv@Base 15.2.0-1 - _ZN18SimpleRADOSStriper5writeEPKvmm@Base 15.2.0-1 - _ZN18SimpleRADOSStriper6createEv@Base 15.2.0-1 - _ZN18SimpleRADOSStriper6removeEv@Base 15.2.0-1 - _ZN18SimpleRADOSStriper6str2blESt17basic_string_viewIcSt11char_traitsIcEE@Base 15.2.0-1 - _ZN18SimpleRADOSStriper6unlockEv@Base 15.2.0-1 - _ZN18SimpleRADOSStriper7biglockB5cxx11E@Base 15.2.0-1 - _ZN18SimpleRADOSStriper7uint2blEm@Base 15.2.0-1 - _ZN18SimpleRADOSStriper8lockdescB5cxx11E@Base 15.2.0-1 - _ZN18SimpleRADOSStriper8truncateEm@Base 15.2.0-1 - _ZN18SimpleRADOSStriperD1Ev@Base 15.2.0-1 - _ZN18SimpleRADOSStriperD2Ev@Base 15.2.0-1 - _ZNK18SimpleRADOSStriper15get_next_extentEmm@Base 15.2.0-1 - cephsqlite_setcct@Base 15.2.0-1 - sqlite3_cephsqlite_init@Base 15.2.0-1 diff --git a/debian/patches/0002-47712.patch b/debian/patches/0002-47712.patch new file mode 100644 index 00000000000000..7f22b90f93e66c --- /dev/null +++ b/debian/patches/0002-47712.patch @@ -0,0 +1,13 @@ +diff --git a/src/pybind/mgr/pg_autoscaler/module.py b/src/pybind/mgr/pg_autoscaler/module.py +index 57d27655114..cf9dbaed3bf 100644 +--- a/src/pybind/mgr/pg_autoscaler/module.py ++++ b/src/pybind/mgr/pg_autoscaler/module.py +@@ -556,7 +556,7 @@ class PgAutoscaler(MgrModule): + capacity = root_map[root_id].capacity + assert capacity is not None + if capacity == 0: +- self.log.debug('skipping empty subtree %s', cr_name) ++ self.log.debug("skipping empty subtree {0}".format(cr_name)) + continue + + raw_used_rate = osdmap.pool_raw_used_rate(pool_id) diff --git a/debian/patches/0003-45925-bionic-miss-statx.patch b/debian/patches/0003-45925-bionic-miss-statx.patch new file mode 100644 index 00000000000000..f86784eff8fd04 --- /dev/null +++ b/debian/patches/0003-45925-bionic-miss-statx.patch @@ -0,0 +1,28 @@ +diff --git a/src/client/fuse_ll.cc b/src/client/fuse_ll.cc +index 2f4cd28b340..cb44106fceb 100644 +--- a/src/client/fuse_ll.cc ++++ b/src/client/fuse_ll.cc +@@ -67,6 +67,10 @@ + #define FUSE_SUPER_MAGIC 0x65735546 + #endif + ++#ifndef STATX_INO ++#include ++#endif ++ + #define _CEPH_CLIENT_ID "ceph.client_id" + #endif + +@@ -192,6 +196,12 @@ public: + }; + + #if defined(__linux__) ++ssize_t statx(int dfd, const char *filename, unsigned flags, ++ unsigned int mask, struct statx *buffer) ++{ ++ return syscall(__NR_statx, dfd, filename, flags, mask, buffer); ++} ++ + static int already_fuse_mounted(const char *path, bool &already_mounted) + { + struct statx path_statx; diff --git a/debian/patches/0004-HAVE_EXPLICIT_BZERO.patch b/debian/patches/0004-HAVE_EXPLICIT_BZERO.patch new file mode 100644 index 00000000000000..42a399e50e8a74 --- /dev/null +++ b/debian/patches/0004-HAVE_EXPLICIT_BZERO.patch @@ -0,0 +1,28 @@ +diff --git a/cmake/modules/CephChecks.cmake b/cmake/modules/CephChecks.cmake +index fcde99f4b07..bd971f91d64 100644 +--- a/cmake/modules/CephChecks.cmake ++++ b/cmake/modules/CephChecks.cmake +@@ -82,6 +82,7 @@ check_symbol_exists(F_SETPIPE_SZ "linux/fcntl.h" CEPH_HAVE_SETPIPE_SZ) + check_symbol_exists(__func__ "" HAVE_FUNC) + check_symbol_exists(__PRETTY_FUNCTION__ "" HAVE_PRETTY_FUNC) + check_symbol_exists(getentropy "unistd.h" HAVE_GETENTROPY) ++check_symbol_exists(explicit_bzero "string.h" HAVE_EXPLICIT_BZERO) + + include(CheckCXXSourceCompiles) + check_cxx_source_compiles(" +diff --git a/src/common/compat.cc b/src/common/compat.cc +index 82b57ad94b5..9ae7c83c969 100644 +--- a/src/common/compat.cc ++++ b/src/common/compat.cc +@@ -241,8 +241,10 @@ int ceph_memzero_s(void *dest, size_t destsz, size_t count) { + return memset_s(dest, destsz, 0, count); + #elif defined(_WIN32) + SecureZeroMemory(dest, count); +-#else ++#elif HAVE_EXPLICIT_BZERO + explicit_bzero(dest, count); ++#else ++ bzero(dest, count); + #endif + return 0; + } diff --git a/debian/patches/0014-47029.patch b/debian/patches/0014-47029.patch new file mode 100644 index 00000000000000..51aa7de96f3928 --- /dev/null +++ b/debian/patches/0014-47029.patch @@ -0,0 +1,13 @@ +diff --git a/src/rgw/CMakeLists.txt b/src/rgw/CMakeLists.txt +index 93fa482953b..2999b8d4d2e 100644 +--- a/src/rgw/CMakeLists.txt ++++ b/src/rgw/CMakeLists.txt +@@ -355,7 +355,7 @@ target_include_directories(radosgw SYSTEM PUBLIC "../rapidjson/include") + + target_link_libraries(radosgw + PRIVATE ${rgw_libs} rgw_schedulers kmip +- PUBLIC dmclock::dmclock ++ PUBLIC dmclock::dmclock -lstdc++ + ) + if(WITH_RADOSGW_BEAST_OPENSSL) + # used by rgw_asio_frontend.cc diff --git a/debian/patches/0015-WITH_SYSTEM_FMT.patch b/debian/patches/0015-WITH_SYSTEM_FMT.patch new file mode 100644 index 00000000000000..23b6d9efd0d2dc --- /dev/null +++ b/debian/patches/0015-WITH_SYSTEM_FMT.patch @@ -0,0 +1,19 @@ +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index b03f76bff80..cdea6a40d92 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -296,11 +296,10 @@ include_directories(SYSTEM "${CMAKE_SOURCE_DIR}/src/xxHash") + include_directories(SYSTEM "${CMAKE_SOURCE_DIR}/src/rapidjson/include") + + option(WITH_FMT_HEADER_ONLY "use header-only version of fmt library" OFF) +-find_package(fmt 6.0.0 QUIET) +-if(fmt_FOUND) +- include_directories(SYSTEM "${fmt_INCLUDE_DIR}") ++option(WITH_SYSTEM_FMT "require and build with system fmt" OFF) ++if (WITH_SYSTEM_FMT) ++ find_package(fmt 6.0.0 REQUIRED) + else() +- message(STATUS "Could not find fmt, will build it") + set(old_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS}) + set(BUILD_SHARED_LIBS FALSE) + add_subdirectory(fmt) diff --git a/debian/patches/0016-53698-fmtlib-10-compile-errors.patch b/debian/patches/0016-53698-fmtlib-10-compile-errors.patch new file mode 100644 index 00000000000000..862f1f66408655 --- /dev/null +++ b/debian/patches/0016-53698-fmtlib-10-compile-errors.patch @@ -0,0 +1,151 @@ +diff --git a/src/common/LogEntry.h b/src/common/LogEntry.h +index 3ddebbd30..b2a22350f 100644 +--- a/src/common/LogEntry.h ++++ b/src/common/LogEntry.h +@@ -16,6 +16,9 @@ + #define CEPH_LOGENTRY_H + + #include ++#if FMT_VERSION >= 90000 ++#include ++#endif + + #include "include/utime.h" + #include "msg/msg_fmt.h" +@@ -194,19 +197,26 @@ inline std::ostream& operator<<(std::ostream& out, const LogEntry& e) + << e.channel << " " << e.prio << " " << e.msg; + } + +-template <> struct fmt::formatter : fmt::formatter { ++namespace fmt { ++ ++#if FMT_VERSION >= 90000 ++template <> struct formatter : ostream_formatter {}; ++#endif ++ ++template <> struct formatter : formatter { + template +- auto format(const EntityName& e, FormatContext& ctx) { +- return formatter::format(e.to_str(), ctx); ++ auto format(const EntityName& e, FormatContext& ctx) const { ++ return fmt::formatter::format(e.to_str(), ctx); + } + }; + +-template <> struct fmt::formatter : fmt::formatter { ++template <> struct formatter : formatter { + template +- auto format(const LogEntry& e, FormatContext& ctx) { ++ auto format(const LogEntry& e, FormatContext& ctx) const { + return fmt::format_to(ctx.out(), "{} {} ({}) {} : {} {} {}", + e.stamp, e.name, e.rank, e.seq, e.channel, e.prio, e.msg); + } + }; ++} // namespace fmt + + #endif +diff --git a/src/include/byteorder.h b/src/include/byteorder.h +index eb6d5e102..f70dd16eb 100644 +--- a/src/include/byteorder.h ++++ b/src/include/byteorder.h +@@ -53,3 +53,8 @@ inline ceph_les16 init_les16(__s16 x) { + v = x; + return v; + } ++ ++template ++auto format_as(ceph_le c) { ++ return static_cast(c); ++} +diff --git a/src/include/neorados/RADOS_fmt.hpp b/src/include/neorados/RADOS_fmt.hpp +new file mode 100644 +index 000000000..0d62cc888 +--- /dev/null ++++ b/src/include/neorados/RADOS_fmt.hpp +@@ -0,0 +1,20 @@ ++// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- ++// vim: ts=8 sw=2 smarttab ++#pragma once ++/** ++ * \file fmtlib formatters for some neorados types ++ */ ++ ++#include ++#if FMT_VERSION >= 90000 ++#include ++#endif ++ ++#include ++ ++namespace fmt { ++ ++#if FMT_VERSION >= 90000 ++template <> struct formatter : ostream_formatter {}; ++#endif ++} // namespace fmt +diff --git a/src/osd/SnapMapper.cc b/src/osd/SnapMapper.cc +index 4feabcda4..41d3433e0 100644 +--- a/src/osd/SnapMapper.cc ++++ b/src/osd/SnapMapper.cc +@@ -269,10 +269,10 @@ std::set SnapMapper::to_raw_keys( + for (auto snap : snaps) { + keys.insert(to_raw_key(snap, clone)); + } +- dout(20) << fmt::format( +- "{}: clone:{} snaps:{} -> keys: {}", __func__, clone, snaps, +- keys) +- << dendl; ++// dout(20) << fmt::format( ++// "{}: clone:{} snaps:{} -> keys: {}", __func__, clone, snaps, ++// keys) ++// << dendl; + return keys; + } + +@@ -318,15 +318,15 @@ SnapMapper::get_snaps_check_consistency(const hobject_t &hoid) const + } + + if (snaps_from_mapping != *obj_snaps) { +- dout(10) << fmt::format( +- "{}: hoid:{} -> mapper internal inconsistency ({} vs {})", +- __func__, hoid, *obj_snaps, snaps_from_mapping) +- << dendl; ++// dout(10) << fmt::format( ++// "{}: hoid:{} -> mapper internal inconsistency ({} vs {})", ++// __func__, hoid, *obj_snaps, snaps_from_mapping) ++// << dendl; + return tl::unexpected(result_t{code_t::inconsistent}); + } +- dout(10) << fmt::format( +- "{}: snaps for {}: {}", __func__, hoid, snaps_from_mapping) +- << dendl; ++// dout(10) << fmt::format( ++// "{}: snaps for {}: {}", __func__, hoid, snaps_from_mapping) ++// << dendl; + return obj_snaps; + } + +diff --git a/src/osd/osd_types.h b/src/osd/osd_types.h +index 38d701569..9b4b26de5 100644 +--- a/src/osd/osd_types.h ++++ b/src/osd/osd_types.h +@@ -35,6 +35,7 @@ + #include "msg/msg_types.h" + #include "include/compat.h" + #include "include/types.h" ++#include "include/types_fmt.h" + #include "include/utime.h" + #include "include/CompatSet.h" + #include "common/ceph_context.h" +diff --git a/src/tools/neorados.cc b/src/tools/neorados.cc +index 24966d2ae..44ee1cf19 100644 +--- a/src/tools/neorados.cc ++++ b/src/tools/neorados.cc +@@ -36,6 +36,7 @@ + #include "include/buffer.h" // :( + + #include "include/neorados/RADOS.hpp" ++#include "include/neorados/RADOS_fmt.hpp" + + using namespace std::literals; + diff --git a/debian/patches/0017-54710-replace_jwt_with_pure_python.patch b/debian/patches/0017-54710-replace_jwt_with_pure_python.patch new file mode 100644 index 00000000000000..e126304aa074d7 --- /dev/null +++ b/debian/patches/0017-54710-replace_jwt_with_pure_python.patch @@ -0,0 +1,175 @@ +diff --git a/src/pybind/mgr/dashboard/constraints.txt b/src/pybind/mgr/dashboard/constraints.txt +index 55f81c92d..fd6141048 100644 +--- a/src/pybind/mgr/dashboard/constraints.txt ++++ b/src/pybind/mgr/dashboard/constraints.txt +@@ -1,6 +1,5 @@ + CherryPy~=13.1 + more-itertools~=8.14 +-PyJWT~=2.0 + bcrypt~=3.1 + python3-saml~=1.4 + requests~=2.26 +diff --git a/src/pybind/mgr/dashboard/exceptions.py b/src/pybind/mgr/dashboard/exceptions.py +index 96cbc5233..d396a38d2 100644 +--- a/src/pybind/mgr/dashboard/exceptions.py ++++ b/src/pybind/mgr/dashboard/exceptions.py +@@ -121,3 +121,15 @@ class GrafanaError(Exception): + + class PasswordPolicyException(Exception): + pass ++ ++ ++class ExpiredSignatureError(Exception): ++ pass ++ ++ ++class InvalidTokenError(Exception): ++ pass ++ ++ ++class InvalidAlgorithmError(Exception): ++ pass +diff --git a/src/pybind/mgr/dashboard/requirements.txt b/src/pybind/mgr/dashboard/requirements.txt +index 8003d62a5..292971819 100644 +--- a/src/pybind/mgr/dashboard/requirements.txt ++++ b/src/pybind/mgr/dashboard/requirements.txt +@@ -1,7 +1,6 @@ + bcrypt + CherryPy + more-itertools +-PyJWT + pyopenssl + requests + Routes +diff --git a/src/pybind/mgr/dashboard/services/auth.py b/src/pybind/mgr/dashboard/services/auth.py +index f13963abf..3c6002312 100644 +--- a/src/pybind/mgr/dashboard/services/auth.py ++++ b/src/pybind/mgr/dashboard/services/auth.py +@@ -1,17 +1,19 @@ + # -*- coding: utf-8 -*- + ++import base64 ++import hashlib ++import hmac + import json + import logging + import os + import threading + import time + import uuid +-from base64 import b64encode + + import cherrypy +-import jwt + + from .. import mgr ++from ..exceptions import ExpiredSignatureError, InvalidAlgorithmError, InvalidTokenError + from .access_control import LocalAuthenticator, UserDoesNotExist + + cherrypy.config.update({ +@@ -33,7 +35,7 @@ class JwtManager(object): + @staticmethod + def _gen_secret(): + secret = os.urandom(16) +- return b64encode(secret).decode('utf-8') ++ return base64.b64encode(secret).decode('utf-8') + + @classmethod + def init(cls): +@@ -45,6 +47,54 @@ class JwtManager(object): + mgr.set_store('jwt_secret', secret) + cls._secret = secret + ++ @classmethod ++ def array_to_base64_string(cls, message): ++ jsonstr = json.dumps(message, sort_keys=True).replace(" ", "") ++ string_bytes = base64.urlsafe_b64encode(bytes(jsonstr, 'UTF-8')) ++ return string_bytes.decode('UTF-8').replace("=", "") ++ ++ @classmethod ++ def encode(cls, message, secret): ++ header = {"alg": cls.JWT_ALGORITHM, "typ": "JWT"} ++ base64_header = cls.array_to_base64_string(header) ++ base64_message = cls.array_to_base64_string(message) ++ base64_secret = base64.urlsafe_b64encode(hmac.new( ++ bytes(secret, 'UTF-8'), ++ msg=bytes(base64_header + "." + base64_message, 'UTF-8'), ++ digestmod=hashlib.sha256 ++ ).digest()).decode('UTF-8').replace("=", "") ++ return base64_header + "." + base64_message + "." + base64_secret ++ ++ @classmethod ++ def decode(cls, message, secret): ++ split_message = message.split(".") ++ base64_header = split_message[0] ++ base64_message = split_message[1] ++ base64_secret = split_message[2] ++ ++ decoded_header = json.loads(base64.urlsafe_b64decode(base64_header)) ++ ++ if decoded_header['alg'] != cls.JWT_ALGORITHM: ++ raise InvalidAlgorithmError() ++ ++ incoming_secret = base64.urlsafe_b64encode(hmac.new( ++ bytes(secret, 'UTF-8'), ++ msg=bytes(base64_header + "." + base64_message, 'UTF-8'), ++ digestmod=hashlib.sha256 ++ ).digest()).decode('UTF-8').replace("=", "") ++ ++ if base64_secret != incoming_secret: ++ raise InvalidTokenError() ++ ++ # We add ==== as padding to ignore the requirement to have correct padding in ++ # the urlsafe_b64decode method. ++ decoded_message = json.loads(base64.urlsafe_b64decode(base64_message + "====")) ++ now = int(time.time()) ++ if decoded_message['exp'] < now: ++ raise ExpiredSignatureError() ++ ++ return decoded_message ++ + @classmethod + def gen_token(cls, username): + if not cls._secret: +@@ -59,13 +109,13 @@ class JwtManager(object): + 'iat': now, + 'username': username + } +- return jwt.encode(payload, cls._secret, algorithm=cls.JWT_ALGORITHM) # type: ignore ++ return cls.encode(payload, cls._secret) # type: ignore + + @classmethod + def decode_token(cls, token): + if not cls._secret: + cls.init() +- return jwt.decode(token, cls._secret, algorithms=cls.JWT_ALGORITHM) # type: ignore ++ return cls.decode(token, cls._secret) # type: ignore + + @classmethod + def get_token_from_header(cls): +@@ -99,8 +149,8 @@ class JwtManager(object): + @classmethod + def get_user(cls, token): + try: +- dtoken = JwtManager.decode_token(token) +- if not JwtManager.is_blocklisted(dtoken['jti']): ++ dtoken = cls.decode_token(token) ++ if not cls.is_blocklisted(dtoken['jti']): + user = AuthManager.get_user(dtoken['username']) + if user.last_update <= dtoken['iat']: + return user +@@ -110,10 +160,12 @@ class JwtManager(object): + ) + else: + cls.logger.debug('Token is block-listed') # type: ignore +- except jwt.ExpiredSignatureError: ++ except ExpiredSignatureError: + cls.logger.debug("Token has expired") # type: ignore +- except jwt.InvalidTokenError: ++ except InvalidTokenError: + cls.logger.debug("Failed to decode token") # type: ignore ++ except InvalidAlgorithmError: ++ cls.logger.debug("Only the HS256 algorithm is supported.") # type: ignore + except UserDoesNotExist: + cls.logger.debug( # type: ignore + "Invalid token: user %s does not exist", dtoken['username'] diff --git a/debian/patches/0018-54670-wip-cython-3.patch b/debian/patches/0018-54670-wip-cython-3.patch new file mode 100644 index 00000000000000..8b631a1489ff77 --- /dev/null +++ b/debian/patches/0018-54670-wip-cython-3.patch @@ -0,0 +1,84 @@ +diff --git a/src/pybind/rbd/setup.py b/src/pybind/rbd/setup.py +index 1f20c3ed42f..eeb33c73d49 100755 +--- a/src/pybind/rbd/setup.py ++++ b/src/pybind/rbd/setup.py +@@ -14,6 +14,7 @@ else: + from distutils.ccompiler import new_compiler + from distutils.errors import CompileError, LinkError + from itertools import filterfalse, takewhile ++from packaging import version + import distutils.sysconfig + + +@@ -148,11 +149,22 @@ else: + sys.exit(1) + + cmdclass = {} ++compiler_directives={'language_level': sys.version_info.major} + try: + from Cython.Build import cythonize + from Cython.Distutils import build_ext ++ from Cython import __version__ as cython_version + + cmdclass = {'build_ext': build_ext} ++ ++ # Needed for building with Cython 0.x and Cython 3 from the same file, ++ # preserving the same behavior. ++ # When Cython 0.x builds go away, replace this compiler directive with ++ # noexcept on rbd_callback_t and librbd_progress_fn_t (or consider doing ++ # something similar to except? -9000 on rbd_diff_iterate2() callback for ++ # progress callbacks to propagate exceptions). ++ if version.parse(cython_version) >= version.parse('3'): ++ compiler_directives['legacy_implicit_noexcept'] = True + except ImportError: + print("WARNING: Cython is not installed.") + +@@ -197,7 +209,7 @@ setup( + **ext_args + ) + ], +- compiler_directives={'language_level': sys.version_info.major}, ++ compiler_directives=compiler_directives, + build_dir=os.environ.get("CYTHON_BUILD_DIR", None), + **cythonize_args + ), +diff --git a/src/test/pybind/test_rbd.py b/src/test/pybind/test_rbd.py +index d1f4d70ecbd..70b6d5ba5da 100644 +--- a/src/test/pybind/test_rbd.py ++++ b/src/test/pybind/test_rbd.py +@@ -403,6 +403,18 @@ def test_remove_canceled(): + assert_raises(OperationCanceled, RBD().remove, ioctx, image_name, + on_progress=progress_cb) + ++@with_setup(create_image) ++def test_remove_with_progress_except(): ++ d = {'received_callback': False} ++ def progress_cb(current, total): ++ d['received_callback'] = True ++ raise Exception() ++ ++ # exception is logged and ignored with a Cython warning: ++ # Exception ignored in: 'rbd.progress_callback' ++ RBD().remove(ioctx, image_name, on_progress=progress_cb) ++ eq(True, d['received_callback']) ++ + @with_setup(create_image, remove_image) + def test_rename(): + rbd = RBD() +@@ -1239,6 +1251,16 @@ class TestImage(object): + assert(comp.get_return_value() < 0) + eq(sys.getrefcount(comp), 2) + ++ # test3: except case ++ def cbex(_, buf): ++ raise KeyError() ++ ++ def test3(): ++ comp = self.image.aio_read(IMG_SIZE, 20, cbex) ++ comp.wait_for_complete_and_cb() ++ ++ assert_raises(KeyError, test3) ++ + def test_aio_write(self): + retval = [None] + def cb(comp): diff --git a/debian/patches/0019-52121-wip-blkdev-nodiscard.patch b/debian/patches/0019-52121-wip-blkdev-nodiscard.patch new file mode 100644 index 00000000000000..1f691626295bbd --- /dev/null +++ b/debian/patches/0019-52121-wip-blkdev-nodiscard.patch @@ -0,0 +1,13 @@ +diff --git a/src/common/blkdev.cc b/src/common/blkdev.cc +index b3047fc3037..0e210094406 100644 +--- a/src/common/blkdev.cc ++++ b/src/common/blkdev.cc +@@ -1320,7 +1320,7 @@ void get_device_metadata( + } + devpaths += dev + "=" + path; + } else { +- (*errs)[dev] + " no unique device path for "s + dev + ": " + err; ++ (*errs)[dev] += " no unique device path for "s + dev + ": " + err; + } + } + } diff --git a/debian/patches/0020-54974-c99.patch b/debian/patches/0020-54974-c99.patch new file mode 100644 index 00000000000000..720aa755940116 --- /dev/null +++ b/debian/patches/0020-54974-c99.patch @@ -0,0 +1,188 @@ +diff --git a/src/pybind/rbd/c_rbd.pxd b/src/pybind/rbd/c_rbd.pxd +index 275984209f7..bfe2952bd56 100644 +--- a/src/pybind/rbd/c_rbd.pxd ++++ b/src/pybind/rbd/c_rbd.pxd +@@ -2,6 +2,7 @@ + + from libc.stdint cimport * + from ctime cimport time_t, timespec ++cimport libcpp + + cdef extern from "rados/librados.h": + enum: +@@ -515,7 +516,7 @@ cdef extern from "rbd/librbd.h" nogil: + int rbd_snap_unprotect(rbd_image_t image, const char *snap_name) + int rbd_snap_is_protected(rbd_image_t image, const char *snap_name, + int *is_protected) +- int rbd_snap_exists(rbd_image_t image, const char *snapname, bint *exists) ++ int rbd_snap_exists(rbd_image_t image, const char *snapname, libcpp.bool *exists) + int rbd_snap_get_limit(rbd_image_t image, uint64_t *limit) + int rbd_snap_set_limit(rbd_image_t image, uint64_t limit) + int rbd_snap_get_timestamp(rbd_image_t image, uint64_t snap_id, timespec *timestamp) +@@ -701,7 +702,7 @@ cdef extern from "rbd/librbd.h" nogil: + int rbd_namespace_list(rados_ioctx_t io, char *namespace_names, + size_t *size) + int rbd_namespace_exists(rados_ioctx_t io, const char *namespace_name, +- bint *exists) ++ libcpp.bool *exists) + + int rbd_pool_init(rados_ioctx_t, bint force) + +diff --git a/src/pybind/rbd/mock_rbd.pxi b/src/pybind/rbd/mock_rbd.pxi +index ddba059ba4e..83393214ad2 100644 +--- a/src/pybind/rbd/mock_rbd.pxi ++++ b/src/pybind/rbd/mock_rbd.pxi +@@ -3,6 +3,11 @@ + from libc.stdint cimport * + from ctime cimport time_t, timespec + ++# Make the bool type available as libcpp.bool, for both C and C++. ++cimport libcpp ++cdef extern from "": ++ pass ++ + cdef nogil: + enum: + _LIBRADOS_SNAP_HEAD "LIBRADOS_SNAP_HEAD" +@@ -627,7 +632,7 @@ cdef nogil: + int rbd_snap_is_protected(rbd_image_t image, const char *snap_name, + int *is_protected): + pass +- int rbd_snap_exists(rbd_image_t image, const char *snapname, bint *exists): ++ int rbd_snap_exists(rbd_image_t image, const char *snapname, libcpp.bool *exists): + pass + int rbd_snap_get_limit(rbd_image_t image, uint64_t *limit): + pass +@@ -886,7 +891,7 @@ cdef nogil: + size_t *size): + pass + int rbd_namespace_exists(rados_ioctx_t io, const char *namespace_name, +- bint *exists): ++ libcpp.bool *exists): + pass + int rbd_pool_init(rados_ioctx_t io, bint force): + pass +diff --git a/src/pybind/rbd/rbd.pyx b/src/pybind/rbd/rbd.pyx +index 5a11723df0f..1908baa1f4b 100644 +--- a/src/pybind/rbd/rbd.pyx ++++ b/src/pybind/rbd/rbd.pyx +@@ -23,6 +23,7 @@ from libc cimport errno + from libc.stdint cimport * + from libc.stdlib cimport realloc, free + from libc.string cimport strdup ++cimport libcpp + + try: + from collections.abc import Iterable +@@ -1934,12 +1935,12 @@ class RBD(object): + cdef: + rados_ioctx_t _ioctx = convert_ioctx(ioctx) + const char *_name = name +- bint _exists = False ++ libcpp.bool _exists = False + with nogil: + ret = rbd_namespace_exists(_ioctx, _name, &_exists) + if ret != 0: + raise make_ex(ret, 'error verifying namespace') +- return bool(_exists != 0) ++ return _exists + + def namespace_list(self, ioctx): + """ +@@ -3678,12 +3679,12 @@ cdef class Image(object): + name = cstr(name, 'name') + cdef: + char *_name = name +- bint _exists = False ++ libcpp.bool _exists = False + with nogil: + ret = rbd_snap_exists(self.image, _name, &_exists) + if ret != 0: + raise make_ex(ret, 'error getting snapshot exists for %s' % self.name) +- return bool(_exists != 0) ++ return _exists + + @requires_not_closed + def get_snap_limit(self): +diff --git a/src/pybind/rgw/mock_rgw.pxi b/src/pybind/rgw/mock_rgw.pxi +index ca893a5bb8a..806d4df75de 100644 +--- a/src/pybind/rgw/mock_rgw.pxi ++++ b/src/pybind/rgw/mock_rgw.pxi +@@ -1,5 +1,10 @@ + # cython: embedsignature=True + ++# Make the bool type available as libcpp.bool, for both C and C++. ++cimport libcpp ++cdef extern from "": ++ pass ++ + cdef nogil: + ctypedef void* librgw_t + +@@ -111,8 +116,8 @@ cdef nogil: + + int rgw_readdir(rgw_fs *fs, + rgw_file_handle *parent_fh, uint64_t *offset, +- bint (*cb)(const char *name, void *arg, uint64_t offset, stat *st, uint32_t st_mask, uint32_t flags) nogil except? -9000, +- void *cb_arg, bint *eof, uint32_t flags) except? -9000: ++ libcpp.bool (*cb)(const char *name, void *arg, uint64_t offset, stat *st, uint32_t st_mask, uint32_t flags) nogil except? -9000, ++ void *cb_arg, libcpp.bool *eof, uint32_t flags) except? -9000: + pass + + int rgw_getattr(rgw_fs *fs, +diff --git a/src/pybind/rgw/rgw.pyx b/src/pybind/rgw/rgw.pyx +index 9bbcdfff586..d210a70bbb8 100644 +--- a/src/pybind/rgw/rgw.pyx ++++ b/src/pybind/rgw/rgw.pyx +@@ -7,6 +7,7 @@ from cpython cimport PyObject, ref, exc, array + from libc.stdint cimport * + from libc.stdlib cimport malloc, realloc, free + from cstat cimport stat ++cimport libcpp + + IF BUILD_DOC: + include "mock_rgw.pxi" +@@ -373,7 +374,7 @@ cdef class LibRGWFS(object): + cdef: + rgw_file_handle *_dir_handler = dir_handler.handler + uint64_t _offset = offset +- bint _eof ++ libcpp.bool _eof + uint32_t _flags = flags + with nogil: + ret = rgw_readdir(self.fs, _dir_handler, &_offset, &readdir_cb, +diff --git a/src/tracing/librados.tp b/src/tracing/librados.tp +index 80bb79f9ce4..f12bcf2d3f9 100644 +--- a/src/tracing/librados.tp ++++ b/src/tracing/librados.tp +@@ -2586,7 +2586,7 @@ TRACEPOINT_EVENT(librados, rados_watch3_enter, + TP_FIELDS( + ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) + ctf_string(oid, oid) +- ctf_integer_hex(uint64_t, phandle, phandle) ++ ctf_integer_hex(uint64_t*, phandle, phandle) + ctf_integer_hex(rados_watchcb2_t, callback, callback) + ctf_integer(uint32_t, timeout, timeout) + ctf_integer_hex(void*, arg, arg) +@@ -2616,7 +2616,7 @@ TRACEPOINT_EVENT(librados, rados_aio_watch2_enter, + ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) + ctf_string(oid, oid) + ctf_integer_hex(rados_completion_t, completion, completion) +- ctf_integer_hex(uint64_t, phandle, phandle) ++ ctf_integer_hex(uint64_t*, phandle, phandle) + ctf_integer_hex(rados_watchcb2_t, callback, callback) + ctf_integer(uint32_t, timeout, timeout) + ctf_integer_hex(void*, arg, arg) +diff --git a/src/tracing/tracing-common.h b/src/tracing/tracing-common.h +index 3e07f9de8e8..03449ab5886 100644 +--- a/src/tracing/tracing-common.h ++++ b/src/tracing/tracing-common.h +@@ -21,7 +21,7 @@ + // type should be an integer type + // val should have type type* + #define ceph_ctf_integerp(type, field, val) \ +- ctf_integer(type, field, (val) == NULL ? 0 : (val)) \ ++ ctf_integer(type, field, (val) == NULL ? 0 : *(val)) \ + ctf_integer(uint8_t, field##_isnull, (val) == NULL) + + // val should have type char* diff --git a/debian/patches/0021-55306-wip-bug-64050.patch b/debian/patches/0021-55306-wip-bug-64050.patch new file mode 100644 index 00000000000000..e67dd6df78879b --- /dev/null +++ b/debian/patches/0021-55306-wip-bug-64050.patch @@ -0,0 +1,37 @@ +diff --git a/src/common/dout.h b/src/common/dout.h +index a1375fbb910..8caba1abe3e 100644 +--- a/src/common/dout.h ++++ b/src/common/dout.h +@@ -146,17 +146,27 @@ struct is_dynamic> : public std::true_type {}; + #else + #define dout_impl(cct, sub, v) \ + do { \ +- const bool should_gather = [&](const auto cctX) { \ +- if constexpr (ceph::dout::is_dynamic::value || \ +- ceph::dout::is_dynamic::value) { \ ++ const bool should_gather = [&](const auto cctX, auto sub_, auto v_) { \ ++ /* The check is performed on `sub_` and `v_` to leverage the C++'s \ ++ * guarantee on _discarding_ one of blocks of `if constexpr`, which \ ++ * includes also the checks for ill-formed code (`should_gather<>` \ ++ * must not be feed with non-const expresions), BUT ONLY within \ ++ * a template (thus the generic lambda) and under the restriction \ ++ * it's dependant on a parameter of this template). \ ++ * GCC prior to v14 was not enforcing these restrictions. */ \ ++ if constexpr (ceph::dout::is_dynamic::value || \ ++ ceph::dout::is_dynamic::value) { \ + return cctX->_conf->subsys.should_gather(sub, v); \ + } else { \ ++ constexpr auto sub_helper = static_cast(sub); \ ++ constexpr auto v_helper = static_cast(v); \ + /* The parentheses are **essential** because commas in angle \ + * brackets are NOT ignored on macro expansion! A language's \ + * limitation, sorry. */ \ +- return (cctX->_conf->subsys.template should_gather()); \ ++ return (cctX->_conf->subsys.template should_gather()); \ + } \ +- }(cct); \ ++ }(cct, sub, v); \ + \ + if (should_gather) { \ + ceph::logging::MutableEntry _dout_e(v, sub); \ diff --git a/debian/patches/0022-fix-bundled-rapidjson.patch b/debian/patches/0022-fix-bundled-rapidjson.patch new file mode 100644 index 00000000000000..3640259666cbe2 --- /dev/null +++ b/debian/patches/0022-fix-bundled-rapidjson.patch @@ -0,0 +1,13 @@ +diff --git a/src/rapidjson/include/rapidjson/document.h b/src/rapidjson/include/rapidjson/document.h +index e3e20df..b0f1f70 100644 +--- a/src/rapidjson/include/rapidjson/document.h ++++ b/src/rapidjson/include/rapidjson/document.h +@@ -316,8 +316,6 @@ struct GenericStringRef { + + GenericStringRef(const GenericStringRef& rhs) : s(rhs.s), length(rhs.length) {} + +- GenericStringRef& operator=(const GenericStringRef& rhs) { s = rhs.s; length = rhs.length; } +- + //! implicit conversion to plain CharType pointer + operator const Ch *() const { return s; } + diff --git a/debian/patches/2001-src-common-crc32c_intel_fast.patch b/debian/patches/2001-src-common-crc32c_intel_fast.patch new file mode 100644 index 00000000000000..b0e718c0dc44a2 --- /dev/null +++ b/debian/patches/2001-src-common-crc32c_intel_fast.patch @@ -0,0 +1,55 @@ +--- ceph-15.2.2/src/common/crc32c_intel_fast_zero_asm.s.orig 2020-05-26 08:34:32.226201974 -0400 ++++ ceph-15.2.2/src/common/crc32c_intel_fast_zero_asm.s 2020-05-26 17:19:32.497201974 -0400 +@@ -1,5 +1,5 @@ + ; +-; Copyright 2012-2013 Intel Corporation All Rights Reserved. ++; Copyright 2012-2015 Intel Corporation All Rights Reserved. + ; All rights reserved. + ; + ; http://opensource.org/licenses/BSD-3-Clause +@@ -59,6 +59,19 @@ + xor rbx, rbx ;; rbx = crc1 = 0; + xor r10, r10 ;; r10 = crc2 = 0; + ++ cmp len, %%bSize*3*2 ++ jbe %%non_prefetch ++ ++ %assign i 0 ++ %rep %%bSize/8 - 1 ++ crc32 rax, bufptmp ;; update crc0 ++ crc32 rbx, bufptmp ;; update crc1 ++ crc32 r10, bufptmp ;; update crc2 ++ %assign i (i+8) ++ %endrep ++ jmp %%next %+ %1 ++ ++%%non_prefetch: + %assign i 0 + %rep %%bSize/8 - 1 + crc32 rax, bufptmp ;; update crc0 +@@ -66,6 +79,8 @@ + crc32 r10, bufptmp ;; update crc2 + %assign i (i+8) + %endrep ++ ++%%next %+ %1: + crc32 rax, bufptmp ;; update crc0 + crc32 rbx, bufptmp ;; update crc1 + ; SKIP ;crc32 r10, bufptmp ;; update crc2 +@@ -180,12 +195,15 @@ + %define crc_init_dw r8d + %endif + +- ++ endbranch + push rdi + push rbx + + mov rax, crc_init ;; rax = crc_init; + ++ cmp len, 8 ++ jb less_than_8 ++ + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;; 1) ALIGN: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + diff --git a/debian/patches/2003-src-common-bitstr.h.patch b/debian/patches/2003-src-common-bitstr.h.patch new file mode 100644 index 00000000000000..3c7a516d643c78 --- /dev/null +++ b/debian/patches/2003-src-common-bitstr.h.patch @@ -0,0 +1,10 @@ +--- ceph-15.1.0/src/common/bit_str.h.orig 2020-02-03 09:47:20.047149798 -0500 ++++ ceph-15.1.0/src/common/bit_str.h 2020-02-03 09:47:50.213149798 -0500 +@@ -17,6 +17,7 @@ + #include + #include + #include ++#include + + namespace ceph { + class Formatter; diff --git a/debian/patches/2008-cmake-modules-Finduring.cmake.patch b/debian/patches/2008-cmake-modules-Finduring.cmake.patch new file mode 100644 index 00000000000000..61b93f7a3f52d6 --- /dev/null +++ b/debian/patches/2008-cmake-modules-Finduring.cmake.patch @@ -0,0 +1,11 @@ +--- ceph-16.1.0-43-g6b74fb5c/cmake/modules/Finduring.cmake.orig 2021-02-01 08:45:39.316108287 -0500 ++++ ceph-16.1.0-43-g6b74fb5c/cmake/modules/Finduring.cmake 2021-02-01 08:45:59.813665378 -0500 +@@ -5,7 +5,7 @@ + # uring_FOUND - True if uring found. + + find_path(URING_INCLUDE_DIR liburing.h) +-find_library(URING_LIBRARIES liburing.a liburing) ++find_library(URING_LIBRARIES liburing.so liburing) + + include(FindPackageHandleStandardArgs) + find_package_handle_standard_args(uring DEFAULT_MSG URING_LIBRARIES URING_INCLUDE_DIR) diff --git a/debian/patches/2010-CET-Add-CET-marker-to-crc32c_intel_fast_zero_asm.s.patch b/debian/patches/2010-CET-Add-CET-marker-to-crc32c_intel_fast_zero_asm.s.patch new file mode 100644 index 00000000000000..d24f6cf42b8aba --- /dev/null +++ b/debian/patches/2010-CET-Add-CET-marker-to-crc32c_intel_fast_zero_asm.s.patch @@ -0,0 +1,27 @@ +From 1999108aeb1f6f93a19ea7bb64c6ae8b87d1b264 Mon Sep 17 00:00:00 2001 +From: "H.J. Lu" +Date: Thu, 20 Jan 2023 05:33:13 -0800 +Subject: [PATCH] CET: Add CET marker to crc32c_intel_fast_zero_asm.s + +Add .note.gnu.property section to crc32c_intel_fast_zero_asm.s to mark +for IBT and SHSTK compatibility. +--- + src/common/crc32c_intel_fast_zero_asm.s | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/common/crc32c_intel_fast_zero_asm.s b/src/common/crc32c_intel_fast_zero_asm.s +index 216ecf639f3..2e291d858f3 100644 +--- a/src/common/crc32c_intel_fast_zero_asm.s ++++ b/src/common/crc32c_intel_fast_zero_asm.s +@@ -654,4 +654,8 @@ slversion crc32_iscsi_zero_00, 00, 02, 0014 + %ifidn __OUTPUT_FORMAT__, elf64 + ; inform linker that this doesn't require executable stack + section .note.GNU-stack noalloc noexec nowrite progbits ++; inform linker that this is compatible with IBT and SHSTK ++section .note.gnu.property note alloc noexec align=8 ++DD 0x00000004,0x00000010,0x00000005,0x00554e47 ++DD 0xc0000002,0x00000004,0x00000003,0x00000000 + %endif +-- +2.34.1 + diff --git a/debian/patches/2011-isa-l-CET-Add-CET-marker-to-x86-64-crc32-assembly-co.patch b/debian/patches/2011-isa-l-CET-Add-CET-marker-to-x86-64-crc32-assembly-co.patch new file mode 100644 index 00000000000000..30065e26d86676 --- /dev/null +++ b/debian/patches/2011-isa-l-CET-Add-CET-marker-to-x86-64-crc32-assembly-co.patch @@ -0,0 +1,172 @@ +From bbcc1a69f787881f16156f3c789052942a564103 Mon Sep 17 00:00:00 2001 +From: "H.J. Lu" +Date: Thu, 20 Jan 2023 05:35:49 -0800 +Subject: [PATCH] isa-l/CET: Add CET marker to x86-64 crc32 assembly codes + +Add .note.gnu.property section to x86-64 crc32 assembly codes to mark +for IBT and SHSTK compatibility. +--- + crc/crc32_gzip_refl_by16_10.asm | 9 +++++++++ + crc/crc32_gzip_refl_by8.asm | 9 +++++++++ + crc/crc32_gzip_refl_by8_02.asm | 9 +++++++++ + crc/crc32_ieee_01.asm | 8 ++++++++ + crc/crc32_ieee_02.asm | 9 +++++++++ + crc/crc32_ieee_by16_10.asm | 9 +++++++++ + crc/crc32_ieee_by4.asm | 9 +++++++++ + crc/crc32_iscsi_00.asm | 8 ++++++++ + crc/crc32_iscsi_01.asm | 8 ++++++++ + 9 files changed, 78 insertions(+) + +diff --git a/src/isa-l/crc/crc32_gzip_refl_by16_10.asm b/src/isa-l/crc/crc32_gzip_refl_by16_10.asm +index 40236f6..b16874d 100644 +--- a/src/isa-l/crc/crc32_gzip_refl_by16_10.asm ++++ b/src/isa-l/crc/crc32_gzip_refl_by16_10.asm +@@ -566,3 +566,12 @@ global no_ %+ FUNCTION_NAME + no_ %+ FUNCTION_NAME %+ : + %endif + %endif ; (AS_FEATURE_LEVEL) >= 10 ++ ++%ifidn __OUTPUT_FORMAT__, elf64 ++; inform linker that this doesn't require executable stack ++section .note.GNU-stack noalloc noexec nowrite progbits ++; inform linker that this is compatible with IBT and SHSTK ++section .note.gnu.property note alloc noexec align=8 ++DD 0x00000004,0x00000010,0x00000005,0x00554e47 ++DD 0xc0000002,0x00000004,0x00000003,0x00000000 ++%endif +diff --git a/src/isa-l/crc/crc32_gzip_refl_by8.asm b/src/isa-l/crc/crc32_gzip_refl_by8.asm +index 62f7e7d..97b0c4a 100644 +--- a/src/isa-l/crc/crc32_gzip_refl_by8.asm ++++ b/src/isa-l/crc/crc32_gzip_refl_by8.asm +@@ -622,3 +622,12 @@ dq 0x0706050403020100, 0x000e0d0c0b0a0908 + + ;;; func core, ver, snum + slversion crc32_gzip_refl_by8, 01, 00, 002c ++ ++%ifidn __OUTPUT_FORMAT__, elf64 ++; inform linker that this doesn't require executable stack ++section .note.GNU-stack noalloc noexec nowrite progbits ++; inform linker that this is compatible with IBT and SHSTK ++section .note.gnu.property note alloc noexec align=8 ++DD 0x00000004,0x00000010,0x00000005,0x00554e47 ++DD 0xc0000002,0x00000004,0x00000003,0x00000000 ++%endif +diff --git a/src/isa-l/crc/crc32_gzip_refl_by8_02.asm b/src/isa-l/crc/crc32_gzip_refl_by8_02.asm +index 80d849e..1d5a75f 100644 +--- a/src/isa-l/crc/crc32_gzip_refl_by8_02.asm ++++ b/src/isa-l/crc/crc32_gzip_refl_by8_02.asm +@@ -553,3 +553,12 @@ pshufb_shf_table: + ; dq 0x060504030201008f, 0x0e0d0c0b0a090807 ; shl 1 (16-15) / shr15 + dq 0x8786858483828100, 0x8f8e8d8c8b8a8988 + dq 0x0706050403020100, 0x000e0d0c0b0a0908 ++ ++%ifidn __OUTPUT_FORMAT__, elf64 ++; inform linker that this doesn't require executable stack ++section .note.GNU-stack noalloc noexec nowrite progbits ++; inform linker that this is compatible with IBT and SHSTK ++section .note.gnu.property note alloc noexec align=8 ++DD 0x00000004,0x00000010,0x00000005,0x00554e47 ++DD 0xc0000002,0x00000004,0x00000003,0x00000000 ++%endif +diff --git a/src/isa-l/crc/crc32_ieee_01.asm b/src/isa-l/crc/crc32_ieee_01.asm +index 32495ed..cfc443b 100644 +--- a/src/isa-l/crc/crc32_ieee_01.asm ++++ b/src/isa-l/crc/crc32_ieee_01.asm +@@ -653,3 +653,11 @@ dq 0x0706050403020100, 0x000e0d0c0b0a0908 + ;;; func core, ver, snum + slversion crc32_ieee_01, 01, 06, 0011 + ++%ifidn __OUTPUT_FORMAT__, elf64 ++; inform linker that this doesn't require executable stack ++section .note.GNU-stack noalloc noexec nowrite progbits ++; inform linker that this is compatible with IBT and SHSTK ++section .note.gnu.property note alloc noexec align=8 ++DD 0x00000004,0x00000010,0x00000005,0x00554e47 ++DD 0xc0000002,0x00000004,0x00000003,0x00000000 ++%endif +diff --git a/src/isa-l/crc/crc32_ieee_02.asm b/src/isa-l/crc/crc32_ieee_02.asm +index 8a472b0..dd7096a 100644 +--- a/src/isa-l/crc/crc32_ieee_02.asm ++++ b/src/isa-l/crc/crc32_ieee_02.asm +@@ -649,3 +649,12 @@ pshufb_shf_table: + ; dq 0x060504030201008f, 0x0e0d0c0b0a090807 ; shl 1 (16-15) / shr15 + dq 0x8786858483828100, 0x8f8e8d8c8b8a8988 + dq 0x0706050403020100, 0x000e0d0c0b0a0908 ++ ++%ifidn __OUTPUT_FORMAT__, elf64 ++; inform linker that this doesn't require executable stack ++section .note.GNU-stack noalloc noexec nowrite progbits ++; inform linker that this is compatible with IBT and SHSTK ++section .note.gnu.property note alloc noexec align=8 ++DD 0x00000004,0x00000010,0x00000005,0x00554e47 ++DD 0xc0000002,0x00000004,0x00000003,0x00000000 ++%endif +diff --git a/src/isa-l/crc/crc32_ieee_by16_10.asm b/src/isa-l/crc/crc32_ieee_by16_10.asm +index 200fd93..2afd597 100644 +--- a/src/isa-l/crc/crc32_ieee_by16_10.asm ++++ b/src/isa-l/crc/crc32_ieee_by16_10.asm +@@ -582,3 +582,12 @@ global no_ %+ FUNCTION_NAME + no_ %+ FUNCTION_NAME %+ : + %endif + %endif ; (AS_FEATURE_LEVEL) >= 10 ++ ++%ifidn __OUTPUT_FORMAT__, elf64 ++; inform linker that this doesn't require executable stack ++section .note.GNU-stack noalloc noexec nowrite progbits ++; inform linker that this is compatible with IBT and SHSTK ++section .note.gnu.property note alloc noexec align=8 ++DD 0x00000004,0x00000010,0x00000005,0x00554e47 ++DD 0xc0000002,0x00000004,0x00000003,0x00000000 ++%endif +diff --git a/src/isa-l/crc/crc32_ieee_by4.asm b/src/isa-l/crc/crc32_ieee_by4.asm +index 39bed5a..847d0bd 100644 +--- a/src/isa-l/crc/crc32_ieee_by4.asm ++++ b/src/isa-l/crc/crc32_ieee_by4.asm +@@ -563,3 +563,12 @@ SHUF_MASK dq 0x08090A0B0C0D0E0F, 0x0001020304050607 + + ;;; func core, ver, snum + slversion crc32_ieee_by4, 05, 02, 0017 ++ ++%ifidn __OUTPUT_FORMAT__, elf64 ++; inform linker that this doesn't require executable stack ++section .note.GNU-stack noalloc noexec nowrite progbits ++; inform linker that this is compatible with IBT and SHSTK ++section .note.gnu.property note alloc noexec align=8 ++DD 0x00000004,0x00000010,0x00000005,0x00554e47 ++DD 0xc0000002,0x00000004,0x00000003,0x00000000 ++%endif +diff --git a/src/isa-l/crc/crc32_iscsi_00.asm b/src/isa-l/crc/crc32_iscsi_00.asm +index 4f81e3a..3d6b2d1 100644 +--- a/src/isa-l/crc/crc32_iscsi_00.asm ++++ b/src/isa-l/crc/crc32_iscsi_00.asm +@@ -669,3 +669,11 @@ DD 0x54851c7f,0x89e3d7c4,0xeba4fdf8,0x36c23643 + ;;; func core, ver, snum + slversion crc32_iscsi_00, 00, 04, 0014 + ++%ifidn __OUTPUT_FORMAT__, elf64 ++; inform linker that this doesn't require executable stack ++section .note.GNU-stack noalloc noexec nowrite progbits ++; inform linker that this is compatible with IBT and SHSTK ++section .note.gnu.property note alloc noexec align=8 ++DD 0x00000004,0x00000010,0x00000005,0x00554e47 ++DD 0xc0000002,0x00000004,0x00000003,0x00000000 ++%endif +diff --git a/src/isa-l/crc/crc32_iscsi_01.asm b/src/isa-l/crc/crc32_iscsi_01.asm +index 2a81517..c048413 100644 +--- a/src/isa-l/crc/crc32_iscsi_01.asm ++++ b/src/isa-l/crc/crc32_iscsi_01.asm +@@ -588,3 +588,11 @@ K_table: + ;;; func core, ver, snum + slversion crc32_iscsi_01, 01, 04, 0015 + ++%ifidn __OUTPUT_FORMAT__, elf64 ++; inform linker that this doesn't require executable stack ++section .note.GNU-stack noalloc noexec nowrite progbits ++; inform linker that this is compatible with IBT and SHSTK ++section .note.gnu.property note alloc noexec align=8 ++DD 0x00000004,0x00000010,0x00000005,0x00554e47 ++DD 0xc0000002,0x00000004,0x00000003,0x00000000 ++%endif +-- +2.34.1 + diff --git a/debian/patches/2016-src-tracing.patch b/debian/patches/2016-src-tracing.patch new file mode 100644 index 00000000000000..228d93f431bc9e --- /dev/null +++ b/debian/patches/2016-src-tracing.patch @@ -0,0 +1,23 @@ +--- ceph-16.2.6-681-gfdc003bc/src/tracing/bluestore.tp.orig 2021-12-07 08:02:04.682972474 -0500 ++++ ceph-16.2.6-681-gfdc003bc/src/tracing/bluestore.tp 2021-12-07 08:03:13.840771852 -0500 +@@ -1,3 +1,9 @@ ++ ++#ifdef __x86_64__ ++#undef STAP_SDT_ARG_CONSTRAINT ++#define STAP_SDT_ARG_CONSTRAINT norx ++#endif ++ + #include "include/int_types.h" + + TRACEPOINT_EVENT(bluestore, transaction_state_duration, +--- ceph-16.2.6-681-gfdc003bc/src/tracing/librbd.tp.orig 2021-12-07 09:50:16.467579483 -0500 ++++ ceph-16.2.6-681-gfdc003bc/src/tracing/librbd.tp 2021-12-07 09:50:47.620026940 -0500 +@@ -1,3 +1,8 @@ ++#ifdef __x86_64__ ++#undef STAP_SDT_ARG_CONSTRAINT ++#define STAP_SDT_ARG_CONSTRAINT norx ++#endif ++ + #include "tracing/tracing-common.h" + #include "include/rbd/librbd.h" + #include "include/int_types.h" diff --git a/debian/patches/2017-gcc-12-omnibus.patch b/debian/patches/2017-gcc-12-omnibus.patch new file mode 100644 index 00000000000000..d7a468e98b8996 --- /dev/null +++ b/debian/patches/2017-gcc-12-omnibus.patch @@ -0,0 +1,63 @@ +--- ceph-16.2.7/src/include/buffer.h.orig 2023-01-17 12:17:19.193356237 -0500 ++++ ceph-16.2.7/src/include/buffer.h 2023-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 2023-01-17 13:52:10.799134159 -0500 ++++ ceph-16.2.7/src/common/LogEntry.cc 2023-01-17 13:52:47.244469274 -0500 +@@ -183,7 +183,7 @@ + return "crit"; + default: + ceph_abort(); +- return 0; ++ return ""; + } + } + +--- ceph-16.2.7/src/test/librados/tier_cxx.cc.orig 2023-01-19 09:30:47.209459506 -0500 ++++ ceph-16.2.7/src/test/librados/tier_cxx.cc 2023-01-19 10:02:47.783240298 -0500 +@@ -114,7 +114,7 @@ + #include "rgw/rgw_common.h" + + void check_fp_oid_refcount(librados::IoCtx& ioctx, std::string foid, uint64_t count, +- std::string fp_algo = NULL) ++ std::string fp_algo = "") + { + bufferlist t; + int size = foid.length(); +@@ -142,7 +142,7 @@ + ASSERT_LE(count, refs.count()); + } + +-string get_fp_oid(string oid, std::string fp_algo = NULL) ++string get_fp_oid(string oid, std::string fp_algo = "") + { + if (fp_algo == "sha1") { + unsigned char fingerprint[CEPH_CRYPTO_SHA1_DIGESTSIZE + 1]; +--- ceph-16.2.7/src/test/test_trans.cc.orig 2023-01-19 13:24:33.460008897 -0500 ++++ ceph-16.2.7/src/test/test_trans.cc 2023-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 2023-02-11 17:21:40.268627997 -0500 ++++ ceph-17.0.0-10335-gfd206722/src/s3select/include/s3select_functions.h 2023-02-11 17:21:57.155325437 -0500 +@@ -466,7 +466,7 @@ + + std::string print(int ident) override + { +- return std::string(0); ++ return std::string(""); + } + + void push_argument(base_statement* arg) diff --git a/debian/patches/2018-src-rgw-store-dbstore-CMakeLists.txt.patch b/debian/patches/2018-src-rgw-store-dbstore-CMakeLists.txt.patch new file mode 100644 index 00000000000000..391bb04bef8133 --- /dev/null +++ b/debian/patches/2018-src-rgw-store-dbstore-CMakeLists.txt.patch @@ -0,0 +1,37 @@ +--- ceph-17.1.0/src/rgw/store/dbstore/sqlite/CMakeLists.txt.orig 2023-03-01 08:19:04.974902872 -0500 ++++ ceph-17.1.0/src/rgw/store/dbstore/sqlite/CMakeLists.txt 2023-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 2023-02-28 14:11:49.987077811 -0500 ++++ ceph-17.1.0/src/rgw/store/dbstore/CMakeLists.txt 2023-03-11 08:40:13.409682698 -0500 +@@ -16,7 +16,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 @@ + + # add pthread library + set (CMAKE_LINK_LIBRARIES ${CMAKE_LINK_LIBRARIES} pthread) ++set (CMAKE_LINK_LIBRARIES ${CMAKE_LINK_LIBRARIES} global) + + 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/debian/patches/2019-cmake-modules-CheckCxxAtomic.cmake.patch b/debian/patches/2019-cmake-modules-CheckCxxAtomic.cmake.patch new file mode 100644 index 00000000000000..828421ce2ec88c --- /dev/null +++ b/debian/patches/2019-cmake-modules-CheckCxxAtomic.cmake.patch @@ -0,0 +1,43 @@ +--- ceph-17.2.0-359-gb2fe9ec8/cmake/modules/CheckCxxAtomic.cmake.orig 2023-06-03 08:45:32.341075140 -0400 ++++ ceph-17.2.0-359-gb2fe9ec8/cmake/modules/CheckCxxAtomic.cmake 2023-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/debian/patches/2020-src-arrow-cpp-cmake_modules-ThirdpartyToolchain.cmake.patch b/debian/patches/2020-src-arrow-cpp-cmake_modules-ThirdpartyToolchain.cmake.patch new file mode 100644 index 00000000000000..a5fcd1c9b2ca1f --- /dev/null +++ b/debian/patches/2020-src-arrow-cpp-cmake_modules-ThirdpartyToolchain.cmake.patch @@ -0,0 +1,11 @@ +--- ceph-17.1.0-175-g086c8f84/src/arrow/cpp/cmake_modules/ThirdpartyToolchain.cmake.orig 2023-04-08 11:27:53.593570634 -0400 ++++ ceph-17.1.0-175-g086c8f84/src/arrow/cpp/cmake_modules/ThirdpartyToolchain.cmake 2023-04-08 11:28:20.778087653 -0400 +@@ -1991,7 +1991,7 @@ + + if((NOT ARROW_SIMD_LEVEL STREQUAL "NONE") OR (NOT ARROW_RUNTIME_SIMD_LEVEL STREQUAL "NONE" + )) +- set(xsimd_SOURCE "BUNDLED") ++ set(xsimd_SOURCE "SYSTEM") + resolve_dependency(xsimd) + # TODO: Don't use global includes but rather target_include_directories + include_directories(SYSTEM ${XSIMD_INCLUDE_DIR}) diff --git a/debian/patches/2023-src-s3select-include-s3select_parquet_intrf.h.patch b/debian/patches/2023-src-s3select-include-s3select_parquet_intrf.h.patch new file mode 100644 index 00000000000000..2ba821219974f2 --- /dev/null +++ b/debian/patches/2023-src-s3select-include-s3select_parquet_intrf.h.patch @@ -0,0 +1,218 @@ +--- ceph-17.2.3/src/s3select/include/s3select_parquet_intrf.h.orig 2023-01-11 15:47:52.000000000 -0500 ++++ ceph-17.2.3/src/s3select/include/s3select_parquet_intrf.h 2023-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/debian/patches/2024-gcc-13.patch b/debian/patches/2024-gcc-13.patch new file mode 100644 index 00000000000000..ebe0cfdaabe102 --- /dev/null +++ b/debian/patches/2024-gcc-13.patch @@ -0,0 +1,178 @@ +diff --git a/src/common/Cycles.h b/src/common/Cycles.h +index b546479..8ffc645 100644 +--- a/src/common/Cycles.h ++++ b/src/common/Cycles.h +@@ -29,8 +29,9 @@ + */ + + +-#ifndef CEPH_CYCLES_H +-#define CEPH_CYCLES_H ++#pragma once ++ ++#include + + #include + +@@ -114,4 +115,3 @@ private: + } + }; + +-#endif // CEPH_CYCLES_H +diff --git a/src/common/subsys_types.h b/src/common/subsys_types.h +index bd7cc43..6f8fd01 100644 +--- a/src/common/subsys_types.h ++++ b/src/common/subsys_types.h +@@ -54,7 +54,7 @@ ceph_subsys_get_as_array() { + #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); +diff --git a/src/include/ceph_features.h b/src/include/ceph_features.h +index 1287d39..40562cb 100644 +--- a/src/include/ceph_features.h ++++ b/src/include/ceph_features.h +@@ -2,6 +2,7 @@ + #define __CEPH_FEATURES + + #include "sys/types.h" ++#include + + /* + * Each time we reclaim bits for reuse we need to specify another +diff --git a/src/librbd/api/PoolMetadata.h b/src/librbd/api/PoolMetadata.h +index 69ab574..5b3402d 100644 +--- a/src/librbd/api/PoolMetadata.h ++++ b/src/librbd/api/PoolMetadata.h +@@ -10,6 +10,7 @@ + #include + #include + #include ++#include + + namespace librbd { + +diff --git a/src/msg/async/compression_onwire.h b/src/msg/async/compression_onwire.h +index d3b35a4..d71f29a 100644 +--- a/src/msg/async/compression_onwire.h ++++ b/src/msg/async/compression_onwire.h +@@ -45,7 +45,7 @@ namespace ceph::compression::onwire { + + 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)) +@@ -98,7 +98,7 @@ namespace ceph::compression::onwire { + static rxtx_t create_handler_pair( + CephContext* ctx, + const CompConnectionMeta& comp_meta, +- std::uint64_t compress_min_size); ++ uint64_t compress_min_size); + }; + } + +diff --git a/src/msg/async/crypto_onwire.h b/src/msg/async/crypto_onwire.h +index 55f7550..2213c21 100644 +--- a/src/msg/async/crypto_onwire.h ++++ b/src/msg/async/crypto_onwire.h +@@ -95,7 +95,7 @@ public: + // 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 +diff --git a/src/rocksdb/db/compaction/compaction_iteration_stats.h b/src/rocksdb/db/compaction/compaction_iteration_stats.h +index 963c1d8..8d70309 100644 +--- a/src/rocksdb/db/compaction/compaction_iteration_stats.h ++++ b/src/rocksdb/db/compaction/compaction_iteration_stats.h +@@ -6,6 +6,7 @@ + #pragma once + + #include "rocksdb/rocksdb_namespace.h" ++#include + + struct CompactionIterationStats { + // Compaction statistics +diff --git a/src/rocksdb/include/rocksdb/utilities/checkpoint.h b/src/rocksdb/include/rocksdb/utilities/checkpoint.h +index 1b6a740..9e7e1d8 100644 +--- a/src/rocksdb/include/rocksdb/utilities/checkpoint.h ++++ b/src/rocksdb/include/rocksdb/utilities/checkpoint.h +@@ -10,6 +10,7 @@ + + #include + #include ++#include + #include "rocksdb/status.h" + + namespace ROCKSDB_NAMESPACE { +diff --git a/src/rocksdb/table/block_based/data_block_hash_index.h b/src/rocksdb/table/block_based/data_block_hash_index.h +index f356395..6eaf717 100644 +--- a/src/rocksdb/table/block_based/data_block_hash_index.h ++++ b/src/rocksdb/table/block_based/data_block_hash_index.h +@@ -7,6 +7,7 @@ + + #include + #include ++#include + + #include "rocksdb/slice.h" + +diff --git a/src/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable-inl.h b/src/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable-inl.h +index 573330c..06d45cf 100644 +--- a/src/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable-inl.h ++++ b/src/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable-inl.h +@@ -13,6 +13,7 @@ + #include + #include + #include ++#include + #include + + namespace folly { +diff --git a/src/rocksdb/util/string_util.h b/src/rocksdb/util/string_util.h +index 5ff516c..b8845f9 100644 +--- a/src/rocksdb/util/string_util.h ++++ b/src/rocksdb/util/string_util.h +@@ -10,6 +10,7 @@ + #include + #include + #include ++#include + + #include "rocksdb/rocksdb_namespace.h" + +diff --git a/src/test/librados/op_speed.cc b/src/test/librados/op_speed.cc +index 849a656..53952bd 100644 +--- a/src/test/librados/op_speed.cc ++++ b/src/test/librados/op_speed.cc +@@ -11,7 +11,7 @@ int main() { + 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; +diff --git a/src/test/mon/test_log_rss_usage.cc b/src/test/mon/test_log_rss_usage.cc +index b8ca301..4a29a7d 100644 +--- a/src/test/mon/test_log_rss_usage.cc ++++ b/src/test/mon/test_log_rss_usage.cc +@@ -6,6 +6,7 @@ + #include + #include + #include ++#include + #include + #include + #include diff --git a/debian/patches/2025-selinux-prepare-for-anon-inode-controls-enablement.patch b/debian/patches/2025-selinux-prepare-for-anon-inode-controls-enablement.patch new file mode 100644 index 00000000000000..d2fd182b0c6f05 --- /dev/null +++ b/debian/patches/2025-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 2023 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/debian/patches/2030-src-rgw-rgw_asio_client.cc.patch b/debian/patches/2030-src-rgw-rgw_asio_client.cc.patch new file mode 100644 index 00000000000000..a3d7b7ddf8f192 --- /dev/null +++ b/debian/patches/2030-src-rgw-rgw_asio_client.cc.patch @@ -0,0 +1,63 @@ +diff --git a/src/rgw/rgw_asio_client.cc b/src/rgw/rgw_asio_client.cc +index a0ec0bf5c06..10d76d18950 100644 +--- a/src/rgw/rgw_asio_client.cc ++++ b/src/rgw/rgw_asio_client.cc +@@ -39,11 +39,13 @@ int ClientIO::init_env(CephContext *cct) + 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 @@ int ClientIO::init_env(CephContext *cct) + } + *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/debian/patches/2032-cmake-modules-BuildBoost.cmake.patch b/debian/patches/2032-cmake-modules-BuildBoost.cmake.patch new file mode 100644 index 00000000000000..05cdf6891d1a2f --- /dev/null +++ b/debian/patches/2032-cmake-modules-BuildBoost.cmake.patch @@ -0,0 +1,26 @@ +diff --git a/cmake/modules/BuildBoost.cmake b/cmake/modules/BuildBoost.cmake +index 8cccecd144b..af617d7980e 100644 +--- a/cmake/modules/BuildBoost.cmake ++++ b/cmake/modules/BuildBoost.cmake +@@ -104,12 +104,21 @@ function(do_build_boost root_dir version) + 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/debian/patches/2033-boost-asm.patch b/debian/patches/2033-boost-asm.patch new file mode 100644 index 00000000000000..80ee1fdef01d29 --- /dev/null +++ b/debian/patches/2033-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/debian/patches/2034-src-pybind-rbd-rbd.pyx.patch b/debian/patches/2034-src-pybind-rbd-rbd.pyx.patch new file mode 100644 index 00000000000000..fe2762c0192d28 --- /dev/null +++ b/debian/patches/2034-src-pybind-rbd-rbd.pyx.patch @@ -0,0 +1,26 @@ +diff --git a/src/pybind/rbd/rbd.pyx b/src/pybind/rbd/rbd.pyx +index 16014f1409c..02b8a01901d 100644 +--- a/src/pybind/rbd/rbd.pyx ++++ b/src/pybind/rbd/rbd.pyx +@@ -370,10 +370,10 @@ ELSE: + 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: + return 0 + + def cstr(val, name, encoding="utf-8", opt=False): +@@ -425,7 +425,7 @@ RBD_MIRROR_PEER_ATTRIBUTE_NAME_KEY = decode_cstr(_RBD_MIRROR_PEER_ATTRIBUTE_NAME + + 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/debian/patches/3005-enable-python311.patch b/debian/patches/3005-enable-python311.patch new file mode 100644 index 00000000000000..a84441e1cde4ef --- /dev/null +++ b/debian/patches/3005-enable-python311.patch @@ -0,0 +1,16 @@ +Description: cmake: add support for python 3.11 +Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/ceph/+bug/2004038 +Origin: https://github.com/ceph/ceph/pull/48947 +Index: ceph/cmake/modules/FindPython/Support.cmake +=================================================================== +--- ceph.orig/cmake/modules/FindPython/Support.cmake ++++ ceph/cmake/modules/FindPython/Support.cmake +@@ -17,7 +17,7 @@ if (NOT DEFINED _${_PYTHON_PREFIX}_REQUI + message (FATAL_ERROR "FindPython: INTERNAL ERROR") + endif() + if (_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR EQUAL 3) +- set(_${_PYTHON_PREFIX}_VERSIONS 3.10 3.9 3.8 3.7 3.6 3.5 3.4 3.3 3.2 3.1 3.0) ++ set(_${_PYTHON_PREFIX}_VERSIONS 3.11 3.10 3.9 3.8 3.7 3.6 3.5 3.4 3.3 3.2 3.1 3.0) + elseif (_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR EQUAL 2) + set(_${_PYTHON_PREFIX}_VERSIONS 2.7 2.6 2.5 2.4 2.3 2.2 2.1 2.0) + else() diff --git a/debian/patches/3006-lp1986747-fix-osd-class-dir.patch b/debian/patches/3006-lp1986747-fix-osd-class-dir.patch new file mode 100644 index 00000000000000..7c30901f221ac2 --- /dev/null +++ b/debian/patches/3006-lp1986747-fix-osd-class-dir.patch @@ -0,0 +1,23 @@ +Description: Fix rados-classes search path. + . + The commit 3bee4b0 changed the + base of the osd_class_dir path from CMAKE_INSTALL_FULL_LIBDIR to + CMAKE_INSTALL_LIBDIR. This change aligns the default value with the + correct value. +Author: Chris MacNaughton +Forwarded: https://github.com/ceph/ceph/pull/47676 +Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/ceph/+bug/1986747 + +Index: ceph/src/common/options/osd.yaml.in +=================================================================== +--- ceph.orig/src/common/options/osd.yaml.in ++++ ceph/src/common/options/osd.yaml.in +@@ -451,7 +451,7 @@ options: + - name: osd_class_dir + type: str + level: advanced +- default: @CMAKE_INSTALL_LIBDIR@/rados-classes ++ default: @CMAKE_INSTALL_FULL_LIBDIR@/rados-classes + fmt_desc: The class path for RADOS class plug-ins. + with_legacy: true + - name: osd_open_classes_on_start diff --git a/debian/patches/3007-enable-strsignal.patch b/debian/patches/3007-enable-strsignal.patch new file mode 100644 index 00000000000000..c642a1148d0054 --- /dev/null +++ b/debian/patches/3007-enable-strsignal.patch @@ -0,0 +1,13 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 0e92cc0..b487862 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -507,7 +507,7 @@ if(WITH_THREAD_SAFE_RES_QUERY) + set(HAVE_THREAD_SAFE_RES_QUERY 1 CACHE INTERNAL "Thread safe res_query supported.") + endif() + +-option(WITH_REENTRANT_STRSIGNAL "strsignal is reentrant" OFF) ++option(WITH_REENTRANT_STRSIGNAL "strsignal is reentrant" ON) + if(WITH_REENTRANT_STRSIGNAL) + set(HAVE_REENTRANT_STRSIGNAL 1 CACHE INTERNAL "Reentrant strsignal is supported.") + endif() diff --git a/debian/patches/3008-update-java-source-target-flags.patch b/debian/patches/3008-update-java-source-target-flags.patch new file mode 100644 index 00000000000000..6c8b79228618f7 --- /dev/null +++ b/debian/patches/3008-update-java-source-target-flags.patch @@ -0,0 +1,23 @@ +Description: use --release 7 instead of -source/-target + Instead of -source/-target ceph should be build with --release for OpenJDK 9 + or later so that the bootclasspath is also set, as per JEP-247, otherwise it + risks incurring into binary incompatibility when run with an earlier OpenJDK. + OpenJDK 11 minimum compatibility release has been updated to 7. +Author: Tiago Stürmer Daitx +Bug-Ubuntu: https://launchpad.net/bugs/1756854 +Bug-Ubuntu: https://launchpad.net/bugs/1766998 +Forwarded: no +Last-Update: 2018-04-24 +--- + +--- a/src/java/CMakeLists.txt ++++ b/src/java/CMakeLists.txt +@@ -21,7 +21,7 @@ set(java_srcs + # warning: [options] bootstrap class path not set in conjunction with -source 1.7 + # as per + # https://blogs.oracle.com/darcy/entry/bootclasspath_older_source +-set(CMAKE_JAVA_COMPILE_FLAGS "-source" "1.8" "-target" "1.8" "-Xlint:-options") ++set(CMAKE_JAVA_COMPILE_FLAGS "--release" "7" "-Xlint:-options") + set(jni_header_dir "${CMAKE_CURRENT_BINARY_DIR}/native") + if(CMAKE_VERSION VERSION_LESS 3.11) + set(CMAKE_JAVA_COMPILE_FLAGS ${CMAKE_JAVA_COMPILE_FLAGS} "-h" ${jni_header_dir}) diff --git a/debian/patches/3009-disable-crypto.patch b/debian/patches/3009-disable-crypto.patch new file mode 100644 index 00000000000000..781fb0b8bcb3ac --- /dev/null +++ b/debian/patches/3009-disable-crypto.patch @@ -0,0 +1,14 @@ +--- a/src/os/CMakeLists.txt ++++ b/src/os/CMakeLists.txt +@@ -100,8 +100,9 @@ endif() + target_link_libraries(os kv) + + add_dependencies(os compressor_plugins) +-add_dependencies(os crypto_plugins) +- ++if(HAVE_INTEL AND HAVE_BETTER_YASM_ELF64 AND (NOT APPLE)) ++ add_dependencies(os crypto_plugins) ++endif() + + if(WITH_BLUESTORE) + add_executable(ceph-bluestore-tool diff --git a/debian/patches/3010-debian-armel-armhf-buildflags.patch b/debian/patches/3010-debian-armel-armhf-buildflags.patch new file mode 100644 index 00000000000000..b658a8e8869bbf --- /dev/null +++ b/debian/patches/3010-debian-armel-armhf-buildflags.patch @@ -0,0 +1,45 @@ +--- a/cmake/modules/SIMDExt.cmake ++++ b/cmake/modules/SIMDExt.cmake +@@ -49,11 +49,14 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch + + elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "arm|ARM") + set(HAVE_ARM 1) +- CHECK_C_COMPILER_FLAG(-mfpu=neon HAVE_ARM_NEON) +- if(HAVE_ARM_NEON) +- set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -mfpu=neon") ++ if(CMAKE_LIBRARY_ARCHITECTURE EQUAL "arm-linux-gnueabi") ++ set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} --with-arch=armv5te --with-float=soft") ++ else() ++ CHECK_C_COMPILER_FLAG(-mfpu=neon HAVE_ARM_NEON) ++ if(HAVE_ARM_NEON) ++ set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -mfpu=neon") ++ endif() + endif() +- + elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "i386|i686|amd64|x86_64|AMD64") + set(HAVE_INTEL 1) + if(CMAKE_SYSTEM_PROCESSOR MATCHES "i686|amd64|x86_64|AMD64") +--- a/src/erasure-code/jerasure/gf-complete/m4/ax_ext.m4 ++++ b/src/erasure-code/jerasure/gf-complete/m4/ax_ext.m4 +@@ -19,10 +19,17 @@ AC_DEFUN([AX_EXT], + ;; + + arm*) +- AC_CACHE_CHECK([whether NEON is enabled], [ax_cv_have_neon_ext], [ax_cv_have_neon_ext=yes]) +- if test "$ax_cv_have_neon_ext" = yes; then +- AX_CHECK_COMPILE_FLAG(-mfpu=neon, [SIMD_FLAGS="$SIMD_FLAGS -mfpu=neon -DARM_NEON"], [ax_cv_have_neon_ext=no]) +- fi ++ case $host_cpu in ++ arm-linux-gnueabi) ++ AX_CHECK_COMPILE_FLAG(-mfpu=soft, [SIMD_FLAGS="$SIMD_FLAGS -mfpu=soft -march=armv5te"], [ax_cv_have_neon_ext=no]) ++ ;; ++ *) ++ AC_CACHE_CHECK([whether NEON is enabled], [ax_cv_have_neon_ext], [ax_cv_have_neon_ext=yes]) ++ if test "$ax_cv_have_neon_ext" = yes; then ++ AX_CHECK_COMPILE_FLAG(-mfpu=neon, [SIMD_FLAGS="$SIMD_FLAGS -mfpu=neon -DARM_NEON"], [ax_cv_have_neon_ext=no]) ++ fi ++ ;; ++ esac + ;; + + powerpc*) diff --git a/debian/patches/3012-32bit-fixes.patch b/debian/patches/3012-32bit-fixes.patch new file mode 100644 index 00000000000000..4391fe89fd9bb0 --- /dev/null +++ b/debian/patches/3012-32bit-fixes.patch @@ -0,0 +1,175 @@ +diff --git a/src/SimpleRADOSStriper.cc b/src/SimpleRADOSStriper.cc +index bbbf155..cd54dd5 100644 +--- a/src/SimpleRADOSStriper.cc ++++ b/src/SimpleRADOSStriper.cc +@@ -140,7 +140,7 @@ int SimpleRADOSStriper::remove() + return 0; + } + +-int SimpleRADOSStriper::truncate(uint64_t size) ++int SimpleRADOSStriper::truncate(size_t size) + { + d(5) << size << dendl; + +diff --git a/src/os/bluestore/BlueFS.cc b/src/os/bluestore/BlueFS.cc +index da4be3f..01556fd 100644 +--- a/src/os/bluestore/BlueFS.cc ++++ b/src/os/bluestore/BlueFS.cc +@@ -4605,11 +4605,11 @@ void BlueFS::_check_vselector_LNF() { + + size_t BlueFS::probe_alloc_avail(int dev, uint64_t alloc_size) + { +- size_t total = 0; +- auto iterated_allocation = [&](size_t off, size_t len) { ++ uint64_t total = 0; ++ auto iterated_allocation = [&](uint64_t off, uint64_t len) { + //only count in size that is alloc_size aligned +- size_t dist_to_alignment; +- size_t offset_in_block = off & (alloc_size - 1); ++ uint64_t dist_to_alignment; ++ uint64_t offset_in_block = off & (alloc_size - 1); + if (offset_in_block == 0) + dist_to_alignment = 0; + else +diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc +index ebf70f7..7ab5fb1 100644 +--- a/src/os/bluestore/BlueStore.cc ++++ b/src/os/bluestore/BlueStore.cc +@@ -18774,7 +18774,7 @@ int BlueStore::__restore_allocator(Allocator* allocator, uint64_t *num, uint64_t + uint64_t extent_count = 0; + uint64_t extents_bytes_left = file_size - (header_size + trailer_size + sizeof(crc)); + while (extents_bytes_left) { +- int req_bytes = std::min(extents_bytes_left, sizeof(buffer)); ++ int req_bytes = std::min(extents_bytes_left, static_cast(sizeof(buffer))); + int read_bytes = bluefs->read(p_handle.get(), offset, req_bytes, nullptr, (char*)buffer); + if (read_bytes != req_bytes) { + derr << "Failed bluefs->read()::read_bytes=" << read_bytes << ", req_bytes=" << req_bytes << dendl; +diff --git a/src/rgw/store/dbstore/sqlite/sqliteDB.cc b/src/rgw/store/dbstore/sqlite/sqliteDB.cc +index f24eb68..ef96f8c 100644 +--- a/src/rgw/store/dbstore/sqlite/sqliteDB.cc ++++ b/src/rgw/store/dbstore/sqlite/sqliteDB.cc +@@ -512,10 +512,13 @@ static int list_lc_head(const DoutPrefixProvider *dpp, DBOpInfo &op, sqlite3_stm + if (!stmt) + return -1; + ++ int64_t start_date; ++ + op.lc_head.index = (const char*)sqlite3_column_text(stmt, LCHeadIndex); + op.lc_head.head.marker = (const char*)sqlite3_column_text(stmt, LCHeadMarker); + +- SQL_DECODE_BLOB_PARAM(dpp, stmt, LCHeadStartDate, op.lc_head.head.start_date, sdb); ++ SQL_DECODE_BLOB_PARAM(dpp, stmt, LCHeadStartDate, start_date, sdb); ++ op.lc_head.head.start_date = start_date; + + return 0; + } +@@ -2773,7 +2776,7 @@ int SQLInsertLCHead::Bind(const DoutPrefixProvider *dpp, struct DBOpParams *para + SQL_BIND_TEXT(dpp, stmt, index, params->op.lc_head.head.marker.c_str(), sdb); + + SQL_BIND_INDEX(dpp, stmt, index, p_params.op.lc_head.start_date.c_str(), sdb); +- SQL_ENCODE_BLOB_PARAM(dpp, stmt, index, params->op.lc_head.head.start_date, sdb); ++ SQL_ENCODE_BLOB_PARAM(dpp, stmt, index, (int64_t)params->op.lc_head.head.start_date, sdb); + + out: + return rc; +diff --git a/src/test/libcephfs/ceph_pthread_self.h b/src/test/libcephfs/ceph_pthread_self.h +index 4c0c98f..9e3cdfa 100644 +--- a/src/test/libcephfs/ceph_pthread_self.h ++++ b/src/test/libcephfs/ceph_pthread_self.h +@@ -25,7 +25,7 @@ static uint64_t ceph_pthread_self() { + static_assert(std::is_convertible_v || + std::is_pointer_v, + "we need to use pthread_self() for the owner parameter"); +- return reinterpret_cast(me); ++ return static_cast(me); + } + + #endif +diff --git a/src/tools/cephfs_mirror/FSMirror.cc b/src/tools/cephfs_mirror/FSMirror.cc +index 7ea798e..93e3d13 100644 +--- a/src/tools/cephfs_mirror/FSMirror.cc ++++ b/src/tools/cephfs_mirror/FSMirror.cc +@@ -348,7 +348,7 @@ void FSMirror::handle_acquire_directory(string_view dir_path) { + std::scoped_lock locker(m_lock); + m_directories.emplace(dir_path); + m_service_daemon->add_or_update_fs_attribute(m_filesystem.fscid, SERVICE_DAEMON_DIR_COUNT_KEY, +- m_directories.size()); ++ static_cast(m_directories.size())); + + for (auto &[peer, peer_replayer] : m_peer_replayers) { + dout(10) << ": peer=" << peer << dendl; +@@ -366,7 +366,7 @@ void FSMirror::handle_release_directory(string_view dir_path) { + if (it != m_directories.end()) { + m_directories.erase(it); + m_service_daemon->add_or_update_fs_attribute(m_filesystem.fscid, SERVICE_DAEMON_DIR_COUNT_KEY, +- m_directories.size()); ++ static_cast(m_directories.size())); + for (auto &[peer, peer_replayer] : m_peer_replayers) { + dout(10) << ": peer=" << peer << dendl; + peer_replayer->remove_directory(dir_path); +diff --git a/src/tools/neorados.cc b/src/tools/neorados.cc +index 24966d2..eec46d2 100644 +--- a/src/tools/neorados.cc ++++ b/src/tools/neorados.cc +@@ -146,7 +146,7 @@ void create(R::RADOS& r, const std::vector& p, + obj, pname)); + } + +-inline constexpr std::size_t io_size = 4 << 20; ++inline constexpr std::uint64_t io_size = 4 << 20; + + void write(R::RADOS& r, const std::vector& p, s::yield_context y) + { +@@ -156,7 +156,7 @@ void write(R::RADOS& r, const std::vector& p, s::yield_context y) + + bs::error_code ec; + std::unique_ptr buf = std::make_unique(io_size); +- std::size_t off = 0; ++ std::uint64_t off = 0; + boost::io::ios_exception_saver ies(std::cin); + + std::cin.exceptions(std::istream::badbit); +@@ -203,7 +203,7 @@ void read(R::RADOS& r, const std::vector& p, s::yield_context y) + obj, pname)); + } + +- std::size_t off = 0; ++ std::uint64_t off = 0; + ceph::buffer::list bl; + while (auto toread = std::max(len - off, io_size)) { + R::ReadOp op; +diff --git a/src/tools/rbd_mirror/image_replayer/snapshot/Replayer.cc b/src/tools/rbd_mirror/image_replayer/snapshot/Replayer.cc +index b068edd..ea02aaf 100644 +--- a/src/tools/rbd_mirror/image_replayer/snapshot/Replayer.cc ++++ b/src/tools/rbd_mirror/image_replayer/snapshot/Replayer.cc +@@ -253,7 +253,8 @@ bool Replayer::get_replay_status(std::string* description, + + json_spirit::mObject root_obj; + root_obj["replay_state"] = replay_state; +- root_obj["remote_snapshot_timestamp"] = remote_snap_info->timestamp.sec(); ++ root_obj["remote_snapshot_timestamp"] = static_cast( ++ remote_snap_info->timestamp.sec()); + + auto matching_remote_snap_id = util::compute_remote_snap_id( + m_state_builder->local_image_ctx->image_lock, +@@ -267,8 +268,8 @@ bool Replayer::get_replay_status(std::string* description, + // use the timestamp from the matching remote image since + // the local snapshot would just be the time the snapshot was + // synced and not the consistency point in time. +- root_obj["local_snapshot_timestamp"] = +- matching_remote_snap_it->second.timestamp.sec(); ++ root_obj["local_snapshot_timestamp"] = static_cast( ++ matching_remote_snap_it->second.timestamp.sec()); + } + + matching_remote_snap_it = m_state_builder->remote_image_ctx->snap_info.find( +@@ -276,7 +277,8 @@ bool Replayer::get_replay_status(std::string* description, + if (m_remote_snap_id_end != CEPH_NOSNAP && + matching_remote_snap_it != + m_state_builder->remote_image_ctx->snap_info.end()) { +- root_obj["syncing_snapshot_timestamp"] = remote_snap_info->timestamp.sec(); ++ root_obj["syncing_snapshot_timestamp"] = static_cast( ++ remote_snap_info->timestamp.sec()); + + if (m_local_object_count > 0) { + root_obj["syncing_percent"] = diff --git a/debian/patches/3013-riscv64-link-pthread.patch b/debian/patches/3013-riscv64-link-pthread.patch new file mode 100644 index 00000000000000..839a655718883f --- /dev/null +++ b/debian/patches/3013-riscv64-link-pthread.patch @@ -0,0 +1,12 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 0e92cc0..0ed7139 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -28,6 +28,7 @@ endif() + + if(CMAKE_SYSTEM_NAME MATCHES "Linux") + set(LINUX ON) ++ set(THREADS_PREFER_PTHREAD_FLAG ON) + FIND_PACKAGE(Threads) + elseif(CMAKE_SYSTEM_NAME MATCHES "FreeBSD") + set(FREEBSD ON) diff --git a/debian/patches/3014-bug1914584.patch b/debian/patches/3014-bug1914584.patch new file mode 100644 index 00000000000000..82103469c24361 --- /dev/null +++ b/debian/patches/3014-bug1914584.patch @@ -0,0 +1,20 @@ +diff --git a/src/rgw/rgw_user.cc b/src/rgw/rgw_user.cc +index ab814e0..061fa98 100644 +--- a/src/rgw/rgw_user.cc ++++ b/src/rgw/rgw_user.cc +@@ -1919,7 +1919,14 @@ int RGWUser::remove(const DoutPrefixProvider *dpp, RGWUserAdminOpState& op_state + + ret = check_op(op_state, &subprocess_msg); + if (ret < 0) { +- set_err_msg(err_msg, "unable to parse parameters, " + subprocess_msg); ++ if (is_populated() && (user_id.compare(op_state.get_user_id()) != 0)) { ++ set_err_msg(err_msg, "unable to create user " + user_id.to_str() ++ + " because user id " + op_state.get_user_id().to_str() ++ + " already exists with email " ++ + op_state.get_user_email()); ++ } else { ++ set_err_msg(err_msg, "unable to parse parameters, " + subprocess_msg); ++ } + return ret; + } + diff --git a/debian/patches/3016-compress-common-depends.patch b/debian/patches/3016-compress-common-depends.patch new file mode 100644 index 00000000000000..8077b6626752dd --- /dev/null +++ b/debian/patches/3016-compress-common-depends.patch @@ -0,0 +1,19 @@ +Description: Depend on common objects from compressor + Ensure that common objects are built prior to the + compressor objects as the compressor depends on the + configuration headers which are generated at build + time. +Author: James Page +Forwarded: https://github.com/ceph/ceph/pull/44936 + +--- a/src/compressor/CMakeLists.txt ++++ b/src/compressor/CMakeLists.txt +@@ -5,6 +5,8 @@ if (HAVE_QATZIP) + list(APPEND compressor_srcs QatAccel.cc) + endif() + add_library(compressor_objs OBJECT ${compressor_srcs}) ++add_dependencies(compressor_objs common-objs) ++ + if(HAVE_QATZIP AND HAVE_QATDRV) + target_link_libraries(compressor_objs PRIVATE + QatDrv::qat_s diff --git a/debian/patches/3019-fix-CheckCxxAtomic-riscv64.patch b/debian/patches/3019-fix-CheckCxxAtomic-riscv64.patch new file mode 100644 index 00000000000000..9f202356ee2f59 --- /dev/null +++ b/debian/patches/3019-fix-CheckCxxAtomic-riscv64.patch @@ -0,0 +1,13 @@ +diff --git a/cmake/modules/CheckCxxAtomic.cmake b/cmake/modules/CheckCxxAtomic.cmake +index 8bbeaa0..c10ab0e 100644 +--- a/cmake/modules/CheckCxxAtomic.cmake ++++ b/cmake/modules/CheckCxxAtomic.cmake +@@ -47,7 +47,7 @@ int main() { + std::atomic w2; + std::atomic w4; + std::atomic w8; +- return w1 + w2 + w4 + w8; ++ return ++w1 + ++w2 + ++w4 + ++w8; + } + " ${var}) + endfunction(check_cxx_atomics) diff --git a/debian/patches/3020-patch-out-exporter.patch b/debian/patches/3020-patch-out-exporter.patch new file mode 100644 index 00000000000000..56528173405191 --- /dev/null +++ b/debian/patches/3020-patch-out-exporter.patch @@ -0,0 +1,1004 @@ +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 776acc8..d9ff880 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -574,7 +574,6 @@ endif(NOT WITH_SYSTEM_ROCKSDB) + + if(WITH_MGR) + add_subdirectory(mgr) +- add_subdirectory(exporter) + endif() + + set(librados_config_srcs +@@ -884,7 +883,6 @@ endif() + + if (WITH_MGR) + add_dependencies(vstart-base ceph-mgr) +- add_dependencies(vstart-base ceph-exporter) + endif() + + add_custom_target(vstart DEPENDS vstart-base) +diff --git a/src/common/options/CMakeLists.txt b/src/common/options/CMakeLists.txt +index da24c67..d2104a0 100644 +--- a/src/common/options/CMakeLists.txt ++++ b/src/common/options/CMakeLists.txt +@@ -93,7 +93,6 @@ add_options(osd) + add_options(rbd) + add_options(rbd-mirror) + add_options(immutable-object-cache) +-add_options(ceph-exporter) + + # if set to empty string, system default luarocks package location (if exist) will be used + set(rgw_luarocks_location "") +diff --git a/src/common/options/build_options.cc b/src/common/options/build_options.cc +index 867fc2e..001fac9 100644 +--- a/src/common/options/build_options.cc ++++ b/src/common/options/build_options.cc +@@ -18,7 +18,6 @@ std::vector