1 # vim: set noexpandtab ts=8 sw=8 :
3 # spec file for package ceph
5 # Copyright (C) 2004-2017 The Ceph Project Developers. See COPYING file
6 # at the top-level directory of this distribution and at
7 # https://github.com/ceph/ceph/blob/master/COPYING
9 # All modifications and additions to the file contributed by third parties
10 # remain the property of their copyright owners, unless otherwise agreed
13 # This file is under the GNU Lesser General Public License, version 2.1
15 # Please submit bugfixes or comments via http://tracker.ceph.com/
18 %bcond_with make_check
22 %bcond_without tcmalloc
24 %if 0%{?fedora} || 0%{?rhel}
25 %bcond_without selinux
26 %bcond_without ceph_test_package
27 %bcond_without cephfs_java
29 %bcond_without libradosstriper
30 %global _remote_tarball_prefix https://download.ceph.com/tarballs/
34 %bcond_with ceph_test_package
35 %bcond_with cephfs_java
36 #Compat macro for new _fillupdir macro introduced in Nov 2017
37 %if ! %{defined _fillupdir}
38 %global _fillupdir /var/adm/fillup-templates
42 %bcond_without libradosstriper
44 %bcond_with libradosstriper
45 %ifarch x86_64 aarch64
53 %if 0%{?fedora} || 0%{?suse_version} >= 1500
54 # distros where py2 is _optional_
57 # distros where py2 is _mandatory_
58 %bcond_without python2
60 %if 0%{?fedora} || 0%{?suse_version} >= 1500
61 # distros that ship cmd2 and/or colorama
62 %bcond_without cephfs_shell
64 # distros that do _not_ ship cmd2/colorama
65 %bcond_with cephfs_shell
67 %if 0%{without python2}
68 %global _defined_if_python2_absent 1
72 # get selinux policy version
73 %{!?_selinux_policy_version: %global _selinux_policy_version 0.0.0}
76 %{!?_udevrulesdir: %global _udevrulesdir /lib/udev/rules.d}
77 %{!?tmpfiles_create: %global tmpfiles_create systemd-tmpfiles --create}
78 %{!?python3_pkgversion: %global python3_pkgversion 3}
79 # define _python_buildid macro which will expand to the empty string when
80 # building with python2
81 %global _python_buildid %{?_defined_if_python2_absent:%{python3_pkgversion}}
83 # unify libexec for all targets
84 %global _libexecdir %{_exec_prefix}/lib
86 # disable dwz which compresses the debuginfo
87 %global _find_debuginfo_dwz_opts %{nil}
89 #################################################################################
90 # main package definition
91 #################################################################################
94 Release: @RPM_RELEASE@%{?dist}
95 %if 0%{?fedora} || 0%{?rhel}
99 # define _epoch_prefix macro which will expand to the empty string if epoch is
101 %global _epoch_prefix %{?epoch:%{epoch}:}
103 Summary: User space components of the Ceph file system
104 License: LGPL-2.1 and CC-BY-SA-3.0 and GPL-2.0 and BSL-1.0 and BSD-3-Clause and MIT
105 %if 0%{?suse_version}
106 Group: System/Filesystems
108 URL: http://ceph.com/
109 Source0: %{?_remote_tarball_prefix}@TARBALL_BASENAME@.tar.bz2
110 %if 0%{?suse_version}
111 # _insert_obs_source_lines_here
113 ExclusiveArch: x86_64 aarch64 ppc64 ppc64le
115 ExclusiveArch: x86_64 aarch64 ppc64le s390x
118 #################################################################################
119 # dependencies that apply across all distro families
120 #################################################################################
121 Requires: ceph-osd = %{_epoch_prefix}%{version}-%{release}
122 Requires: ceph-mds = %{_epoch_prefix}%{version}-%{release}
123 Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release}
124 Requires: ceph-mon = %{_epoch_prefix}%{version}-%{release}
125 Requires(post): binutils
126 %if 0%{with cephfs_java}
127 BuildRequires: java-devel
128 BuildRequires: sharutils
131 BuildRequires: checkpolicy
132 BuildRequires: selinux-policy-devel
137 BuildRequires: cmake3 > 3.5
139 BuildRequires: cmake > 3.5
141 BuildRequires: cryptsetup
142 BuildRequires: fuse-devel
144 # devtoolset offers newer make and valgrind-devel, but the old ones are good
146 BuildRequires: devtoolset-7-gcc-c++ >= 7.3.1
148 BuildRequires: gcc-c++
151 %if 0%{with tcmalloc}
152 %if 0%{?fedora} || 0%{?rhel}
153 BuildRequires: gperftools-devel >= 2.6.1
155 %if 0%{?suse_version}
156 BuildRequires: gperftools-devel >= 2.4
160 BuildRequires: leveldb-devel > 1.2
161 BuildRequires: libaio-devel
162 BuildRequires: libblkid-devel >= 2.17
163 BuildRequires: libcurl-devel
164 BuildRequires: libudev-devel
165 BuildRequires: liboath-devel
166 BuildRequires: libtool
167 BuildRequires: libxml2-devel
168 BuildRequires: libuuid-devel
170 BuildRequires: parted
172 BuildRequires: pkgconfig
173 BuildRequires: procps
174 BuildRequires: python%{_python_buildid}
175 BuildRequires: python%{_python_buildid}-devel
176 BuildRequires: snappy-devel
179 BuildRequires: util-linux
180 BuildRequires: valgrind-devel
182 BuildRequires: xfsprogs
183 BuildRequires: xfsprogs-devel
184 BuildRequires: xmlstarlet
186 %if 0%{with make_check}
187 BuildRequires: python%{_python_buildid}-coverage
188 BuildRequires: python%{_python_buildid}-nose
189 BuildRequires: python%{_python_buildid}-pecan
190 BuildRequires: python%{_python_buildid}-requests
191 BuildRequires: python%{_python_buildid}-six
192 BuildRequires: python%{_python_buildid}-tox
193 BuildRequires: python%{_python_buildid}-virtualenv
197 BuildRequires: c-ares-devel
198 BuildRequires: gnutls-devel
199 BuildRequires: hwloc-devel
200 BuildRequires: libpciaccess-devel
201 BuildRequires: lksctp-tools-devel
202 BuildRequires: protobuf-devel
204 BuildRequires: systemtap-sdt-devel
205 BuildRequires: yaml-cpp-devel
207 #################################################################################
208 # distro-conditional dependencies
209 #################################################################################
210 %if 0%{?suse_version}
211 BuildRequires: pkgconfig(systemd)
212 BuildRequires: systemd-rpm-macros
213 BuildRequires: systemd
215 PreReq: %fillup_prereq
216 BuildRequires: net-tools
217 BuildRequires: libbz2-devel
218 BuildRequires: btrfsprogs
219 BuildRequires: mozilla-nss-devel
220 BuildRequires: keyutils-devel
221 BuildRequires: libopenssl-devel
222 BuildRequires: lsb-release
223 BuildRequires: openldap2-devel
224 BuildRequires: cunit-devel
225 BuildRequires: python%{_python_buildid}-base
226 BuildRequires: python%{_python_buildid}-Cython
227 BuildRequires: python%{_python_buildid}-PrettyTable
228 BuildRequires: python%{_python_buildid}-Sphinx
229 BuildRequires: rdma-core-devel
230 BuildRequires: liblz4-devel >= 1.7
232 %if 0%{?fedora} || 0%{?rhel}
234 BuildRequires: boost-random
235 BuildRequires: btrfs-progs
236 BuildRequires: nss-devel
237 BuildRequires: keyutils-libs-devel
238 BuildRequires: libibverbs-devel
239 BuildRequires: librdmacm-devel
240 BuildRequires: openldap-devel
241 BuildRequires: openssl-devel
242 BuildRequires: CUnit-devel
243 BuildRequires: redhat-lsb-core
244 BuildRequires: Cython
245 BuildRequires: python%{_python_buildid}-prettytable
246 BuildRequires: python%{_python_buildid}-sphinx
247 BuildRequires: lz4-devel >= 1.7
249 # python34-... for RHEL, python3-... for all other supported distros
251 BuildRequires: python34-devel
252 BuildRequires: python34-setuptools
253 BuildRequires: python34-Cython
255 BuildRequires: python3-devel
256 BuildRequires: python3-setuptools
257 BuildRequires: python3-Cython
259 # distro-conditional make check dependencies
260 %if 0%{with make_check}
261 %if 0%{?fedora} || 0%{?rhel}
262 BuildRequires: python%{_python_buildid}-cherrypy
263 BuildRequires: python%{_python_buildid}-jwt
264 BuildRequires: python%{_python_buildid}-routes
265 BuildRequires: python%{_python_buildid}-werkzeug
266 BuildRequires: python%{_python_buildid}-bcrypt
268 %if 0%{?suse_version}
269 BuildRequires: python%{_python_buildid}-CherryPy
270 BuildRequires: python%{_python_buildid}-PyJWT
271 BuildRequires: python%{_python_buildid}-Routes
272 BuildRequires: python%{_python_buildid}-Werkzeug
273 BuildRequires: python%{_python_buildid}-numpy-devel
274 BuildRequires: python%{_python_buildid}-bcrypt
277 # lttng and babeltrace for rbd-replay-prep
279 %if 0%{?fedora} || 0%{?rhel}
280 BuildRequires: lttng-ust-devel
281 BuildRequires: libbabeltrace-devel
283 %if 0%{?suse_version}
284 BuildRequires: lttng-ust-devel
285 BuildRequires: babeltrace-devel
288 %if 0%{?suse_version}
289 BuildRequires: libexpat-devel
291 %if 0%{?rhel} || 0%{?fedora}
292 BuildRequires: expat-devel
295 %if 0%{?fedora} || 0%{?rhel}
296 BuildRequires: redhat-rpm-config
299 %if 0%{?fedora} || 0%{?rhel}
300 BuildRequires: cryptopp-devel
301 BuildRequires: numactl-devel
302 BuildRequires: protobuf-compiler
304 %if 0%{?suse_version}
305 BuildRequires: libcryptopp-devel
306 BuildRequires: libnuma-devel
311 Ceph is a massively scalable, open-source, distributed storage system that runs
312 on commodity hardware and delivers object, block and file system storage.
315 #################################################################################
317 #################################################################################
319 Summary: Ceph Base Package
320 %if 0%{?suse_version}
321 Group: System/Filesystems
323 Provides: ceph-test:/usr/bin/ceph-kvstore-tool
324 Requires: ceph-common = %{_epoch_prefix}%{version}-%{release}
325 Requires: librbd1 = %{_epoch_prefix}%{version}-%{release}
326 Requires: librados3 = %{_epoch_prefix}%{version}-%{release}
327 Requires: libradospp1 = %{_epoch_prefix}%{version}-%{release}
328 Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release}
329 Requires: librgw2 = %{_epoch_prefix}%{version}-%{release}
331 Requires: ceph-selinux = %{_epoch_prefix}%{version}-%{release}
340 Requires: python%{_python_buildid}-requests
341 Requires: python%{_python_buildid}-setuptools
345 %if 0%{?fedora} || 0%{?rhel}
346 # The following is necessary due to tracker 36508 and can be removed once the
347 # associated upstream bugs are resolved.
348 %if 0%{with tcmalloc}
349 Requires: gperftools-libs >= 2.6.1
352 %if 0%{?suse_version}
356 Base is the package that includes all the files shared amongst ceph servers
358 %package -n ceph-common
360 %if 0%{?suse_version}
361 Group: System/Filesystems
363 Requires: librbd1 = %{_epoch_prefix}%{version}-%{release}
364 Requires: librados3 = %{_epoch_prefix}%{version}-%{release}
365 Requires: libradospp1 = %{_epoch_prefix}%{version}-%{release}
366 Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release}
367 Requires: python%{_python_buildid}-rados = %{_epoch_prefix}%{version}-%{release}
368 Requires: python%{_python_buildid}-rbd = %{_epoch_prefix}%{version}-%{release}
369 Requires: python%{_python_buildid}-cephfs = %{_epoch_prefix}%{version}-%{release}
370 Requires: python%{_python_buildid}-rgw = %{_epoch_prefix}%{version}-%{release}
371 Requires: python%{_python_buildid}-ceph-argparse = %{_epoch_prefix}%{version}-%{release}
372 %if 0%{?fedora} || 0%{?rhel}
373 Requires: python%{_python_buildid}-prettytable
374 Requires: python%{_python_buildid}-requests
376 %if 0%{?suse_version}
377 Requires: python%{_python_buildid}-PrettyTable
378 Requires: python%{_python_buildid}-requests
380 %if 0%{with libradosstriper}
381 Requires: libradosstriper1 = %{_epoch_prefix}%{version}-%{release}
384 %if 0%{?suse_version}
385 Requires(pre): pwdutils
387 %description -n ceph-common
388 Common utilities to mount and interact with a ceph storage cluster.
389 Comprised of files that are common to Ceph clients and servers.
392 Summary: Ceph Metadata Server Daemon
393 %if 0%{?suse_version}
394 Group: System/Filesystems
396 Requires: ceph-base = %{_epoch_prefix}%{version}-%{release}
398 ceph-mds is the metadata server daemon for the Ceph distributed file system.
399 One or more instances of ceph-mds collectively manage the file system
400 namespace, coordinating access to the shared OSD cluster.
403 Summary: Ceph Monitor Daemon
404 %if 0%{?suse_version}
405 Group: System/Filesystems
407 Provides: ceph-test:/usr/bin/ceph-monstore-tool
408 Requires: ceph-base = %{_epoch_prefix}%{version}-%{release}
410 ceph-mon is the cluster monitor daemon for the Ceph distributed file
411 system. One or more instances of ceph-mon form a Paxos part-time
412 parliament cluster that provides extremely reliable and durable storage
413 of cluster membership, configuration, and state.
416 Summary: Ceph Manager Daemon
417 %if 0%{?suse_version}
418 Group: System/Filesystems
420 Requires: ceph-base = %{_epoch_prefix}%{version}-%{release}
421 Requires: python%{_python_buildid}-pecan
422 Requires: python%{_python_buildid}-six
423 %if 0%{?fedora} || 0%{?rhel}
424 Requires: python%{_python_buildid}-cherrypy
425 Requires: python%{_python_buildid}-jwt
426 Requires: python%{_python_buildid}-jinja2
427 Requires: python%{_python_buildid}-routes
428 Requires: python%{_python_buildid}-werkzeug
429 Requires: pyOpenSSL%{_python_buildid}
430 Requires: python%{_python_buildid}-bcrypt
432 %if 0%{?suse_version}
433 Requires: python%{_python_buildid}-CherryPy
434 Requires: python%{_python_buildid}-PyJWT
435 Requires: python%{_python_buildid}-Routes
436 Requires: python%{_python_buildid}-Jinja2
437 Requires: python%{_python_buildid}-Werkzeug
438 Requires: python%{_python_buildid}-pyOpenSSL
439 Requires: python%{_python_buildid}-bcrypt
440 Recommends: python%{_python_buildid}-influxdb
443 ceph-mgr enables python modules that provide services (such as the REST
444 module derived from Calamari) and expose CLI hooks. ceph-mgr gathers
445 the cluster maps, the daemon metadata, and performance counters, and
446 exposes all these to the python modules.
449 Summary: Ceph fuse-based client
450 %if 0%{?suse_version}
451 Group: System/Filesystems
455 FUSE based client for Ceph distributed network file system
458 Summary: Ceph fuse-based client
459 %if 0%{?suse_version}
460 Group: System/Filesystems
462 Requires: librados3 = %{_epoch_prefix}%{version}-%{release}
463 Requires: librbd1 = %{_epoch_prefix}%{version}-%{release}
464 %description -n rbd-fuse
465 FUSE based client to map Ceph rbd images to files
467 %package -n rbd-mirror
468 Summary: Ceph daemon for mirroring RBD images
469 %if 0%{?suse_version}
470 Group: System/Filesystems
472 Requires: ceph-common = %{_epoch_prefix}%{version}-%{release}
473 Requires: libradospp1 = %{_epoch_prefix}%{version}-%{release}
474 %description -n rbd-mirror
475 Daemon for mirroring RBD images between Ceph clusters, streaming
476 changes asynchronously.
479 Summary: Ceph RBD client base on NBD
480 %if 0%{?suse_version}
481 Group: System/Filesystems
483 Requires: libradospp1 = %{_epoch_prefix}%{version}-%{release}
484 Requires: librbd1 = %{_epoch_prefix}%{version}-%{release}
485 %description -n rbd-nbd
486 NBD based client to map Ceph rbd images to local device
489 Summary: Rados REST gateway
490 %if 0%{?suse_version}
491 Group: System/Filesystems
493 Requires: ceph-common = %{_epoch_prefix}%{version}-%{release}
495 Requires: ceph-selinux = %{_epoch_prefix}%{version}-%{release}
497 Requires: librados3 = %{_epoch_prefix}%{version}-%{release}
498 Requires: libradospp1 = %{_epoch_prefix}%{version}-%{release}
499 Requires: librgw2 = %{_epoch_prefix}%{version}-%{release}
500 %if 0%{?rhel} || 0%{?fedora}
504 RADOS is a distributed object store used by the Ceph distributed
505 storage system. This package provides a REST gateway to the
506 object store that aims to implement a superset of Amazon's S3
507 service as well as the OpenStack Object Storage ("Swift") API.
510 %package resource-agents
511 Summary: OCF-compliant resource agents for Ceph daemons
512 %if 0%{?suse_version}
513 Group: System/Filesystems
515 Requires: ceph-base = %{_epoch_prefix}%{version}
516 Requires: resource-agents
517 %description resource-agents
518 Resource agents for monitoring and managing Ceph daemons
519 under Open Cluster Framework (OCF) compliant resource
520 managers such as Pacemaker.
524 Summary: Ceph Object Storage Daemon
525 %if 0%{?suse_version}
526 Group: System/Filesystems
528 Provides: ceph-test:/usr/bin/ceph-osdomap-tool
529 Requires: ceph-base = %{_epoch_prefix}%{version}-%{release}
533 ceph-osd is the object storage daemon for the Ceph distributed file
534 system. It is responsible for storing objects on a local file system
535 and providing access to them over the network.
537 %package -n librados3
538 Summary: RADOS distributed object store client library
539 %if 0%{?suse_version}
540 Group: System/Libraries
542 %if 0%{?rhel} || 0%{?fedora}
543 Obsoletes: ceph-libs < %{_epoch_prefix}%{version}-%{release}
545 %description -n librados3
546 RADOS is a reliable, autonomic distributed object storage cluster
547 developed as part of the Ceph distributed storage system. This is a
548 shared library allowing applications to access the distributed object
549 store using a simple file-like interface.
551 %package -n librados-devel
552 Summary: RADOS headers
553 %if 0%{?suse_version}
554 Group: Development/Libraries/C and C++
556 Requires: librados3 = %{_epoch_prefix}%{version}-%{release}
557 Obsoletes: ceph-devel < %{_epoch_prefix}%{version}-%{release}
558 Provides: librados3-devel = %{_epoch_prefix}%{version}-%{release}
559 Obsoletes: librados3-devel < %{_epoch_prefix}%{version}-%{release}
560 %description -n librados-devel
561 This package contains C libraries and headers needed to develop programs
562 that use RADOS object store.
564 %package -n libradospp1
565 Summary: RADOS distributed object store client C++ library
566 %if 0%{?suse_version}
567 Group: System/Libraries
569 %description -n libradospp1
570 RADOS is a reliable, autonomic distributed object storage cluster
571 developed as part of the Ceph distributed storage system. This is a
572 shared library allowing C++ applications to access the distributed object
573 store using a simple file-like interface.
575 %package -n libradospp-devel
576 Summary: RADOS headers
577 %if 0%{?suse_version}
578 Group: Development/Libraries/C and C++
580 Requires: libradospp1 = %{_epoch_prefix}%{version}-%{release}
581 Requires: librados-devel = %{_epoch_prefix}%{version}-%{release}
582 %description -n libradospp-devel
583 This package contains C++ libraries and headers needed to develop programs
584 that use RADOS object store.
587 Summary: RADOS gateway client library
588 %if 0%{?suse_version}
589 Group: System/Libraries
591 Requires: librados3 = %{_epoch_prefix}%{version}-%{release}
592 %description -n librgw2
593 This package provides a library implementation of the RADOS gateway
594 (distributed object store with S3 and Swift personalities).
596 %package -n librgw-devel
597 Summary: RADOS gateway client library
598 %if 0%{?suse_version}
599 Group: Development/Libraries/C and C++
601 Requires: librados-devel = %{_epoch_prefix}%{version}-%{release}
602 Requires: librgw2 = %{_epoch_prefix}%{version}-%{release}
603 Provides: librgw2-devel = %{_epoch_prefix}%{version}-%{release}
604 Obsoletes: librgw2-devel < %{_epoch_prefix}%{version}-%{release}
605 %description -n librgw-devel
606 This package contains libraries and headers needed to develop programs
607 that use RADOS gateway client library.
610 %package -n python-rgw
611 Summary: Python 2 libraries for the RADOS gateway
612 %if 0%{?suse_version}
613 Group: Development/Libraries/Python
615 Requires: librgw2 = %{_epoch_prefix}%{version}-%{release}
616 Requires: python-rados = %{_epoch_prefix}%{version}-%{release}
617 Obsoletes: python-ceph < %{_epoch_prefix}%{version}-%{release}
618 %description -n python-rgw
619 This package contains Python 2 libraries for interacting with Cephs RADOS
623 %package -n python%{python3_pkgversion}-rgw
624 Summary: Python 3 libraries for the RADOS gateway
625 %if 0%{?suse_version}
626 Group: Development/Libraries/Python
628 Requires: librgw2 = %{_epoch_prefix}%{version}-%{release}
629 Requires: python%{python3_pkgversion}-rados = %{_epoch_prefix}%{version}-%{release}
630 %description -n python%{python3_pkgversion}-rgw
631 This package contains Python 3 libraries for interacting with Cephs RADOS
635 %package -n python-rados
636 Summary: Python 2 libraries for the RADOS object store
637 %if 0%{?suse_version}
638 Group: Development/Libraries/Python
640 Requires: librados3 = %{_epoch_prefix}%{version}-%{release}
641 Obsoletes: python-ceph < %{_epoch_prefix}%{version}-%{release}
642 %description -n python-rados
643 This package contains Python 2 libraries for interacting with Cephs RADOS
647 %package -n python%{python3_pkgversion}-rados
648 Summary: Python 3 libraries for the RADOS object store
649 %if 0%{?suse_version}
650 Group: Development/Libraries/Python
652 Requires: python%{python3_pkgversion}
653 Requires: librados3 = %{_epoch_prefix}%{version}-%{release}
654 %description -n python%{python3_pkgversion}-rados
655 This package contains Python 3 libraries for interacting with Cephs RADOS
658 %if 0%{with libradosstriper}
659 %package -n libradosstriper1
660 Summary: RADOS striping interface
661 %if 0%{?suse_version}
662 Group: System/Libraries
664 Requires: librados3 = %{_epoch_prefix}%{version}-%{release}
665 Requires: libradospp1 = %{_epoch_prefix}%{version}-%{release}
666 %description -n libradosstriper1
667 Striping interface built on top of the rados library, allowing
668 to stripe bigger objects onto several standard rados objects using
669 an interface very similar to the rados one.
671 %package -n libradosstriper-devel
672 Summary: RADOS striping interface headers
673 %if 0%{?suse_version}
674 Group: Development/Libraries/C and C++
676 Requires: libradosstriper1 = %{_epoch_prefix}%{version}-%{release}
677 Requires: librados-devel = %{_epoch_prefix}%{version}-%{release}
678 Requires: libradospp-devel = %{_epoch_prefix}%{version}-%{release}
679 Obsoletes: ceph-devel < %{_epoch_prefix}%{version}-%{release}
680 Provides: libradosstriper1-devel = %{_epoch_prefix}%{version}-%{release}
681 Obsoletes: libradosstriper1-devel < %{_epoch_prefix}%{version}-%{release}
682 %description -n libradosstriper-devel
683 This package contains libraries and headers needed to develop programs
684 that use RADOS striping interface.
688 Summary: RADOS block device client library
689 %if 0%{?suse_version}
690 Group: System/Libraries
692 Requires: librados3 = %{_epoch_prefix}%{version}-%{release}
693 Requires: libradospp1 = %{_epoch_prefix}%{version}-%{release}
694 %if 0%{?suse_version}
695 Requires(post): coreutils
697 %if 0%{?rhel} || 0%{?fedora}
698 Obsoletes: ceph-libs < %{_epoch_prefix}%{version}-%{release}
700 %description -n librbd1
701 RBD is a block device striped across multiple distributed objects in
702 RADOS, a reliable, autonomic distributed object storage cluster
703 developed as part of the Ceph distributed storage system. This is a
704 shared library allowing applications to manage these block devices.
706 %package -n librbd-devel
707 Summary: RADOS block device headers
708 %if 0%{?suse_version}
709 Group: Development/Libraries/C and C++
711 Requires: librbd1 = %{_epoch_prefix}%{version}-%{release}
712 Requires: librados-devel = %{_epoch_prefix}%{version}-%{release}
713 Requires: libradospp-devel = %{_epoch_prefix}%{version}-%{release}
714 Obsoletes: ceph-devel < %{_epoch_prefix}%{version}-%{release}
715 Provides: librbd1-devel = %{_epoch_prefix}%{version}-%{release}
716 Obsoletes: librbd1-devel < %{_epoch_prefix}%{version}-%{release}
717 %description -n librbd-devel
718 This package contains libraries and headers needed to develop programs
719 that use RADOS block device.
722 %package -n python-rbd
723 Summary: Python 2 libraries for the RADOS block device
724 %if 0%{?suse_version}
725 Group: Development/Libraries/Python
727 Requires: librbd1 = %{_epoch_prefix}%{version}-%{release}
728 Requires: python-rados = %{_epoch_prefix}%{version}-%{release}
729 Obsoletes: python-ceph < %{_epoch_prefix}%{version}-%{release}
730 %description -n python-rbd
731 This package contains Python 2 libraries for interacting with Cephs RADOS
735 %package -n python%{python3_pkgversion}-rbd
736 Summary: Python 3 libraries for the RADOS block device
737 %if 0%{?suse_version}
738 Group: Development/Libraries/Python
740 Requires: librbd1 = %{_epoch_prefix}%{version}-%{release}
741 Requires: python%{python3_pkgversion}-rados = %{_epoch_prefix}%{version}-%{release}
742 %description -n python%{python3_pkgversion}-rbd
743 This package contains Python 3 libraries for interacting with Cephs RADOS
746 %package -n libcephfs2
747 Summary: Ceph distributed file system client library
748 %if 0%{?suse_version}
749 Group: System/Libraries
751 Obsoletes: libcephfs1
752 %if 0%{?rhel} || 0%{?fedora}
753 Obsoletes: ceph-libs < %{_epoch_prefix}%{version}-%{release}
754 Obsoletes: ceph-libcephfs
756 %description -n libcephfs2
757 Ceph is a distributed network file system designed to provide excellent
758 performance, reliability, and scalability. This is a shared library
759 allowing applications to access a Ceph distributed file system via a
760 POSIX-like interface.
762 %package -n libcephfs-devel
763 Summary: Ceph distributed file system headers
764 %if 0%{?suse_version}
765 Group: Development/Libraries/C and C++
767 Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release}
768 Requires: librados-devel = %{_epoch_prefix}%{version}-%{release}
769 Obsoletes: ceph-devel < %{_epoch_prefix}%{version}-%{release}
770 Provides: libcephfs2-devel = %{_epoch_prefix}%{version}-%{release}
771 Obsoletes: libcephfs2-devel < %{_epoch_prefix}%{version}-%{release}
772 %description -n libcephfs-devel
773 This package contains libraries and headers needed to develop programs
774 that use Cephs distributed file system.
777 %package -n python-cephfs
778 Summary: Python 2 libraries for Ceph distributed file system
779 %if 0%{?suse_version}
780 Group: Development/Libraries/Python
782 Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release}
783 Requires: python-rados = %{_epoch_prefix}%{version}-%{release}
784 Requires: python-ceph-argparse = %{_epoch_prefix}%{version}-%{release}
785 Obsoletes: python-ceph < %{_epoch_prefix}%{version}-%{release}
786 %description -n python-cephfs
787 This package contains Python 2 libraries for interacting with Cephs distributed
791 %package -n python%{python3_pkgversion}-cephfs
792 Summary: Python 3 libraries for Ceph distributed file system
793 %if 0%{?suse_version}
794 Group: Development/Libraries/Python
796 Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release}
797 Requires: python%{python3_pkgversion}-rados = %{_epoch_prefix}%{version}-%{release}
798 Requires: python%{python3_pkgversion}-ceph-argparse = %{_epoch_prefix}%{version}-%{release}
799 %description -n python%{python3_pkgversion}-cephfs
800 This package contains Python 3 libraries for interacting with Cephs distributed
804 %package -n python-ceph-argparse
805 Summary: Python 2 utility libraries for Ceph CLI
806 %if 0%{?suse_version}
807 Group: Development/Libraries/Python
809 %description -n python-ceph-argparse
810 This package contains types and routines for Python 2 used by the Ceph CLI as
811 well as the RESTful interface. These have to do with querying the daemons for
812 command-description information, validating user command input against those
813 descriptions, and submitting the command to the appropriate daemon.
816 %package -n python%{python3_pkgversion}-ceph-argparse
817 Summary: Python 3 utility libraries for Ceph CLI
818 %if 0%{?suse_version}
819 Group: Development/Libraries/Python
821 %description -n python%{python3_pkgversion}-ceph-argparse
822 This package contains types and routines for Python 3 used by the Ceph CLI as
823 well as the RESTful interface. These have to do with querying the daemons for
824 command-description information, validating user command input against those
825 descriptions, and submitting the command to the appropriate daemon.
827 %if 0%{with cephfs_shell}
828 %package -n cephfs-shell
829 Summary: Interactive shell for Ceph file system
830 Requires: python%{python3_pkgversion}-cmd2
831 Requires: python%{python3_pkgversion}-colorama
832 Requires: python%{python3_pkgversion}-cephfs
833 %description -n cephfs-shell
834 This package contains an interactive tool that allows accessing a Ceph
835 file system without mounting it by providing a nice pseudo-shell which
836 works like an FTP client.
839 %if 0%{with ceph_test_package}
840 %package -n ceph-test
841 Summary: Ceph benchmarks and test tools
842 %if 0%{?suse_version}
843 Group: System/Benchmark
845 Requires: ceph-common = %{_epoch_prefix}%{version}-%{release}
849 %description -n ceph-test
850 This package contains Ceph benchmarks and test tools.
853 %if 0%{with cephfs_java}
855 %package -n libcephfs_jni1
856 Summary: Java Native Interface library for CephFS Java bindings
857 %if 0%{?suse_version}
858 Group: System/Libraries
861 Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release}
862 %description -n libcephfs_jni1
863 This package contains the Java Native Interface library for CephFS Java
866 %package -n libcephfs_jni-devel
867 Summary: Development files for CephFS Java Native Interface library
868 %if 0%{?suse_version}
869 Group: Development/Libraries/Java
872 Requires: libcephfs_jni1 = %{_epoch_prefix}%{version}-%{release}
873 Obsoletes: ceph-devel < %{_epoch_prefix}%{version}-%{release}
874 Provides: libcephfs_jni1-devel = %{_epoch_prefix}%{version}-%{release}
875 Obsoletes: libcephfs_jni1-devel < %{_epoch_prefix}%{version}-%{release}
876 %description -n libcephfs_jni-devel
877 This package contains the development files for CephFS Java Native Interface
880 %package -n cephfs-java
881 Summary: Java libraries for the Ceph File System
882 %if 0%{?suse_version}
883 Group: System/Libraries
886 Requires: libcephfs_jni1 = %{_epoch_prefix}%{version}-%{release}
889 %description -n cephfs-java
890 This package contains the Java libraries for the Ceph File System.
894 %package -n rados-objclass-devel
895 Summary: RADOS object class development kit
896 %if 0%{?suse_version}
897 Group: Development/Libraries/C and C++
899 Requires: libradospp1-devel = %{_epoch_prefix}%{version}-%{release}
900 %description -n rados-objclass-devel
901 This package contains libraries and headers needed to develop RADOS object
907 Summary: SELinux support for Ceph MON, OSD and MDS
908 %if 0%{?suse_version}
909 Group: System/Filesystems
911 Requires: ceph-base = %{_epoch_prefix}%{version}-%{release}
912 Requires: policycoreutils, libselinux-utils
913 Requires(post): ceph-base = %{_epoch_prefix}%{version}-%{release}
914 Requires(post): selinux-policy-base >= %{_selinux_policy_version}, policycoreutils, gawk
915 Requires(postun): policycoreutils
917 This package contains SELinux support for Ceph MON, OSD and MDS. The package
918 also performs file-system relabelling which can take a long time on heavily
919 populated file-systems.
924 %package -n python-ceph-compat
925 Summary: Compatibility package for Cephs python libraries
926 %if 0%{?suse_version}
927 Group: Development/Libraries/Python
929 Obsoletes: python-ceph
930 Requires: python-rados = %{_epoch_prefix}%{version}-%{release}
931 Requires: python-rbd = %{_epoch_prefix}%{version}-%{release}
932 Requires: python-cephfs = %{_epoch_prefix}%{version}-%{release}
933 Requires: python-rgw = %{_epoch_prefix}%{version}-%{release}
934 Provides: python-ceph
935 %description -n python-ceph-compat
936 This is a compatibility package to accommodate python-ceph split into
937 python-rados, python-rbd, python-rgw and python-cephfs. Packages still
938 depending on python-ceph should be fixed to depend on python-rados,
939 python-rbd, python-rgw or python-cephfs instead.
942 %package grafana-dashboards
943 Summary: The set of Grafana dashboards for monitoring purposes
945 %if 0%{?suse_version}
946 Group: System/Filesystems
948 %description grafana-dashboards
949 This package provides a set of Grafana dashboards for monitoring of
950 Ceph clusters. The dashboards require a Prometheus server setup
951 collecting data from Ceph Manager "prometheus" module and Prometheus
952 project "node_exporter" module. The dashboards are designed to be
953 integrated with the Ceph Manager Dashboard web UI.
955 #################################################################################
957 #################################################################################
959 %autosetup -p1 -n @TARBALL_BASENAME@
964 . /opt/rh/devtoolset-7/enable
967 %if 0%{with cephfs_java}
969 for i in /usr/{lib64,lib}/jvm/java/include{,/linux}; do
970 [ -d $i ] && java_inc="$java_inc -I$i"
974 %if 0%{?suse_version}
975 # the following setting fixed an OOM condition we once encountered in the OBS
976 RPM_OPT_FLAGS="$RPM_OPT_FLAGS --param ggc-min-expand=20 --param ggc-min-heapsize=32768"
979 export CPPFLAGS="$java_inc"
980 export CFLAGS="$RPM_OPT_FLAGS"
981 export CXXFLAGS="$RPM_OPT_FLAGS"
982 export LDFLAGS="$RPM_LD_FLAGS"
984 # Parallel build settings ...
985 CEPH_MFLAGS_JOBS="%{?_smp_mflags}"
986 CEPH_SMP_NCPUS=$(echo "$CEPH_MFLAGS_JOBS" | sed 's/-j//')
987 %if 0%{?__isa_bits} == 32
988 # 32-bit builds can use 3G memory max, which is not enough even for -j2
991 # do not eat all memory
992 echo "Available memory:"
994 echo "System limits:"
996 if test -n "$CEPH_SMP_NCPUS" -a "$CEPH_SMP_NCPUS" -gt 1 ; then
998 max_mem=$(LANG=C free -m | sed -n "s|^Mem: *\([0-9]*\).*$|\1|p")
999 max_jobs="$(($max_mem / $mem_per_process))"
1000 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"
1001 test "$CEPH_SMP_NCPUS" -le 0 && CEPH_SMP_NCPUS="1" && echo "Warning: Not using parallel build at all because of memory limits"
1003 export CEPH_SMP_NCPUS
1004 export CEPH_MFLAGS_JOBS="-j$CEPH_SMP_NCPUS"
1016 -DCMAKE_INSTALL_PREFIX=%{_prefix} \
1017 -DCMAKE_INSTALL_LIBDIR=%{_libdir} \
1018 -DCMAKE_INSTALL_LIBEXECDIR=%{_libexecdir} \
1019 -DCMAKE_INSTALL_LOCALSTATEDIR=%{_localstatedir} \
1020 -DCMAKE_INSTALL_SYSCONFDIR=%{_sysconfdir} \
1021 -DCMAKE_INSTALL_MANDIR=%{_mandir} \
1022 -DCMAKE_INSTALL_DOCDIR=%{_docdir}/ceph \
1023 -DCMAKE_INSTALL_INCLUDEDIR=%{_includedir} \
1026 -DWITH_MGR_DASHBOARD_FRONTEND=OFF \
1030 -DWITH_PYTHON2=OFF \
1031 -DMGR_PYTHON_VERSION=3 \
1033 %if 0%{?rhel} && ! 0%{?centos}
1036 %if 0%{without ceph_test_package}
1039 %if 0%{with cephfs_java}
1040 -DWITH_CEPHFS_JAVA=ON \
1042 %if 0%{with selinux}
1047 -DWITH_BABELTRACE=ON \
1050 -DWITH_BABELTRACE=OFF \
1052 $CEPH_EXTRA_CMAKE_ARGS \
1056 %ifarch aarch64 armv7hl mips mipsel ppc ppc64 ppc64le %{ix86} x86_64
1057 -DWITH_BOOST_CONTEXT=ON \
1059 -DWITH_BOOST_CONTEXT=OFF \
1061 %if 0%{with cephfs_shell}
1062 -DWITH_CEPHFS_SHELL=ON \
1064 %if 0%{with libradosstriper}
1065 -DWITH_LIBRADOSSTRIPER=ON \
1067 -DWITH_LIBRADOSSTRIPER=OFF \
1069 -DBOOST_J=$CEPH_SMP_NCPUS \
1072 make "$CEPH_MFLAGS_JOBS"
1075 %if 0%{with make_check}
1077 # run in-tree unittests
1079 ctest "$CEPH_MFLAGS_JOBS"
1085 make DESTDIR=%{buildroot} install
1086 # we have dropped sysvinit bits
1087 rm -f %{buildroot}/%{_sysconfdir}/init.d/ceph
1089 install -m 0644 -D src/etc-rbdmap %{buildroot}%{_sysconfdir}/ceph/rbdmap
1090 %if 0%{?fedora} || 0%{?rhel}
1091 install -m 0644 -D etc/sysconfig/ceph %{buildroot}%{_sysconfdir}/sysconfig/ceph
1093 %if 0%{?suse_version}
1094 install -m 0644 -D etc/sysconfig/ceph %{buildroot}%{_fillupdir}/sysconfig.%{name}
1096 install -m 0644 -D systemd/ceph.tmpfiles.d %{buildroot}%{_tmpfilesdir}/ceph-common.conf
1097 install -m 0644 -D systemd/50-ceph.preset %{buildroot}%{_libexecdir}/systemd/system-preset/50-ceph.preset
1098 mkdir -p %{buildroot}%{_sbindir}
1099 install -m 0644 -D src/logrotate.conf %{buildroot}%{_sysconfdir}/logrotate.d/ceph
1100 chmod 0644 %{buildroot}%{_docdir}/ceph/sample.ceph.conf
1101 install -m 0644 -D COPYING %{buildroot}%{_docdir}/ceph/COPYING
1102 install -m 0644 -D etc/sysctl/90-ceph-osd.conf %{buildroot}%{_sysctldir}/90-ceph-osd.conf
1104 # firewall templates and /sbin/mount.ceph symlink
1105 %if 0%{?suse_version}
1106 install -m 0644 -D etc/sysconfig/SuSEfirewall2.d/services/ceph-mon %{buildroot}%{_sysconfdir}/sysconfig/SuSEfirewall2.d/services/ceph-mon
1107 install -m 0644 -D etc/sysconfig/SuSEfirewall2.d/services/ceph-osd-mds %{buildroot}%{_sysconfdir}/sysconfig/SuSEfirewall2.d/services/ceph-osd-mds
1108 mkdir -p %{buildroot}/sbin
1109 ln -sf %{_sbindir}/mount.ceph %{buildroot}/sbin/mount.ceph
1113 install -m 0644 -D udev/50-rbd.rules %{buildroot}%{_udevrulesdir}/50-rbd.rules
1116 install -m 0600 -D sudoers.d/ceph-osd-smartctl %{buildroot}%{_sysconfdir}/sudoers.d/ceph-osd-smartctl
1118 #set up placeholder directories
1119 mkdir -p %{buildroot}%{_sysconfdir}/ceph
1120 mkdir -p %{buildroot}%{_localstatedir}/run/ceph
1121 mkdir -p %{buildroot}%{_localstatedir}/log/ceph
1122 mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/tmp
1123 mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/mon
1124 mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/osd
1125 mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/mds
1126 mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/mgr
1127 mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/crash
1128 mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/crash/posted
1129 mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/radosgw
1130 mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/bootstrap-osd
1131 mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/bootstrap-mds
1132 mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/bootstrap-rgw
1133 mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/bootstrap-mgr
1134 mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/bootstrap-rbd
1135 mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/bootstrap-rbd-mirror
1137 %if 0%{?suse_version}
1138 # create __pycache__ directories and their contents
1139 %py3_compile %{buildroot}%{python3_sitelib}
1145 #################################################################################
1146 # files and systemd scriptlets
1147 #################################################################################
1151 %{_bindir}/ceph-crash
1152 %{_bindir}/crushtool
1153 %{_bindir}/monmaptool
1154 %{_bindir}/osdmaptool
1155 %{_bindir}/ceph-kvstore-tool
1157 %{_libexecdir}/systemd/system-preset/50-ceph.preset
1158 %{_sbindir}/ceph-create-keys
1159 %dir %{_libexecdir}/ceph
1160 %{_libexecdir}/ceph/ceph_common.sh
1161 %dir %{_libdir}/rados-classes
1162 %{_libdir}/rados-classes/*
1163 %dir %{_libdir}/ceph
1164 %dir %{_libdir}/ceph/erasure-code
1165 %{_libdir}/ceph/erasure-code/libec_*.so*
1166 %dir %{_libdir}/ceph/compressor
1167 %{_libdir}/ceph/compressor/libceph_*.so*
1168 %{_unitdir}/ceph-crash.service
1170 %dir %{_libdir}/ceph/crypto
1171 %{_libdir}/ceph/crypto/libceph_*.so*
1174 %{_libdir}/libos_tp.so*
1175 %{_libdir}/libosd_tp.so*
1177 %config(noreplace) %{_sysconfdir}/logrotate.d/ceph
1178 %if 0%{?fedora} || 0%{?rhel}
1179 %config(noreplace) %{_sysconfdir}/sysconfig/ceph
1181 %if 0%{?suse_version}
1182 %{_fillupdir}/sysconfig.*
1183 %config %{_sysconfdir}/sysconfig/SuSEfirewall2.d/services/ceph-mon
1184 %config %{_sysconfdir}/sysconfig/SuSEfirewall2.d/services/ceph-osd-mds
1186 %{_unitdir}/ceph.target
1187 %if 0%{with python2}
1188 %dir %{python_sitelib}/ceph_volume
1189 %{python_sitelib}/ceph_volume/*
1190 %{python_sitelib}/ceph_volume-*
1192 %dir %{python3_sitelib}/ceph_volume
1193 %{python3_sitelib}/ceph_volume/*
1194 %{python3_sitelib}/ceph_volume-*
1196 %{_mandir}/man8/ceph-deploy.8*
1197 %{_mandir}/man8/ceph-create-keys.8*
1198 %{_mandir}/man8/ceph-run.8*
1199 %{_mandir}/man8/crushtool.8*
1200 %{_mandir}/man8/osdmaptool.8*
1201 %{_mandir}/man8/monmaptool.8*
1202 %{_mandir}/man8/ceph-kvstore-tool.8*
1203 #set up placeholder directories
1204 %attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/crash
1205 %attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/crash/posted
1206 %attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/tmp
1207 %attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/bootstrap-osd
1208 %attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/bootstrap-mds
1209 %attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/bootstrap-rgw
1210 %attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/bootstrap-mgr
1211 %attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/bootstrap-rbd
1212 %attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/bootstrap-rbd-mirror
1216 %if 0%{?suse_version}
1218 if [ $1 -eq 1 ] ; then
1219 /usr/bin/systemctl preset ceph.target ceph-crash.service >/dev/null 2>&1 || :
1222 %if 0%{?fedora} || 0%{?rhel}
1223 %systemd_post ceph.target ceph-crash.service
1225 if [ $1 -eq 1 ] ; then
1226 /usr/bin/systemctl start ceph.target ceph-crash.service >/dev/null 2>&1 || :
1230 %if 0%{?suse_version}
1231 %service_del_preun ceph.target ceph-crash.service
1233 %if 0%{?fedora} || 0%{?rhel}
1234 %systemd_preun ceph.target ceph-crash.service
1239 test -n "$FIRST_ARG" || FIRST_ARG=$1
1240 %if 0%{?suse_version}
1241 DISABLE_RESTART_ON_UPDATE="yes"
1242 %service_del_postun ceph.target
1244 %if 0%{?fedora} || 0%{?rhel}
1245 %systemd_postun ceph.target
1247 if [ $FIRST_ARG -ge 1 ] ; then
1248 # Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to
1249 # "yes". In any case: if units are not running, do not touch them.
1250 SYSCONF_CEPH=%{_sysconfdir}/sysconfig/ceph
1251 if [ -f $SYSCONF_CEPH -a -r $SYSCONF_CEPH ] ; then
1252 source $SYSCONF_CEPH
1257 %dir %{_docdir}/ceph
1258 %doc %{_docdir}/ceph/sample.ceph.conf
1259 %license %{_docdir}/ceph/COPYING
1261 %{_bindir}/ceph-authtool
1262 %{_bindir}/ceph-conf
1263 %{_bindir}/ceph-dencoder
1264 %{_bindir}/ceph-rbdnamer
1266 %{_bindir}/cephfs-data-scan
1267 %{_bindir}/cephfs-journal-tool
1268 %{_bindir}/cephfs-table-tool
1270 %{_bindir}/radosgw-admin
1272 %{_bindir}/rbd-replay
1273 %{_bindir}/rbd-replay-many
1275 %{_sbindir}/mount.ceph
1276 %if 0%{?suse_version}
1280 %{_bindir}/rbd-replay-prep
1282 %{_bindir}/ceph-post-file
1283 %{_tmpfilesdir}/ceph-common.conf
1284 %{_mandir}/man8/ceph-authtool.8*
1285 %{_mandir}/man8/ceph-conf.8*
1286 %{_mandir}/man8/ceph-dencoder.8*
1287 %{_mandir}/man8/ceph-rbdnamer.8*
1288 %{_mandir}/man8/ceph-syn.8*
1289 %{_mandir}/man8/ceph-post-file.8*
1290 %{_mandir}/man8/ceph.8*
1291 %{_mandir}/man8/mount.ceph.8*
1292 %{_mandir}/man8/rados.8*
1293 %{_mandir}/man8/radosgw-admin.8*
1294 %{_mandir}/man8/rbd.8*
1295 %{_mandir}/man8/rbdmap.8*
1296 %{_mandir}/man8/rbd-replay.8*
1297 %{_mandir}/man8/rbd-replay-many.8*
1298 %{_mandir}/man8/rbd-replay-prep.8*
1299 %dir %{_datadir}/ceph/
1300 %{_datadir}/ceph/known_hosts_drop.ceph.com
1301 %{_datadir}/ceph/id_rsa_drop.ceph.com
1302 %{_datadir}/ceph/id_rsa_drop.ceph.com.pub
1303 %dir %{_sysconfdir}/ceph/
1304 %config %{_sysconfdir}/bash_completion.d/ceph
1305 %config %{_sysconfdir}/bash_completion.d/rados
1306 %config %{_sysconfdir}/bash_completion.d/rbd
1307 %config %{_sysconfdir}/bash_completion.d/radosgw-admin
1308 %config(noreplace) %{_sysconfdir}/ceph/rbdmap
1309 %{_unitdir}/rbdmap.service
1310 %dir %{_udevrulesdir}
1311 %{_udevrulesdir}/50-rbd.rules
1312 %attr(3770,ceph,ceph) %dir %{_localstatedir}/log/ceph/
1313 %attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/
1318 %if 0%{?rhel} || 0%{?fedora}
1319 /usr/sbin/groupadd ceph -g $CEPH_GROUP_ID -o -r 2>/dev/null || :
1320 /usr/sbin/useradd ceph -u $CEPH_USER_ID -o -r -g ceph -s /sbin/nologin -c "Ceph daemons" -d %{_localstatedir}/lib/ceph 2>/dev/null || :
1322 %if 0%{?suse_version}
1323 if ! getent group ceph >/dev/null ; then
1324 CEPH_GROUP_ID_OPTION=""
1325 getent group $CEPH_GROUP_ID >/dev/null || CEPH_GROUP_ID_OPTION="-g $CEPH_GROUP_ID"
1326 groupadd ceph $CEPH_GROUP_ID_OPTION -r 2>/dev/null || :
1328 if ! getent passwd ceph >/dev/null ; then
1329 CEPH_USER_ID_OPTION=""
1330 getent passwd $CEPH_USER_ID >/dev/null || CEPH_USER_ID_OPTION="-u $CEPH_USER_ID"
1331 useradd ceph $CEPH_USER_ID_OPTION -r -g ceph -s /sbin/nologin 2>/dev/null || :
1333 usermod -c "Ceph storage service" \
1334 -d %{_localstatedir}/lib/ceph \
1342 %tmpfiles_create %{_tmpfilesdir}/ceph-common.conf
1345 # Package removal cleanup
1346 if [ "$1" -eq "0" ] ; then
1347 rm -rf %{_localstatedir}/log/ceph
1348 rm -rf %{_sysconfdir}/ceph
1353 %{_mandir}/man8/ceph-mds.8*
1354 %{_unitdir}/ceph-mds@.service
1355 %{_unitdir}/ceph-mds.target
1356 %attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/mds
1359 %if 0%{?suse_version}
1360 if [ $1 -eq 1 ] ; then
1361 /usr/bin/systemctl preset ceph-mds@\*.service ceph-mds.target >/dev/null 2>&1 || :
1364 %if 0%{?fedora} || 0%{?rhel}
1365 %systemd_post ceph-mds@\*.service ceph-mds.target
1367 if [ $1 -eq 1 ] ; then
1368 /usr/bin/systemctl start ceph-mds.target >/dev/null 2>&1 || :
1372 %if 0%{?suse_version}
1373 %service_del_preun ceph-mds@\*.service ceph-mds.target
1375 %if 0%{?fedora} || 0%{?rhel}
1376 %systemd_preun ceph-mds@\*.service ceph-mds.target
1380 test -n "$FIRST_ARG" || FIRST_ARG=$1
1381 %if 0%{?suse_version}
1382 DISABLE_RESTART_ON_UPDATE="yes"
1383 %service_del_postun ceph-mds@\*.service ceph-mds.target
1385 %if 0%{?fedora} || 0%{?rhel}
1386 %systemd_postun ceph-mds@\*.service ceph-mds.target
1388 if [ $FIRST_ARG -ge 1 ] ; then
1389 # Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to
1390 # "yes". In any case: if units are not running, do not touch them.
1391 SYSCONF_CEPH=%{_sysconfdir}/sysconfig/ceph
1392 if [ -f $SYSCONF_CEPH -a -r $SYSCONF_CEPH ] ; then
1393 source $SYSCONF_CEPH
1395 if [ "X$CEPH_AUTO_RESTART_ON_UPGRADE" = "Xyes" ] ; then
1396 /usr/bin/systemctl try-restart ceph-mds@\*.service > /dev/null 2>&1 || :
1403 %{_unitdir}/ceph-mgr@.service
1404 %{_unitdir}/ceph-mgr.target
1405 %attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/mgr
1408 %if 0%{?suse_version}
1409 if [ $1 -eq 1 ] ; then
1410 /usr/bin/systemctl preset ceph-mgr@\*.service ceph-mgr.target >/dev/null 2>&1 || :
1413 %if 0%{?fedora} || 0%{?rhel}
1414 %systemd_post ceph-mgr@\*.service ceph-mgr.target
1416 if [ $1 -eq 1 ] ; then
1417 /usr/bin/systemctl start ceph-mgr.target >/dev/null 2>&1 || :
1421 %if 0%{?suse_version}
1422 %service_del_preun ceph-mgr@\*.service ceph-mgr.target
1424 %if 0%{?fedora} || 0%{?rhel}
1425 %systemd_preun ceph-mgr@\*.service ceph-mgr.target
1429 test -n "$FIRST_ARG" || FIRST_ARG=$1
1430 %if 0%{?suse_version}
1431 DISABLE_RESTART_ON_UPDATE="yes"
1432 %service_del_postun ceph-mgr@\*.service ceph-mgr.target
1434 %if 0%{?fedora} || 0%{?rhel}
1435 %systemd_postun ceph-mgr@\*.service ceph-mgr.target
1437 if [ $FIRST_ARG -ge 1 ] ; then
1438 # Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to
1439 # "yes". In any case: if units are not running, do not touch them.
1440 SYSCONF_CEPH=%{_sysconfdir}/sysconfig/ceph
1441 if [ -f $SYSCONF_CEPH -a -r $SYSCONF_CEPH ] ; then
1442 source $SYSCONF_CEPH
1444 if [ "X$CEPH_AUTO_RESTART_ON_UPGRADE" = "Xyes" ] ; then
1445 /usr/bin/systemctl try-restart ceph-mgr@\*.service > /dev/null 2>&1 || :
1451 %{_bindir}/ceph-monstore-tool
1452 %{_mandir}/man8/ceph-mon.8*
1453 %{_unitdir}/ceph-mon@.service
1454 %{_unitdir}/ceph-mon.target
1455 %attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/mon
1458 %if 0%{?suse_version}
1459 if [ $1 -eq 1 ] ; then
1460 /usr/bin/systemctl preset ceph-mon@\*.service ceph-mon.target >/dev/null 2>&1 || :
1463 %if 0%{?fedora} || 0%{?rhel}
1464 %systemd_post ceph-mon@\*.service ceph-mon.target
1466 if [ $1 -eq 1 ] ; then
1467 /usr/bin/systemctl start ceph-mon.target >/dev/null 2>&1 || :
1471 %if 0%{?suse_version}
1472 %service_del_preun ceph-mon@\*.service ceph-mon.target
1474 %if 0%{?fedora} || 0%{?rhel}
1475 %systemd_preun ceph-mon@\*.service ceph-mon.target
1479 test -n "$FIRST_ARG" || FIRST_ARG=$1
1480 %if 0%{?suse_version}
1481 DISABLE_RESTART_ON_UPDATE="yes"
1482 %service_del_postun ceph-mon@\*.service ceph-mon.target
1484 %if 0%{?fedora} || 0%{?rhel}
1485 %systemd_postun ceph-mon@\*.service ceph-mon.target
1487 if [ $FIRST_ARG -ge 1 ] ; then
1488 # Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to
1489 # "yes". In any case: if units are not running, do not touch them.
1490 SYSCONF_CEPH=%{_sysconfdir}/sysconfig/ceph
1491 if [ -f $SYSCONF_CEPH -a -r $SYSCONF_CEPH ] ; then
1492 source $SYSCONF_CEPH
1494 if [ "X$CEPH_AUTO_RESTART_ON_UPGRADE" = "Xyes" ] ; then
1495 /usr/bin/systemctl try-restart ceph-mon@\*.service > /dev/null 2>&1 || :
1500 %{_bindir}/ceph-fuse
1501 %{_mandir}/man8/ceph-fuse.8*
1502 %{_sbindir}/mount.fuse.ceph
1503 %{_unitdir}/ceph-fuse@.service
1504 %{_unitdir}/ceph-fuse.target
1508 %{_mandir}/man8/rbd-fuse.8*
1510 %files -n rbd-mirror
1511 %{_bindir}/rbd-mirror
1512 %{_mandir}/man8/rbd-mirror.8*
1513 %{_unitdir}/ceph-rbd-mirror@.service
1514 %{_unitdir}/ceph-rbd-mirror.target
1517 %if 0%{?suse_version}
1518 if [ $1 -eq 1 ] ; then
1519 /usr/bin/systemctl preset ceph-rbd-mirror@\*.service ceph-rbd-mirror.target >/dev/null 2>&1 || :
1522 %if 0%{?fedora} || 0%{?rhel}
1523 %systemd_post ceph-rbd-mirror@\*.service ceph-rbd-mirror.target
1525 if [ $1 -eq 1 ] ; then
1526 /usr/bin/systemctl start ceph-rbd-mirror.target >/dev/null 2>&1 || :
1529 %preun -n rbd-mirror
1530 %if 0%{?suse_version}
1531 %service_del_preun ceph-rbd-mirror@\*.service ceph-rbd-mirror.target
1533 %if 0%{?fedora} || 0%{?rhel}
1534 %systemd_preun ceph-rbd-mirror@\*.service ceph-rbd-mirror.target
1537 %postun -n rbd-mirror
1538 test -n "$FIRST_ARG" || FIRST_ARG=$1
1539 %if 0%{?suse_version}
1540 DISABLE_RESTART_ON_UPDATE="yes"
1541 %service_del_postun ceph-rbd-mirror@\*.service ceph-rbd-mirror.target
1543 %if 0%{?fedora} || 0%{?rhel}
1544 %systemd_postun ceph-rbd-mirror@\*.service ceph-rbd-mirror.target
1546 if [ $FIRST_ARG -ge 1 ] ; then
1547 # Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to
1548 # "yes". In any case: if units are not running, do not touch them.
1549 SYSCONF_CEPH=%{_sysconfdir}/sysconfig/ceph
1550 if [ -f $SYSCONF_CEPH -a -r $SYSCONF_CEPH ] ; then
1551 source $SYSCONF_CEPH
1553 if [ "X$CEPH_AUTO_RESTART_ON_UPGRADE" = "Xyes" ] ; then
1554 /usr/bin/systemctl try-restart ceph-rbd-mirror@\*.service > /dev/null 2>&1 || :
1560 %{_mandir}/man8/rbd-nbd.8*
1564 %{_bindir}/radosgw-token
1565 %{_bindir}/radosgw-es
1566 %{_bindir}/radosgw-object-expirer
1567 %{_mandir}/man8/radosgw.8*
1568 %dir %{_localstatedir}/lib/ceph/radosgw
1569 %{_unitdir}/ceph-radosgw@.service
1570 %{_unitdir}/ceph-radosgw.target
1573 %if 0%{?suse_version}
1574 if [ $1 -eq 1 ] ; then
1575 /usr/bin/systemctl preset ceph-radosgw@\*.service ceph-radosgw.target >/dev/null 2>&1 || :
1578 %if 0%{?fedora} || 0%{?rhel}
1579 %systemd_post ceph-radosgw@\*.service ceph-radosgw.target
1581 if [ $1 -eq 1 ] ; then
1582 /usr/bin/systemctl start ceph-radosgw.target >/dev/null 2>&1 || :
1586 %if 0%{?suse_version}
1587 %service_del_preun ceph-radosgw@\*.service ceph-radosgw.target
1589 %if 0%{?fedora} || 0%{?rhel}
1590 %systemd_preun ceph-radosgw@\*.service ceph-radosgw.target
1594 test -n "$FIRST_ARG" || FIRST_ARG=$1
1595 %if 0%{?suse_version}
1596 DISABLE_RESTART_ON_UPDATE="yes"
1597 %service_del_postun ceph-radosgw@\*.service ceph-radosgw.target
1599 %if 0%{?fedora} || 0%{?rhel}
1600 %systemd_postun ceph-radosgw@\*.service ceph-radosgw.target
1602 if [ $FIRST_ARG -ge 1 ] ; then
1603 # Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to
1604 # "yes". In any case: if units are not running, do not touch them.
1605 SYSCONF_CEPH=%{_sysconfdir}/sysconfig/ceph
1606 if [ -f $SYSCONF_CEPH -a -r $SYSCONF_CEPH ] ; then
1607 source $SYSCONF_CEPH
1609 if [ "X$CEPH_AUTO_RESTART_ON_UPGRADE" = "Xyes" ] ; then
1610 /usr/bin/systemctl try-restart ceph-radosgw@\*.service > /dev/null 2>&1 || :
1615 %{_bindir}/ceph-clsinfo
1616 %{_bindir}/ceph-bluestore-tool
1617 %{_bindir}/ceph-objectstore-tool
1618 %{_bindir}/ceph-osdomap-tool
1620 %{_libexecdir}/ceph/ceph-osd-prestart.sh
1621 %{_sbindir}/ceph-volume
1622 %{_sbindir}/ceph-volume-systemd
1623 %{_mandir}/man8/ceph-clsinfo.8*
1624 %{_mandir}/man8/ceph-osd.8*
1625 %{_mandir}/man8/ceph-bluestore-tool.8*
1626 %{_mandir}/man8/ceph-volume.8*
1627 %{_mandir}/man8/ceph-volume-systemd.8*
1628 %if 0%{?rhel} && ! 0%{?centos}
1629 %attr(0755,-,-) %{_sysconfdir}/cron.hourly/subman
1631 %{_unitdir}/ceph-osd@.service
1632 %{_unitdir}/ceph-osd.target
1633 %{_unitdir}/ceph-volume@.service
1634 %attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/osd
1635 %config(noreplace) %{_sysctldir}/90-ceph-osd.conf
1636 %{_sysconfdir}/sudoers.d/ceph-osd-smartctl
1639 %if 0%{?suse_version}
1640 if [ $1 -eq 1 ] ; then
1641 /usr/bin/systemctl preset ceph-osd@\*.service ceph-volume@\*.service ceph-osd.target >/dev/null 2>&1 || :
1644 %if 0%{?fedora} || 0%{?rhel}
1645 %systemd_post ceph-osd@\*.service ceph-volume@\*.service ceph-osd.target
1647 if [ $1 -eq 1 ] ; then
1648 /usr/bin/systemctl start ceph-osd.target >/dev/null 2>&1 || :
1650 %if 0%{?sysctl_apply}
1651 %sysctl_apply 90-ceph-osd.conf
1653 /usr/lib/systemd/systemd-sysctl %{_sysctldir}/90-ceph-osd.conf > /dev/null 2>&1 || :
1657 %if 0%{?suse_version}
1658 %service_del_preun ceph-osd@\*.service ceph-volume@\*.service ceph-osd.target
1660 %if 0%{?fedora} || 0%{?rhel}
1661 %systemd_preun ceph-osd@\*.service ceph-volume@\*.service ceph-osd.target
1665 test -n "$FIRST_ARG" || FIRST_ARG=$1
1666 %if 0%{?suse_version}
1667 DISABLE_RESTART_ON_UPDATE="yes"
1668 %service_del_postun ceph-osd@\*.service ceph-volume@\*.service ceph-osd.target
1670 %if 0%{?fedora} || 0%{?rhel}
1671 %systemd_postun ceph-osd@\*.service ceph-volume@\*.service ceph-osd.target
1673 if [ $FIRST_ARG -ge 1 ] ; then
1674 # Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to
1675 # "yes". In any case: if units are not running, do not touch them.
1676 SYSCONF_CEPH=%{_sysconfdir}/sysconfig/ceph
1677 if [ -f $SYSCONF_CEPH -a -r $SYSCONF_CEPH ] ; then
1678 source $SYSCONF_CEPH
1680 if [ "X$CEPH_AUTO_RESTART_ON_UPGRADE" = "Xyes" ] ; then
1681 /usr/bin/systemctl try-restart ceph-osd@\*.service ceph-volume@\*.service > /dev/null 2>&1 || :
1687 %files resource-agents
1688 %dir %{_prefix}/lib/ocf
1689 %dir %{_prefix}/lib/ocf/resource.d
1690 %dir %{_prefix}/lib/ocf/resource.d/ceph
1691 %attr(0755,-,-) %{_prefix}/lib/ocf/resource.d/ceph/rbd
1696 %{_libdir}/librados.so.*
1697 %dir %{_libdir}/ceph
1698 %{_libdir}/ceph/libceph-common.so.*
1700 %{_libdir}/librados_tp.so.*
1703 %post -n librados3 -p /sbin/ldconfig
1705 %postun -n librados3 -p /sbin/ldconfig
1707 %files -n librados-devel
1708 %dir %{_includedir}/rados
1709 %{_includedir}/rados/librados.h
1710 %{_includedir}/rados/rados_types.h
1711 %{_libdir}/librados.so
1713 %{_libdir}/librados_tp.so
1715 %{_bindir}/librados-config
1716 %{_mandir}/man8/librados-config.8*
1718 %files -n libradospp1
1719 %{_libdir}/libradospp.so.*
1721 %post -n libradospp1 -p /sbin/ldconfig
1723 %postun -n libradospp1 -p /sbin/ldconfig
1725 %files -n libradospp-devel
1726 %dir %{_includedir}/rados
1727 %{_includedir}/rados/buffer.h
1728 %{_includedir}/rados/buffer_fwd.h
1729 %{_includedir}/rados/crc32c.h
1730 %{_includedir}/rados/inline_memory.h
1731 %{_includedir}/rados/librados.hpp
1732 %{_includedir}/rados/page.h
1733 %{_includedir}/rados/rados_types.hpp
1734 %{_libdir}/libradospp.so
1736 %if 0%{with python2}
1737 %files -n python-rados
1738 %{python_sitearch}/rados.so
1739 %{python_sitearch}/rados-*.egg-info
1742 %files -n python%{python3_pkgversion}-rados
1743 %{python3_sitearch}/rados.cpython*.so
1744 %{python3_sitearch}/rados-*.egg-info
1746 %if 0%{with libradosstriper}
1747 %files -n libradosstriper1
1748 %{_libdir}/libradosstriper.so.*
1750 %post -n libradosstriper1 -p /sbin/ldconfig
1752 %postun -n libradosstriper1 -p /sbin/ldconfig
1754 %files -n libradosstriper-devel
1755 %dir %{_includedir}/radosstriper
1756 %{_includedir}/radosstriper/libradosstriper.h
1757 %{_includedir}/radosstriper/libradosstriper.hpp
1758 %{_libdir}/libradosstriper.so
1762 %{_libdir}/librbd.so.*
1764 %{_libdir}/librbd_tp.so.*
1767 %post -n librbd1 -p /sbin/ldconfig
1769 %postun -n librbd1 -p /sbin/ldconfig
1771 %files -n librbd-devel
1772 %dir %{_includedir}/rbd
1773 %{_includedir}/rbd/librbd.h
1774 %{_includedir}/rbd/librbd.hpp
1775 %{_includedir}/rbd/features.h
1776 %{_libdir}/librbd.so
1778 %{_libdir}/librbd_tp.so
1782 %{_libdir}/librgw.so.*
1783 %{_libdir}/librgw_admin_user.so.*
1785 %{_libdir}/librgw_op_tp.so*
1786 %{_libdir}/librgw_rados_tp.so*
1789 %post -n librgw2 -p /sbin/ldconfig
1791 %postun -n librgw2 -p /sbin/ldconfig
1793 %files -n librgw-devel
1794 %dir %{_includedir}/rados
1795 %{_includedir}/rados/librgw.h
1796 %{_includedir}/rados/librgw_admin_user.h
1797 %{_includedir}/rados/rgw_file.h
1798 %{_libdir}/librgw.so
1799 %{_libdir}/librgw_admin_user.so
1801 %if 0%{with python2}
1802 %files -n python-rgw
1803 %{python_sitearch}/rgw.so
1804 %{python_sitearch}/rgw-*.egg-info
1807 %files -n python%{python3_pkgversion}-rgw
1808 %{python3_sitearch}/rgw.cpython*.so
1809 %{python3_sitearch}/rgw-*.egg-info
1811 %if 0%{with python2}
1812 %files -n python-rbd
1813 %{python_sitearch}/rbd.so
1814 %{python_sitearch}/rbd-*.egg-info
1817 %files -n python%{python3_pkgversion}-rbd
1818 %{python3_sitearch}/rbd.cpython*.so
1819 %{python3_sitearch}/rbd-*.egg-info
1821 %files -n libcephfs2
1822 %{_libdir}/libcephfs.so.*
1824 %post -n libcephfs2 -p /sbin/ldconfig
1826 %postun -n libcephfs2 -p /sbin/ldconfig
1828 %files -n libcephfs-devel
1829 %dir %{_includedir}/cephfs
1830 %{_includedir}/cephfs/libcephfs.h
1831 %{_includedir}/cephfs/ceph_statx.h
1832 %{_libdir}/libcephfs.so
1834 %if 0%{with python2}
1835 %files -n python-cephfs
1836 %{python_sitearch}/cephfs.so
1837 %{python_sitearch}/cephfs-*.egg-info
1838 %{python_sitelib}/ceph_volume_client.py*
1841 %files -n python%{python3_pkgversion}-cephfs
1842 %{python3_sitearch}/cephfs.cpython*.so
1843 %{python3_sitearch}/cephfs-*.egg-info
1844 %{python3_sitelib}/ceph_volume_client.py
1845 %{python3_sitelib}/__pycache__/ceph_volume_client.cpython*.py*
1847 %if 0%{with python2}
1848 %files -n python-ceph-argparse
1849 %{python_sitelib}/ceph_argparse.py*
1850 %{python_sitelib}/ceph_daemon.py*
1853 %files -n python%{python3_pkgversion}-ceph-argparse
1854 %{python3_sitelib}/ceph_argparse.py
1855 %{python3_sitelib}/__pycache__/ceph_argparse.cpython*.py*
1856 %{python3_sitelib}/ceph_daemon.py
1857 %{python3_sitelib}/__pycache__/ceph_daemon.cpython*.py*
1859 %if 0%{with cephfs_shell}
1860 %files -n cephfs-shell
1861 %{python3_sitelib}/cephfs_shell-*.egg-info
1862 %{_bindir}/cephfs-shell
1865 %if 0%{with ceph_test_package}
1867 %{_bindir}/ceph-client-debug
1868 %{_bindir}/ceph_bench_log
1869 %{_bindir}/ceph_kvstorebench
1870 %{_bindir}/ceph_multi_stress_watch
1871 %{_bindir}/ceph_erasure_code
1872 %{_bindir}/ceph_erasure_code_benchmark
1873 %{_bindir}/ceph_omapbench
1874 %{_bindir}/ceph_objectstore_bench
1875 %{_bindir}/ceph_perf_objectstore
1876 %{_bindir}/ceph_perf_local
1877 %{_bindir}/ceph_perf_msgr_client
1878 %{_bindir}/ceph_perf_msgr_server
1879 %{_bindir}/ceph_psim
1880 %{_bindir}/ceph_radosacl
1881 %{_bindir}/ceph_rgw_jsonparser
1882 %{_bindir}/ceph_rgw_multiparser
1883 %{_bindir}/ceph_scratchtool
1884 %{_bindir}/ceph_scratchtoolpp
1885 %{_bindir}/ceph_test_*
1886 %{_bindir}/ceph-coverage
1887 %{_bindir}/ceph-debugpack
1888 %{_mandir}/man8/ceph-debugpack.8*
1889 %dir %{_libdir}/ceph
1890 %{_libdir}/ceph/ceph-monstore-update-crush.sh
1893 %if 0%{with cephfs_java}
1894 %files -n libcephfs_jni1
1895 %{_libdir}/libcephfs_jni.so.*
1897 %post -n libcephfs_jni1 -p /sbin/ldconfig
1899 %postun -n libcephfs_jni1 -p /sbin/ldconfig
1901 %files -n libcephfs_jni-devel
1902 %{_libdir}/libcephfs_jni.so
1904 %files -n cephfs-java
1905 %{_javadir}/libcephfs.jar
1906 %{_javadir}/libcephfs-test.jar
1909 %files -n rados-objclass-devel
1910 %dir %{_includedir}/rados
1911 %{_includedir}/rados/objclass.h
1913 %if 0%{with selinux}
1915 %attr(0600,root,root) %{_datadir}/selinux/packages/ceph.pp
1916 %{_datadir}/selinux/devel/include/contrib/ceph.if
1917 %{_mandir}/man8/ceph_selinux.8*
1920 # backup file_contexts before update
1921 . /etc/selinux/config
1922 FILE_CONTEXT=/etc/selinux/${SELINUXTYPE}/contexts/files/file_contexts
1923 cp ${FILE_CONTEXT} ${FILE_CONTEXT}.pre
1925 # Install the policy
1926 /usr/sbin/semodule -i %{_datadir}/selinux/packages/ceph.pp
1928 # Load the policy if SELinux is enabled
1929 if ! /usr/sbin/selinuxenabled; then
1930 # Do not relabel if selinux is not enabled
1934 if diff ${FILE_CONTEXT} ${FILE_CONTEXT}.pre > /dev/null 2>&1; then
1935 # Do not relabel if file contexts did not change
1939 # Check whether the daemons are running
1940 /usr/bin/systemctl status ceph.target > /dev/null 2>&1
1943 # Stop the daemons if they were running
1944 if test $STATUS -eq 0; then
1945 /usr/bin/systemctl stop ceph.target > /dev/null 2>&1
1948 # Relabel the files fix for first package install
1949 /usr/sbin/fixfiles -C ${FILE_CONTEXT}.pre restore 2> /dev/null
1951 rm -f ${FILE_CONTEXT}.pre
1952 # The fixfiles command won't fix label for /var/run/ceph
1953 /usr/sbin/restorecon -R /var/run/ceph > /dev/null 2>&1
1955 # Start the daemons iff they were running before
1956 if test $STATUS -eq 0; then
1957 /usr/bin/systemctl start ceph.target > /dev/null 2>&1 || :
1962 if [ $1 -eq 0 ]; then
1963 # backup file_contexts before update
1964 . /etc/selinux/config
1965 FILE_CONTEXT=/etc/selinux/${SELINUXTYPE}/contexts/files/file_contexts
1966 cp ${FILE_CONTEXT} ${FILE_CONTEXT}.pre
1969 /usr/sbin/semodule -n -r ceph > /dev/null 2>&1
1971 # Reload the policy if SELinux is enabled
1972 if ! /usr/sbin/selinuxenabled ; then
1973 # Do not relabel if SELinux is not enabled
1977 # Check whether the daemons are running
1978 /usr/bin/systemctl status ceph.target > /dev/null 2>&1
1981 # Stop the daemons if they were running
1982 if test $STATUS -eq 0; then
1983 /usr/bin/systemctl stop ceph.target > /dev/null 2>&1
1986 /usr/sbin/fixfiles -C ${FILE_CONTEXT}.pre restore 2> /dev/null
1987 rm -f ${FILE_CONTEXT}.pre
1988 # The fixfiles command won't fix label for /var/run/ceph
1989 /usr/sbin/restorecon -R /var/run/ceph > /dev/null 2>&1
1991 # Start the daemons if they were running before
1992 if test $STATUS -eq 0; then
1993 /usr/bin/systemctl start ceph.target > /dev/null 2>&1 || :
1998 %endif # with selinux
2000 %if 0%{with python2}
2001 %files -n python-ceph-compat
2002 # We need an empty %%files list for python-ceph-compat, to tell rpmbuild to
2003 # actually build this meta package.
2006 %files grafana-dashboards
2007 %attr(0755,root,root) %dir %{_sysconfdir}/grafana/dashboards/ceph-dashboard
2008 %config %{_sysconfdir}/grafana/dashboards/ceph-dashboard/*
2009 %doc monitoring/grafana/dashboards/README
2010 %doc monitoring/grafana/README.md