]> git.proxmox.com Git - ceph.git/blame_incremental - ceph/ceph.spec.in
update sources to v12.1.3
[ceph.git] / ceph / ceph.spec.in
... / ...
CommitLineData
1# vim: set noexpandtab ts=8 sw=8 :
2#
3# spec file for package ceph
4#
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
8#
9# All modifications and additions to the file contributed by third parties
10# remain the property of their copyright owners, unless otherwise agreed
11# upon.
12#
13# This file is under the GNU Lesser General Public License, version 2.1
14#
15# Please submit bugfixes or comments via http://tracker.ceph.com/
16#
17%bcond_without ocf
18%bcond_without cephfs_java
19%if 0%{?suse_version}
20%bcond_with ceph_test_package
21%else
22%bcond_without ceph_test_package
23%endif
24%bcond_with make_check
25%ifarch s390 s390x
26%bcond_with tcmalloc
27%else
28%bcond_without tcmalloc
29%endif
30%bcond_with lowmem_builder
31%if 0%{?fedora} || 0%{?rhel}
32%bcond_without selinux
33%endif
34%if 0%{?suse_version}
35%bcond_with selinux
36%endif
37
38# LTTng-UST enabled on Fedora, RHEL 6+, and SLE (not openSUSE)
39%if 0%{?fedora} || 0%{?rhel} >= 6 || 0%{?suse_version}
40%if ! 0%{?is_opensuse}
41%bcond_without lttng
42%endif
43%endif
44
45%if %{with selinux}
46# get selinux policy version
47%{!?_selinux_policy_version: %global _selinux_policy_version %(sed -e 's,.*selinux-policy-\\([^/]*\\)/.*,\\1,' /usr/share/selinux/devel/policyhelp 2>/dev/null || echo 0.0.0)}
48%endif
49
50%{!?_udevrulesdir: %global _udevrulesdir /lib/udev/rules.d}
51%{!?tmpfiles_create: %global tmpfiles_create systemd-tmpfiles --create}
52%{!?python3_pkgversion: %global python3_pkgversion 3}
53
54# unify libexec for all targets
55%global _libexecdir %{_exec_prefix}/lib
56
57# disable dwz which compresses the debuginfo
58%global _find_debuginfo_dwz_opts %{nil}
59
60#################################################################################
61# main package definition
62#################################################################################
63Name: ceph
64Version: @VERSION@
65Release: @RPM_RELEASE@%{?dist}
66%if 0%{?fedora} || 0%{?rhel}
67Epoch: 2
68%endif
69
70# define %_epoch_prefix macro which will expand to the empty string if %epoch is undefined
71%global _epoch_prefix %{?epoch:%{epoch}:}
72
73Summary: User space components of the Ceph file system
74License: LGPL-2.1 and CC-BY-SA-1.0 and GPL-2.0 and BSL-1.0 and BSD-3-Clause and MIT
75%if 0%{?suse_version}
76Group: System/Filesystems
77%endif
78URL: http://ceph.com/
79Source0: http://ceph.com/download/@TARBALL_BASENAME@.tar.bz2
80%if 0%{?suse_version}
81%if 0%{?is_opensuse}
82ExclusiveArch: x86_64 aarch64 ppc64 ppc64le
83%else
84ExclusiveArch: x86_64 aarch64 ppc64le s390x
85%endif
86%endif
87#################################################################################
88# dependencies that apply across all distro families
89#################################################################################
90Requires: ceph-osd = %{_epoch_prefix}%{version}-%{release}
91Requires: ceph-mds = %{_epoch_prefix}%{version}-%{release}
92Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release}
93Requires: ceph-mon = %{_epoch_prefix}%{version}-%{release}
94Requires(post): binutils
95%if 0%{with cephfs_java}
96BuildRequires: java-devel
97BuildRequires: sharutils
98%endif
99%if 0%{with selinux}
100BuildRequires: checkpolicy
101BuildRequires: selinux-policy-devel
102BuildRequires: /usr/share/selinux/devel/policyhelp
103%endif
104%if 0%{with make_check}
105%if 0%{?fedora} || 0%{?rhel}
106BuildRequires: python-cherrypy
107BuildRequires: python-werkzeug
108%endif
109%if 0%{?suse_version}
110BuildRequires: python-CherryPy
111BuildRequires: python-Werkzeug
112%endif
113BuildRequires: python-pecan
114BuildRequires: socat
115%endif
116BuildRequires: bc
117BuildRequires: gperf
118BuildRequires: cmake
119BuildRequires: cryptsetup
120BuildRequires: fuse-devel
121BuildRequires: gcc-c++
122BuildRequires: gdbm
123%if 0%{with tcmalloc}
124BuildRequires: gperftools-devel >= 2.4
125%endif
126BuildRequires: jq
127BuildRequires: leveldb-devel > 1.2
128BuildRequires: libaio-devel
129BuildRequires: libblkid-devel >= 2.17
130BuildRequires: libcurl-devel
131BuildRequires: libudev-devel
132BuildRequires: libtool
133BuildRequires: libxml2-devel
134BuildRequires: make
135BuildRequires: parted
136BuildRequires: perl
137BuildRequires: pkgconfig
138BuildRequires: python
139BuildRequires: python-devel
140BuildRequires: python-nose
141BuildRequires: python-requests
142BuildRequires: python-virtualenv
143BuildRequires: snappy-devel
144BuildRequires: udev
145BuildRequires: util-linux
146BuildRequires: valgrind-devel
147BuildRequires: which
148BuildRequires: xfsprogs
149BuildRequires: xfsprogs-devel
150BuildRequires: xmlstarlet
151BuildRequires: yasm
152
153#################################################################################
154# distro-conditional dependencies
155#################################################################################
156%if 0%{?suse_version}
157BuildRequires: pkgconfig(systemd)
158BuildRequires: systemd-rpm-macros
159BuildRequires: systemd
160%{?systemd_requires}
161PreReq: %fillup_prereq
162BuildRequires: net-tools
163BuildRequires: libbz2-devel
164BuildRequires: btrfsprogs
165BuildRequires: mozilla-nss-devel
166BuildRequires: keyutils-devel
167BuildRequires: libopenssl-devel
168BuildRequires: lsb-release
169BuildRequires: openldap2-devel
170BuildRequires: python-Cython
171BuildRequires: python-PrettyTable
172BuildRequires: python-Sphinx
173BuildRequires: rdma-core-devel
174%endif
175%if 0%{?fedora} || 0%{?rhel}
176Requires: systemd
177BuildRequires: boost-random
178BuildRequires: btrfs-progs
179BuildRequires: nss-devel
180BuildRequires: keyutils-libs-devel
181BuildRequires: libibverbs-devel
182BuildRequires: openldap-devel
183BuildRequires: openssl-devel
184BuildRequires: redhat-lsb-core
185BuildRequires: Cython
186BuildRequires: python-prettytable
187BuildRequires: python-sphinx
188%endif
189# python34-... for RHEL, python3-... for all other supported distros
190%if 0%{?rhel}
191BuildRequires: python34-devel
192BuildRequires: python34-setuptools
193BuildRequires: python34-Cython
194%else
195BuildRequires: python3-devel
196BuildRequires: python3-setuptools
197BuildRequires: python3-Cython
198%endif
199# lttng and babeltrace for rbd-replay-prep
200%if %{with lttng}
201%if 0%{?fedora} || 0%{?rhel}
202BuildRequires: lttng-ust-devel
203BuildRequires: libbabeltrace-devel
204%endif
205%if 0%{?suse_version}
206BuildRequires: lttng-ust-devel
207BuildRequires: babeltrace-devel
208%endif
209%endif
210%if 0%{?suse_version}
211BuildRequires: libexpat-devel
212%endif
213%if 0%{?rhel} || 0%{?fedora}
214BuildRequires: expat-devel
215%endif
216#hardened-cc1
217%if 0%{?fedora} || 0%{?rhel}
218BuildRequires: redhat-rpm-config
219%endif
220
221%description
222Ceph is a massively scalable, open-source, distributed storage system that runs
223on commodity hardware and delivers object, block and file system storage.
224
225
226#################################################################################
227# subpackages
228#################################################################################
229%package base
230Summary: Ceph Base Package
231%if 0%{?suse_version}
232Group: System/Filesystems
233%endif
234Requires: ceph-common = %{_epoch_prefix}%{version}-%{release}
235Requires: librbd1 = %{_epoch_prefix}%{version}-%{release}
236Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
237Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release}
238Requires: librgw2 = %{_epoch_prefix}%{version}-%{release}
239%if 0%{with selinux}
240Requires: ceph-selinux = %{_epoch_prefix}%{version}-%{release}
241%endif
242Requires: python
243Requires: python-requests
244Requires: python-setuptools
245Requires: grep
246Requires: xfsprogs
247Requires: logrotate
248Requires: util-linux
249Requires: cryptsetup
250Requires: findutils
251Requires: psmisc
252Requires: which
253%if 0%{?suse_version}
254Recommends: ntp-daemon
255%endif
256%description base
257Base is the package that includes all the files shared amongst ceph servers
258
259%package -n ceph-common
260Summary: Ceph Common
261%if 0%{?suse_version}
262Group: System/Filesystems
263%endif
264Requires: librbd1 = %{_epoch_prefix}%{version}-%{release}
265Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
266Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release}
267Requires: python-rados = %{_epoch_prefix}%{version}-%{release}
268Requires: python-rbd = %{_epoch_prefix}%{version}-%{release}
269Requires: python-cephfs = %{_epoch_prefix}%{version}-%{release}
270Requires: python-rgw = %{_epoch_prefix}%{version}-%{release}
271%if 0%{?fedora} || 0%{?rhel}
272Requires: python-prettytable
273%endif
274%if 0%{?suse_version}
275Requires: python-PrettyTable
276%endif
277Requires: python-requests
278%{?systemd_requires}
279%if 0%{?suse_version}
280Requires(pre): pwdutils
281%endif
282%description -n ceph-common
283Common utilities to mount and interact with a ceph storage cluster.
284Comprised of files that are common to Ceph clients and servers.
285
286%package mds
287Summary: Ceph Metadata Server Daemon
288%if 0%{?suse_version}
289Group: System/Filesystems
290%endif
291Requires: ceph-base = %{_epoch_prefix}%{version}-%{release}
292%description mds
293ceph-mds is the metadata server daemon for the Ceph distributed file system.
294One or more instances of ceph-mds collectively manage the file system
295namespace, coordinating access to the shared OSD cluster.
296
297%package mon
298Summary: Ceph Monitor Daemon
299%if 0%{?suse_version}
300Group: System/Filesystems
301%endif
302Requires: ceph-base = %{_epoch_prefix}%{version}-%{release}
303# For ceph-rest-api
304%if 0%{?fedora} || 0%{?rhel}
305Requires: python-flask
306%endif
307%if 0%{?suse_version}
308Requires: python-Flask
309%endif
310%description mon
311ceph-mon is the cluster monitor daemon for the Ceph distributed file
312system. One or more instances of ceph-mon form a Paxos part-time
313parliament cluster that provides extremely reliable and durable storage
314of cluster membership, configuration, and state.
315
316%package mgr
317Summary: Ceph Manager Daemon
318%if 0%{?suse_version}
319Group: System/Filesystems
320%endif
321Requires: ceph-base = %{_epoch_prefix}%{version}-%{release}
322%if 0%{?fedora} || 0%{?rhel}
323Requires: python-cherrypy
324Requires: python-werkzeug
325Requires: pyOpenSSL
326%endif
327%if 0%{?suse_version}
328Requires: python-CherryPy
329Requires: python-Werkzeug
330Requires: python-pyOpenSSL
331%endif
332Requires: python-pecan
333%description mgr
334ceph-mgr enables python modules that provide services (such as the REST
335module derived from Calamari) and expose CLI hooks. ceph-mgr gathers
336the cluster maps, the daemon metadata, and performance counters, and
337exposes all these to the python modules.
338
339%package fuse
340Summary: Ceph fuse-based client
341%if 0%{?suse_version}
342Group: System/Filesystems
343%endif
344%description fuse
345FUSE based client for Ceph distributed network file system
346
347%package -n rbd-fuse
348Summary: Ceph fuse-based client
349%if 0%{?suse_version}
350Group: System/Filesystems
351%endif
352Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
353Requires: librbd1 = %{_epoch_prefix}%{version}-%{release}
354%description -n rbd-fuse
355FUSE based client to map Ceph rbd images to files
356
357%package -n rbd-mirror
358Summary: Ceph daemon for mirroring RBD images
359%if 0%{?suse_version}
360Group: System/Filesystems
361%endif
362Requires: ceph-common = %{_epoch_prefix}%{version}-%{release}
363Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
364%description -n rbd-mirror
365Daemon for mirroring RBD images between Ceph clusters, streaming
366changes asynchronously.
367
368%package -n rbd-nbd
369Summary: Ceph RBD client base on NBD
370%if 0%{?suse_version}
371Group: System/Filesystems
372%endif
373Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
374Requires: librbd1 = %{_epoch_prefix}%{version}-%{release}
375%description -n rbd-nbd
376NBD based client to map Ceph rbd images to local device
377
378%package radosgw
379Summary: Rados REST gateway
380%if 0%{?suse_version}
381Group: System/Filesystems
382%endif
383Requires: ceph-common = %{_epoch_prefix}%{version}-%{release}
384%if 0%{with selinux}
385Requires: ceph-selinux = %{_epoch_prefix}%{version}-%{release}
386%endif
387Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
388Requires: librgw2 = %{_epoch_prefix}%{version}-%{release}
389%if 0%{?rhel} || 0%{?fedora}
390Requires: mailcap
391%endif
392%description radosgw
393RADOS is a distributed object store used by the Ceph distributed
394storage system. This package provides a REST gateway to the
395object store that aims to implement a superset of Amazon's S3
396service as well as the OpenStack Object Storage ("Swift") API.
397
398%if %{with ocf}
399%package resource-agents
400Summary: OCF-compliant resource agents for Ceph daemons
401%if 0%{?suse_version}
402Group: System/Filesystems
403%endif
404Requires: ceph-base = %{_epoch_prefix}%{version}
405Requires: resource-agents
406%description resource-agents
407Resource agents for monitoring and managing Ceph daemons
408under Open Cluster Framework (OCF) compliant resource
409managers such as Pacemaker.
410%endif
411
412%package osd
413Summary: Ceph Object Storage Daemon
414%if 0%{?suse_version}
415Group: System/Filesystems
416%endif
417Requires: ceph-base = %{_epoch_prefix}%{version}-%{release}
418# for sgdisk, used by ceph-disk
419%if 0%{?fedora} || 0%{?rhel}
420Requires: gdisk
421%endif
422%if 0%{?suse_version}
423Requires: gptfdisk
424%endif
425Requires: parted
426%description osd
427ceph-osd is the object storage daemon for the Ceph distributed file
428system. It is responsible for storing objects on a local file system
429and providing access to them over the network.
430
431%package -n librados2
432Summary: RADOS distributed object store client library
433%if 0%{?suse_version}
434Group: System/Libraries
435%endif
436%if 0%{?rhel} || 0%{?fedora}
437Obsoletes: ceph-libs < %{_epoch_prefix}%{version}-%{release}
438%endif
439%description -n librados2
440RADOS is a reliable, autonomic distributed object storage cluster
441developed as part of the Ceph distributed storage system. This is a
442shared library allowing applications to access the distributed object
443store using a simple file-like interface.
444
445%package -n librados-devel
446Summary: RADOS headers
447%if 0%{?suse_version}
448Group: Development/Libraries/C and C++
449%endif
450Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
451Obsoletes: ceph-devel < %{_epoch_prefix}%{version}-%{release}
452Provides: librados2-devel = %{_epoch_prefix}%{version}-%{release}
453Obsoletes: librados2-devel < %{_epoch_prefix}%{version}-%{release}
454%description -n librados-devel
455This package contains libraries and headers needed to develop programs
456that use RADOS object store.
457
458%package -n librgw2
459Summary: RADOS gateway client library
460%if 0%{?suse_version}
461Group: System/Libraries
462%endif
463Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
464%description -n librgw2
465This package provides a library implementation of the RADOS gateway
466(distributed object store with S3 and Swift personalities).
467
468%package -n librgw-devel
469Summary: RADOS gateway client library
470%if 0%{?suse_version}
471Group: Development/Libraries/C and C++
472%endif
473Requires: librados-devel = %{_epoch_prefix}%{version}-%{release}
474Requires: librgw2 = %{_epoch_prefix}%{version}-%{release}
475Provides: librgw2-devel = %{_epoch_prefix}%{version}-%{release}
476Obsoletes: librgw2-devel < %{_epoch_prefix}%{version}-%{release}
477%description -n librgw-devel
478This package contains libraries and headers needed to develop programs
479that use RADOS gateway client library.
480
481%package -n python-rgw
482Summary: Python 2 libraries for the RADOS gateway
483%if 0%{?suse_version}
484Group: Development/Languages/Python
485%endif
486Requires: librgw2 = %{_epoch_prefix}%{version}-%{release}
487Requires: python-rados = %{_epoch_prefix}%{version}-%{release}
488Obsoletes: python-ceph < %{_epoch_prefix}%{version}-%{release}
489%description -n python-rgw
490This package contains Python 2 libraries for interacting with Cephs RADOS
491gateway.
492
493%package -n python%{python3_pkgversion}-rgw
494Summary: Python 3 libraries for the RADOS gateway
495%if 0%{?suse_version}
496Group: Development/Languages/Python
497%endif
498Requires: librgw2 = %{_epoch_prefix}%{version}-%{release}
499Requires: python%{python3_pkgversion}-rados = %{_epoch_prefix}%{version}-%{release}
500%description -n python%{python3_pkgversion}-rgw
501This package contains Python 3 libraries for interacting with Cephs RADOS
502gateway.
503
504%package -n python-rados
505Summary: Python 2 libraries for the RADOS object store
506%if 0%{?suse_version}
507Group: Development/Languages/Python
508%endif
509Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
510Obsoletes: python-ceph < %{_epoch_prefix}%{version}-%{release}
511%description -n python-rados
512This package contains Python 2 libraries for interacting with Cephs RADOS
513object store.
514
515%package -n python%{python3_pkgversion}-rados
516Summary: Python 3 libraries for the RADOS object store
517%if 0%{?suse_version}
518Group: Development/Languages/Python
519%endif
520Requires: python%{python3_pkgversion}
521Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
522%description -n python%{python3_pkgversion}-rados
523This package contains Python 3 libraries for interacting with Cephs RADOS
524object store.
525
526%package -n libradosstriper1
527Summary: RADOS striping interface
528%if 0%{?suse_version}
529Group: System/Libraries
530%endif
531Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
532%description -n libradosstriper1
533Striping interface built on top of the rados library, allowing
534to stripe bigger objects onto several standard rados objects using
535an interface very similar to the rados one.
536
537%package -n libradosstriper-devel
538Summary: RADOS striping interface headers
539%if 0%{?suse_version}
540Group: Development/Libraries/C and C++
541%endif
542Requires: libradosstriper1 = %{_epoch_prefix}%{version}-%{release}
543Requires: librados-devel = %{_epoch_prefix}%{version}-%{release}
544Obsoletes: ceph-devel < %{_epoch_prefix}%{version}-%{release}
545Provides: libradosstriper1-devel = %{_epoch_prefix}%{version}-%{release}
546Obsoletes: libradosstriper1-devel < %{_epoch_prefix}%{version}-%{release}
547%description -n libradosstriper-devel
548This package contains libraries and headers needed to develop programs
549that use RADOS striping interface.
550
551%package -n librbd1
552Summary: RADOS block device client library
553%if 0%{?suse_version}
554Group: System/Libraries
555%endif
556Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
557%if 0%{?suse_version}
558Requires(post): coreutils
559%endif
560%if 0%{?rhel} || 0%{?fedora}
561Obsoletes: ceph-libs < %{_epoch_prefix}%{version}-%{release}
562%endif
563%description -n librbd1
564RBD is a block device striped across multiple distributed objects in
565RADOS, a reliable, autonomic distributed object storage cluster
566developed as part of the Ceph distributed storage system. This is a
567shared library allowing applications to manage these block devices.
568
569%package -n librbd-devel
570Summary: RADOS block device headers
571%if 0%{?suse_version}
572Group: Development/Libraries/C and C++
573%endif
574Requires: librbd1 = %{_epoch_prefix}%{version}-%{release}
575Requires: librados-devel = %{_epoch_prefix}%{version}-%{release}
576Obsoletes: ceph-devel < %{_epoch_prefix}%{version}-%{release}
577Provides: librbd1-devel = %{_epoch_prefix}%{version}-%{release}
578Obsoletes: librbd1-devel < %{_epoch_prefix}%{version}-%{release}
579%description -n librbd-devel
580This package contains libraries and headers needed to develop programs
581that use RADOS block device.
582
583%package -n python-rbd
584Summary: Python 2 libraries for the RADOS block device
585%if 0%{?suse_version}
586Group: Development/Languages/Python
587%endif
588Requires: librbd1 = %{_epoch_prefix}%{version}-%{release}
589Requires: python-rados = %{_epoch_prefix}%{version}-%{release}
590Obsoletes: python-ceph < %{_epoch_prefix}%{version}-%{release}
591%description -n python-rbd
592This package contains Python 2 libraries for interacting with Cephs RADOS
593block device.
594
595%package -n python%{python3_pkgversion}-rbd
596Summary: Python 3 libraries for the RADOS block device
597%if 0%{?suse_version}
598Group: Development/Languages/Python
599%endif
600Requires: librbd1 = %{_epoch_prefix}%{version}-%{release}
601Requires: python%{python3_pkgversion}-rados = %{_epoch_prefix}%{version}-%{release}
602%description -n python%{python3_pkgversion}-rbd
603This package contains Python 3 libraries for interacting with Cephs RADOS
604block device.
605
606%package -n libcephfs2
607Summary: Ceph distributed file system client library
608%if 0%{?suse_version}
609Group: System/Libraries
610%endif
611Obsoletes: libcephfs1
612%if 0%{?rhel} || 0%{?fedora}
613Obsoletes: ceph-libs < %{_epoch_prefix}%{version}-%{release}
614Obsoletes: ceph-libcephfs
615%endif
616%description -n libcephfs2
617Ceph is a distributed network file system designed to provide excellent
618performance, reliability, and scalability. This is a shared library
619allowing applications to access a Ceph distributed file system via a
620POSIX-like interface.
621
622%package -n libcephfs-devel
623Summary: Ceph distributed file system headers
624%if 0%{?suse_version}
625Group: Development/Libraries/C and C++
626%endif
627Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release}
628Requires: librados-devel = %{_epoch_prefix}%{version}-%{release}
629Obsoletes: ceph-devel < %{_epoch_prefix}%{version}-%{release}
630Provides: libcephfs2-devel = %{_epoch_prefix}%{version}-%{release}
631Obsoletes: libcephfs2-devel < %{_epoch_prefix}%{version}-%{release}
632%description -n libcephfs-devel
633This package contains libraries and headers needed to develop programs
634that use Cephs distributed file system.
635
636%package -n python-cephfs
637Summary: Python 2 libraries for Ceph distributed file system
638%if 0%{?suse_version}
639Group: Development/Languages/Python
640%endif
641Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release}
642%if 0%{?suse_version}
643Recommends: python-rados = %{_epoch_prefix}%{version}-%{release}
644%endif
645Obsoletes: python-ceph < %{_epoch_prefix}%{version}-%{release}
646%description -n python-cephfs
647This package contains Python 2 libraries for interacting with Cephs distributed
648file system.
649
650%package -n python%{python3_pkgversion}-cephfs
651Summary: Python 3 libraries for Ceph distributed file system
652%if 0%{?suse_version}
653Group: Development/Languages/Python
654%endif
655Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release}
656Requires: python%{python3_pkgversion}-rados = %{_epoch_prefix}%{version}-%{release}
657%description -n python%{python3_pkgversion}-cephfs
658This package contains Python 3 libraries for interacting with Cephs distributed
659file system.
660
661%package -n python%{python3_pkgversion}-ceph-argparse
662Summary: Python 3 utility libraries for Ceph CLI
663%if 0%{?suse_version}
664Group: Development/Languages/Python
665%endif
666%description -n python%{python3_pkgversion}-ceph-argparse
667This package contains types and routines for Python 3 used by the Ceph CLI as
668well as the RESTful interface. These have to do with querying the daemons for
669command-description information, validating user command input against those
670descriptions, and submitting the command to the appropriate daemon.
671
672%if 0%{with ceph_test_package}
673%package -n ceph-test
674Summary: Ceph benchmarks and test tools
675%if 0%{?suse_version}
676Group: System/Benchmark
677%endif
678Requires: ceph-common
679Requires: xmlstarlet
680Requires: jq
681Requires: socat
682%description -n ceph-test
683This package contains Ceph benchmarks and test tools.
684%endif
685
686%if 0%{with cephfs_java}
687
688%package -n libcephfs_jni1
689Summary: Java Native Interface library for CephFS Java bindings
690%if 0%{?suse_version}
691Group: System/Libraries
692%endif
693Requires: java
694Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release}
695%description -n libcephfs_jni1
696This package contains the Java Native Interface library for CephFS Java
697bindings.
698
699%package -n libcephfs_jni-devel
700Summary: Development files for CephFS Java Native Interface library
701%if 0%{?suse_version}
702Group: Development/Libraries/Java
703%endif
704Requires: java
705Requires: libcephfs_jni1 = %{_epoch_prefix}%{version}-%{release}
706Obsoletes: ceph-devel < %{_epoch_prefix}%{version}-%{release}
707Provides: libcephfs_jni1-devel = %{_epoch_prefix}%{version}-%{release}
708Obsoletes: libcephfs_jni1-devel < %{_epoch_prefix}%{version}-%{release}
709%description -n libcephfs_jni-devel
710This package contains the development files for CephFS Java Native Interface
711library.
712
713%package -n cephfs-java
714Summary: Java libraries for the Ceph File System
715%if 0%{?suse_version}
716Group: System/Libraries
717%endif
718Requires: java
719Requires: libcephfs_jni1 = %{_epoch_prefix}%{version}-%{release}
720Requires: junit
721BuildRequires: junit
722%description -n cephfs-java
723This package contains the Java libraries for the Ceph File System.
724
725%endif
726
727%package -n rados-objclass-devel
728Summary: RADOS object class development kit
729Group: Development/Libraries
730Requires: librados2-devel = %{_epoch_prefix}%{version}-%{release}
731%description -n rados-objclass-devel
732This package contains libraries and headers needed to develop RADOS object
733class plugins.
734
735%if 0%{with selinux}
736
737%package selinux
738Summary: SELinux support for Ceph MON, OSD and MDS
739%if 0%{?suse_version}
740Group: System/Filesystems
741%endif
742Requires: ceph-base = %{_epoch_prefix}%{version}-%{release}
743Requires: policycoreutils, libselinux-utils
744Requires(post): ceph-base = %{_epoch_prefix}%{version}-%{release}
745Requires(post): selinux-policy-base >= %{_selinux_policy_version}, policycoreutils, gawk
746Requires(postun): policycoreutils
747%description selinux
748This package contains SELinux support for Ceph MON, OSD and MDS. The package
749also performs file-system relabelling which can take a long time on heavily
750populated file-systems.
751
752%endif
753
754%package -n python-ceph-compat
755Summary: Compatibility package for Cephs python libraries
756%if 0%{?suse_version}
757Group: Development/Languages/Python
758%endif
759Obsoletes: python-ceph
760Requires: python-rados = %{_epoch_prefix}%{version}-%{release}
761Requires: python-rbd = %{_epoch_prefix}%{version}-%{release}
762Requires: python-cephfs = %{_epoch_prefix}%{version}-%{release}
763Requires: python-rgw = %{_epoch_prefix}%{version}-%{release}
764Provides: python-ceph
765%description -n python-ceph-compat
766This is a compatibility package to accommodate python-ceph split into
767python-rados, python-rbd, python-rgw and python-cephfs. Packages still
768depending on python-ceph should be fixed to depend on python-rados,
769python-rbd, python-rgw or python-cephfs instead.
770
771#################################################################################
772# common
773#################################################################################
774%prep
775%autosetup -p1 -n @TARBALL_BASENAME@
776
777%build
778%if 0%{with cephfs_java}
779# Find jni.h
780for i in /usr/{lib64,lib}/jvm/java/include{,/linux}; do
781 [ -d $i ] && java_inc="$java_inc -I$i"
782done
783%endif
784
785%if %{with lowmem_builder}
786RPM_OPT_FLAGS="$RPM_OPT_FLAGS --param ggc-min-expand=20 --param ggc-min-heapsize=32768"
787%endif
788export RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS | sed -e 's/i386/i486/'`
789
790export CPPFLAGS="$java_inc"
791export CFLAGS="$RPM_OPT_FLAGS"
792export CXXFLAGS="$RPM_OPT_FLAGS"
793
794env | sort
795
796%if %{with lowmem_builder}
797%if 0%{?jobs} > 8
798%define _smp_mflags -j8
799%endif
800%endif
801
802# unlimit _smp_mflags in system macro if not set above
803%define _smp_ncpus_max 0
804# extract the number of processors for use with cmake
805%define _smp_ncpus %(echo %{_smp_mflags} | sed 's/-j//')
806
807mkdir build
808cd build
809cmake .. \
810 -DCMAKE_INSTALL_PREFIX=%{_prefix} \
811 -DCMAKE_INSTALL_LIBDIR=%{_libdir} \
812 -DCMAKE_INSTALL_LIBEXECDIR=%{_libexecdir} \
813 -DCMAKE_INSTALL_LOCALSTATEDIR=%{_localstatedir} \
814 -DCMAKE_INSTALL_SYSCONFDIR=%{_sysconfdir} \
815 -DCMAKE_INSTALL_MANDIR=%{_mandir} \
816 -DCMAKE_INSTALL_DOCDIR=%{_docdir}/ceph \
817 -DCMAKE_INSTALL_INCLUDEDIR=%{_includedir} \
818 -DWITH_EMBEDDED=OFF \
819 -DWITH_MANPAGE=ON \
820 -DWITH_PYTHON3=ON \
821 -DWITH_SYSTEMD=ON \
822%if 0%{?rhel} && ! 0%{?centos}
823 -DWITH_SUBMAN=ON \
824%endif
825%if 0%{without ceph_test_package}
826 -DWITH_TESTS=OFF \
827%endif
828%if 0%{with cephfs_java}
829 -DWITH_CEPHFS_JAVA=ON \
830%endif
831%if 0%{with selinux}
832 -DWITH_SELINUX=ON \
833%endif
834%if %{with lttng}
835 -DWITH_LTTNG=ON \
836 -DWITH_BABELTRACE=ON \
837%else
838 -DWITH_LTTNG=OFF \
839 -DWITH_BABELTRACE=OFF \
840%endif
841 $CEPH_EXTRA_CMAKE_ARGS \
842%if 0%{with ocf}
843 -DWITH_OCF=ON \
844%endif
845%ifarch aarch64 armv7hl mips mipsel ppc ppc64 ppc64le %{ix86} x86_64
846 -DWITH_RADOSGW_BEAST_FRONTEND=ON \
847%else
848 -DWITH_RADOSGW_BEAST_FRONTEND=OFF \
849%endif
850 -DBOOST_J=%{_smp_ncpus}
851
852make %{?_smp_mflags}
853
854
855%if 0%{with make_check}
856%check
857# run in-tree unittests
858cd build
859ctest %{?_smp_mflags}
860
861%endif
862
863
864
865%install
866pushd build
867make DESTDIR=%{buildroot} install
868# we have dropped sysvinit bits
869rm -f %{buildroot}/%{_sysconfdir}/init.d/ceph
870popd
871install -m 0644 -D src/etc-rbdmap %{buildroot}%{_sysconfdir}/ceph/rbdmap
872%if 0%{?fedora} || 0%{?rhel}
873install -m 0644 -D etc/sysconfig/ceph %{buildroot}%{_sysconfdir}/sysconfig/ceph
874%endif
875%if 0%{?suse_version}
876install -m 0644 -D etc/sysconfig/ceph %{buildroot}%{_localstatedir}/adm/fillup-templates/sysconfig.%{name}
877%endif
878install -m 0644 -D systemd/ceph.tmpfiles.d %{buildroot}%{_tmpfilesdir}/ceph-common.conf
879install -m 0755 -D systemd/ceph %{buildroot}%{_sbindir}/rcceph
880install -m 0644 -D systemd/50-ceph.preset %{buildroot}%{_libexecdir}/systemd/system-preset/50-ceph.preset
881mkdir -p %{buildroot}%{_sbindir}
882install -m 0644 -D src/logrotate.conf %{buildroot}%{_sysconfdir}/logrotate.d/ceph
883chmod 0644 %{buildroot}%{_docdir}/ceph/sample.ceph.conf
884install -m 0644 -D COPYING %{buildroot}%{_docdir}/ceph/COPYING
885
886# firewall templates and /sbin/mount.ceph symlink
887%if 0%{?suse_version}
888install -m 0644 -D etc/sysconfig/SuSEfirewall2.d/services/ceph-mon %{buildroot}%{_sysconfdir}/sysconfig/SuSEfirewall2.d/services/ceph-mon
889install -m 0644 -D etc/sysconfig/SuSEfirewall2.d/services/ceph-osd-mds %{buildroot}%{_sysconfdir}/sysconfig/SuSEfirewall2.d/services/ceph-osd-mds
890mkdir -p %{buildroot}/sbin
891ln -sf %{_sbindir}/mount.ceph %{buildroot}/sbin/mount.ceph
892%endif
893
894# udev rules
895install -m 0644 -D udev/50-rbd.rules %{buildroot}%{_udevrulesdir}/50-rbd.rules
896install -m 0644 -D udev/60-ceph-by-parttypeuuid.rules %{buildroot}%{_udevrulesdir}/60-ceph-by-parttypeuuid.rules
897install -m 0644 -D udev/95-ceph-osd.rules %{buildroot}%{_udevrulesdir}/95-ceph-osd.rules
898
899#set up placeholder directories
900mkdir -p %{buildroot}%{_sysconfdir}/ceph
901mkdir -p %{buildroot}%{_localstatedir}/run/ceph
902mkdir -p %{buildroot}%{_localstatedir}/log/ceph
903mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/tmp
904mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/mon
905mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/osd
906mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/mds
907mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/mgr
908mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/radosgw
909mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/bootstrap-osd
910mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/bootstrap-mds
911mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/bootstrap-rgw
912mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/bootstrap-mgr
913mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/bootstrap-rbd
914
915%if 0%{?suse_version}
916# create __pycache__ directories and their contents
917%py3_compile %{buildroot}%{python3_sitelib}
918%endif
919
920%clean
921rm -rf %{buildroot}
922
923#################################################################################
924# files and systemd scriptlets
925#################################################################################
926%files
927
928%files base
929%{_bindir}/crushtool
930%{_bindir}/monmaptool
931%{_bindir}/osdmaptool
932%{_bindir}/ceph-run
933%{_bindir}/ceph-detect-init
934%{_libexecdir}/systemd/system-preset/50-ceph.preset
935%{_sbindir}/ceph-create-keys
936%{_sbindir}/ceph-disk
937%{_sbindir}/ceph-volume
938%{_sbindir}/ceph-volume-systemd
939%{_sbindir}/rcceph
940%dir %{_libexecdir}/ceph
941%{_libexecdir}/ceph/ceph_common.sh
942%dir %{_libdir}/rados-classes
943%{_libdir}/rados-classes/*
944%dir %{_libdir}/ceph
945%dir %{_libdir}/ceph/erasure-code
946%{_libdir}/ceph/erasure-code/libec_*.so*
947%dir %{_libdir}/ceph/compressor
948%{_libdir}/ceph/compressor/libceph_*.so*
949%ifarch x86_64
950%dir %{_libdir}/ceph/crypto
951%{_libdir}/ceph/crypto/libceph_*.so*
952%endif
953%if %{with lttng}
954%{_libdir}/libos_tp.so*
955%{_libdir}/libosd_tp.so*
956%endif
957%config(noreplace) %{_sysconfdir}/logrotate.d/ceph
958%if 0%{?fedora} || 0%{?rhel}
959%config(noreplace) %{_sysconfdir}/sysconfig/ceph
960%endif
961%if 0%{?suse_version}
962%{_localstatedir}/adm/fillup-templates/sysconfig.*
963%config %{_sysconfdir}/sysconfig/SuSEfirewall2.d/services/ceph-mon
964%config %{_sysconfdir}/sysconfig/SuSEfirewall2.d/services/ceph-osd-mds
965%endif
966%{_unitdir}/ceph-disk@.service
967%{_unitdir}/ceph-volume@.service
968%{_unitdir}/ceph.target
969%{python_sitelib}/ceph_detect_init*
970%{python_sitelib}/ceph_disk*
971%dir %{python_sitelib}/ceph_volume
972%{python_sitelib}/ceph_volume/*
973%{python_sitelib}/ceph_volume-*
974%{_mandir}/man8/ceph-deploy.8*
975%{_mandir}/man8/ceph-detect-init.8*
976%{_mandir}/man8/ceph-create-keys.8*
977%{_mandir}/man8/ceph-disk.8*
978%{_mandir}/man8/ceph-run.8*
979%{_mandir}/man8/crushtool.8*
980%{_mandir}/man8/osdmaptool.8*
981%{_mandir}/man8/monmaptool.8*
982#set up placeholder directories
983%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/tmp
984%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/bootstrap-osd
985%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/bootstrap-mds
986%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/bootstrap-rgw
987%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/bootstrap-mgr
988%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/bootstrap-rbd
989
990%post base
991/sbin/ldconfig
992%if 0%{?suse_version}
993%fillup_only
994if [ $1 -eq 1 ] ; then
995 /usr/bin/systemctl preset ceph-disk@\*.service ceph.target >/dev/null 2>&1 || :
996fi
997%endif
998%if 0%{?fedora} || 0%{?rhel}
999%systemd_post ceph-disk@\*.service ceph.target
1000%systemd_post ceph-volume@\*.service ceph.target
1001%endif
1002if [ $1 -eq 1 ] ; then
1003/usr/bin/systemctl start ceph.target >/dev/null 2>&1 || :
1004fi
1005
1006%preun base
1007%if 0%{?suse_version}
1008%service_del_preun ceph-disk@\*.service ceph.target
1009%endif
1010%if 0%{?fedora} || 0%{?rhel}
1011%systemd_preun ceph-disk@\*.service ceph.target
1012%systemd_preun ceph-volume@\*.service ceph.target
1013%endif
1014
1015%postun base
1016/sbin/ldconfig
1017test -n "$FIRST_ARG" || FIRST_ARG=$1
1018%if 0%{?suse_version}
1019DISABLE_RESTART_ON_UPDATE="yes"
1020%service_del_postun ceph-disk@\*.service ceph.target
1021%endif
1022%if 0%{?fedora} || 0%{?rhel}
1023%systemd_postun ceph-disk@\*.service ceph.target
1024%endif
1025if [ $FIRST_ARG -ge 1 ] ; then
1026 # Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to
1027 # "yes". In any case: if units are not running, do not touch them.
1028 SYSCONF_CEPH=%{_sysconfdir}/sysconfig/ceph
1029 if [ -f $SYSCONF_CEPH -a -r $SYSCONF_CEPH ] ; then
1030 source $SYSCONF_CEPH
1031 fi
1032 if [ "X$CEPH_AUTO_RESTART_ON_UPGRADE" = "Xyes" ] ; then
1033 /usr/bin/systemctl try-restart ceph-disk@\*.service ceph-volume@\*.service > /dev/null 2>&1 || :
1034 fi
1035fi
1036
1037%files common
1038%dir %{_docdir}/ceph
1039%doc %{_docdir}/ceph/sample.ceph.conf
1040%doc %{_docdir}/ceph/COPYING
1041%{_bindir}/ceph
1042%{_bindir}/ceph-authtool
1043%{_bindir}/ceph-conf
1044%{_bindir}/ceph-dencoder
1045%{_bindir}/ceph-rbdnamer
1046%{_bindir}/ceph-syn
1047%{_bindir}/ceph-crush-location
1048%{_bindir}/cephfs-data-scan
1049%{_bindir}/cephfs-journal-tool
1050%{_bindir}/cephfs-table-tool
1051%{_bindir}/rados
1052%{_bindir}/radosgw-admin
1053%{_bindir}/rbd
1054%{_bindir}/rbd-replay
1055%{_bindir}/rbd-replay-many
1056%{_bindir}/rbdmap
1057%{_sbindir}/mount.ceph
1058%if 0%{?suse_version}
1059/sbin/mount.ceph
1060%endif
1061%if %{with lttng}
1062%{_bindir}/rbd-replay-prep
1063%endif
1064%{_bindir}/ceph-post-file
1065%{_bindir}/ceph-brag
1066%{_tmpfilesdir}/ceph-common.conf
1067%{_mandir}/man8/ceph-authtool.8*
1068%{_mandir}/man8/ceph-conf.8*
1069%{_mandir}/man8/ceph-dencoder.8*
1070%{_mandir}/man8/ceph-rbdnamer.8*
1071%{_mandir}/man8/ceph-syn.8*
1072%{_mandir}/man8/ceph-post-file.8*
1073%{_mandir}/man8/ceph.8*
1074%{_mandir}/man8/mount.ceph.8*
1075%{_mandir}/man8/rados.8*
1076%{_mandir}/man8/radosgw-admin.8*
1077%{_mandir}/man8/rbd.8*
1078%{_mandir}/man8/rbdmap.8*
1079%{_mandir}/man8/rbd-replay.8*
1080%{_mandir}/man8/rbd-replay-many.8*
1081%{_mandir}/man8/rbd-replay-prep.8*
1082%dir %{_datadir}/ceph/
1083%{_datadir}/ceph/known_hosts_drop.ceph.com
1084%{_datadir}/ceph/id_rsa_drop.ceph.com
1085%{_datadir}/ceph/id_rsa_drop.ceph.com.pub
1086%dir %{_sysconfdir}/ceph/
1087%config %{_sysconfdir}/bash_completion.d/ceph
1088%config %{_sysconfdir}/bash_completion.d/rados
1089%config %{_sysconfdir}/bash_completion.d/rbd
1090%config %{_sysconfdir}/bash_completion.d/radosgw-admin
1091%config(noreplace) %{_sysconfdir}/ceph/rbdmap
1092%{_unitdir}/rbdmap.service
1093%{python_sitelib}/ceph_argparse.py*
1094%{python_sitelib}/ceph_daemon.py*
1095%dir %{_udevrulesdir}
1096%{_udevrulesdir}/50-rbd.rules
1097%attr(3770,ceph,ceph) %dir %{_localstatedir}/log/ceph/
1098%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/
1099
1100%pre common
1101CEPH_GROUP_ID=167
1102CEPH_USER_ID=167
1103%if 0%{?rhel} || 0%{?fedora}
1104/usr/sbin/groupadd ceph -g $CEPH_GROUP_ID -o -r 2>/dev/null || :
1105/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 || :
1106%endif
1107%if 0%{?suse_version}
1108if ! getent group ceph >/dev/null ; then
1109 CEPH_GROUP_ID_OPTION=""
1110 getent group $CEPH_GROUP_ID >/dev/null || CEPH_GROUP_ID_OPTION="-g $CEPH_GROUP_ID"
1111 groupadd ceph $CEPH_GROUP_ID_OPTION -r 2>/dev/null || :
1112fi
1113if ! getent passwd ceph >/dev/null ; then
1114 CEPH_USER_ID_OPTION=""
1115 getent passwd $CEPH_USER_ID >/dev/null || CEPH_USER_ID_OPTION="-u $CEPH_USER_ID"
1116 useradd ceph $CEPH_USER_ID_OPTION -r -g ceph -s /sbin/nologin 2>/dev/null || :
1117fi
1118usermod -c "Ceph storage service" \
1119 -d %{_localstatedir}/lib/ceph \
1120 -g ceph \
1121 -s /sbin/nologin \
1122 ceph
1123%endif
1124exit 0
1125
1126%post common
1127%tmpfiles_create %{_tmpfilesdir}/ceph-common.conf
1128
1129%postun common
1130# Package removal cleanup
1131if [ "$1" -eq "0" ] ; then
1132 rm -rf %{_localstatedir}/log/ceph
1133 rm -rf %{_sysconfdir}/ceph
1134fi
1135
1136%files mds
1137%{_bindir}/ceph-mds
1138%{_mandir}/man8/ceph-mds.8*
1139%{_unitdir}/ceph-mds@.service
1140%{_unitdir}/ceph-mds.target
1141%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/mds
1142
1143%post mds
1144%if 0%{?suse_version}
1145if [ $1 -eq 1 ] ; then
1146 /usr/bin/systemctl preset ceph-mds@\*.service ceph-mds.target >/dev/null 2>&1 || :
1147fi
1148%endif
1149%if 0%{?fedora} || 0%{?rhel}
1150%systemd_post ceph-mds@\*.service ceph-mds.target
1151%endif
1152if [ $1 -eq 1 ] ; then
1153/usr/bin/systemctl start ceph-mds.target >/dev/null 2>&1 || :
1154fi
1155
1156%preun mds
1157%if 0%{?suse_version}
1158%service_del_preun ceph-mds@\*.service ceph-mds.target
1159%endif
1160%if 0%{?fedora} || 0%{?rhel}
1161%systemd_preun ceph-mds@\*.service ceph-mds.target
1162%endif
1163
1164%postun mds
1165test -n "$FIRST_ARG" || FIRST_ARG=$1
1166%if 0%{?suse_version}
1167DISABLE_RESTART_ON_UPDATE="yes"
1168%service_del_postun ceph-mds@\*.service ceph-mds.target
1169%endif
1170%if 0%{?fedora} || 0%{?rhel}
1171%systemd_postun ceph-mds@\*.service ceph-mds.target
1172%endif
1173if [ $FIRST_ARG -ge 1 ] ; then
1174 # Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to
1175 # "yes". In any case: if units are not running, do not touch them.
1176 SYSCONF_CEPH=%{_sysconfdir}/sysconfig/ceph
1177 if [ -f $SYSCONF_CEPH -a -r $SYSCONF_CEPH ] ; then
1178 source $SYSCONF_CEPH
1179 fi
1180 if [ "X$CEPH_AUTO_RESTART_ON_UPGRADE" = "Xyes" ] ; then
1181 /usr/bin/systemctl try-restart ceph-mds@\*.service > /dev/null 2>&1 || :
1182 fi
1183fi
1184
1185%files mgr
1186%{_bindir}/ceph-mgr
1187%{_libdir}/ceph/mgr
1188%{_unitdir}/ceph-mgr@.service
1189%{_unitdir}/ceph-mgr.target
1190%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/mgr
1191
1192%post mgr
1193%if 0%{?suse_version}
1194if [ $1 -eq 1 ] ; then
1195 /usr/bin/systemctl preset ceph-mgr@\*.service ceph-mgr.target >/dev/null 2>&1 || :
1196fi
1197%endif
1198%if 0%{?fedora} || 0%{?rhel}
1199%systemd_post ceph-mgr@\*.service ceph-mgr.target
1200%endif
1201if [ $1 -eq 1 ] ; then
1202/usr/bin/systemctl start ceph-mgr.target >/dev/null 2>&1 || :
1203fi
1204
1205%preun mgr
1206%if 0%{?suse_version}
1207%service_del_preun ceph-mgr@\*.service ceph-mgr.target
1208%endif
1209%if 0%{?fedora} || 0%{?rhel}
1210%systemd_preun ceph-mgr@\*.service ceph-mgr.target
1211%endif
1212
1213%postun mgr
1214test -n "$FIRST_ARG" || FIRST_ARG=$1
1215%if 0%{?suse_version}
1216DISABLE_RESTART_ON_UPDATE="yes"
1217%service_del_postun ceph-mgr@\*.service ceph-mgr.target
1218%endif
1219%if 0%{?fedora} || 0%{?rhel}
1220%systemd_postun ceph-mgr@\*.service ceph-mgr.target
1221%endif
1222if [ $FIRST_ARG -ge 1 ] ; then
1223 # Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to
1224 # "yes". In any case: if units are not running, do not touch them.
1225 SYSCONF_CEPH=%{_sysconfdir}/sysconfig/ceph
1226 if [ -f $SYSCONF_CEPH -a -r $SYSCONF_CEPH ] ; then
1227 source $SYSCONF_CEPH
1228 fi
1229 if [ "X$CEPH_AUTO_RESTART_ON_UPGRADE" = "Xyes" ] ; then
1230 /usr/bin/systemctl try-restart ceph-mgr@\*.service > /dev/null 2>&1 || :
1231 fi
1232fi
1233
1234%files mon
1235%{_bindir}/ceph-mon
1236%{_bindir}/ceph-rest-api
1237%{_mandir}/man8/ceph-mon.8*
1238%{_mandir}/man8/ceph-rest-api.8*
1239%{python_sitelib}/ceph_rest_api.py*
1240%{_unitdir}/ceph-mon@.service
1241%{_unitdir}/ceph-mon.target
1242%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/mon
1243
1244%post mon
1245%if 0%{?suse_version}
1246if [ $1 -eq 1 ] ; then
1247 /usr/bin/systemctl preset ceph-mon@\*.service ceph-mon.target >/dev/null 2>&1 || :
1248fi
1249%endif
1250%if 0%{?fedora} || 0%{?rhel}
1251%systemd_post ceph-mon@\*.service ceph-mon.target
1252%endif
1253if [ $1 -eq 1 ] ; then
1254/usr/bin/systemctl start ceph-mon.target >/dev/null 2>&1 || :
1255fi
1256
1257%preun mon
1258%if 0%{?suse_version}
1259%service_del_preun ceph-mon@\*.service ceph-mon.target
1260%endif
1261%if 0%{?fedora} || 0%{?rhel}
1262%systemd_preun ceph-mon@\*.service ceph-mon.target
1263%endif
1264
1265%postun mon
1266test -n "$FIRST_ARG" || FIRST_ARG=$1
1267%if 0%{?suse_version}
1268DISABLE_RESTART_ON_UPDATE="yes"
1269%service_del_postun ceph-mon@\*.service ceph-mon.target
1270%endif
1271%if 0%{?fedora} || 0%{?rhel}
1272%systemd_postun ceph-mon@\*.service ceph-mon.target
1273%endif
1274if [ $FIRST_ARG -ge 1 ] ; then
1275 # Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to
1276 # "yes". In any case: if units are not running, do not touch them.
1277 SYSCONF_CEPH=%{_sysconfdir}/sysconfig/ceph
1278 if [ -f $SYSCONF_CEPH -a -r $SYSCONF_CEPH ] ; then
1279 source $SYSCONF_CEPH
1280 fi
1281 if [ "X$CEPH_AUTO_RESTART_ON_UPGRADE" = "Xyes" ] ; then
1282 /usr/bin/systemctl try-restart ceph-mon@\*.service > /dev/null 2>&1 || :
1283 fi
1284fi
1285
1286%files fuse
1287%{_bindir}/ceph-fuse
1288%{_mandir}/man8/ceph-fuse.8*
1289%{_sbindir}/mount.fuse.ceph
1290%{_unitdir}/ceph-fuse@.service
1291%{_unitdir}/ceph-fuse.target
1292
1293%files -n rbd-fuse
1294%{_bindir}/rbd-fuse
1295%{_mandir}/man8/rbd-fuse.8*
1296
1297%files -n rbd-mirror
1298%{_bindir}/rbd-mirror
1299%{_mandir}/man8/rbd-mirror.8*
1300%{_unitdir}/ceph-rbd-mirror@.service
1301%{_unitdir}/ceph-rbd-mirror.target
1302
1303%post -n rbd-mirror
1304%if 0%{?suse_version}
1305if [ $1 -eq 1 ] ; then
1306 /usr/bin/systemctl preset ceph-rbd-mirror@\*.service ceph-rbd-mirror.target >/dev/null 2>&1 || :
1307fi
1308%endif
1309%if 0%{?fedora} || 0%{?rhel}
1310%systemd_post ceph-rbd-mirror@\*.service ceph-rbd-mirror.target
1311%endif
1312if [ $1 -eq 1 ] ; then
1313/usr/bin/systemctl start ceph-rbd-mirror.target >/dev/null 2>&1 || :
1314fi
1315
1316%preun -n rbd-mirror
1317%if 0%{?suse_version}
1318%service_del_preun ceph-rbd-mirror@\*.service ceph-rbd-mirror.target
1319%endif
1320%if 0%{?fedora} || 0%{?rhel}
1321%systemd_preun ceph-rbd-mirror@\*.service ceph-rbd-mirror.target
1322%endif
1323
1324%postun -n rbd-mirror
1325test -n "$FIRST_ARG" || FIRST_ARG=$1
1326%if 0%{?suse_version}
1327DISABLE_RESTART_ON_UPDATE="yes"
1328%service_del_postun ceph-rbd-mirror@\*.service ceph-rbd-mirror.target
1329%endif
1330%if 0%{?fedora} || 0%{?rhel}
1331%systemd_postun ceph-rbd-mirror@\*.service ceph-rbd-mirror.target
1332%endif
1333if [ $FIRST_ARG -ge 1 ] ; then
1334 # Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to
1335 # "yes". In any case: if units are not running, do not touch them.
1336 SYSCONF_CEPH=%{_sysconfdir}/sysconfig/ceph
1337 if [ -f $SYSCONF_CEPH -a -r $SYSCONF_CEPH ] ; then
1338 source $SYSCONF_CEPH
1339 fi
1340 if [ "X$CEPH_AUTO_RESTART_ON_UPGRADE" = "Xyes" ] ; then
1341 /usr/bin/systemctl try-restart ceph-rbd-mirror@\*.service > /dev/null 2>&1 || :
1342 fi
1343fi
1344
1345%files -n rbd-nbd
1346%{_bindir}/rbd-nbd
1347%{_mandir}/man8/rbd-nbd.8*
1348
1349%files radosgw
1350%{_bindir}/radosgw
1351%{_bindir}/radosgw-token
1352%{_bindir}/radosgw-es
1353%{_bindir}/radosgw-object-expirer
1354%{_mandir}/man8/radosgw.8*
1355%dir %{_localstatedir}/lib/ceph/radosgw
1356%{_unitdir}/ceph-radosgw@.service
1357%{_unitdir}/ceph-radosgw.target
1358
1359%post radosgw
1360%if 0%{?suse_version}
1361if [ $1 -eq 1 ] ; then
1362 /usr/bin/systemctl preset ceph-radosgw@\*.service ceph-radosgw.target >/dev/null 2>&1 || :
1363fi
1364%endif
1365%if 0%{?fedora} || 0%{?rhel}
1366%systemd_post ceph-radosgw@\*.service ceph-radosgw.target
1367%endif
1368if [ $1 -eq 1 ] ; then
1369/usr/bin/systemctl start ceph-radosgw.target >/dev/null 2>&1 || :
1370fi
1371
1372%preun radosgw
1373%if 0%{?suse_version}
1374%service_del_preun ceph-radosgw@\*.service ceph-radosgw.target
1375%endif
1376%if 0%{?fedora} || 0%{?rhel}
1377%systemd_preun ceph-radosgw@\*.service ceph-radosgw.target
1378%endif
1379
1380%postun radosgw
1381test -n "$FIRST_ARG" || FIRST_ARG=$1
1382%if 0%{?suse_version}
1383DISABLE_RESTART_ON_UPDATE="yes"
1384%service_del_postun ceph-radosgw@\*.service ceph-radosgw.target
1385%endif
1386%if 0%{?fedora} || 0%{?rhel}
1387%systemd_postun ceph-radosgw@\*.service ceph-radosgw.target
1388%endif
1389if [ $FIRST_ARG -ge 1 ] ; then
1390 # Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to
1391 # "yes". In any case: if units are not running, do not touch them.
1392 SYSCONF_CEPH=%{_sysconfdir}/sysconfig/ceph
1393 if [ -f $SYSCONF_CEPH -a -r $SYSCONF_CEPH ] ; then
1394 source $SYSCONF_CEPH
1395 fi
1396 if [ "X$CEPH_AUTO_RESTART_ON_UPGRADE" = "Xyes" ] ; then
1397 /usr/bin/systemctl try-restart ceph-radosgw@\*.service > /dev/null 2>&1 || :
1398 fi
1399fi
1400
1401%files osd
1402%{_bindir}/ceph-clsinfo
1403%{_bindir}/ceph-bluestore-tool
1404%{_bindir}/ceph-objectstore-tool
1405%{_bindir}/ceph-osd
1406%{_libexecdir}/ceph/ceph-osd-prestart.sh
1407%dir %{_udevrulesdir}
1408%{_udevrulesdir}/60-ceph-by-parttypeuuid.rules
1409%{_udevrulesdir}/95-ceph-osd.rules
1410%{_mandir}/man8/ceph-clsinfo.8*
1411%{_mandir}/man8/ceph-osd.8*
1412%if 0%{?rhel} && ! 0%{?centos}
1413%attr(0755,-,-) %{_sysconfdir}/cron.hourly/subman
1414%endif
1415%{_unitdir}/ceph-osd@.service
1416%{_unitdir}/ceph-osd.target
1417%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/osd
1418
1419%post osd
1420%if 0%{?suse_version}
1421if [ $1 -eq 1 ] ; then
1422 /usr/bin/systemctl preset ceph-osd@\*.service ceph-osd.target >/dev/null 2>&1 || :
1423fi
1424%endif
1425%if 0%{?fedora} || 0%{?rhel}
1426%systemd_post ceph-osd@\*.service ceph-osd.target
1427%endif
1428if [ $1 -eq 1 ] ; then
1429/usr/bin/systemctl start ceph-osd.target >/dev/null 2>&1 || :
1430fi
1431
1432%preun osd
1433%if 0%{?suse_version}
1434%service_del_preun ceph-osd@\*.service ceph-osd.target
1435%endif
1436%if 0%{?fedora} || 0%{?rhel}
1437%systemd_preun ceph-osd@\*.service ceph-osd.target
1438%endif
1439
1440%postun osd
1441test -n "$FIRST_ARG" || FIRST_ARG=$1
1442%if 0%{?suse_version}
1443DISABLE_RESTART_ON_UPDATE="yes"
1444%service_del_postun ceph-osd@\*.service ceph-osd.target
1445%endif
1446%if 0%{?fedora} || 0%{?rhel}
1447%systemd_postun ceph-osd@\*.service ceph-osd.target
1448%endif
1449if [ $FIRST_ARG -ge 1 ] ; then
1450 # Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to
1451 # "yes". In any case: if units are not running, do not touch them.
1452 SYSCONF_CEPH=%{_sysconfdir}/sysconfig/ceph
1453 if [ -f $SYSCONF_CEPH -a -r $SYSCONF_CEPH ] ; then
1454 source $SYSCONF_CEPH
1455 fi
1456 if [ "X$CEPH_AUTO_RESTART_ON_UPGRADE" = "Xyes" ] ; then
1457 /usr/bin/systemctl try-restart ceph-osd@\*.service > /dev/null 2>&1 || :
1458 fi
1459fi
1460
1461%if %{with ocf}
1462
1463%files resource-agents
1464%dir %{_prefix}/lib/ocf
1465%dir %{_prefix}/lib/ocf/resource.d
1466%dir %{_prefix}/lib/ocf/resource.d/ceph
1467%{_prefix}/lib/ocf/resource.d/ceph/rbd
1468
1469%endif
1470
1471%files -n librados2
1472%{_libdir}/librados.so.*
1473%dir %{_libdir}/ceph
1474%{_libdir}/ceph/libceph-common.so*
1475%if %{with lttng}
1476%{_libdir}/librados_tp.so.*
1477%endif
1478
1479%post -n librados2 -p /sbin/ldconfig
1480
1481%postun -n librados2 -p /sbin/ldconfig
1482
1483%files -n librados-devel
1484%dir %{_includedir}/rados
1485%{_includedir}/rados/librados.h
1486%{_includedir}/rados/librados.hpp
1487%{_includedir}/rados/buffer.h
1488%{_includedir}/rados/buffer_fwd.h
1489%{_includedir}/rados/inline_memory.h
1490%{_includedir}/rados/page.h
1491%{_includedir}/rados/crc32c.h
1492%{_includedir}/rados/rados_types.h
1493%{_includedir}/rados/rados_types.hpp
1494%{_includedir}/rados/memory.h
1495%{_libdir}/librados.so
1496%if %{with lttng}
1497%{_libdir}/librados_tp.so
1498%endif
1499%{_bindir}/librados-config
1500%{_mandir}/man8/librados-config.8*
1501
1502%files -n python-rados
1503%{python_sitearch}/rados.so
1504%{python_sitearch}/rados-*.egg-info
1505
1506%files -n python%{python3_pkgversion}-rados
1507%{python3_sitearch}/rados.cpython*.so
1508%{python3_sitearch}/rados-*.egg-info
1509
1510%files -n libradosstriper1
1511%{_libdir}/libradosstriper.so.*
1512
1513%post -n libradosstriper1 -p /sbin/ldconfig
1514
1515%postun -n libradosstriper1 -p /sbin/ldconfig
1516
1517%files -n libradosstriper-devel
1518%dir %{_includedir}/radosstriper
1519%{_includedir}/radosstriper/libradosstriper.h
1520%{_includedir}/radosstriper/libradosstriper.hpp
1521%{_libdir}/libradosstriper.so
1522
1523%files -n librbd1
1524%{_libdir}/librbd.so.*
1525%if %{with lttng}
1526%{_libdir}/librbd_tp.so.*
1527%endif
1528
1529%post -n librbd1
1530/sbin/ldconfig
1531mkdir -p /usr/lib64/qemu/
1532ln -sf %{_libdir}/librbd.so.1 /usr/lib64/qemu/librbd.so.1
1533
1534%postun -n librbd1 -p /sbin/ldconfig
1535
1536%files -n librbd-devel
1537%dir %{_includedir}/rbd
1538%{_includedir}/rbd/librbd.h
1539%{_includedir}/rbd/librbd.hpp
1540%{_includedir}/rbd/features.h
1541%{_libdir}/librbd.so
1542%if %{with lttng}
1543%{_libdir}/librbd_tp.so
1544%endif
1545
1546%files -n librgw2
1547%{_libdir}/librgw.so.*
1548
1549%post -n librgw2 -p /sbin/ldconfig
1550
1551%postun -n librgw2 -p /sbin/ldconfig
1552
1553%files -n librgw-devel
1554%dir %{_includedir}/rados
1555%{_includedir}/rados/librgw.h
1556%{_includedir}/rados/rgw_file.h
1557%{_libdir}/librgw.so
1558
1559%files -n python-rgw
1560%{python_sitearch}/rgw.so
1561%{python_sitearch}/rgw-*.egg-info
1562
1563%files -n python%{python3_pkgversion}-rgw
1564%{python3_sitearch}/rgw.cpython*.so
1565%{python3_sitearch}/rgw-*.egg-info
1566
1567%files -n python-rbd
1568%{python_sitearch}/rbd.so
1569%{python_sitearch}/rbd-*.egg-info
1570
1571%files -n python%{python3_pkgversion}-rbd
1572%{python3_sitearch}/rbd.cpython*.so
1573%{python3_sitearch}/rbd-*.egg-info
1574
1575%files -n libcephfs2
1576%{_libdir}/libcephfs.so.*
1577
1578%post -n libcephfs2 -p /sbin/ldconfig
1579
1580%postun -n libcephfs2 -p /sbin/ldconfig
1581
1582%files -n libcephfs-devel
1583%dir %{_includedir}/cephfs
1584%{_includedir}/cephfs/libcephfs.h
1585%{_includedir}/cephfs/ceph_statx.h
1586%{_libdir}/libcephfs.so
1587
1588%files -n python-cephfs
1589%{python_sitearch}/cephfs.so
1590%{python_sitearch}/cephfs-*.egg-info
1591%{python_sitelib}/ceph_volume_client.py*
1592
1593%files -n python%{python3_pkgversion}-cephfs
1594%{python3_sitearch}/cephfs.cpython*.so
1595%{python3_sitearch}/cephfs-*.egg-info
1596%{python3_sitelib}/ceph_volume_client.py
1597%{python3_sitelib}/__pycache__/ceph_volume_client.cpython*.py*
1598
1599%files -n python%{python3_pkgversion}-ceph-argparse
1600%{python3_sitelib}/ceph_argparse.py
1601%{python3_sitelib}/__pycache__/ceph_argparse.cpython*.py*
1602%{python3_sitelib}/ceph_daemon.py
1603%{python3_sitelib}/__pycache__/ceph_daemon.cpython*.py*
1604
1605%if 0%{with ceph_test_package}
1606%files -n ceph-test
1607%{_bindir}/ceph-client-debug
1608%{_bindir}/ceph_bench_log
1609%{_bindir}/ceph_kvstorebench
1610%{_bindir}/ceph_multi_stress_watch
1611%{_bindir}/ceph_erasure_code
1612%{_bindir}/ceph_erasure_code_benchmark
1613%{_bindir}/ceph_omapbench
1614%{_bindir}/ceph_objectstore_bench
1615%{_bindir}/ceph_perf_objectstore
1616%{_bindir}/ceph_perf_local
1617%{_bindir}/ceph_perf_msgr_client
1618%{_bindir}/ceph_perf_msgr_server
1619%{_bindir}/ceph_psim
1620%{_bindir}/ceph_radosacl
1621%{_bindir}/ceph_rgw_jsonparser
1622%{_bindir}/ceph_rgw_multiparser
1623%{_bindir}/ceph_scratchtool
1624%{_bindir}/ceph_scratchtoolpp
1625%{_bindir}/ceph_smalliobench
1626%{_bindir}/ceph_smalliobenchdumb
1627%{_bindir}/ceph_smalliobenchfs
1628%{_bindir}/ceph_smalliobenchrbd
1629%{_bindir}/ceph_test_*
1630%{_bindir}/ceph_tpbench
1631%{_bindir}/ceph_xattr_bench
1632%{_bindir}/ceph-coverage
1633%{_bindir}/ceph-monstore-tool
1634%{_bindir}/ceph-osdomap-tool
1635%{_bindir}/ceph-kvstore-tool
1636%{_bindir}/ceph-debugpack
1637%{_mandir}/man8/ceph-debugpack.8*
1638%dir %{_libdir}/ceph
1639%{_libdir}/ceph/ceph-monstore-update-crush.sh
1640%endif
1641
1642%if 0%{with cephfs_java}
1643%files -n libcephfs_jni1
1644%{_libdir}/libcephfs_jni.so.*
1645
1646%post -n libcephfs_jni1 -p /sbin/ldconfig
1647
1648%postun -n libcephfs_jni1 -p /sbin/ldconfig
1649
1650%files -n libcephfs_jni-devel
1651%{_libdir}/libcephfs_jni.so
1652
1653%files -n cephfs-java
1654%{_javadir}/libcephfs.jar
1655%{_javadir}/libcephfs-test.jar
1656%endif
1657
1658%files -n rados-objclass-devel
1659%dir %{_includedir}/rados
1660%{_includedir}/rados/objclass.h
1661
1662%if 0%{with selinux}
1663%files selinux
1664%attr(0600,root,root) %{_datadir}/selinux/packages/ceph.pp
1665%{_datadir}/selinux/devel/include/contrib/ceph.if
1666%{_mandir}/man8/ceph_selinux.8*
1667
1668%post selinux
1669# backup file_contexts before update
1670. /etc/selinux/config
1671FILE_CONTEXT=/etc/selinux/${SELINUXTYPE}/contexts/files/file_contexts
1672cp ${FILE_CONTEXT} ${FILE_CONTEXT}.pre
1673
1674# Install the policy
1675/usr/sbin/semodule -i %{_datadir}/selinux/packages/ceph.pp
1676
1677# Load the policy if SELinux is enabled
1678if ! /usr/sbin/selinuxenabled; then
1679 # Do not relabel if selinux is not enabled
1680 exit 0
1681fi
1682
1683if diff ${FILE_CONTEXT} ${FILE_CONTEXT}.pre > /dev/null 2>&1; then
1684 # Do not relabel if file contexts did not change
1685 exit 0
1686fi
1687
1688# Check whether the daemons are running
1689/usr/bin/systemctl status ceph.target > /dev/null 2>&1
1690STATUS=$?
1691
1692# Stop the daemons if they were running
1693if test $STATUS -eq 0; then
1694 /usr/bin/systemctl stop ceph.target > /dev/null 2>&1
1695fi
1696
1697# Relabel the files
1698# Use ceph-disk fix for first package install and fixfiles otherwise
1699if [ "$1" = "1" ]; then
1700 /usr/sbin/ceph-disk fix --selinux
1701else
1702 /usr/sbin/fixfiles -C ${FILE_CONTEXT}.pre restore 2> /dev/null
1703fi
1704
1705rm -f ${FILE_CONTEXT}.pre
1706# The fixfiles command won't fix label for /var/run/ceph
1707/usr/sbin/restorecon -R /var/run/ceph > /dev/null 2>&1
1708
1709# Start the daemons iff they were running before
1710if test $STATUS -eq 0; then
1711 /usr/bin/systemctl start ceph.target > /dev/null 2>&1 || :
1712fi
1713exit 0
1714
1715%postun selinux
1716if [ $1 -eq 0 ]; then
1717 # backup file_contexts before update
1718 . /etc/selinux/config
1719 FILE_CONTEXT=/etc/selinux/${SELINUXTYPE}/contexts/files/file_contexts
1720 cp ${FILE_CONTEXT} ${FILE_CONTEXT}.pre
1721
1722 # Remove the module
1723 /usr/sbin/semodule -n -r ceph > /dev/null 2>&1
1724
1725 # Reload the policy if SELinux is enabled
1726 if ! /usr/sbin/selinuxenabled ; then
1727 # Do not relabel if SELinux is not enabled
1728 exit 0
1729 fi
1730
1731 # Check whether the daemons are running
1732 /usr/bin/systemctl status ceph.target > /dev/null 2>&1
1733 STATUS=$?
1734
1735 # Stop the daemons if they were running
1736 if test $STATUS -eq 0; then
1737 /usr/bin/systemctl stop ceph.target > /dev/null 2>&1
1738 fi
1739
1740 /usr/sbin/fixfiles -C ${FILE_CONTEXT}.pre restore 2> /dev/null
1741 rm -f ${FILE_CONTEXT}.pre
1742 # The fixfiles command won't fix label for /var/run/ceph
1743 /usr/sbin/restorecon -R /var/run/ceph > /dev/null 2>&1
1744
1745 # Start the daemons if they were running before
1746 if test $STATUS -eq 0; then
1747 /usr/bin/systemctl start ceph.target > /dev/null 2>&1 || :
1748 fi
1749fi
1750exit 0
1751
1752%endif # with selinux
1753
1754%files -n python-ceph-compat
1755# We need an empty %%files list for python-ceph-compat, to tell rpmbuild to
1756# actually build this meta package.
1757
1758
1759%changelog