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