From d92e321f71b920846578a126c670ff7189815f22 Mon Sep 17 00:00:00 2001 From: Delfino Curado Date: Tue, 3 Aug 2021 17:06:04 -0400 Subject: [PATCH] Integrate ceph version 14 in StarlingX build Add the upgraded submodules as dependencies in centos_tarball-dl.lst file. It's important to highlight that dpdk is added twice because seastar and SPDK depends on different versions of dpdk. * boost_1_72_0.tar.bz2 * c-ares-fd6124c74da0801f23f9d324559d8b66fb83f533.tar.gz * civetweb-bb99e93da00c3fe8c6b6a98520fb17cf64710ce7.tar.gz * dmclock-4496dbc6515db96e08660ac38883329c5009f3e9.tar.gz * dpdk-96fae0e24c9088d9690c38098b25646f861a664b.tar.gz * dpdk-a1774652fbbb1fe7c0ff392d5e66de60a0154df6.tar.gz * fmt-80021e25971e44bb6a6d187c0dac8a1823436d80.tar.gz * intel-ipsec-mb-134c90c912ea9376460e9d949bb1319a83a9d839.tar.gz * rocksdb-4c736f177851cbf9fb7a6790282306ffac5065f8.tar.gz * seastar-0cf6aa6b28d69210b271489c0778f226cde0f459.tar.gz * spawn-5f4742f647a5a33b9467f648a3968b3cd0a681ee.tar.gz * spdk-fd292c568f72187e172b98074d7ccab362dae348.tar.gz * zstd-b706286adbba780006a47ef92df0ad7a785666b6.tar.gz Merged the changes of ceph 14 spec in this repo. For now python3 is disabled by default for StarlingX build but this will probably change in the future. For python3 build to work, more dependencies will be needed. Test plan: PASS: Build successfully Depends-On: https://review.opendev.org/c/starlingx/tools/+/814591 Story: 2009074 Task: 42946 Signed-off-by: Delfino Curado Change-Id: Iab9d0b57b00da4ba595d2b2f24194f058c850f5b --- centos_tarball-dl.lst | 23 +- ceph/ceph/centos/ceph.spec | 820 ++++++++++++++++++++++++++++--------- 2 files changed, 653 insertions(+), 190 deletions(-) diff --git a/centos_tarball-dl.lst b/centos_tarball-dl.lst index e309a42c0..6b2c99943 100644 --- a/centos_tarball-dl.lst +++ b/centos_tarball-dl.lst @@ -1,21 +1,28 @@ armada-7ef4b8643b5ec5216a8f6726841e156c0aa54a1a.tar.gz#armada#https://github.com/airshipit/armada/tarball/7ef4b8643b5ec5216a8f6726841e156c0aa54a1a#http## blkin-f24ceec055ea236a093988237a9821d145f5f7c8.tar.gz#blkin#https://api.github.com/repos/ceph/blkin/tarball/f24ceec055ea236a093988237a9821d145f5f7c8#https## boost_1_67_0.tar.bz2#boost_1_67_0#https://dl.bintray.com/boostorg/release/1.67.0/source/boost_1_67_0.tar.bz2#https## +boost_1_72_0.tar.bz2#boost_1_72_0#https://boostorg.jfrog.io/artifactory/main/release/1.72.0/source/boost_1_72_0.tar.bz2#https## +c-ares-fd6124c74da0801f23f9d324559d8b66fb83f533.tar.gz#c-ares#https://api.github.com/repos/ceph/c-ares/tarball/fd6124c74da0801f23f9d324559d8b66fb83f533#https## ceph-erasure-code-corpus-2d7d78b9cc52e8a9529d8cc2d2954c7d375d5dd7.tar.gz#ceph-erasure-code-corpus#https://api.github.com/repos/ceph/ceph-erasure-code-corpus/tarball/2d7d78b9cc52e8a9529d8cc2d2954c7d375d5dd7#https## ceph-object-corpus-e32bf8ca3dc6151ebe7f205ba187815bc18e1cef.tar.gz#ceph-object-corpus#https://api.github.com/repos/ceph/ceph-object-corpus/tarball/e32bf8ca3dc6151ebe7f205ba187815bc18e1cef#https## chartmuseum-0.12.0.tar.gz#chartmuseum#https://github.com/helm/chartmuseum/archive/v0.12.0.tar.gz#https## !chartmuseum-v0.12.0-amd64#chartmuseum-bin#https://s3.amazonaws.com/chartmuseum/release/v0.12.0/bin/linux/amd64/chartmuseum#https## -civetweb-ff2881e2cd5869a71ca91083bad5d12cccd22136.tar.gz#civetweb#https://api.github.com/repos/ceph/civetweb/tarball/ff2881e2cd5869a71ca91083bad5d12cccd22136#https## +#civetweb-ff2881e2cd5869a71ca91083bad5d12cccd22136.tar.gz#civetweb#https://api.github.com/repos/ceph/civetweb/tarball/ff2881e2cd5869a71ca91083bad5d12cccd22136#https## +civetweb-bb99e93da00c3fe8c6b6a98520fb17cf64710ce7.tar.gz#civetweb#https://api.github.com/repos/ceph/civetweb/tarball/bb99e93da00c3fe8c6b6a98520fb17cf64710ce7#https## containerd-1.4.6.tar.gz#containerd#https://github.com/containerd/containerd/archive/refs/tags/v1.4.6.tar.gz#https## crictl-v1.21.0-linux-amd64.tar.gz#crictl#https://github.com/kubernetes-sigs/cri-tools/releases/download/v1.21.0/crictl-v1.21.0-linux-amd64.tar.gz#https## +dmclock-4496dbc6515db96e08660ac38883329c5009f3e9.tar.gz#dmclock#https://api.github.com/repos/ceph/dmclock/tarball/4496dbc6515db96e08660ac38883329c5009f3e9#https## docker-distribution-v2.7.1.tar.gz#docker-distribution-2.7.1#https://github.com/docker/distribution/archive/v2.7.1.tar.gz#http## # docker-libtrust-fa567046d9b14f6aa788882a950d69651d230b21.tar.gz#docker-libtrust#https://github.com/docker/libtrust/archive/fa567046d9b14f6aa788882a950d69651d230b21.tar.gz#http## dpdk-18.11.tar.xz#dpdk-18.11#http://fast.dpdk.org/rel/dpdk-18.11.tar.xz#http## -dpdk-6ece49ad5a26f5e2f5c4af6c06c30376c0ddc387.tar.gz#dpdk#https://api.github.com/repos/spdk/dpdk/tarball/6ece49ad5a26f5e2f5c4af6c06c30376c0ddc387#https## +#dpdk-6ece49ad5a26f5e2f5c4af6c06c30376c0ddc387.tar.gz#dpdk#https://api.github.com/repos/spdk/dpdk/tarball/6ece49ad5a26f5e2f5c4af6c06c30376c0ddc387#https## +dpdk-96fae0e24c9088d9690c38098b25646f861a664b.tar.gz#dpdk-96fae0e24c9088d9690c38098b25646f861a664b#https://api.github.com/repos/spdk/dpdk/tarball/96fae0e24c9088d9690c38098b25646f861a664b#https## +dpdk-a1774652fbbb1fe7c0ff392d5e66de60a0154df6.tar.gz#dpdk-a1774652fbbb1fe7c0ff392d5e66de60a0154df6#https://api.github.com/repos/ceph/dpdk/tarball/a1774652fbbb1fe7c0ff392d5e66de60a0154df6#https## dpkg_1.18.24.tar.xz#dpkg-1.18.24#http://http.debian.net/debian/pool/main/d/dpkg/dpkg_1.18.24.tar.xz#http## drbd-utils-9.15.1.tar.gz#drbd-utils-9.15.1#https://pkg.linbit.com//downloads/drbd/utils/drbd-utils-9.15.1.tar.gz#https## dtc-1.4.4.tar.gz#dtc-1.4.4#https://www.kernel.org/pub/software/utils/dtc/dtc-1.4.4.tar.gz#http## etcd-v3.3.15.tar.gz#etcd-v3.3.15#https://github.com/etcd-io/etcd/archive/v3.3.15.tar.gz#http## +fmt-80021e25971e44bb6a6d187c0dac8a1823436d80.tar.gz#fmt#https://api.github.com/repos/ceph/fmt/tarball/80021e25971e44bb6a6d187c0dac8a1823436d80#https## gf-complete-7e61b44404f0ed410c83cfd3947a52e88ae044e1.tar.gz#gf-complete#https://api.github.com/repos/ceph/gf-complete/tarball/7e61b44404f0ed410c83cfd3947a52e88ae044e1#https## # gnocchi-4.2.5.tar.gz#gnocchi-4.2.5#https://pypi.io/packages/source/g/gnocchi/gnocchi-4.2.5.tar.gz#http## # gnocchiclient-7.0.1.tar.gz#gnocchiclient-7.0.1#https://pypi.io/packages/source/g/gnocchiclient/gnocchiclient-7.0.1.tar.gz#http## @@ -26,6 +33,7 @@ googletest-fdb850479284e2aae047b87df6beae84236d0135.tar.gz#googletest#https://ap # gorilla-context-08b5f424b9271eedf6f9f0ce86cb9396ed337a42.tar.gz#gorilla-context#https://github.com/gorilla/context/archive/08b5f424b9271eedf6f9f0ce86cb9396ed337a42.tar.gz#http## # gorilla-mux-456bcfa82d672db7cae587c9b541463f65bc2718.tar.gz#gorilla-mux#https://github.com/gorilla/mux/archive/456bcfa82d672db7cae587c9b541463f65bc2718.tar.gz#http## helm-v3.2.1-linux-amd64.tar.gz#linux-amd64#https://get.helm.sh/helm-v3.2.1-linux-amd64.tar.gz#http## +intel-ipsec-mb-134c90c912ea9376460e9d949bb1319a83a9d839.tar.gz#intel-ipsec-mb#https://api.github.com/repos/spdk/intel-ipsec-mb/tarball/134c90c912ea9376460e9d949bb1319a83a9d839#https## isa-l-7e1a337433a340bc0974ed0f04301bdaca374af6.tar.gz#isa-l#https://api.github.com/repos/ceph/isa-l/tarball/7e1a337433a340bc0974ed0f04301bdaca374af6#https## isa-l_crypto-603529a4e06ac8a1662c13d6b31f122e21830352.tar.gz#isa-l_crypto#https://api.github.com/repos/01org/isa-l_crypto/tarball/603529a4e06ac8a1662c13d6b31f122e21830352#https## jerasure-96c76b89d661c163f65a014b8042c9354ccf7f31.tar.gz#jerasure#https://api.github.com/repos/ceph/jerasure/tarball/96c76b89d661c163f65a014b8042c9354ccf7f31#https## @@ -62,16 +70,21 @@ python-setuptools-v38.5.1.tar.gz#setuptools-38.5.1#https://github.com/pypa/setup rapidjson-f54b0e47a08782a6131cc3d60f94d038fa6e0a51.tar.gz#rapidjson#https://api.github.com/repos/ceph/rapidjson/tarball/f54b0e47a08782a6131cc3d60f94d038fa6e0a51#https## Redfishtool-1.1.0.tar.gz#Redfishtool-1.1.0#https://github.com/DMTF/Redfishtool/archive/1.1.0.tar.gz#http## requests-toolbelt-0.9.1.tar.gz#requests-toolbelt-0.9.1#https://github.com/requests/toolbelt/archive/0.9.1.tar.gz#http## -rocksdb-f4a857da0b720691effc524469f6db895ad00d8e.tar.gz#rocksdb#https://api.github.com/repos/ceph/rocksdb/tarball/f4a857da0b720691effc524469f6db895ad00d8e#https## +#rocksdb-f4a857da0b720691effc524469f6db895ad00d8e.tar.gz#rocksdb#https://api.github.com/repos/ceph/rocksdb/tarball/f4a857da0b720691effc524469f6db895ad00d8e#https## +rocksdb-4c736f177851cbf9fb7a6790282306ffac5065f8.tar.gz#rocksdb#https://api.github.com/repos/ceph/rocksdb/tarball/4c736f177851cbf9fb7a6790282306ffac5065f8#https## runc-1.0.0-rc95.tar.gz#runc#https://github.com/opencontainers/runc/archive/v1.0.0-rc95.tar.gz#https## !rt-setup-2.1-2.el8.src.rpm#rt-setup#https://git.centos.org/rpms/rt-setup#http_script#201aeb6d3d06c556cee369b9833539ecb67ce943#post-dl-script/rt-setup.sh # Sirupsen-logrus-55eb11d21d2a31a3cc93838241d04800f52e823d.tar.gz#Sirupsen-logrus#github.com/Sirupsen/logrus/archive/55eb11d21d2a31a3cc93838241d04800f52e823d.tar.gz#http## -spdk-f474ce6930f0a44360e1cc4ecd606d2348481c4c.tar.gz#spdk#https://api.github.com/repos/ceph/spdk/tarball/f474ce6930f0a44360e1cc4ecd606d2348481c4c#https## +seastar-0cf6aa6b28d69210b271489c0778f226cde0f459.tar.gz#seastar#https://api.github.com/repos/ceph/seastar/tarball/0cf6aa6b28d69210b271489c0778f226cde0f459#https## +spawn-5f4742f647a5a33b9467f648a3968b3cd0a681ee.tar.gz#spawn#https://api.github.com/repos/ceph/spawn/tarball/5f4742f647a5a33b9467f648a3968b3cd0a681ee#https## +#spdk-f474ce6930f0a44360e1cc4ecd606d2348481c4c.tar.gz#spdk#https://api.github.com/repos/ceph/spdk/tarball/f474ce6930f0a44360e1cc4ecd606d2348481c4c#https## +spdk-fd292c568f72187e172b98074d7ccab362dae348.tar.gz#spdk#https://api.github.com/repos/ceph/spdk/tarball/fd292c568f72187e172b98074d7ccab362dae348#https## spectre-meltdown-checker-0.37+-5cc77741.tar.gz#spectre-meltdown-checker#https://github.com/speed47/spectre-meltdown-checker/tarball/5cc77741af1d2f52140aa9f89339f56b6c4b6783#http## trident-installer-20.04.0.tar.gz#trident-installer-20.04.0#https://github.com/NetApp/trident/releases/download/v20.04.0/trident-installer-20.04.0.tar.gz#https## !tss2-930.tar.gz#tss2-930#https://git.code.sf.net/p/ibmtpm20tss/tss#git#v930# xxHash-1f40c6511fa8dd9d2e337ca8c9bc18b3e87663c9.tar.gz#xxHash#https://api.github.com/repos/ceph/xxHash/tarball/1f40c6511fa8dd9d2e337ca8c9bc18b3e87663c9#https## -zstd-f4340f46b2387bc8de7d5320c0b83bb1499933ad.tar.gz#zstd#https://api.github.com/repos/facebook/zstd/tarball/f4340f46b2387bc8de7d5320c0b83bb1499933ad#https## +#zstd-f4340f46b2387bc8de7d5320c0b83bb1499933ad.tar.gz#zstd#https://api.github.com/repos/facebook/zstd/tarball/f4340f46b2387bc8de7d5320c0b83bb1499933ad#https## +zstd-b706286adbba780006a47ef92df0ad7a785666b6.tar.gz#zstd#https://api.github.com/repos/facebook/zstd/tarball/b706286adbba780006a47ef92df0ad7a785666b6#https## inih-b1dbff4b0bd1e1f40d237e21011f6dee0ec2fa69.tar.gz#inih-44#https://github.com/benhoyt/inih/tarball/b1dbff4b0bd1e1f40d237e21011f6dee0ec2fa69#https## pf-bb-config-d7d5f1ddd17b4c80e3e0d6ce87660926f58f8585.tar.gz#pf-bb-config-21.6#https://github.com/intel/pf-bb-config/tarball/d7d5f1ddd17b4c80e3e0d6ce87660926f58f8585#https## gpu-operator-1.6.0.tar.gz#gpu-operator-1.6.0#https://github.com/NVIDIA/gpu-operator/archive/1.6.0.tar.gz##https## diff --git a/ceph/ceph/centos/ceph.spec b/ceph/ceph/centos/ceph.spec index 23d4888c4..a3a491fea 100644 --- a/ceph/ceph/centos/ceph.spec +++ b/ceph/ceph/centos/ceph.spec @@ -179,9 +179,15 @@ %define optflags -O2 +################################################################################# +# conditional build section +# +# please read http://rpm.org/user_doc/conditional_builds.html for explanation of +# bcond syntax! +################################################################################# %bcond_with python3 -%bcond_with ocf %bcond_with make_check +%bcond_without ceph_test_package %ifarch s390 s390x %bcond_with tcmalloc %else @@ -191,45 +197,58 @@ %if %{without stx} %bcond_without selinux %endif -%bcond_without ceph_test_package %if %{without stx} +%if 0%{?rhel} >= 8 +%bcond_with cephfs_java +%else %bcond_without cephfs_java +%endif + %bcond_without lttng %endif +%bcond_without amqp_endpoint %bcond_without libradosstriper +%bcond_with ocf +%bcond_without kafka_endpoint %global _remote_tarball_prefix https://download.ceph.com/tarballs/ %endif %if 0%{?suse_version} %bcond_with selinux -%bcond_with ceph_test_package -%if %{without stx} %bcond_with cephfs_java -%endif +%bcond_with amqp_endpoint +%bcond_with kafka_endpoint #Compat macro for new _fillupdir macro introduced in Nov 2017 %if ! %{defined _fillupdir} %global _fillupdir /var/adm/fillup-templates %endif -%if ! 0%{?is_opensuse} && %{without stx} -%bcond_without lttng +%if 0%{?is_opensuse} %bcond_without libradosstriper +%bcond_without ocf %else %bcond_with libradosstriper -%ifarch x86_64 aarch64 +%bcond_with ocf +%endif +%ifarch x86_64 aarch64 ppc64le %bcond_without lttng %else %bcond_with lttng %endif %endif -%endif -%if 0%{?suse_version} >= 1500 +%bcond_with seastar +%if 0%{?fedora} >= 29 || 0%{?suse_version} >= 1500 || 0%{?rhel} >= 8 +# distros that need a py3 Ceph build %bcond_with python2 %else +# distros that need a py2 Ceph build %bcond_without python2 %endif +%bcond_with cephfs_shell %if 0%{without python2} %global _defined_if_python2_absent 1 %endif - +%if 0%{?fedora} || 0%{?suse_version} || 0%{?rhel} >= 8 +%global weak_deps 1 +%endif %if %{with selinux} # get selinux policy version %{!?_selinux_policy_version: %global _selinux_policy_version 0.0.0} @@ -238,6 +257,8 @@ %{!?_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} # define _python_buildid macro which will expand to the empty string when # building with python2 %global _python_buildid %{?_defined_if_python2_absent:%{python3_pkgversion}} @@ -252,7 +273,7 @@ # main package definition ################################################################################# Name: ceph -Version: 13.2.2 +Version: 14.2.22 Release: 0.el7%{?_tis_dist}.%{tis_patch_ver} %if 0%{?fedora} || 0%{?rhel} Epoch: 2 @@ -268,16 +289,17 @@ License: LGPL-2.1 and CC-BY-SA-3.0 and GPL-2.0 and BSL-1.0 and BSD-3-Clause and Group: System/Filesystems %endif URL: http://ceph.com/ -Source0: %{?_remote_tarball_prefix}ceph-13.2.2.tar.gz +Source0: %{?_remote_tarball_prefix}ceph-14.2.22.tar.gz -Source1: boost_1_67_0.tar.bz2 + +Source1: boost_1_72_0.tar.bz2 Source2: ceph-object-corpus/ceph-object-corpus-e32bf8ca3dc6151ebe7f205ba187815bc18e1cef.tar.gz -Source3: src/civetweb/civetweb-ff2881e2cd5869a71ca91083bad5d12cccd22136.tar.gz +Source3: src/civetweb/civetweb-bb99e93da00c3fe8c6b6a98520fb17cf64710ce7.tar.gz Source4: src/erasure-code/jerasure/jerasure/jerasure-96c76b89d661c163f65a014b8042c9354ccf7f31.tar.gz Source5: src/erasure-code/jerasure/gf-complete/gf-complete-7e61b44404f0ed410c83cfd3947a52e88ae044e1.tar.gz -Source6: src/rocksdb/rocksdb-f4a857da0b720691effc524469f6db895ad00d8e.tar.gz +Source6: src/rocksdb/rocksdb-4c736f177851cbf9fb7a6790282306ffac5065f8.tar.gz Source7: ceph-erasure-code-corpus/ceph-erasure-code-corpus-2d7d78b9cc52e8a9529d8cc2d2954c7d375d5dd7.tar.gz -Source8: src/spdk/spdk-f474ce6930f0a44360e1cc4ecd606d2348481c4c.tar.gz +Source8: src/spdk/spdk-fd292c568f72187e172b98074d7ccab362dae348.tar.gz Source9: src/xxHash/xxHash-1f40c6511fa8dd9d2e337ca8c9bc18b3e87663c9.tar.gz Source10: src/isa-l/isa-l-7e1a337433a340bc0974ed0f04301bdaca374af6.tar.gz Source11: src/lua/lua-1fce39c6397056db645718b8f5821571d97869a4.tar.gz @@ -285,8 +307,8 @@ Source12: src/blkin/blkin-f24ceec055ea236a093988237a9821d145f5f7c8.tar.gz Source13: src/rapidjson/rapidjson-f54b0e47a08782a6131cc3d60f94d038fa6e0a51.tar.gz Source14: src/googletest/googletest-fdb850479284e2aae047b87df6beae84236d0135.tar.gz Source15: src/crypto/isa-l/isa-l_crypto/isa-l_crypto-603529a4e06ac8a1662c13d6b31f122e21830352.tar.gz -Source16: src/zstd/zstd-f4340f46b2387bc8de7d5320c0b83bb1499933ad.tar.gz -Source17: src/spdk/dpdk/dpdk-6ece49ad5a26f5e2f5c4af6c06c30376c0ddc387.tar.gz +Source16: src/zstd/zstd-b706286adbba780006a47ef92df0ad7a785666b6.tar.gz +Source17: src/spdk/dpdk/dpdk-96fae0e24c9088d9690c38098b25646f861a664b.tar.gz Source18: src/rapidjson/thirdparty/gtest/googletest-0a439623f75c029912728d80cb7f1b8b48739ca4.tar.gz Source19: ceph.sh @@ -300,14 +322,18 @@ Source26: mgr-restful-plugin.service Source27: ceph-preshutdown.sh Source28: starlingx-docker-override.conf +Source29: src/c-ares/c-ares-fd6124c74da0801f23f9d324559d8b66fb83f533.tar.gz +Source30: src/dmclock/dmclock-4496dbc6515db96e08660ac38883329c5009f3e9.tar.gz +Source31: src/seastar/seastar-0cf6aa6b28d69210b271489c0778f226cde0f459.tar.gz +Source32: src/spawn/spawn-5f4742f647a5a33b9467f648a3968b3cd0a681ee.tar.gz +Source33: src/spdk/intel-ipsec-mb/intel-ipsec-mb-134c90c912ea9376460e9d949bb1319a83a9d839.tar.gz +Source34: src/seastar/dpdk/dpdk-a1774652fbbb1fe7c0ff392d5e66de60a0154df6.tar.gz +Source35: src/seastar/fmt/fmt-80021e25971e44bb6a6d187c0dac8a1823436d80.tar.gz + %if 0%{?suse_version} # _insert_obs_source_lines_here -%if 0%{?is_opensuse} -ExclusiveArch: x86_64 aarch64 ppc64 ppc64le -%else ExclusiveArch: x86_64 aarch64 ppc64le s390x %endif -%endif ################################################################################# # dependencies that apply across all distro families ################################################################################# @@ -324,40 +350,51 @@ BuildRequires: sharutils BuildRequires: checkpolicy BuildRequires: selinux-policy-devel %endif -BuildRequires: bc BuildRequires: gperf -BuildRequires: cmake +%if 0%{?rhel} == 7 +BuildRequires: cmake3 > 3.5 +%else +BuildRequires: cmake > 3.5 +%endif BuildRequires: cryptsetup BuildRequires: fuse-devel %if 0%{?rhel} == 7 # devtoolset offers newer make and valgrind-devel, but the old ones are good # enough. -BuildRequires: devtoolset-7-gcc-c++ +BuildRequires: devtoolset-8-gcc-c++ >= 8.2.1 %else BuildRequires: gcc-c++ %endif BuildRequires: gdbm %if 0%{with tcmalloc} +%if 0%{?fedora} || 0%{?rhel} +BuildRequires: gperftools-devel >= 2.6.1 +%endif +%if 0%{?suse_version} BuildRequires: gperftools-devel >= 2.4 %endif -BuildRequires: jq +%endif BuildRequires: leveldb-devel > 1.2 BuildRequires: libaio-devel BuildRequires: libblkid-devel >= 2.17 BuildRequires: libcurl-devel +BuildRequires: libcap-ng-devel BuildRequires: libudev-devel +BuildRequires: libnl3-devel BuildRequires: liboath-devel BuildRequires: libtool BuildRequires: libxml2-devel -BuildRequires: libuuid-devel BuildRequires: make +BuildRequires: ncurses-devel BuildRequires: parted +BuildRequires: patch BuildRequires: perl BuildRequires: pkgconfig BuildRequires: procps BuildRequires: python%{_python_buildid} BuildRequires: python%{_python_buildid}-devel BuildRequires: snappy-devel +BuildRequires: sudo BuildRequires: udev BuildRequires: util-linux BuildRequires: valgrind-devel @@ -366,84 +403,127 @@ BuildRequires: xfsprogs BuildRequires: xfsprogs-devel BuildRequires: xmlstarlet BuildRequires: yasm +%if 0%{with amqp_endpoint} +BuildRequires: librabbitmq-devel +%endif +%if 0%{with kafka_endpoint} +BuildRequires: librdkafka-devel +%endif %if 0%{with make_check} -BuildRequires: python%{_python_buildid}-coverage +BuildRequires: jq +BuildRequires: libuuid-devel +BuildRequires: python%{_python_buildid}-bcrypt BuildRequires: python%{_python_buildid}-nose BuildRequires: python%{_python_buildid}-pecan BuildRequires: python%{_python_buildid}-requests BuildRequires: python%{_python_buildid}-six -BuildRequires: python%{_python_buildid}-tox BuildRequires: python%{_python_buildid}-virtualenv BuildRequires: socat %endif - +%if 0%{with seastar} +BuildRequires: c-ares-devel +BuildRequires: gnutls-devel +BuildRequires: hwloc-devel +BuildRequires: libpciaccess-devel +BuildRequires: lksctp-tools-devel +BuildRequires: protobuf-devel +BuildRequires: ragel +BuildRequires: systemtap-sdt-devel +BuildRequires: yaml-cpp-devel +%endif ################################################################################# # distro-conditional dependencies ################################################################################# %if 0%{?suse_version} BuildRequires: pkgconfig(systemd) BuildRequires: systemd-rpm-macros -BuildRequires: systemd %{?systemd_requires} PreReq: %fillup_prereq +BuildRequires: fdupes BuildRequires: net-tools BuildRequires: libbz2-devel -BuildRequires: btrfsprogs BuildRequires: mozilla-nss-devel BuildRequires: keyutils-devel BuildRequires: libopenssl-devel BuildRequires: lsb-release BuildRequires: openldap2-devel +#BuildRequires: krb5 +#BuildRequires: krb5-devel BuildRequires: cunit-devel -BuildRequires: python%{_python_buildid}-base +BuildRequires: python%{_python_buildid}-setuptools BuildRequires: python%{_python_buildid}-Cython BuildRequires: python%{_python_buildid}-PrettyTable BuildRequires: python%{_python_buildid}-Sphinx BuildRequires: rdma-core-devel BuildRequires: liblz4-devel >= 1.7 +# for prometheus-alerts +BuildRequires: golang-github-prometheus-prometheus %endif %if 0%{?fedora} || 0%{?rhel} Requires: systemd BuildRequires: boost-random -BuildRequires: btrfs-progs BuildRequires: nss-devel BuildRequires: keyutils-libs-devel BuildRequires: libibverbs-devel +BuildRequires: librdmacm-devel BuildRequires: openldap-devel +#BuildRequires: krb5-devel BuildRequires: openssl-devel BuildRequires: CUnit-devel BuildRequires: redhat-lsb-core -BuildRequires: Cython%{_python_buildid} +%if 0%{with python2} +BuildRequires: python2-Cython +%endif +%if %{with python3} +BuildRequires: python%{python3_pkgversion}-devel +BuildRequires: python%{python3_pkgversion}-setuptools +%if 0%{?rhel} == 7 +BuildRequires: python%{python3_version_nodots}-Cython +%else +BuildRequires: python%{python3_pkgversion}-Cython +%endif +%endif BuildRequires: python%{_python_buildid}-prettytable BuildRequires: python%{_python_buildid}-sphinx BuildRequires: lz4-devel >= 1.7 %endif -# python34-... for RHEL, python3-... for all other supported distros -%if %{with python3} -%if 0%{?rhel} -BuildRequires: python34-devel -BuildRequires: python34-setuptools -BuildRequires: python34-Cython -%else -BuildRequires: python3-devel -BuildRequires: python3-setuptools -BuildRequires: python3-Cython -%endif -%endif # distro-conditional make check dependencies %if 0%{with make_check} %if 0%{?fedora} || 0%{?rhel} +BuildRequires: python%{_python_buildid}-coverage +BuildRequires: python%{_python_buildid}-pecan +BuildRequires: python%{_python_buildid}-tox +BuildRequires: xmlsec1 +BuildRequires: golang-github-prometheus +BuildRequires: libtool-ltdl-devel BuildRequires: python%{_python_buildid}-cherrypy +BuildRequires: python%{_python_buildid}-jwt BuildRequires: python%{_python_buildid}-routes +BuildRequires: python%{_python_buildid}-scipy BuildRequires: python%{_python_buildid}-werkzeug -BuildRequires: python%{_python_buildid}-bcrypt +BuildRequires: xmlsec1 +BuildRequires: xmlsec1-devel +BuildRequires: xmlsec1-nss +BuildRequires: xmlsec1-openssl +BuildRequires: xmlsec1-openssl-devel %endif %if 0%{?suse_version} +BuildRequires: golang-github-prometheus-prometheus +BuildRequires: libxmlsec1-1 +BuildRequires: libxmlsec1-nss1 +BuildRequires: libxmlsec1-openssl1 +BuildRequires: xmlsec1-devel +BuildRequires: xmlsec1-openssl-devel BuildRequires: python%{_python_buildid}-CherryPy +BuildRequires: python%{_python_buildid}-PyJWT BuildRequires: python%{_python_buildid}-Routes BuildRequires: python%{_python_buildid}-Werkzeug +BuildRequires: python%{_python_buildid}-coverage BuildRequires: python%{_python_buildid}-numpy-devel -BuildRequires: python%{_python_buildid}-bcrypt +BuildRequires: python%{_python_buildid}-pecan +BuildRequires: python%{_python_buildid}-pyOpenSSL +BuildRequires: python%{_python_buildid}-tox +BuildRequires: rpm-build %endif %endif # lttng and babeltrace for rbd-replay-prep @@ -467,6 +547,20 @@ BuildRequires: expat-devel %if 0%{?fedora} || 0%{?rhel} BuildRequires: redhat-rpm-config %endif +%if 0%{with seastar} +%if 0%{?fedora} || 0%{?rhel} +BuildRequires: cryptopp-devel +BuildRequires: numactl-devel +BuildRequires: protobuf-compiler +%endif +%if 0%{?suse_version} +BuildRequires: libcryptopp-devel +BuildRequires: libnuma-devel +%endif +%endif +%if 0%{?rhel} >= 8 +BuildRequires: /usr/bin/pathfix.py +%endif %description Ceph is a massively scalable, open-source, distributed storage system that runs @@ -481,6 +575,7 @@ 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} @@ -496,17 +591,19 @@ Requires: grep Requires: logrotate Requires: parted Requires: psmisc -Requires: python%{_python_buildid}-requests Requires: python%{_python_buildid}-setuptools Requires: util-linux Requires: xfsprogs Requires: which %if 0%{?fedora} || 0%{?rhel} -Requires: gdisk +# 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 -%if 0%{?suse_version} +%endif +%if 0%{?weak_deps} Recommends: chrony -Requires: gptfdisk %endif %description base Base is the package that includes all the files shared amongst ceph servers @@ -523,13 +620,12 @@ Requires: python%{_python_buildid}-rados = %{_epoch_prefix}%{version}-%{release} Requires: python%{_python_buildid}-rbd = %{_epoch_prefix}%{version}-%{release} Requires: python%{_python_buildid}-cephfs = %{_epoch_prefix}%{version}-%{release} Requires: python%{_python_buildid}-rgw = %{_epoch_prefix}%{version}-%{release} +Requires: python%{_python_buildid}-ceph-argparse = %{_epoch_prefix}%{version}-%{release} %if 0%{?fedora} || 0%{?rhel} Requires: python%{_python_buildid}-prettytable -Requires: python%{_python_buildid}-requests %endif %if 0%{?suse_version} Requires: python%{_python_buildid}-PrettyTable -Requires: python%{_python_buildid}-requests %endif %if 0%{with libradosstriper} Requires: libradosstriper1 = %{_epoch_prefix}%{version}-%{release} @@ -558,6 +654,7 @@ Summary: Ceph Monitor Daemon %if 0%{?suse_version} Group: System/Filesystems %endif +Provides: ceph-test:/usr/bin/ceph-monstore-tool Requires: ceph-base = %{_epoch_prefix}%{version}-%{release} %description mon ceph-mon is the cluster monitor daemon for the Ceph distributed file @@ -571,24 +668,32 @@ Summary: Ceph Manager Daemon Group: System/Filesystems %endif Requires: ceph-base = %{_epoch_prefix}%{version}-%{release} +Requires: python%{_python_buildid}-bcrypt Requires: python%{_python_buildid}-pecan +Requires: python%{_python_buildid}-requests Requires: python%{_python_buildid}-six %if 0%{?fedora} || 0%{?rhel} Requires: python%{_python_buildid}-cherrypy -Requires: python%{_python_buildid}-jinja2 -Requires: python%{_python_buildid}-routes Requires: python%{_python_buildid}-werkzeug -Requires: pyOpenSSL%{_python_buildid} -Requires: python%{_python_buildid}-bcrypt %endif %if 0%{?suse_version} Requires: python%{_python_buildid}-CherryPy -Requires: python%{_python_buildid}-Routes -Requires: python%{_python_buildid}-Jinja2 Requires: python%{_python_buildid}-Werkzeug +%endif +%if 0%{?weak_deps} +Recommends: ceph-mgr-dashboard = %{_epoch_prefix}%{version}-%{release} +Recommends: ceph-mgr-diskprediction-local = %{_epoch_prefix}%{version}-%{release} +Recommends: ceph-mgr-diskprediction-cloud = %{_epoch_prefix}%{version}-%{release} +Recommends: ceph-mgr-rook = %{_epoch_prefix}%{version}-%{release} +Recommends: ceph-mgr-k8sevents = %{_epoch_prefix}%{version}-%{release} +Recommends: ceph-mgr-ssh = %{_epoch_prefix}%{version}-%{release} +Recommends: python%{_python_buildid}-influxdb +%endif +%if 0%{?rhel} == 7 +Requires: pyOpenSSL +Requires: python-enum34 +%else Requires: python%{_python_buildid}-pyOpenSSL -Requires: python%{_python_buildid}-bcrypt -Recommends: python%{_python_buildid}-influxdb %endif %description mgr ceph-mgr enables python modules that provide services (such as the REST @@ -596,12 +701,120 @@ module derived from Calamari) and expose CLI hooks. ceph-mgr gathers 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 +%if 0%{?suse_version} +Group: System/Filesystems +%endif +Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release} +Requires: ceph-grafana-dashboards = %{_epoch_prefix}%{version}-%{release} +%if 0%{?fedora} || 0%{?rhel} +Requires: python%{_python_buildid}-cherrypy +Requires: python%{_python_buildid}-jwt +Requires: python%{_python_buildid}-routes +Requires: python%{_python_buildid}-werkzeug +%if 0%{?weak_deps} +Recommends: python%{_python_buildid}-saml +%endif +%endif +%if 0%{?suse_version} +Requires: python%{_python_buildid}-CherryPy +Requires: python%{_python_buildid}-PyJWT +Requires: python%{_python_buildid}-Routes +Requires: python%{_python_buildid}-Werkzeug +Recommends: python%{_python_buildid}-python3-saml +%endif +%if 0%{?rhel} == 7 +Requires: pyOpenSSL +%else +Requires: python%{_python_buildid}-pyOpenSSL +%endif +%description mgr-dashboard +ceph-mgr-dashboard is a manager plugin, providing a web-based application +to monitor and manage many aspects of a Ceph cluster and related components. +See the Dashboard documentation at http://docs.ceph.com/ for details and a +detailed feature overview. + +%package mgr-diskprediction-local +Summary: ceph-mgr diskprediction_local plugin +BuildArch: noarch +%if 0%{?suse_version} +Group: System/Filesystems +%endif +Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release} +%if 0%{?fedora} || 0%{?rhel} > 7 || 0%{?suse_version} +Requires: python%{_python_buildid}-numpy +%if 0%{without python2} +Requires: python3-scipy +%else +Requires: python2-scipy +%endif +%endif +%if 0%{?rhel} == 7 +Requires: numpy +Requires: scipy +%endif +%description mgr-diskprediction-local +ceph-mgr-diskprediction-local is a ceph-mgr plugin that tries to predict +disk failures using local algorithms and machine-learning databases. + +%package mgr-diskprediction-cloud +Summary: ceph-mgr diskprediction_cloud plugin +BuildArch: noarch +%if 0%{?suse_version} +Group: System/Filesystems +%endif +Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release} +%description mgr-diskprediction-cloud +ceph-mgr-diskprediction-cloud is a ceph-mgr plugin that tries to predict +disk failures using services in the Google cloud. + +%package mgr-rook +BuildArch: noarch +Summary: ceph-mgr rook plugin +%if 0%{?suse_version} +Group: System/Filesystems +%endif +Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release} +Requires: python%{_python_buildid}-kubernetes +%description mgr-rook +ceph-mgr-rook is a ceph-mgr plugin for orchestration functions using +a Rook backend. + +%package mgr-k8sevents +BuildArch: noarch +Summary: Ceph Manager plugin to orchestrate ceph-events to kubernetes' events API +%if 0%{?suse_version} +Group: System/Filesystems +%endif +Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release} +Requires: python%{_python_buildid}-kubernetes +%description mgr-k8sevents +ceph-mgr-k8sevents is a ceph-mgr plugin that sends every ceph-events +to kubernetes' events API + +%package mgr-ssh +Summary: ceph-mgr ssh module +BuildArch: noarch +%if 0%{?suse_version} +Group: System/Filesystems +%endif +Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release} +Requires: python%{_python_buildid}-remoto +%description mgr-ssh +ceph-mgr-ssh is a ceph-mgr module for orchestration functions using +direct SSH connections for management operations. + %package fuse Summary: Ceph fuse-based client %if 0%{?suse_version} Group: System/Filesystems %endif Requires: fuse +%if %{with python3} +Requires: python%{python3_pkgversion} +%endif %description fuse FUSE based client for Ceph distributed network file system @@ -620,8 +833,9 @@ Summary: Ceph daemon for mirroring RBD images %if 0%{?suse_version} Group: System/Filesystems %endif -Requires: ceph-common = %{_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. @@ -641,7 +855,7 @@ Summary: Rados REST gateway %if 0%{?suse_version} Group: System/Filesystems %endif -Requires: ceph-common = %{_epoch_prefix}%{version}-%{release} +Requires: ceph-base = %{_epoch_prefix}%{version}-%{release} %if 0%{with selinux} Requires: ceph-selinux = %{_epoch_prefix}%{version}-%{release} %endif @@ -650,6 +864,9 @@ Requires: librgw2 = %{_epoch_prefix}%{version}-%{release} %if 0%{?rhel} || 0%{?fedora} Requires: mailcap %endif +%if 0%{?weak_deps} +Recommends: gawk +%endif %description radosgw RADOS is a distributed object store used by the Ceph distributed storage system. This package provides a REST gateway to the @@ -675,8 +892,15 @@ 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: lvm2 +Requires: sudo +Requires: libstoragemgmt +%if 0%{?weak_deps} +Recommends: nvme-cli +Recommends: smartmontools +%endif %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 @@ -706,7 +930,18 @@ 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 libraries and headers needed to develop programs +This package contains C libraries and headers needed to develop programs +that use RADOS object store. + +%package -n libradospp-devel +Summary: RADOS headers +%if 0%{?suse_version} +Group: Development/Libraries/C and C++ +%endif +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 @@ -740,13 +975,14 @@ Group: Development/Libraries/Python %endif Requires: librgw2 = %{_epoch_prefix}%{version}-%{release} Requires: python-rados = %{_epoch_prefix}%{version}-%{release} +%{?python_provide:%python_provide python-rgw} Obsoletes: python-ceph < %{_epoch_prefix}%{version}-%{release} %description -n python-rgw This package contains Python 2 libraries for interacting with Cephs RADOS gateway. %endif -%if 0%{with python3} +%if %{with python3} %package -n python%{python3_pkgversion}-rgw Summary: Python 3 libraries for the RADOS gateway %if 0%{?suse_version} @@ -754,6 +990,11 @@ Group: Development/Libraries/Python %endif Requires: librgw2 = %{_epoch_prefix}%{version}-%{release} Requires: python%{python3_pkgversion}-rados = %{_epoch_prefix}%{version}-%{release} +%{?python_provide:%python_provide python%{python3_pkgversion}-rgw} +%if 0%{without python2} +Provides: python-rgw = %{_epoch_prefix}%{version}-%{release} +Obsoletes: python-rgw < %{_epoch_prefix}%{version}-%{release} +%endif %description -n python%{python3_pkgversion}-rgw This package contains Python 3 libraries for interacting with Cephs RADOS gateway. @@ -766,13 +1007,14 @@ Summary: Python 2 libraries for the RADOS object store Group: Development/Libraries/Python %endif Requires: librados2 = %{_epoch_prefix}%{version}-%{release} +%{?python_provide:%python_provide python-rados} Obsoletes: python-ceph < %{_epoch_prefix}%{version}-%{release} %description -n python-rados This package contains Python 2 libraries for interacting with Cephs RADOS object store. %endif -%if 0%{with python3} +%if %{with python3} %package -n python%{python3_pkgversion}-rados Summary: Python 3 libraries for the RADOS object store %if 0%{?suse_version} @@ -780,6 +1022,11 @@ Group: Development/Libraries/Python %endif Requires: python%{python3_pkgversion} Requires: librados2 = %{_epoch_prefix}%{version}-%{release} +%{?python_provide:%python_provide python%{python3_pkgversion}-rados} +%if 0%{without python2} +Provides: python-rados = %{_epoch_prefix}%{version}-%{release} +Obsoletes: python-rados < %{_epoch_prefix}%{version}-%{release} +%endif %description -n python%{python3_pkgversion}-rados This package contains Python 3 libraries for interacting with Cephs RADOS object store. @@ -804,6 +1051,7 @@ 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} @@ -837,6 +1085,7 @@ 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} @@ -852,13 +1101,14 @@ Group: Development/Libraries/Python %endif Requires: librbd1 = %{_epoch_prefix}%{version}-%{release} Requires: python-rados = %{_epoch_prefix}%{version}-%{release} +%{?python_provide:%python_provide python-rbd} Obsoletes: python-ceph < %{_epoch_prefix}%{version}-%{release} %description -n python-rbd This package contains Python 2 libraries for interacting with Cephs RADOS block device. %endif -%if 0%{with python3} +%if %{with python3} %package -n python%{python3_pkgversion}-rbd Summary: Python 3 libraries for the RADOS block device %if 0%{?suse_version} @@ -866,6 +1116,12 @@ Group: Development/Libraries/Python %endif Requires: librbd1 = %{_epoch_prefix}%{version}-%{release} Requires: python%{python3_pkgversion}-rados = %{_epoch_prefix}%{version}-%{release} +%{?python_provide:%python_provide python%{python3_pkgversion}-rbd} +Provides: python3-rbd = %{_epoch_prefix}%{version}-%{release} +%if 0%{without python2} +Provides: python-rbd = %{_epoch_prefix}%{version}-%{release} +Obsoletes: python-rbd < %{_epoch_prefix}%{version}-%{release} +%endif %description -n python%{python3_pkgversion}-rbd This package contains Python 3 libraries for interacting with Cephs RADOS block device. @@ -876,7 +1132,7 @@ Summary: Ceph distributed file system client library %if 0%{?suse_version} Group: System/Libraries %endif -Obsoletes: libcephfs1 +Obsoletes: libcephfs1 < %{_epoch_prefix}%{version}-%{release} %if 0%{?rhel} || 0%{?fedora} Obsoletes: ceph-libs < %{_epoch_prefix}%{version}-%{release} Obsoletes: ceph-libcephfs @@ -908,16 +1164,16 @@ Summary: Python 2 libraries for Ceph distributed file system Group: Development/Libraries/Python %endif Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release} -%if 0%{?suse_version} -Recommends: python-rados = %{_epoch_prefix}%{version}-%{release} -%endif +Requires: python-rados = %{_epoch_prefix}%{version}-%{release} +Requires: python-ceph-argparse = %{_epoch_prefix}%{version}-%{release} +%{?python_provide:%python_provide python-cephfs} Obsoletes: python-ceph < %{_epoch_prefix}%{version}-%{release} %description -n python-cephfs This package contains Python 2 libraries for interacting with Cephs distributed file system. %endif -%if 0%{with python3} +%if %{with python3} %package -n python%{python3_pkgversion}-cephfs Summary: Python 3 libraries for Ceph distributed file system %if 0%{?suse_version} @@ -925,17 +1181,37 @@ 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} +%{?python_provide:%python_provide python%{python3_pkgversion}-cephfs} +%if 0%{without python2} +Provides: python-cephfs = %{_epoch_prefix}%{version}-%{release} +Obsoletes: python-cephfs < %{_epoch_prefix}%{version}-%{release} +%endif %description -n python%{python3_pkgversion}-cephfs This package contains Python 3 libraries for interacting with Cephs distributed file system. %endif -%if 0%{with python3} +%if 0%{with python2} +%package -n python-ceph-argparse +Summary: Python 2 utility libraries for Ceph CLI +%if 0%{?suse_version} +Group: Development/Libraries/Python +%endif +%description -n python-ceph-argparse +This package contains types and routines for Python 2 used by the Ceph CLI as +well as the RESTful interface. These have to do with querying the daemons for +command-description information, validating user command input against those +descriptions, and submitting the command to the appropriate daemon. +%endif + +%if %{with python3} %package -n python%{python3_pkgversion}-ceph-argparse Summary: Python 3 utility libraries for Ceph CLI %if 0%{?suse_version} Group: Development/Libraries/Python %endif +%{?python_provide:%python_provide python%{python3_pkgversion}-ceph-argparse} %description -n python%{python3_pkgversion}-ceph-argparse This package contains types and routines for Python 3 used by the Ceph CLI as well as the RESTful interface. These have to do with querying the daemons for @@ -943,6 +1219,18 @@ command-description information, validating user command input against those descriptions, and submitting the command to the appropriate daemon. %endif +%if 0%{with cephfs_shell} +%package -n cephfs-shell +Summary: Interactive shell for Ceph file system +Requires: python%{python3_pkgversion}-cmd2 +Requires: python%{python3_pkgversion}-colorama +Requires: python%{python3_pkgversion}-cephfs +%description -n cephfs-shell +This package contains an interactive tool that allows accessing a Ceph +file system without mounting it by providing a nice pseudo-shell which +works like an FTP client. +%endif + %if 0%{with ceph_test_package} %package -n ceph-test Summary: Ceph benchmarks and test tools @@ -1003,7 +1291,7 @@ Summary: RADOS object class development kit %if 0%{?suse_version} Group: Development/Libraries/C and C++ %endif -Requires: librados2-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. @@ -1046,11 +1334,33 @@ depending on python-ceph should be fixed to depend on python-rados, python-rbd, python-rgw or python-cephfs instead. %endif +%package grafana-dashboards +Summary: The set of Grafana dashboards for monitoring purposes +BuildArch: noarch +%if 0%{?suse_version} +Group: System/Filesystems +%endif +%description grafana-dashboards +This package provides a set of Grafana dashboards for monitoring of +Ceph clusters. The dashboards require a Prometheus server setup +collecting data from Ceph Manager "prometheus" module and Prometheus +project "node_exporter" module. The dashboards are designed to be +integrated with the Ceph Manager Dashboard web UI. + +%if 0%{?suse_version} +%package prometheus-alerts +Summary: Prometheus alerts for a Ceph deplyoment +BuildArch: noarch +Group: System/Monitoring +%description prometheus-alerts +This package provides Ceph’s default alerts for Prometheus. +%endif + ################################################################################# # common ################################################################################# %prep -%autosetup -p1 -n ceph-13.2.2 +%autosetup -p1 -n ceph-14.2.22 mkdir -p src/boost BOOST_VERSION=$(basename "%{SOURCE1}" | sed 's/boost_\(.*\)\.tar\.bz2/\1/') tar xjf "%{SOURCE1}" -C src/boost \ @@ -1086,6 +1396,13 @@ unpack_submodule "%{SOURCE15}" "%(dirname %{SOURCEURL15})" unpack_submodule "%{SOURCE16}" "%(dirname %{SOURCEURL16})" unpack_submodule "%{SOURCE17}" "%(dirname %{SOURCEURL17})" unpack_submodule "%{SOURCE18}" "%(dirname %{SOURCEURL18})" +unpack_submodule "%{SOURCE29}" "%(dirname %{SOURCEURL29})" +unpack_submodule "%{SOURCE30}" "%(dirname %{SOURCEURL30})" +unpack_submodule "%{SOURCE31}" "%(dirname %{SOURCEURL31})" +unpack_submodule "%{SOURCE32}" "%(dirname %{SOURCEURL32})" +unpack_submodule "%{SOURCE33}" "%(dirname %{SOURCEURL33})" +unpack_submodule "%{SOURCE34}" "%(dirname %{SOURCEURL34})" +unpack_submodule "%{SOURCE35}" "%(dirname %{SOURCEURL35})" sed -e "s/@VERSION@/%{version}/g" \ -e "s/@RPM_RELEASE@/%{release}/g" \ @@ -1094,9 +1411,12 @@ sed -e "s/@VERSION@/%{version}/g" \ mv alpine/APKBUILD.in alpine/APKBUILD %build +# LTO can be enabled as soon as the following GCC bug is fixed: +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=48200 +%define _lto_cflags %{nil} %if 0%{?rhel} == 7 -. /opt/rh/devtoolset-7/enable +. /opt/rh/devtoolset-8/enable %endif %if 0%{with cephfs_java} @@ -1111,26 +1431,11 @@ done RPM_OPT_FLAGS="$RPM_OPT_FLAGS --param ggc-min-expand=20 --param ggc-min-heapsize=32768" %endif -%if 0%{?rhel} && ! 0%{?centos} -%bcond_without subman -%endif -%bcond_without nss -%bcond_with cryptopp -%if %{without stx} -%bcond_without debug -%bcond_without man_pages -%endif -%bcond_without radosgw -%if %{without lttng} -%bcond_with lttng -%bcond_with babeltrace -%endif - %stx_check_config - export CPPFLAGS="$java_inc" export CFLAGS="$RPM_OPT_FLAGS" export CXXFLAGS="$RPM_OPT_FLAGS" +export LDFLAGS="$RPM_LD_FLAGS" # Parallel build settings ... CEPH_MFLAGS_JOBS="%{?_smp_mflags}" @@ -1145,7 +1450,7 @@ free -h echo "System limits:" ulimit -a if test -n "$CEPH_SMP_NCPUS" -a "$CEPH_SMP_NCPUS" -gt 1 ; then - mem_per_process=1800 + mem_per_process=2500 max_mem=$(LANG=C free -m | sed -n "s|^Mem: *\([0-9]*\).*$|\1|p") max_jobs="$(($max_mem / $mem_per_process))" test "$CEPH_SMP_NCPUS" -gt "$max_jobs" && CEPH_SMP_NCPUS="$max_jobs" && echo "Warning: Reducing build parallelism to -j$max_jobs because of memory limits" @@ -1158,7 +1463,13 @@ env | sort mkdir build cd build -cmake .. \ +%if 0%{?rhel} == 7 +CMAKE=cmake3 +%else +CMAKE=cmake +%endif + +${CMAKE} .. \ -DCMAKE_INSTALL_PREFIX=%{_prefix} \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_LIBDIR=%{_libdir} \ @@ -1173,15 +1484,13 @@ cmake .. \ -DWITH_MANPAGE=ON \ -DWITH_PYTHON3=OFF \ -DWITH_MGR_DASHBOARD_FRONTEND=OFF \ + -DENABLE_GIT_VERSION=OFF \ %if %{with python2} -DWITH_PYTHON2=ON \ %else -DWITH_PYTHON2=OFF \ -DMGR_PYTHON_VERSION=3 \ %endif -%if 0%{?rhel} && ! 0%{?centos} - -DWITH_SUBMAN=ON \ -%endif %if 0%{without ceph_test_package} -DWITH_TESTS=OFF \ %endif @@ -1207,12 +1516,26 @@ cmake .. \ %else -DWITH_BOOST_CONTEXT=OFF \ %endif +%if 0%{with cephfs_shell} + -DWITH_CEPHFS_SHELL=ON \ +%endif %if 0%{with libradosstriper} -DWITH_LIBRADOSSTRIPER=ON \ %else -DWITH_LIBRADOSSTRIPER=OFF \ %endif - -DBOOST_J=$CEPH_SMP_NCPUS +%if 0%{with amqp_endpoint} + -DWITH_RADOSGW_AMQP_ENDPOINT=ON \ +%else + -DWITH_RADOSGW_AMQP_ENDPOINT=OFF \ +%endif +%if 0%{with kafka_endpoint} + -DWITH_RADOSGW_KAFKA_ENDPOINT=ON \ +%else + -DWITH_RADOSGW_KAFKA_ENDPOINT=OFF \ +%endif + -DBOOST_J=$CEPH_SMP_NCPUS \ + -DWITH_GRAFANA=ON make "$CEPH_MFLAGS_JOBS" @@ -1228,8 +1551,6 @@ ctest "$CEPH_MFLAGS_JOBS" %install pushd build make DESTDIR=%{buildroot} install -# we have dropped sysvinit bits -rm -f %{buildroot}/%{_sysconfdir}/init.d/ceph popd install -m 0644 -D src/etc-rbdmap %{buildroot}%{_sysconfdir}/ceph/rbdmap %if 0%{?fedora} || 0%{?rhel} @@ -1241,10 +1562,10 @@ install -m 0644 -D etc/sysconfig/ceph %{buildroot}%{_fillupdir}/sysconfig.%{name %if %{without stx} install -m 0644 -D systemd/ceph.tmpfiles.d %{buildroot}%{_tmpfilesdir}/ceph-common.conf %endif -mkdir -p %{buildroot}%{_sbindir} %if %{without stx} install -m 0644 -D systemd/50-ceph.preset %{buildroot}%{_libexecdir}/systemd/system-preset/50-ceph.preset %endif +mkdir -p %{buildroot}%{_sbindir} install -m 0644 -D src/logrotate.conf %{buildroot}%{_sysconfdir}/logrotate.d/ceph chmod 0644 %{buildroot}%{_docdir}/ceph/sample.ceph.conf install -m 0644 -D COPYING %{buildroot}%{_docdir}/ceph/COPYING @@ -1252,17 +1573,19 @@ install -m 0644 -D etc/sysctl/90-ceph-osd.conf %{buildroot}%{_sysctldir}/90-ceph # firewall templates and /sbin/mount.ceph symlink %if 0%{?suse_version} -install -m 0644 -D etc/sysconfig/SuSEfirewall2.d/services/ceph-mon %{buildroot}%{_sysconfdir}/sysconfig/SuSEfirewall2.d/services/ceph-mon -install -m 0644 -D etc/sysconfig/SuSEfirewall2.d/services/ceph-osd-mds %{buildroot}%{_sysconfdir}/sysconfig/SuSEfirewall2.d/services/ceph-osd-mds mkdir -p %{buildroot}/sbin ln -sf %{_sbindir}/mount.ceph %{buildroot}/sbin/mount.ceph %endif # udev rules install -m 0644 -D udev/50-rbd.rules %{buildroot}%{_udevrulesdir}/50-rbd.rules -install -m 0640 -D udev/60-ceph-by-parttypeuuid.rules %{buildroot}%{_udevrulesdir}/60-ceph-by-parttypeuuid.rules -%if %{without stx} -install -m 0644 -D udev/95-ceph-osd.rules %{buildroot}%{_udevrulesdir}/95-ceph-osd.rules + +# sudoers.d +install -m 0440 -D sudoers.d/ceph-osd-smartctl %{buildroot}%{_sysconfdir}/sudoers.d/ceph-osd-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 @@ -1274,12 +1597,15 @@ mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/mon mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/osd mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/mds mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/mgr +mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/crash +mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/crash/posted mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/radosgw mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/bootstrap-osd mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/bootstrap-mds mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/bootstrap-rgw mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/bootstrap-mgr mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/bootstrap-rbd +mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/bootstrap-rbd-mirror %if %{with stx} install -d -m 750 %{buildroot}%{_sysconfdir}/services.d/controller @@ -1311,6 +1637,14 @@ install -d -m 750 %{buildroot}/var/log/radosgw %if 0%{?suse_version} # create __pycache__ directories and their contents %py3_compile %{buildroot}%{python3_sitelib} +# prometheus alerts +install -m 644 -D monitoring/prometheus/alerts/ceph_default_alerts.yml %{buildroot}/etc/prometheus/SUSE/default_rules/ceph_default_alerts.yml +# hardlink duplicate files under /usr to save space +%fdupes %{buildroot}%{_prefix} +%endif + +%if 0%{?rhel} == 8 +%py_byte_compile %{__python3} %{buildroot}%{python3_sitelib} %endif %clean @@ -1322,12 +1656,12 @@ rm -rf %{buildroot} %files %files base +%{_bindir}/ceph-crash %{_bindir}/crushtool %{_bindir}/monmaptool %{_bindir}/osdmaptool %{_bindir}/ceph-kvstore-tool %{_bindir}/ceph-run -%{_bindir}/ceph-detect-init %if %{with stx} %{_initrddir}/ceph %{_initrddir}/mgr-restful-plugin @@ -1343,7 +1677,6 @@ rm -rf %{buildroot} %{_libexecdir}/systemd/system-preset/50-ceph.preset %endif %{_sbindir}/ceph-create-keys -%{_sbindir}/ceph-disk %dir %{_libexecdir}/ceph %{_libexecdir}/ceph/ceph_common.sh %dir %{_libdir}/rados-classes @@ -1353,6 +1686,7 @@ rm -rf %{buildroot} %{_libdir}/ceph/erasure-code/libec_*.so* %dir %{_libdir}/ceph/compressor %{_libdir}/ceph/compressor/libceph_*.so* +%{_unitdir}/ceph-crash.service %ifarch x86_64 %dir %{_libdir}/ceph/crypto %{_libdir}/ceph/crypto/libceph_*.so* @@ -1367,8 +1701,6 @@ rm -rf %{buildroot} %endif %if 0%{?suse_version} %{_fillupdir}/sysconfig.* -%config %{_sysconfdir}/sysconfig/SuSEfirewall2.d/services/ceph-mon -%config %{_sysconfdir}/sysconfig/SuSEfirewall2.d/services/ceph-osd-mds %endif %{_unitdir}/ceph.target %if %{with stx} @@ -1376,15 +1708,6 @@ rm -rf %{buildroot} %{_unitdir}/mgr-restful-plugin.service %endif %if 0%{with python2} -%{python_sitelib}/ceph_detect_init* -%{python_sitelib}/ceph_disk* -%else -%if 0%{with python3} -%{python3_sitelib}/ceph_detect_init* -%{python3_sitelib}/ceph_disk* -%endif -%endif -%if 0%{with python2} %dir %{python_sitelib}/ceph_volume %{python_sitelib}/ceph_volume/* %{python_sitelib}/ceph_volume-* @@ -1397,9 +1720,7 @@ rm -rf %{buildroot} %endif %if %{with man_pages} %{_mandir}/man8/ceph-deploy.8* -%{_mandir}/man8/ceph-detect-init.8* %{_mandir}/man8/ceph-create-keys.8* -%{_mandir}/man8/ceph-disk.8* %{_mandir}/man8/ceph-run.8* %{_mandir}/man8/crushtool.8* %{_mandir}/man8/osdmaptool.8* @@ -1407,12 +1728,15 @@ rm -rf %{buildroot} %{_mandir}/man8/ceph-kvstore-tool.8* %endif #set up placeholder directories +%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/crash +%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/crash/posted %attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/tmp %attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/bootstrap-osd %attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/bootstrap-mds %attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/bootstrap-rgw %attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/bootstrap-mgr %attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/bootstrap-rbd +%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/bootstrap-rbd-mirror %if %{without stx} %post base @@ -1420,51 +1744,47 @@ rm -rf %{buildroot} %if 0%{?suse_version} %fillup_only if [ $1 -eq 1 ] ; then -/usr/bin/systemctl preset ceph-disk@\*.service ceph.target >/dev/null 2>&1 || : +/usr/bin/systemctl preset ceph.target ceph-crash.service >/dev/null 2>&1 || : fi %endif %if 0%{?fedora} || 0%{?rhel} -%systemd_post ceph-disk@\*.service ceph.target +%systemd_post ceph.target ceph-crash.service %endif if [ $1 -eq 1 ] ; then -/usr/bin/systemctl start ceph.target >/dev/null 2>&1 || : +/usr/bin/systemctl start ceph.target ceph-crash.service >/dev/null 2>&1 || : fi %preun base %if 0%{?suse_version} -%service_del_preun ceph-disk@\*.service ceph.target +%service_del_preun ceph.target ceph-crash.service %endif %if 0%{?fedora} || 0%{?rhel} -%systemd_preun ceph-disk@\*.service ceph.target +%systemd_preun ceph.target ceph-crash.service %endif %postun base /sbin/ldconfig -test -n "$FIRST_ARG" || FIRST_ARG=$1 %if 0%{?suse_version} DISABLE_RESTART_ON_UPDATE="yes" -%service_del_postun ceph-disk@\*.service ceph.target +%service_del_postun ceph.target %endif %if 0%{?fedora} || 0%{?rhel} -%systemd_postun ceph-disk@\*.service ceph.target +%systemd_postun ceph.target %endif -if [ $FIRST_ARG -ge 1 ] ; then +if [ $1 -ge 1 ] ; then # Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to # "yes". In any case: if units are not running, do not touch them. SYSCONF_CEPH=%{_sysconfdir}/sysconfig/ceph if [ -f $SYSCONF_CEPH -a -r $SYSCONF_CEPH ] ; then source $SYSCONF_CEPH fi - if [ "X$CEPH_AUTO_RESTART_ON_UPGRADE" = "Xyes" ] ; then - /usr/bin/systemctl try-restart ceph-disk@\*.service > /dev/null 2>&1 || : - fi fi %endif %files common %dir %{_docdir}/ceph %doc %{_docdir}/ceph/sample.ceph.conf -%doc %{_docdir}/ceph/COPYING +%license %{_docdir}/ceph/COPYING %{_bindir}/ceph %{_bindir}/ceph-authtool %{_bindir}/ceph-conf @@ -1497,6 +1817,7 @@ fi %{_mandir}/man8/ceph-authtool.8* %{_mandir}/man8/ceph-conf.8* %{_mandir}/man8/ceph-dencoder.8* +%{_mandir}/man8/ceph-diff-sorted.8* %{_mandir}/man8/ceph-rbdnamer.8* %{_mandir}/man8/ceph-syn.8* %{_mandir}/man8/ceph-post-file.8* @@ -1509,6 +1830,7 @@ fi %{_mandir}/man8/rbd-replay.8* %{_mandir}/man8/rbd-replay-many.8* %{_mandir}/man8/rbd-replay-prep.8* +%{_mandir}/man8/rgw-orphan-list.8* %endif %dir %{_datadir}/ceph/ %{_datadir}/ceph/known_hosts_drop.ceph.com @@ -1525,17 +1847,6 @@ fi %else %{_unitdir}/rbdmap.service %endif -%if 0%{with python2} -%{python_sitelib}/ceph_argparse.py* -%{python_sitelib}/ceph_daemon.py* -%else -%if 0%{with python3} -%{python3_sitelib}/ceph_argparse.py -%{python3_sitelib}/__pycache__/ceph_argparse.cpython*.py* -%{python3_sitelib}/ceph_daemon.py -%{python3_sitelib}/__pycache__/ceph_daemon.cpython*.py* -%endif -%endif %dir %{_udevrulesdir} %{_udevrulesdir}/50-rbd.rules %attr(3770,ceph,ceph) %dir %{_localstatedir}/log/ceph/ @@ -1612,7 +1923,6 @@ fi %endif %postun mds -test -n "$FIRST_ARG" || FIRST_ARG=$1 %if 0%{?suse_version} DISABLE_RESTART_ON_UPDATE="yes" %service_del_postun ceph-mds@\*.service ceph-mds.target @@ -1620,7 +1930,7 @@ DISABLE_RESTART_ON_UPDATE="yes" %if 0%{?fedora} || 0%{?rhel} %systemd_postun ceph-mds@\*.service ceph-mds.target %endif -if [ $FIRST_ARG -ge 1 ] ; then +if [ $1 -ge 1 ] ; then # Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to # "yes". In any case: if units are not running, do not touch them. SYSCONF_CEPH=%{_sysconfdir}/sysconfig/ceph @@ -1634,7 +1944,33 @@ fi %files mgr %{_bindir}/ceph-mgr -%{_libdir}/ceph/mgr +%dir %{_datadir}/ceph/mgr +%{_datadir}/ceph/mgr/alerts +%{_datadir}/ceph/mgr/ansible +%{_datadir}/ceph/mgr/balancer +%{_datadir}/ceph/mgr/crash +%{_datadir}/ceph/mgr/deepsea +%{_datadir}/ceph/mgr/devicehealth +%{_datadir}/ceph/mgr/insights +%{_datadir}/ceph/mgr/iostat +%{_datadir}/ceph/mgr/localpool +%{_datadir}/ceph/mgr/mgr_module.* +%{_datadir}/ceph/mgr/mgr_util.* +%{_datadir}/ceph/mgr/orchestrator_cli +%{_datadir}/ceph/mgr/orchestrator.* +%{_datadir}/ceph/mgr/osd_perf_query +%{_datadir}/ceph/mgr/pg_autoscaler +%{_datadir}/ceph/mgr/progress +%{_datadir}/ceph/mgr/prometheus +%{_datadir}/ceph/mgr/rbd_support +%{_datadir}/ceph/mgr/restful +%{_datadir}/ceph/mgr/selftest +%{_datadir}/ceph/mgr/status +%{_datadir}/ceph/mgr/telegraf +%{_datadir}/ceph/mgr/telemetry +%{_datadir}/ceph/mgr/test_orchestrator +%{_datadir}/ceph/mgr/volumes +%{_datadir}/ceph/mgr/zabbix %{_unitdir}/ceph-mgr@.service %{_unitdir}/ceph-mgr.target %attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/mgr @@ -1661,7 +1997,6 @@ fi %endif %postun mgr -test -n "$FIRST_ARG" || FIRST_ARG=$1 %if 0%{?suse_version} DISABLE_RESTART_ON_UPDATE="yes" %service_del_postun ceph-mgr@\*.service ceph-mgr.target @@ -1669,7 +2004,7 @@ DISABLE_RESTART_ON_UPDATE="yes" %if 0%{?fedora} || 0%{?rhel} %systemd_postun ceph-mgr@\*.service ceph-mgr.target %endif -if [ $FIRST_ARG -ge 1 ] ; then +if [ $1 -ge 1 ] ; then # Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to # "yes". In any case: if units are not running, do not touch them. SYSCONF_CEPH=%{_sysconfdir}/sysconfig/ceph @@ -1681,6 +2016,84 @@ if [ $FIRST_ARG -ge 1 ] ; then fi fi +%files mgr-dashboard +%{_datadir}/ceph/mgr/dashboard + +%post mgr-dashboard +if [ $1 -eq 1 ] ; then + /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || : +fi + +%postun mgr-dashboard +if [ $1 -eq 1 ] ; then + /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || : +fi + +%files mgr-diskprediction-local +%{_datadir}/ceph/mgr/diskprediction_local + +%post mgr-diskprediction-local +if [ $1 -eq 1 ] ; then + /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || : +fi + +%postun mgr-diskprediction-local +if [ $1 -eq 1 ] ; then + /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || : +fi + +%files mgr-diskprediction-cloud +%{_datadir}/ceph/mgr/diskprediction_cloud + +%post mgr-diskprediction-cloud +if [ $1 -eq 1 ] ; then + /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || : +fi + +%postun mgr-diskprediction-cloud +if [ $1 -eq 1 ] ; then + /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || : +fi + +%files mgr-rook +%{_datadir}/ceph/mgr/rook + +%post mgr-rook +if [ $1 -eq 1 ] ; then + /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || : +fi + +%postun mgr-rook +if [ $1 -eq 1 ] ; then + /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || : +fi + +%files mgr-k8sevents +%{_datadir}/ceph/mgr/k8sevents + +%post mgr-k8sevents +if [ $1 -eq 1 ] ; then + /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || : +fi + +%postun mgr-k8sevents +if [ $1 -eq 1 ] ; then + /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || : +fi + +%files mgr-ssh +%{_datadir}/ceph/mgr/ssh + +%post mgr-ssh +if [ $1 -eq 1 ] ; then + /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || : +fi + +%postun mgr-ssh +if [ $1 -eq 1 ] ; then + /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || : +fi + %files mon %{_bindir}/ceph-mon %{_bindir}/ceph-monstore-tool @@ -1705,10 +2118,10 @@ fi %endif %if 0%{?fedora} || 0%{?rhel} %systemd_post ceph-mon@\*.service ceph-mon.target +%endif if [ $1 -eq 1 ] ; then /usr/bin/systemctl start ceph-mon.target >/dev/null 2>&1 || : fi -%endif %preun mon %if 0%{?suse_version} @@ -1719,7 +2132,6 @@ fi %endif %postun mon -test -n "$FIRST_ARG" || FIRST_ARG=$1 %if 0%{?suse_version} DISABLE_RESTART_ON_UPDATE="yes" %service_del_postun ceph-mon@\*.service ceph-mon.target @@ -1727,7 +2139,7 @@ DISABLE_RESTART_ON_UPDATE="yes" %if 0%{?fedora} || 0%{?rhel} %systemd_postun ceph-mon@\*.service ceph-mon.target %endif -if [ $FIRST_ARG -ge 1 ] ; then +if [ $1 -ge 1 ] ; then # Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to # "yes". In any case: if units are not running, do not touch them. SYSCONF_CEPH=%{_sysconfdir}/sysconfig/ceph @@ -1749,9 +2161,7 @@ fi %{_sbindir}/mount.fuse.ceph %{_unitdir}/ceph-fuse@.service %{_unitdir}/ceph-fuse.target -%endif -%if %{with fuse} %files -n rbd-fuse %{_bindir}/rbd-fuse %if %{with man_pages} @@ -1769,6 +2179,7 @@ fi %{_unitdir}/ceph-rbd-mirror.target %endif + %if %{without stx} %post -n rbd-mirror %if 0%{?suse_version} @@ -1792,7 +2203,6 @@ fi %endif %postun -n rbd-mirror -test -n "$FIRST_ARG" || FIRST_ARG=$1 %if 0%{?suse_version} DISABLE_RESTART_ON_UPDATE="yes" %service_del_postun ceph-rbd-mirror@\*.service ceph-rbd-mirror.target @@ -1800,7 +2210,7 @@ DISABLE_RESTART_ON_UPDATE="yes" %if 0%{?fedora} || 0%{?rhel} %systemd_postun ceph-rbd-mirror@\*.service ceph-rbd-mirror.target %endif -if [ $FIRST_ARG -ge 1 ] ; then +if [ $1 -ge 1 ] ; then # Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to # "yes". In any case: if units are not running, do not touch them. SYSCONF_CEPH=%{_sysconfdir}/sysconfig/ceph @@ -1820,10 +2230,14 @@ fi %endif %files radosgw +%{_bindir}/ceph-diff-sorted %{_bindir}/radosgw %{_bindir}/radosgw-token %{_bindir}/radosgw-es %{_bindir}/radosgw-object-expirer +%{_bindir}/rgw-gap-list +%{_bindir}/rgw-gap-list-comparator +%{_bindir}/rgw-orphan-list %if %{with man_pages} %{_mandir}/man8/radosgw.8* %endif @@ -1859,7 +2273,6 @@ fi %endif %postun radosgw -test -n "$FIRST_ARG" || FIRST_ARG=$1 %if 0%{?suse_version} DISABLE_RESTART_ON_UPDATE="yes" %service_del_postun ceph-radosgw@\*.service ceph-radosgw.target @@ -1867,7 +2280,7 @@ DISABLE_RESTART_ON_UPDATE="yes" %if 0%{?fedora} || 0%{?rhel} %systemd_postun ceph-radosgw@\*.service ceph-radosgw.target %endif -if [ $FIRST_ARG -ge 1 ] ; then +if [ $1 -ge 1 ] ; then # Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to # "yes". In any case: if units are not running, do not touch them. SYSCONF_CEPH=%{_sysconfdir}/sysconfig/ceph @@ -1892,11 +2305,6 @@ fi %{_libexecdir}/ceph/ceph-osd-prestart.sh %{_sbindir}/ceph-volume %{_sbindir}/ceph-volume-systemd -%dir %{_udevrulesdir} -%{_udevrulesdir}/60-ceph-by-parttypeuuid.rules -%if %{without stx} -%{_udevrulesdir}/95-ceph-osd.rules -%endif %if %{with man_pages} %{_mandir}/man8/ceph-clsinfo.8* %{_mandir}/man8/ceph-osd.8* @@ -1910,11 +2318,11 @@ fi %if %{without stx} %{_unitdir}/ceph-osd@.service %{_unitdir}/ceph-osd.target -%{_unitdir}/ceph-disk@.service %{_unitdir}/ceph-volume@.service %endif %attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/osd %config(noreplace) %{_sysctldir}/90-ceph-osd.conf +%{_sysconfdir}/sudoers.d/ceph-osd-smartctl %if %{without stx} %post osd @@ -1934,8 +2342,6 @@ fi %else /usr/lib/systemd/systemd-sysctl %{_sysctldir}/90-ceph-osd.conf > /dev/null 2>&1 || : %endif -# work around https://tracker.ceph.com/issues/24903 -chown -f -h ceph:ceph /var/lib/ceph/osd/*/block* 2>&1 > /dev/null || : %preun osd %if 0%{?suse_version} @@ -1946,7 +2352,6 @@ chown -f -h ceph:ceph /var/lib/ceph/osd/*/block* 2>&1 > /dev/null || : %endif %postun osd -test -n "$FIRST_ARG" || FIRST_ARG=$1 %if 0%{?suse_version} DISABLE_RESTART_ON_UPDATE="yes" %service_del_postun ceph-osd@\*.service ceph-volume@\*.service ceph-osd.target @@ -1954,7 +2359,7 @@ DISABLE_RESTART_ON_UPDATE="yes" %if 0%{?fedora} || 0%{?rhel} %systemd_postun ceph-osd@\*.service ceph-volume@\*.service ceph-osd.target %endif -if [ $FIRST_ARG -ge 1 ] ; then +if [ $1 -ge 1 ] ; then # Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to # "yes". In any case: if units are not running, do not touch them. SYSCONF_CEPH=%{_sysconfdir}/sysconfig/ceph @@ -1980,10 +2385,11 @@ fi %files -n librados2 %{_libdir}/librados.so.* %dir %{_libdir}/ceph -%{_libdir}/ceph/libceph-common.so* +%{_libdir}/ceph/libceph-common.so.* %if %{with lttng} %{_libdir}/librados_tp.so.* %endif +%dir %{_sysconfdir}/ceph %post -n librados2 -p /sbin/ldconfig @@ -1992,15 +2398,7 @@ fi %files -n librados-devel %dir %{_includedir}/rados %{_includedir}/rados/librados.h -%{_includedir}/rados/librados.hpp -%{_includedir}/rados/buffer.h -%{_includedir}/rados/buffer_fwd.h -%{_includedir}/rados/inline_memory.h -%{_includedir}/rados/page.h -%{_includedir}/rados/crc32c.h %{_includedir}/rados/rados_types.h -%{_includedir}/rados/rados_types.hpp -%{_includedir}/rados/memory.h %{_libdir}/librados.so %if %{with lttng} %{_libdir}/librados_tp.so @@ -2010,6 +2408,17 @@ fi %{_mandir}/man8/librados-config.8* %endif +%files -n libradospp-devel +%dir %{_includedir}/rados +%{_includedir}/rados/buffer.h +%{_includedir}/rados/buffer_fwd.h +%{_includedir}/rados/crc32c.h +%{_includedir}/rados/inline_memory.h +%{_includedir}/rados/librados.hpp +%{_includedir}/rados/librados_fwd.hpp +%{_includedir}/rados/page.h +%{_includedir}/rados/rados_types.hpp + %if 0%{with python2} %files -n python-rados %{python_sitearch}/rados.so @@ -2059,9 +2468,10 @@ fi %files -n librgw2 %{_libdir}/librgw.so.* +%{_libdir}/librgw_admin_user.so.* %if %{with lttng} -%{_libdir}/librgw_op_tp.so* -%{_libdir}/librgw_rados_tp.so* +%{_libdir}/librgw_op_tp.so.* +%{_libdir}/librgw_rados_tp.so.* %endif %post -n librgw2 -p /sbin/ldconfig @@ -2071,8 +2481,14 @@ fi %files -n librgw-devel %dir %{_includedir}/rados %{_includedir}/rados/librgw.h +%{_includedir}/rados/librgw_admin_user.h %{_includedir}/rados/rgw_file.h %{_libdir}/librgw.so +%{_libdir}/librgw_admin_user.so +%if %{with lttng} +%{_libdir}/librgw_op_tp.so +%{_libdir}/librgw_rados_tp.so +%endif %if 0%{with python2} %files -n python-rgw @@ -2101,6 +2517,7 @@ fi %if %{with cephfs} %files -n libcephfs2 %{_libdir}/libcephfs.so.* +%dir %{_sysconfdir}/ceph %post -n libcephfs2 -p /sbin/ldconfig @@ -2111,7 +2528,7 @@ fi %files -n libcephfs-devel %dir %{_includedir}/cephfs %{_includedir}/cephfs/libcephfs.h -%{_includedir}/cephfs/ceph_statx.h +%{_includedir}/cephfs/ceph_ll_client.h %{_libdir}/libcephfs.so %endif @@ -2132,6 +2549,12 @@ fi %{python3_sitelib}/__pycache__/ceph_volume_client.cpython*.py* %endif +%if 0%{with python2} +%files -n python-ceph-argparse +%{python_sitelib}/ceph_argparse.py* +%{python_sitelib}/ceph_daemon.py* +%endif + %if 0%{with python3} %files -n python%{python3_pkgversion}-ceph-argparse %{python3_sitelib}/ceph_argparse.py @@ -2140,6 +2563,12 @@ fi %{python3_sitelib}/__pycache__/ceph_daemon.cpython*.py* %endif +%if 0%{with cephfs_shell} +%files -n cephfs-shell +%{python3_sitelib}/cephfs_shell-*.egg-info +%{_bindir}/cephfs-shell +%endif + %if 0%{with ceph_test_package} %if %{with debug} %files -n ceph-test @@ -2164,6 +2593,7 @@ fi %{_bindir}/ceph_test_* %{_bindir}/ceph-coverage %{_bindir}/ceph-debugpack +%{_bindir}/cephdeduptool %if %{with man_pages} %{_mandir}/man8/ceph-debugpack.8* %endif @@ -2176,6 +2606,7 @@ fi %defattr(-,root,root,-) %{_bindir}/ceph-coverage %{_bindir}/ceph-debugpack +%{_bindir}/cephdeduptool %{_libdir}/ceph/ceph-monstore-update-crush.sh %endif %endif @@ -2238,7 +2669,7 @@ if test $STATUS -eq 0; then /usr/bin/systemctl stop ceph.target > /dev/null 2>&1 fi -# Relabel the files +# Relabel the files fix for first package install # Use ceph-disk fix for first package install and fixfiles otherwise if [ "$1" = "1" ]; then /usr/sbin/ceph-disk fix --selinux @@ -2302,5 +2733,24 @@ exit 0 # actually build this meta package. %endif +%files grafana-dashboards +%if 0%{?suse_version} +%attr(0755,root,root) %dir %{_sysconfdir}/grafana +%attr(0755,root,root) %dir %{_sysconfdir}/grafana/dashboards +%attr(0755,root,root) %dir %{_sysconfdir}/grafana/dashboards/ceph-dashboard +%else +%attr(0755,root,root) %dir %{_sysconfdir}/grafana/dashboards/ceph-dashboard +%endif +%config %{_sysconfdir}/grafana/dashboards/ceph-dashboard/* +%doc monitoring/grafana/dashboards/README +%doc monitoring/grafana/README.md + +%if 0%{?suse_version} +%files prometheus-alerts +%dir /etc/prometheus/SUSE/ +%dir /etc/prometheus/SUSE/default_rules/ +%config /etc/prometheus/SUSE/default_rules/ceph_default_alerts.yml +%endif + %changelog