# TODO:
-# - proper init scripts if non-systemd boot is too be supported
+# - system arrow, parquet (WITH_SYSTEM_ARROW=ON, arrow>=4, parquet>=4)?
+# - brotli? (WITH_BROTLI=ON, uses internal brotli as downloaded subproject)
+# - proper init scripts if non-systemd boot is to be supported
# (upstream scripts seem overcomplicated and hardly useful)
# - run as non-root user
+# - build selinux policy (-DWITH_SELINUX=ON)
+# - package sphinx docs (from doc/)
#
# Note on versioning: http://docs.ceph.com/docs/master/releases/
+# Reef (18.1.2) is in RC stage currently
#
# Conditional build:
%bcond_without java # Java binding
-%bcond_with accelio # Accelio transport support [needs update for internal API changes]
-%bcond_with cryptopp # use cryptopp instead of NSS crypto/SSL
-%bcond_with dpdk # DPDK messaging (requires cryptopp instead of nss)
-%bcond_without fcgi # RADOS Gateway FCGI frontend
-%bcond_without fio # FIO engines support
+%bcond_with angular # Angular-based mgr/dashboard frontend (built using npm, too outdated currently)
+%bcond_without bluefs # BlueFS library
+%bcond_with dpdk # DPDK messaging
+# 15.2.x/16.2.x build fails with:
+# src/rgw/rgw_fcgi_process.cc:92:53: error: 'class rgw::sal::RGWRadosStore' has no member named 'get_new_req_id'
+%bcond_with fcgi # RADOS Gateway FCGI frontend
+%bcond_with fio # FIO engines support (16.x: downloads fio as internal subproject)
+%bcond_with kerberos # GSSAPI/KRB5 support
%bcond_without pmem # PMDK (persistent memory) support
+%bcond_without qat # QAT driver
+%bcond_without qatzip # QATZIP
+%bcond_without rdma # RDMA transport support
+%bcond_with seastar # seastar components (64-bit pointers required)
%bcond_with spdk # Ceph SPDK support (DPDK based)
%bcond_without system_rocksdb # system RocksDB storage support
-%bcond_without zfs # ZFS support [not ready for zfs 0.8.x]
+%bcond_without zbd # ZBD bluestore backend
+# 15.2.x/16.2.x: "fallthrough" define from OpenZFS's spl breaks "[[fallthrough]]" in src/include/blobhash.h
+%bcond_with zfs # ZFS support [not ready for zfs 0.8.x]
%bcond_without lttng # LTTng tracing
%bcond_without babeltrace # Babeltrace traces support
%bcond_without tcmalloc # tcmalloc allocator
+%bcond_with tests # build tests
%ifarch x32
%undefine with_tcmalloc
%ifnarch %{x8664} aarch64
%undefine with_pmem
%endif
-%if %{without cryptopp} && %{with dpdk}
-%error DPDK requires cryptopp
+%ifnarch %{x8664} aarch64 mips64 ppc64 sparc64 s390x
+%undefine with_seastar
%endif
+
+%{?with_java:%{?use_default_jdk}}
#
Summary: User space components of the Ceph file system
Summary(pl.UTF-8): Działające w przestrzeni użytkownika elementy systemu plików Ceph
Name: ceph
-Version: 12.2.13
-Release: 4
+Version: 17.2.7
+Release: 1
License: LGPL v2.1 (libraries), GPL v2 (some programs)
Group: Base
Source0: http://download.ceph.com/tarballs/%{name}-%{version}.tar.gz
-# Source0-md5: 38bd01cf8224c9ca081298e19ab6e5a1
+# Source0-md5: 843fb59f95f62e0e156539e49a2a3a9a
Source1: ceph.sysconfig
Source3: ceph.tmpfiles
-Patch0: %{name}-init-fix.patch
-Patch2: boost.patch
-Patch3: %{name}-python.patch
-Patch4: %{name}-types.patch
-Patch5: %{name}-tcmalloc.patch
-Patch6: %{name}-rocksdb.patch
-Patch7: %{name}-fcgi.patch
-Patch8: %{name}-fio.patch
-Patch9: %{name}-zfs.patch
-Patch10: %{name}-includes.patch
+Patch0: %{name}-python.patch
+Patch1: %{name}-fio.patch
+Patch2: %{name}-cmake-static.patch
+Patch3: %{name}-arrow-pld.patch
+Patch4: no-virtualenvs.patch
+Patch5: %{name}-libdir.patch
+Patch6: types.patch
+Patch7: use-provided-cpu-flag-values.patch
+Patch8: ix86-no-asm.patch
+Patch9: long-int-time_t.patch
+Patch10: %{name}-qat.patch
+Patch11: %{name}-liburing.patch
+Patch12: %{name}-glibc.patch
+Patch13: %{name}-libfmt.patch
+Patch14: %{name}-system-rocksdb.patch
+# https://src.fedoraproject.org/rpms/ceph/blob/rawhide/f/0017-gcc-12-omnibus.patch
+Patch15: %{name}-gcc12.patch
+# https://src.fedoraproject.org/rpms/ceph/blob/rawhide/f/0020-src-arrow-cpp-cmake_modules-ThirdpartyToolchain.cmake.patch
+Patch16: %{name}-system-xsimd.patch
+Patch17: boost1.81.patch
URL: https://ceph.io/
-%{?with_accelio:BuildRequires: accelio-devel}
+%{?with_qatzip:BuildRequires: QATzip-devel}
%{?with_babeltrace:BuildRequires: babeltrace-devel}
-BuildRequires: boost-devel >= 1.66
-BuildRequires: boost-python-devel >= 1.66
-BuildRequires: cmake >= 2.8.11
-%{?with_cryptopp:BuildRequires: cryptopp-devel}
+BuildRequires: boost-devel >= 1.73
+BuildRequires: boost-python3-devel >= 1.73
+%{?with_seastar:BuildRequires: c-ares-devel >= 1.13.0}
+BuildRequires: cmake >= 3.22.2
+%{?with_seastar:BuildRequires: cryptopp-devel >= 5.6.5}
+BuildRequires: cryptsetup-devel >= 2.0.5
BuildRequires: curl-devel
%if %{with dpdk} || %{with spdk}
+# also seastar with dpdk support
BuildRequires: dpdk-devel
%endif
+BuildRequires: doxygen
BuildRequires: expat-devel >= 1.95
%{?with_fcgi:BuildRequires: fcgi-devel}
-%{?with_fio:BuildRequires: fio-devel}
+%{?with_fio:BuildRequires: fio-devel >= 3.15}
BuildRequires: gdbm-devel
+%{?with_seastar:BuildRequires: gnutls-devel >= 3.3.26}
+BuildRequires: gperf
+%{?with_tcmalloc:BuildRequires: gperftools-devel >= 2.6.2}
+%{?with_kerberos:BuildRequires: heimdal-devel}
+%{?with_seastar:BuildRequires: hwloc-devel >= 1.11.2}
%if %{with java}
-BuildRequires: jdk
+%buildrequires_jdk
+BuildRequires: %{?use_jdk:%{use_jdk}-jre-base-X11}%{!?use_jdk:jre-X11}
%endif
BuildRequires: keyutils-devel
-BuildRequires: leveldb-devel >= 1.2
+BuildRequires: leveldb-devel >= 1.23-2
BuildRequires: libaio-devel
BuildRequires: libatomic_ops
BuildRequires: libblkid-devel >= 2.17
+BuildRequires: libcap-ng-devel
BuildRequires: libedit-devel >= 2.11
-BuildRequires: libfuse-devel
-# +RDMA?
-%{?with_accelio:BuildRequires: libibverbs-devel}
+BuildRequires: libfmt-devel >= 6.0.0
+BuildRequires: libfuse3-devel >= 3
+%{?with_rdma:BuildRequires: libibverbs-devel}
+BuildRequires: libicu-devel >= 52.0
BuildRequires: libltdl-devel
-%{?with_accelio:BuildRequires: librdmacm-devel}
-BuildRequires: libstdc++-devel >= 6:4.7
-%{?with_tcmalloc:BuildRequires: libtcmalloc-devel}
+BuildRequires: libnl-devel >= 3.2
+BuildRequires: librdkafka-devel >= 0.9.2
+%{?with_rdma:BuildRequires: librdmacm-devel}
+%{?with_seastar:BuildRequires: libsctp-devel}
+BuildRequires: libstdc++-devel >= 6:7
+%{?with_tcmalloc:BuildRequires: libtcmalloc-devel >= 2.6.2}
BuildRequires: libtool >= 2:1.5
+BuildRequires: liburing-devel
+BuildRequires: libutf8proc-devel >= 2.2.0
BuildRequires: libuuid-devel
BuildRequires: libxml2-devel >= 2.0
+%{?with_zbd:BuildRequires: libzbd-devel}
%{?with_lttng:BuildRequires: lttng-ust-devel}
-BuildRequires: lz4-devel >= 1:1.7
-%{!?with_cryptopp:BuildRequires: nss-devel >= 3}
+BuildRequires: lua-devel >= 5.3
+BuildRequires: lz4-devel >= 1:1.7.3
+BuildRequires: ncurses-devel
+%{?with_angular:BuildRequires: npm}
+BuildRequires: nspr-devel >= 4
+BuildRequires: nss-devel >= 3
+%{?with_seastar:BuildRequires: numactl-devel}
+BuildRequires: oath-toolkit-devel
BuildRequires: openldap-devel
-BuildRequires: openssl-devel
+BuildRequires: openssl-devel >= 1.1
BuildRequires: perl-base
BuildRequires: pkgconfig
-%{?with_pmem:BuildRequires: pmdk-devel}
-BuildRequires: python >= 1:2.7
-BuildRequires: python-devel >= 1:2.7
-BuildRequires: python-Cython
-BuildRequires: python3-devel >= 1:3.2
+%{?with_pmem:BuildRequires: pmdk-devel >= 1.10.0}
+BuildRequires: python3 >= 1:3.2
BuildRequires: python3-Cython
-# upstream uses 3.0.0, rocksdb patch adjusts for 5.6.0 API change
-%{?with_system_rocksdb:BuildRequires: rocksdb-devel >= 5.6.0}
-BuildRequires: rpmbuild(macros) >= 1.671
+BuildRequires: python3-PyYAML
+BuildRequires: python3-devel >= 1:3.2
+BuildRequires: python3-modules >= 1:3.2
+%{?with_tests:BuildRequires: python3-tox >= 2.9.1}
+BuildRequires: rabbitmq-c-devel
+%{?with_seastar:BuildRequires: ragel >= 6.10}
+%{?with_system_rocksdb:BuildRequires: rocksdb-devel >= 5.14}
+BuildRequires: rpmbuild(macros) >= 2.021
+%{?with_qat:BuildRequires: qatlib-devel}
BuildRequires: sed >= 4.0
BuildRequires: snappy-devel
-BuildRequires: sphinx-pdg-2 >= 1.0
+BuildRequires: sphinx-pdg >= 4.4.0
+BuildRequires: sqlite3-devel >= 3
+# >= 0.13.0 wanted, but seems to build with 0.11.0
+BuildRequires: thrift-devel
BuildRequires: udev-devel
-#BuildRequires: virtualenv for tests
%{?with_dpdk:BuildRequires: xorg-lib-libpciaccess-devel}
BuildRequires: xfsprogs-devel
+BuildRequires: xsimd-devel
+%{?with_seastar:BuildRequires: yaml-cpp-devel >= 0.5.1}
%ifarch %{x8664}
BuildRequires: yasm
%endif
-# zfs patch updates to 0.8.0 API
%{?with_zfs:BuildRequires: zfs-devel >= 0.8.0}
BuildRequires: zlib-devel
+BuildRequires: zstd-devel >= 1.4.4
Requires(post,preun): /sbin/chkconfig
Requires(preun): rc-scripts
Requires: %{name}-libs = %{version}-%{release}
-Requires: python-%{name} = %{version}-%{release}
+Requires: lz4 >= 1:1.7.3
+Requires: python3-%{name} = %{version}-%{release}
+%{?with_system_rocksdb:Requires: rocksdb >= 5.14}
Requires: systemd-units >= 38
-Obsoletes: gcephtool
-Obsoletes: hadoop-cephfs
+Requires: zstd >= 1.4.4
+Obsoletes: gcephtool < 0.51
+Obsoletes: hadoop-cephfs < 0.71
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
-%define skip_post_check_so libceph_crypto_isal.so.* libceph_lz4.so.* libceph_snappy.so.* libceph_zlib.so.* libceph_zstd.so.* libcls_.*.so.* libec_.*.so.*
+%define skip_post_check_so libceph_crypto_isal.so.* libceph_crypto_qat.so.* libceph_lz4.so.* libceph_snappy.so.* libceph_zlib.so.* libceph_zstd.so.* libcls_.*.so.* libec_.*.so.*
%description
Ceph is a distributed network file system designed to provide
Summary: Ceph shared libraries
Summary(pl.UTF-8): Biblioteki współdzielone Cepha
Group: Libraries
+Requires: libfmt >= 6.0.0
+Requires: librdkafka >= 0.9.2
+Requires: openssl >= 1.1
%description libs
Ceph shared libraries.
License: LGPL v2.1
Group: Development/Libraries
Requires: %{name}-libs = %{version}-%{release}
-Requires: boost-devel >= 1.66
+Requires: boost-devel >= 1.73
Requires: curl-devel
-Requires: expat-devel
+Requires: expat-devel >= 1.95
Requires: fcgi-devel
Requires: nss-devel >= 3
-Requires: leveldb-devel
+Requires: leveldb-devel >= 1.23-2
Requires: libatomic_ops
Requires: libblkid-devel >= 2.17
-Requires: libstdc++-devel >= 6:4.7
+Requires: libstdc++-devel >= 6:7
Requires: libuuid-devel
%{?with_lttng:Requires: lttng-ust-devel}
Requires: openldap-devel
Ten pakiet zawiera pliki nagłówkowe potrzebne do tworzenia programów
wykorzystujących Cepha.
-%package -n python-ceph
-Summary: Ceph Python 2 bindings
-Summary(pl.UTF-8): Wiązania Pythona 2 do bibliotek Cepha
-Group: Development/Languages/Python
-Requires: %{name}-libs = %{version}-%{release}
-
-%description -n python-ceph
-Ceph Python 2 bindings.
-
-%description -n python-ceph -l pl.UTF-8
-Wiązania Pythona 2 do bibliotek Cepha.
-
%package -n python3-ceph
Summary: Ceph Python 3 bindings
Summary(pl.UTF-8): Wiązania Pythona 3 do bibliotek Cepha
Group: Development/Languages/Python
Requires: %{name}-libs = %{version}-%{release}
+Obsoletes: python-ceph < 15
%description -n python3-ceph
Ceph Python 3 bindings.
%description resource-agents -l pl.UTF-8
Agenci OCF do monitorowania procesów Cepha.
+%package test
+Summary: Ceph benchmarks and test tools
+Summary(pl.UTF-8): Narzędzia testowe oraz do mierzenia wydajności dla Ceph
+Group: Applications/System
+Requires: %{name} = %{version}-%{release}
+
+%description test
+Ceph benchmarks and test tools.
+
+%description test -l pl.UTF-8
+Narzędzia testowe oraz do mierzenia wydajności dla Ceph.
+
%package -n fio-ceph-objectstore
Summary: FIO engine module for Ceph ObjectStore
Summary(pl.UTF-8): Moduł silnika FIO do używania Ceph ObjectStore
%prep
%setup -q
%patch0 -p1
-%patch2 -p0
+%patch1 -p1
+%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p1
+%ifarch %{ix86}
%patch9 -p1
+%endif
%patch10 -p1
-
-%{__sed} -i -e '1s,/usr/bin/env python$,%{__python},' \
- src/{ceph-create-keys,ceph-rest-api,mount.fuse.ceph} \
- src/brag/client/ceph-brag \
- src/ceph-disk/ceph_disk/main.py
+%patch11 -p1
+%patch12 -p1
+%patch13 -p1
+%patch14 -p1
+%patch15 -p1
+%patch16 -p1
+%patch17 -p1
+
+%{__sed} -i -e '1s,/usr/bin/env bash,/bin/bash,' \
+ src/{ceph-post-file.in,rbd-replay-many,rbdmap} \
+ src/rgw/rgw-{gap,orphan}-list
+
+%{__sed} -i -e '1s,/usr/bin/awk,/bin/awk,' \
+ src/rgw/rgw-gap-list-comparator
+
+%if %{with angular}
+# stub virtualenv with npm for src/pybind/mgr/dashboard bootstrapping
+install -d build/src/pybind/mgr/dashboard/node-env/bin
+ln -sf /usr/bin/npm build/src/pybind/mgr/dashboard/node-env/bin/npm
+cat >build/src/pybind/mgr/dashboard/node-env/bin/activate <<EOF
+deactivate() {
+ unset -f deactivate
+}
+EOF
+%endif
%build
install -d build
cd build
%cmake .. \
+%ifarch %{x8664} %{ix86} x32
+ -DHAVE_INTEL_SSE=1 \
+%endif
+%ifarch %{x8664} x32
+ -DHAVE_INTEL_SSE2=1 \
+ -DHAVE_INTEL_SSE3=1 \
+ -DHAVE_INTEL_SSSE3=1 \
+ -DHAVE_INTEL_PCLMUL=1 \
+ -DHAVE_INTEL_SSE4_1=1 \
+ -DHAVE_INTEL_SSE4_2=1 \
+%endif
-DALLOCATOR="%{?with_tcmalloc:tcmalloc}%{!?with_tcmalloc:libc}" \
-DFIO_INCLUDE_DIR=/usr/include/fio \
- -DPYTHON=%{__python} \
- -DSPHINX_BUILD=/usr/bin/sphinx-build-2 \
+ %{?with_java:-DJAVA_HOME:PATH=%{java_home}} \
+ -DLUA_INCLUDE_DIR=%{_includedir}/lua \
+ -DPYTHON=%{__python3} \
+ -DSPHINX_BUILD=/usr/bin/sphinx-build \
%{!?with_babeltrace:-DWITH_BABELTRACE=OFF} \
+ %{?with_bluefs:-DWITH_BLUEFS=ON} \
+%if %{with pmem}
+ -DWITH_BLUESTORE_PMEM=ON \
+ -DWITH_SYSTEM_PMDK:BOOL=ON \
+%endif
%{?with_java:-DWITH_CEPHFS_JAVA=ON} \
%{?with_dpdk:-DWITH_DPDK=ON} \
%{?with_fio:-DWITH_FIO=ON} \
+ %{?with_kerberos:-DWITH_GSSAPI=ON} \
%{!?with_lttng:-DWITH_LTTNG=OFF} \
-DWITH_LZ4=ON \
- %{?with_cryptopp:-DWITH_NSS=OFF} \
+ %{!?with_angular:-DWITH_MGR_DASHBOARD_FRONTEND=OFF} \
-DWITH_OCF=ON \
- %{?with_pmem:-DWITH_PMEM=ON} \
+ -DWITH_PYTHON3=%{py3_ver} \
%{?with_fcgi:-DWITH_RADOSGW_FCGI_FRONTEND=ON} \
+ %{!?with_rdma:-DWITH_RDMA=OFF} \
+ -DWITH_REENTRANT_STRSIGNAL=ON \
+ %{?with_qat:-DWITH_QAT=ON} \
+ %{?with_qatzip:-DWITH_QATZIP=ON} \
+ %{?with_seastar:-DWITH_SEASTAR=ON} \
%{?with_spdk:-DWITH_SPDK=ON} \
-DWITH_SYSTEM_BOOST=ON \
+ -DWITH_SYSTEM_LIBURING=ON \
+ %{?with_angular:-DWITH_SYSTEM_NPM=ON} \
%{?with_system_rocksdb:-DWITH_SYSTEM_ROCKSDB=ON} \
+ -DWITH_SYSTEM_ZSTD=ON \
-DWITH_SYSTEMD=ON \
- %{?with_accelio:-DWITH_XIO=ON} \
- %{?with_zfs:-DWITH_ZFS=ON} \
- -DWITH_REENTRANT_STRSIGNAL=ON
+ %{!?with_tests:-DWITH_TESTS=OFF} \
+ %{?with_zbd:-DWITH_ZBD=ON} \
+ %{?with_zfs:-DWITH_ZFS=ON}
+
+# some object files have missing dependencies on these, pregenerate to avoid global -j1
+%{__make} legacy-option-headers
%{__make}
# sanitize paths; no config options for cmake
%{__mv} $RPM_BUILD_ROOT/etc/init.d $RPM_BUILD_ROOT/etc/rc.d
-%{__mv} $RPM_BUILD_ROOT%{_libexecdir}/systemd/system/* $RPM_BUILD_ROOT%{systemdunitdir}
%{__mv} $RPM_BUILD_ROOT%{_sbindir}/mount.* $RPM_BUILD_ROOT/sbin
cp -p src/logrotate.conf $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/ceph
ln -sf /dev/null $RPM_BUILD_ROOT%{systemdunitdir}/ceph.service
cp -p %{SOURCE3} $RPM_BUILD_ROOT%{systemdtmpfilesdir}/ceph.conf
-%py_comp $RPM_BUILD_ROOT%{py_sitescriptdir}
-%py_ocomp $RPM_BUILD_ROOT%{py_sitescriptdir}
-%py_postclean
+%if %{without tests}
+%{__rm} -r $RPM_BUILD_ROOT%{py3_sitescriptdir}/{ceph,ceph_volume}/tests
+%endif
%py3_comp $RPM_BUILD_ROOT%{py3_sitescriptdir}
%py3_ocomp $RPM_BUILD_ROOT%{py3_sitescriptdir}
-# tests
-%{__rm} $RPM_BUILD_ROOT%{_bindir}/ceph_test_*
# packaged as %doc
%{__rm} $RPM_BUILD_ROOT%{_docdir}/sample.ceph.conf
-# cleanup
-%{__rm} $RPM_BUILD_ROOT%{_libdir}/ceph/mgr/{.gitignore,dashboard/HACKING.rst,dashboard/static/AdminLTE-2.3.7/{.gitignore,.jshintrc,README.md}}
+
+%if %{with angular}
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/ceph/mgr/dashboard/HACKING.rst
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/ceph/mgr/{.gitignore,dashboard/static/AdminLTE-2.3.7/{.gitignore,.jshintrc,README.md}}
+%endif
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(644,root,root,755)
# COPYING specifies licenses of individual parts
-%doc AUTHORS COPYING PendingReleaseNotes README.md src/sample.ceph.conf doc/{release-notes,releases}.rst
+%doc AUTHORS COPYING PendingReleaseNotes README.md src/sample.ceph.conf doc/releases
%attr(754,root,root) /etc/rc.d/init.d/ceph
%config(noreplace) /etc/sysconfig/ceph
%dir /etc/systemd/system/ceph.target.wants
%{systemdunitdir}/ceph.service
%{systemdunitdir}/ceph.target
-%{systemdunitdir}/ceph-disk@.service
+%{systemdunitdir}/ceph-crash.service
%{systemdunitdir}/ceph-fuse.target
%{systemdunitdir}/ceph-fuse@.service
+%{systemdunitdir}/ceph-immutable-object-cache.target
+%{systemdunitdir}/ceph-immutable-object-cache@.service
%{systemdunitdir}/ceph-mds.target
%{systemdunitdir}/ceph-mds@.service
%{systemdunitdir}/ceph-mgr.target
%{systemdunitdir}/ceph-rbd-mirror.target
%{systemdunitdir}/ceph-rbd-mirror@.service
%{systemdunitdir}/ceph-volume@.service
+%{systemdunitdir}/cephfs-mirror.target
+%{systemdunitdir}/cephfs-mirror@.service
%{systemdunitdir}/rbdmap.service
%{systemdtmpfilesdir}/ceph.conf
%dir %{_sysconfdir}/ceph
%attr(755,root,root) %{_bindir}/ceph
%attr(755,root,root) %{_bindir}/ceph-authtool
%attr(755,root,root) %{_bindir}/ceph-bluestore-tool
-%attr(755,root,root) %{_bindir}/ceph-brag
-%attr(755,root,root) %{_bindir}/ceph-client-debug
%attr(755,root,root) %{_bindir}/ceph-clsinfo
%attr(755,root,root) %{_bindir}/ceph-conf
-%attr(755,root,root) %{_bindir}/ceph-coverage
-%attr(755,root,root) %{_bindir}/ceph-crush-location
-%attr(755,root,root) %{_bindir}/ceph-debugpack
+%attr(755,root,root) %{_bindir}/ceph-crash
%attr(755,root,root) %{_bindir}/ceph-dencoder
-%attr(755,root,root) %{_bindir}/ceph-detect-init
+%attr(755,root,root) %{_bindir}/ceph-diff-sorted
+%attr(755,root,root) %{_bindir}/ceph-erasure-code-tool
+%attr(755,root,root) %{_bindir}/ceph-exporter
+%attr(755,root,root) %{_bindir}/ceph-immutable-object-cache
%attr(755,root,root) %{_bindir}/ceph-kvstore-tool
%attr(755,root,root) %{_bindir}/ceph-mds
%attr(755,root,root) %{_bindir}/ceph-mgr
%attr(755,root,root) %{_bindir}/ceph-osdomap-tool
%attr(755,root,root) %{_bindir}/ceph-post-file
%attr(755,root,root) %{_bindir}/ceph-rbdnamer
-%attr(755,root,root) %{_bindir}/ceph-rest-api
%attr(755,root,root) %{_bindir}/ceph-run
%attr(755,root,root) %{_bindir}/ceph-syn
-%attr(755,root,root) %{_bindir}/ceph_bench_log
-%attr(755,root,root) %{_bindir}/ceph_erasure_code
-%attr(755,root,root) %{_bindir}/ceph_erasure_code_benchmark
-%attr(755,root,root) %{_bindir}/ceph_kvstorebench
-%attr(755,root,root) %{_bindir}/ceph_multi_stress_watch
-%attr(755,root,root) %{_bindir}/ceph_objectstore_bench
-%attr(755,root,root) %{_bindir}/ceph_omapbench
-%attr(755,root,root) %{_bindir}/ceph_perf_local
-%attr(755,root,root) %{_bindir}/ceph_perf_msgr_client
-%attr(755,root,root) %{_bindir}/ceph_perf_msgr_server
-%attr(755,root,root) %{_bindir}/ceph_perf_objectstore
-%attr(755,root,root) %{_bindir}/ceph_psim
-%attr(755,root,root) %{_bindir}/ceph_radosacl
-%attr(755,root,root) %{_bindir}/ceph_rgw_jsonparser
-%attr(755,root,root) %{_bindir}/ceph_rgw_multiparser
-%attr(755,root,root) %{_bindir}/ceph_scratchtool
-%attr(755,root,root) %{_bindir}/ceph_scratchtoolpp
-%attr(755,root,root) %{_bindir}/ceph_smalliobench
-%attr(755,root,root) %{_bindir}/ceph_smalliobenchdumb
-%attr(755,root,root) %{_bindir}/ceph_smalliobenchfs
-%attr(755,root,root) %{_bindir}/ceph_smalliobenchrbd
-%attr(755,root,root) %{_bindir}/ceph_tpbench
-%attr(755,root,root) %{_bindir}/ceph_xattr_bench
%attr(755,root,root) %{_bindir}/cephfs-data-scan
%attr(755,root,root) %{_bindir}/cephfs-journal-tool
+%attr(755,root,root) %{_bindir}/cephfs-mirror
%attr(755,root,root) %{_bindir}/cephfs-table-tool
+%attr(755,root,root) %{_bindir}/cephfs-top
+%if %{with seastore}
+%attr(755,root,root) %{_bindir}/crimson-osd
+%attr(755,root,root) %{_bindir}/crimson-store-nbd
+%endif
+%attr(755,root,root) %{_bindir}/crushdiff
%attr(755,root,root) %{_bindir}/crushtool
%attr(755,root,root) %{_bindir}/librados-config
%attr(755,root,root) %{_bindir}/monmaptool
%attr(755,root,root) %{_bindir}/rbd-replay-many
%attr(755,root,root) %{_bindir}/rbd-replay-prep
%attr(755,root,root) %{_bindir}/rbdmap
+%attr(755,root,root) %{_bindir}/rgw-gap-list
+%attr(755,root,root) %{_bindir}/rgw-gap-list-comparator
+%attr(755,root,root) %{_bindir}/rgw-orphan-list
%attr(755,root,root) %{_sbindir}/ceph-create-keys
-%attr(755,root,root) %{_sbindir}/ceph-disk
%attr(755,root,root) %{_sbindir}/ceph-volume
%attr(755,root,root) %{_sbindir}/ceph-volume-systemd
%attr(755,root,root) /sbin/mount.ceph
%endif
%{_libexecdir}/ceph/ceph_common.sh
%attr(755,root,root) %{_libexecdir}/ceph/ceph-osd-prestart.sh
-%attr(755,root,root) %{_libdir}/ceph/ceph-monstore-update-crush.sh
-%{_libdir}/ceph/mgr
%dir %{_libdir}/ceph/compressor
%attr(755,root,root) %{_libdir}/ceph/compressor/libceph_lz4.so*
%attr(755,root,root) %{_libdir}/ceph/compressor/libceph_snappy.so*
%attr(755,root,root) %{_libdir}/ceph/compressor/libceph_zlib.so*
%attr(755,root,root) %{_libdir}/ceph/compressor/libceph_zstd.so*
-%ifarch %{x8664}
%dir %{_libdir}/ceph/crypto
+%ifarch %{x8664}
%attr(755,root,root) %{_libdir}/ceph/crypto/libceph_crypto_isal.so*
%endif
+%attr(755,root,root) %{_libdir}/ceph/crypto/libceph_crypto_openssl.so*
+%if %{with qat}
+%attr(755,root,root) %{_libdir}/ceph/crypto/libceph_crypto_qat.so*
+%endif
+%dir %{_libdir}/ceph/denc
+%attr(755,root,root) %{_libdir}/ceph/denc/denc-mod-cephfs.so
+%attr(755,root,root) %{_libdir}/ceph/denc/denc-mod-common.so
+%attr(755,root,root) %{_libdir}/ceph/denc/denc-mod-osd.so
+%attr(755,root,root) %{_libdir}/ceph/denc/denc-mod-rbd.so
+%attr(755,root,root) %{_libdir}/ceph/denc/denc-mod-rgw.so
%dir %{_libdir}/ceph/erasure-code
+%attr(755,root,root) %{_libdir}/ceph/erasure-code/libec_clay.so*
%ifarch %{x8664}
%attr(755,root,root) %{_libdir}/ceph/erasure-code/libec_isa.so*
%endif
%ifarch %{ix86} %{x8664} x32
%attr(755,root,root) %{_libdir}/ceph/erasure-code/libec_jerasure_sse3.so*
%attr(755,root,root) %{_libdir}/ceph/erasure-code/libec_jerasure_sse4.so*
+%attr(755,root,root) %{_libdir}/ceph/erasure-code/libec_shec_sse3.so*
+%attr(755,root,root) %{_libdir}/ceph/erasure-code/libec_shec_sse4.so*
%endif
%attr(755,root,root) %{_libdir}/ceph/erasure-code/libec_lrc.so*
%attr(755,root,root) %{_libdir}/ceph/erasure-code/libec_shec.so*
%attr(755,root,root) %{_libdir}/ceph/erasure-code/libec_shec_generic.so*
-%ifarch %{ix86} %{x8664} x32
-%attr(755,root,root) %{_libdir}/ceph/erasure-code/libec_shec_sse3.so*
-%attr(755,root,root) %{_libdir}/ceph/erasure-code/libec_shec_sse4.so*
-%endif
+%dir %{_libdir}/ceph/librbd
+%attr(755,root,root) %{_libdir}/ceph/librbd/libceph_librbd_parent_cache.so*
%dir %{_libdir}/rados-classes
+%attr(755,root,root) %{_libdir}/rados-classes/libcls_2pc_queue.so*
+%attr(755,root,root) %{_libdir}/rados-classes/libcls_cas.so*
%attr(755,root,root) %{_libdir}/rados-classes/libcls_cephfs.so*
+%attr(755,root,root) %{_libdir}/rados-classes/libcls_cmpomap.so*
+%attr(755,root,root) %{_libdir}/rados-classes/libcls_fifo.so*
%attr(755,root,root) %{_libdir}/rados-classes/libcls_hello.so*
%attr(755,root,root) %{_libdir}/rados-classes/libcls_journal.so*
-%attr(755,root,root) %{_libdir}/rados-classes/libcls_kvs.so*
%attr(755,root,root) %{_libdir}/rados-classes/libcls_lock.so*
%attr(755,root,root) %{_libdir}/rados-classes/libcls_log.so*
%attr(755,root,root) %{_libdir}/rados-classes/libcls_lua.so*
%attr(755,root,root) %{_libdir}/rados-classes/libcls_numops.so*
+%attr(755,root,root) %{_libdir}/rados-classes/libcls_otp.so*
+%attr(755,root,root) %{_libdir}/rados-classes/libcls_queue.so*
%attr(755,root,root) %{_libdir}/rados-classes/libcls_rbd.so*
%attr(755,root,root) %{_libdir}/rados-classes/libcls_refcount.so*
-%attr(755,root,root) %{_libdir}/rados-classes/libcls_replica_log.so*
%attr(755,root,root) %{_libdir}/rados-classes/libcls_rgw.so*
+%attr(755,root,root) %{_libdir}/rados-classes/libcls_rgw_gc.so*
%attr(755,root,root) %{_libdir}/rados-classes/libcls_sdk.so*
-%attr(755,root,root) %{_libdir}/rados-classes/libcls_statelog.so*
+%attr(755,root,root) %{_libdir}/rados-classes/libcls_test_remote_reads.so*
%attr(755,root,root) %{_libdir}/rados-classes/libcls_timeindex.so*
%attr(755,root,root) %{_libdir}/rados-classes/libcls_user.so*
%attr(755,root,root) %{_libdir}/rados-classes/libcls_version.so*
%{_mandir}/man8/ceph-clsinfo.8*
%{_mandir}/man8/ceph-conf.8*
%{_mandir}/man8/ceph-create-keys.8*
-%{_mandir}/man8/ceph-debugpack.8*
%{_mandir}/man8/ceph-dencoder.8*
-%{_mandir}/man8/ceph-deploy.8*
-%{_mandir}/man8/ceph-detect-init.8*
-%{_mandir}/man8/ceph-disk.8*
+%{_mandir}/man8/ceph-diff-sorted.8*
+%{_mandir}/man8/ceph-immutable-object-cache.8*
%{_mandir}/man8/ceph-kvstore-tool.8*
%{_mandir}/man8/ceph-mds.8*
%{_mandir}/man8/ceph-mon.8*
%{_mandir}/man8/ceph-osd.8*
%{_mandir}/man8/ceph-post-file.8*
%{_mandir}/man8/ceph-rbdnamer.8*
-%{_mandir}/man8/ceph-rest-api.8*
%{_mandir}/man8/ceph-run.8*
%{_mandir}/man8/ceph-syn.8*
%{_mandir}/man8/ceph-volume.8*
%{_mandir}/man8/ceph-volume-systemd.8*
+%{_mandir}/man8/cephadm.8*
+%{_mandir}/man8/cephfs-mirror.8*
+%{_mandir}/man8/cephfs-top.8*
+%{_mandir}/man8/crushdiff.8*
%{_mandir}/man8/crushtool.8*
%{_mandir}/man8/librados-config.8*
%{_mandir}/man8/monmaptool.8*
%{_mandir}/man8/mount.ceph.8*
+%{_mandir}/man8/mount.fuse.ceph.8*
%{_mandir}/man8/osdmaptool.8*
%{_mandir}/man8/rados.8*
%{_mandir}/man8/rbd.8*
%{_mandir}/man8/rbd-replay-many.8*
%{_mandir}/man8/rbd-replay-prep.8*
%{_mandir}/man8/rbdmap.8*
+%{_mandir}/man8/rgw-orphan-list.8*
%dir %{_localstatedir}/lib/ceph
%dir %{_localstatedir}/lib/ceph/bootstrap-mds
%files libs
%defattr(644,root,root,755)
+%if %{with bluefs}
+%attr(755,root,root) %{_libdir}/libbluefs.so
+%endif
%attr(755,root,root) %{_libdir}/libcephfs.so.*.*.*
%attr(755,root,root) %ghost %{_libdir}/libcephfs.so.2
%attr(755,root,root) %{_libdir}/libos_tp.so.*.*.*
%attr(755,root,root) %ghost %{_libdir}/librados.so.2
%attr(755,root,root) %{_libdir}/librados_tp.so.*.*.*
%attr(755,root,root) %ghost %{_libdir}/librados_tp.so.2
+%attr(755,root,root) %{_libdir}/libradosgw.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libradosgw.so.2
%attr(755,root,root) %{_libdir}/libradosstriper.so.*.*.*
%attr(755,root,root) %ghost %{_libdir}/libradosstriper.so.1
%attr(755,root,root) %{_libdir}/librbd.so.*.*.*
%attr(755,root,root) %ghost %{_libdir}/librbd_tp.so.1
%attr(755,root,root) %{_libdir}/librgw.so.*.*.*
%attr(755,root,root) %ghost %{_libdir}/librgw.so.2
+%attr(755,root,root) %{_libdir}/librgw_op_tp.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/librgw_op_tp.so.2
+%attr(755,root,root) %{_libdir}/librgw_rados_tp.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/librgw_rados_tp.so.2
+%attr(755,root,root) %{_libdir}/libcephsqlite.so
%dir %{_libdir}/ceph
-%attr(755,root,root) %{_libdir}/ceph/libceph-common.so.0
+%attr(755,root,root) %{_libdir}/ceph/libceph-common.so.2
%files devel
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/libosd_tp.so
%attr(755,root,root) %{_libdir}/librados.so
%attr(755,root,root) %{_libdir}/librados_tp.so
+%attr(755,root,root) %{_libdir}/libradosgw.so
%attr(755,root,root) %{_libdir}/libradosstriper.so
%attr(755,root,root) %{_libdir}/librbd.so
%attr(755,root,root) %{_libdir}/librbd_tp.so
%attr(755,root,root) %{_libdir}/librgw.so
-%attr(755,root,root) %{_libdir}/ceph/libceph-common.so
+%attr(755,root,root) %{_libdir}/librgw_op_tp.so
+%attr(755,root,root) %{_libdir}/librgw_rados_tp.so
%{_includedir}/cephfs
%{_includedir}/rados
%{_includedir}/radosstriper
%{_includedir}/rbd
-
-%files -n python-ceph
-%defattr(644,root,root,755)
-%attr(755,root,root) %{py_sitedir}/cephfs.so
-%attr(755,root,root) %{py_sitedir}/rados.so
-%attr(755,root,root) %{py_sitedir}/rbd.so
-%attr(755,root,root) %{py_sitedir}/rgw.so
-%{py_sitedir}/ceph_detect_init
-%{py_sitedir}/ceph_detect_init-1.0.1-py*.egg-info
-%{py_sitedir}/ceph_disk
-%{py_sitedir}/ceph_disk-1.0.0-py*.egg-info
-%{py_sitedir}/ceph_volume
-%{py_sitedir}/ceph_volume-1.0.0-py*.egg-info
-%{py_sitedir}/cephfs-2.0.0-py*.egg-info
-%{py_sitedir}/rados-2.0.0-py*.egg-info
-%{py_sitedir}/rbd-2.0.0-py*.egg-info
-%{py_sitedir}/rgw-2.0.0-py*.egg-info
-%{py_sitescriptdir}/ceph_argparse.py[co]
-%{py_sitescriptdir}/ceph_daemon.py[co]
-%{py_sitescriptdir}/ceph_rest_api.py[co]
-%{py_sitescriptdir}/ceph_volume_client.py[co]
+%{_includedir}/libcephsqlite.h
%files -n python3-ceph
%defattr(644,root,root,755)
%{py3_sitedir}/rados-2.0.0-py*.egg-info
%{py3_sitedir}/rbd-2.0.0-py*.egg-info
%{py3_sitedir}/rgw-2.0.0-py*.egg-info
-%{py3_sitescriptdir}/ceph_argparse.py
-%{py3_sitescriptdir}/ceph_daemon.py
-%{py3_sitescriptdir}/ceph_volume_client.py
-%{py3_sitescriptdir}/__pycache__/ceph_argparse.cpython-*.py[co]
-%{py3_sitescriptdir}/__pycache__/ceph_daemon.cpython-*.py[co]
-%{py3_sitescriptdir}/__pycache__/ceph_volume_client.cpython-*.py[co]
+%{py3_sitescriptdir}/ceph_*.py
+%{py3_sitescriptdir}/__pycache__/ceph_*.py*
+%{py3_sitescriptdir}/ceph
+%{py3_sitescriptdir}/ceph_volume
+%{py3_sitescriptdir}/ceph-1.0.0-py*.egg-info
+%{py3_sitescriptdir}/ceph_volume-1.0.0-py*.egg-info
+%{py3_sitescriptdir}/cephfs_top-0.0.1-py*.egg-info
%if %{with java}
%files -n java-cephfs
%attr(755,root,root) %ghost %{_libdir}/libcephfs_jni.so.1
%attr(755,root,root) %{_libdir}/libcephfs_jni.so
%{_javadir}/libcephfs.jar
-%{_javadir}/libcephfs-test.jar
%endif
%files fuse
%dir %{_prefix}/lib/ocf/resource.d/ceph
%attr(755,root,root) %{_prefix}/lib/ocf/resource.d/ceph/rbd
+%if %{with tests}
+%files test
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_bindir}/ceph-client-debug
+%attr(755,root,root) %{_bindir}/ceph-coverage
+%attr(755,root,root) %{_bindir}/ceph-debugpack
+%attr(755,root,root) %{_bindir}/ceph-kvstore-tool
+%attr(755,root,root) %{_bindir}/ceph-monstore-tool
+%attr(755,root,root) %{_bindir}/ceph-osdomap-tool
+%attr(755,root,root) %{_bindir}/ceph_bench_log
+%attr(755,root,root) %{_bindir}/ceph_erasure_code
+%attr(755,root,root) %{_bindir}/ceph_erasure_code_benchmark
+%attr(755,root,root) %{_bindir}/ceph_kvstorebench
+%attr(755,root,root) %{_bindir}/ceph_multi_stress_watch
+%attr(755,root,root) %{_bindir}/ceph_objectstore_bench
+%attr(755,root,root) %{_bindir}/ceph_omapbench
+%attr(755,root,root) %{_bindir}/ceph_perf_local
+%attr(755,root,root) %{_bindir}/ceph_perf_msgr_client
+%attr(755,root,root) %{_bindir}/ceph_perf_msgr_server
+%attr(755,root,root) %{_bindir}/ceph_perf_objectstore
+%attr(755,root,root) %{_bindir}/ceph_psim
+%attr(755,root,root) %{_bindir}/ceph_radosacl
+%attr(755,root,root) %{_bindir}/ceph_rgw_jsonparser
+%attr(755,root,root) %{_bindir}/ceph_rgw_multiparser
+%attr(755,root,root) %{_bindir}/ceph_scratchtool
+%attr(755,root,root) %{_bindir}/ceph_scratchtoolpp
+%attr(755,root,root) %{_bindir}/ceph_smalliobench
+%attr(755,root,root) %{_bindir}/ceph_smalliobenchdumb
+%attr(755,root,root) %{_bindir}/ceph_smalliobenchfs
+%attr(755,root,root) %{_bindir}/ceph_smalliobenchrbd
+%attr(755,root,root) %{_bindir}/ceph_test_*
+%attr(755,root,root) %{_bindir}/ceph_tpbench
+%attr(755,root,root) %{_bindir}/ceph_xattr_bench
+%attr(755,root,root) %{_libdir}/ceph/ceph-monstore-update-crush.sh
+%{py3_sitedir}/ceph/tests
+%{py3_sitedir}/ceph_volume/tests
+%if %{with java}
+%{_javadir}/libcephfs-test.jar
+%endif
+%{_mandir}/man8/ceph-debugpack.8*
+%{_mandir}/man8/ceph-kvstore-tool.8*
+%endif
+
%if %{with fio}
%files -n fio-ceph-objectstore
%defattr(644,root,root,755)