]> git.proxmox.com Git - ceph.git/blob - ceph/ceph.spec
6e5bf4a8e12e70eaf7c77ff8692eeb9e82745318
[ceph.git] / ceph / ceph.spec
1 #
2 # spec file for package ceph
3 #
4 # Copyright (C) 2004-2019 The Ceph Project Developers. See COPYING file
5 # at the top-level directory of this distribution and at
6 # https://github.com/ceph/ceph/blob/master/COPYING
7 #
8 # All modifications and additions to the file contributed by third parties
9 # remain the property of their copyright owners, unless otherwise agreed
10 # upon.
11 #
12 # This file is under the GNU Lesser General Public License, version 2.1
13 #
14 # Please submit bugfixes or comments via http://tracker.ceph.com/
15 #
16
17 #################################################################################
18 # conditional build section
19 #
20 # please read http://rpm.org/user_doc/conditional_builds.html for explanation of
21 # bcond syntax!
22 #################################################################################
23 %bcond_with make_check
24 %bcond_with cmake_verbose_logging
25 %bcond_without ceph_test_package
26 %ifarch s390 s390x
27 %bcond_with tcmalloc
28 %else
29 %bcond_without tcmalloc
30 %endif
31 %if 0%{?fedora} || 0%{?rhel}
32 %bcond_without selinux
33 %if 0%{?rhel} >= 8
34 %bcond_with cephfs_java
35 %else
36 %bcond_without cephfs_java
37 %endif
38 %bcond_without amqp_endpoint
39 %bcond_without kafka_endpoint
40 %bcond_without lttng
41 %bcond_without libradosstriper
42 %bcond_without ocf
43 %global _remote_tarball_prefix https://download.ceph.com/tarballs/
44 %endif
45 %if 0%{?suse_version}
46 %bcond_with amqp_endpoint
47 %bcond_with cephfs_java
48 %bcond_with kafka_endpoint
49 %bcond_with libradosstriper
50 %ifarch x86_64 aarch64 ppc64le
51 %bcond_without lttng
52 %else
53 %bcond_with lttng
54 %endif
55 %bcond_with ocf
56 %bcond_with selinux
57 #Compat macro for _fillupdir macro introduced in Nov 2017
58 %if ! %{defined _fillupdir}
59 %global _fillupdir /var/adm/fillup-templates
60 %endif
61 %endif
62 %bcond_with seastar
63 %if 0%{?fedora} || 0%{?suse_version} >= 1500
64 # distros that ship cmd2 and/or colorama
65 %bcond_without cephfs_shell
66 %else
67 # distros that do _not_ ship cmd2/colorama
68 %bcond_with cephfs_shell
69 %endif
70 %if 0%{?fedora} || 0%{?suse_version} || 0%{?rhel} >= 8
71 %global weak_deps 1
72 %endif
73 %if %{with selinux}
74 # get selinux policy version
75 # Force 0.0.0 policy version for centos builds to avoid repository sync issues between rhel and centos
76 %if 0%{?centos}
77 %global _selinux_policy_version 0.0.0
78 %else
79 %{!?_selinux_policy_version: %global _selinux_policy_version 0.0.0}
80 %endif
81 %endif
82
83 %{!?_udevrulesdir: %global _udevrulesdir /lib/udev/rules.d}
84 %{!?tmpfiles_create: %global tmpfiles_create systemd-tmpfiles --create}
85 %{!?python3_pkgversion: %global python3_pkgversion 3}
86 %{!?python3_version_nodots: %global python3_version_nodots 3}
87 %{!?python3_version: %global python3_version 3}
88 %if 0%{?rhel} == 7
89 %define __python %{__python3}
90 %endif
91 # unify libexec for all targets
92 %global _libexecdir %{_exec_prefix}/lib
93
94 # disable dwz which compresses the debuginfo
95 %global _find_debuginfo_dwz_opts %{nil}
96
97 #################################################################################
98 # main package definition
99 #################################################################################
100 Name: ceph
101 Version: 15.2.9
102 Release: 0%{?dist}
103 %if 0%{?fedora} || 0%{?rhel}
104 Epoch: 2
105 %endif
106
107 # define _epoch_prefix macro which will expand to the empty string if epoch is
108 # undefined
109 %global _epoch_prefix %{?epoch:%{epoch}:}
110
111 Summary: User space components of the Ceph file system
112 License: LGPL-2.1 and LGPL-3.0 and CC-BY-SA-3.0 and GPL-2.0 and BSL-1.0 and BSD-3-Clause and MIT
113 %if 0%{?suse_version}
114 Group: System/Filesystems
115 %endif
116 URL: http://ceph.com/
117 Source0: %{?_remote_tarball_prefix}ceph-15.2.9.tar.bz2
118 %if 0%{?suse_version}
119 # _insert_obs_source_lines_here
120 ExclusiveArch: x86_64 aarch64 ppc64le s390x
121 %endif
122 #################################################################################
123 # dependencies that apply across all distro families
124 #################################################################################
125 Requires: ceph-osd = %{_epoch_prefix}%{version}-%{release}
126 Requires: ceph-mds = %{_epoch_prefix}%{version}-%{release}
127 Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release}
128 Requires: ceph-mon = %{_epoch_prefix}%{version}-%{release}
129 Requires(post): binutils
130 %if 0%{with cephfs_java}
131 BuildRequires: java-devel
132 BuildRequires: sharutils
133 %endif
134 %if 0%{with selinux}
135 BuildRequires: checkpolicy
136 BuildRequires: selinux-policy-devel
137 %endif
138 BuildRequires: gperf
139 %if 0%{?rhel} == 7
140 BuildRequires: cmake3 > 3.5
141 %else
142 BuildRequires: cmake > 3.5
143 %endif
144 BuildRequires: cryptsetup
145 BuildRequires: fuse-devel
146 %if 0%{?rhel} == 7
147 # devtoolset offers newer make and valgrind-devel, but the old ones are good
148 # enough.
149 BuildRequires: devtoolset-8-gcc-c++ >= 8.3.1-3.1
150 %else
151 BuildRequires: gcc-c++
152 %endif
153 BuildRequires: gdbm
154 %if 0%{with tcmalloc}
155 %if 0%{?fedora} || 0%{?rhel}
156 BuildRequires: gperftools-devel >= 2.6.1
157 %endif
158 %if 0%{?suse_version}
159 BuildRequires: gperftools-devel >= 2.4
160 %endif
161 %endif
162 BuildRequires: leveldb-devel > 1.2
163 BuildRequires: libaio-devel
164 BuildRequires: libblkid-devel >= 2.17
165 BuildRequires: libcurl-devel
166 BuildRequires: libcap-ng-devel
167 BuildRequires: pkgconfig(libudev)
168 BuildRequires: libnl3-devel
169 BuildRequires: liboath-devel
170 BuildRequires: libtool
171 BuildRequires: libxml2-devel
172 BuildRequires: make
173 BuildRequires: ncurses-devel
174 BuildRequires: parted
175 BuildRequires: patch
176 BuildRequires: perl
177 BuildRequires: pkgconfig
178 BuildRequires: procps
179 BuildRequires: python%{python3_pkgversion}
180 BuildRequires: python%{python3_pkgversion}-devel
181 BuildRequires: snappy-devel
182 BuildRequires: sudo
183 BuildRequires: pkgconfig(udev)
184 BuildRequires: util-linux
185 BuildRequires: valgrind-devel
186 BuildRequires: which
187 BuildRequires: xfsprogs
188 BuildRequires: xfsprogs-devel
189 BuildRequires: xmlstarlet
190 BuildRequires: yasm
191 %if 0%{with amqp_endpoint}
192 BuildRequires: librabbitmq-devel
193 %endif
194 %if 0%{with kafka_endpoint}
195 BuildRequires: librdkafka-devel
196 %endif
197 %if 0%{with make_check}
198 BuildRequires: jq
199 BuildRequires: libuuid-devel
200 %if 0%{?rhel} == 7
201 BuildRequires: python%{python3_version_nodots}-bcrypt
202 BuildRequires: python%{python3_version_nodots}-nose
203 BuildRequires: python%{python3_version_nodots}-requests
204 BuildRequires: python%{python3_version_nodots}-dateutil
205 %else
206 BuildRequires: python%{python3_pkgversion}-bcrypt
207 BuildRequires: python%{python3_pkgversion}-nose
208 BuildRequires: python%{python3_pkgversion}-pecan
209 BuildRequires: python%{python3_pkgversion}-requests
210 BuildRequires: python%{python3_pkgversion}-dateutil
211 %endif
212 %if 0%{?rhel} == 7
213 BuildRequires: python%{python3_version_nodots}-six
214 BuildRequires: python%{python3_version_nodots}-virtualenv
215 %else
216 BuildRequires: python%{python3_pkgversion}-six
217 BuildRequires: python%{python3_pkgversion}-virtualenv
218 %endif
219 %if 0%{?rhel} == 7
220 BuildRequires: python%{python3_version_nodots}-coverage
221 %else
222 BuildRequires: python%{python3_pkgversion}-coverage
223 %endif
224 %if 0%{?rhel} == 7
225 BuildRequires: python%{python3_version_nodots}-pyOpenSSL
226 %else
227 BuildRequires: python%{python3_pkgversion}-pyOpenSSL
228 %endif
229 BuildRequires: socat
230 %endif
231 %if 0%{with seastar}
232 BuildRequires: c-ares-devel
233 BuildRequires: gnutls-devel
234 BuildRequires: hwloc-devel
235 BuildRequires: libpciaccess-devel
236 BuildRequires: lksctp-tools-devel
237 BuildRequires: protobuf-devel
238 BuildRequires: ragel
239 BuildRequires: systemtap-sdt-devel
240 BuildRequires: yaml-cpp-devel
241 %endif
242 #################################################################################
243 # distro-conditional dependencies
244 #################################################################################
245 %if 0%{?suse_version}
246 BuildRequires: pkgconfig(systemd)
247 BuildRequires: systemd-rpm-macros
248 %{?systemd_requires}
249 PreReq: %fillup_prereq
250 BuildRequires: fdupes
251 BuildRequires: net-tools
252 BuildRequires: libbz2-devel
253 BuildRequires: mozilla-nss-devel
254 BuildRequires: keyutils-devel
255 BuildRequires: libopenssl-devel
256 BuildRequires: lsb-release
257 BuildRequires: openldap2-devel
258 #BuildRequires: krb5
259 #BuildRequires: krb5-devel
260 BuildRequires: cunit-devel
261 BuildRequires: python%{python3_pkgversion}-setuptools
262 BuildRequires: python%{python3_pkgversion}-Cython
263 BuildRequires: python%{python3_pkgversion}-PrettyTable
264 BuildRequires: python%{python3_pkgversion}-Sphinx
265 BuildRequires: rdma-core-devel
266 BuildRequires: liblz4-devel >= 1.7
267 # for prometheus-alerts
268 BuildRequires: golang-github-prometheus-prometheus
269 %endif
270 %if 0%{?fedora} || 0%{?rhel}
271 Requires: systemd
272 BuildRequires: boost-random
273 BuildRequires: nss-devel
274 BuildRequires: keyutils-libs-devel
275 BuildRequires: libibverbs-devel
276 BuildRequires: librdmacm-devel
277 BuildRequires: openldap-devel
278 #BuildRequires: krb5-devel
279 BuildRequires: openssl-devel
280 BuildRequires: CUnit-devel
281 BuildRequires: redhat-lsb-core
282 BuildRequires: python%{python3_pkgversion}-devel
283 BuildRequires: python%{python3_pkgversion}-setuptools
284 %if 0%{?rhel} == 7
285 BuildRequires: python%{python3_version_nodots}-Cython
286 %else
287 BuildRequires: python%{python3_pkgversion}-Cython
288 %endif
289 BuildRequires: python%{python3_pkgversion}-prettytable
290 BuildRequires: python%{python3_pkgversion}-sphinx
291 BuildRequires: lz4-devel >= 1.7
292 %endif
293 # distro-conditional make check dependencies
294 %if 0%{with make_check}
295 %if 0%{?fedora} || 0%{?rhel}
296 BuildRequires: libtool-ltdl-devel
297 BuildRequires: xmlsec1
298 BuildRequires: xmlsec1-devel
299 %ifarch x86_64
300 BuildRequires: xmlsec1-nss
301 %endif
302 BuildRequires: xmlsec1-openssl
303 BuildRequires: xmlsec1-openssl-devel
304 %if 0%{?rhel} == 7
305 BuildRequires: python%{python3_version_nodots}-jwt
306 BuildRequires: python%{python3_version_nodots}-scipy
307 %else
308 BuildRequires: python%{python3_pkgversion}-cherrypy
309 BuildRequires: python%{python3_pkgversion}-jwt
310 BuildRequires: python%{python3_pkgversion}-routes
311 BuildRequires: python%{python3_pkgversion}-scipy
312 BuildRequires: python%{python3_pkgversion}-werkzeug
313 %endif
314 %if 0%{?rhel} == 7
315 BuildRequires: python%{python3_version_nodots}-pyOpenSSL
316 %else
317 BuildRequires: python%{python3_pkgversion}-pyOpenSSL
318 %endif
319 %endif
320 %if 0%{?suse_version}
321 BuildRequires: libxmlsec1-1
322 BuildRequires: libxmlsec1-nss1
323 BuildRequires: libxmlsec1-openssl1
324 BuildRequires: python%{python3_pkgversion}-CherryPy
325 BuildRequires: python%{python3_pkgversion}-PyJWT
326 BuildRequires: python%{python3_pkgversion}-Routes
327 BuildRequires: python%{python3_pkgversion}-Werkzeug
328 BuildRequires: python%{python3_pkgversion}-numpy-devel
329 BuildRequires: xmlsec1-devel
330 BuildRequires: xmlsec1-openssl-devel
331 %endif
332 %endif
333 # lttng and babeltrace for rbd-replay-prep
334 %if %{with lttng}
335 %if 0%{?fedora} || 0%{?rhel}
336 BuildRequires: lttng-ust-devel
337 BuildRequires: libbabeltrace-devel
338 %endif
339 %if 0%{?suse_version}
340 BuildRequires: lttng-ust-devel
341 BuildRequires: babeltrace-devel
342 %endif
343 %endif
344 %if 0%{?suse_version}
345 BuildRequires: libexpat-devel
346 %endif
347 %if 0%{?rhel} || 0%{?fedora}
348 BuildRequires: expat-devel
349 %endif
350 #hardened-cc1
351 %if 0%{?fedora} || 0%{?rhel}
352 BuildRequires: redhat-rpm-config
353 %endif
354 %if 0%{with seastar}
355 %if 0%{?fedora} || 0%{?rhel}
356 BuildRequires: cryptopp-devel
357 BuildRequires: numactl-devel
358 BuildRequires: protobuf-compiler
359 %endif
360 %if 0%{?suse_version}
361 BuildRequires: libcryptopp-devel
362 BuildRequires: libnuma-devel
363 %endif
364 %endif
365 %if 0%{?rhel} >= 8
366 BuildRequires: /usr/bin/pathfix.py
367 %endif
368
369 %description
370 Ceph is a massively scalable, open-source, distributed storage system that runs
371 on commodity hardware and delivers object, block and file system storage.
372
373
374 #################################################################################
375 # subpackages
376 #################################################################################
377 %package base
378 Summary: Ceph Base Package
379 %if 0%{?suse_version}
380 Group: System/Filesystems
381 %endif
382 Provides: ceph-test:/usr/bin/ceph-kvstore-tool
383 Requires: ceph-common = %{_epoch_prefix}%{version}-%{release}
384 Requires: librbd1 = %{_epoch_prefix}%{version}-%{release}
385 Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
386 Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release}
387 Requires: librgw2 = %{_epoch_prefix}%{version}-%{release}
388 %if 0%{with selinux}
389 Requires: ceph-selinux = %{_epoch_prefix}%{version}-%{release}
390 %endif
391 Requires: cryptsetup
392 Requires: e2fsprogs
393 Requires: findutils
394 Requires: grep
395 Requires: logrotate
396 Requires: parted
397 Requires: psmisc
398 Requires: python%{python3_pkgversion}-setuptools
399 Requires: util-linux
400 Requires: xfsprogs
401 Requires: which
402 %if 0%{?fedora} || 0%{?rhel}
403 # The following is necessary due to tracker 36508 and can be removed once the
404 # associated upstream bugs are resolved.
405 %if 0%{with tcmalloc}
406 Requires: gperftools-libs >= 2.6.1
407 %endif
408 %endif
409 %if 0%{?weak_deps}
410 Recommends: chrony
411 %endif
412 %description base
413 Base is the package that includes all the files shared amongst ceph servers
414
415 %package -n cephadm
416 Summary: Utility to bootstrap Ceph clusters
417 BuildArch: noarch
418 Requires: lvm2
419 Requires: python%{python3_pkgversion}
420 %if 0%{?weak_deps}
421 Recommends: podman
422 %endif
423 %description -n cephadm
424 Utility to bootstrap a Ceph cluster and manage Ceph daemons deployed
425 with systemd and podman.
426
427 %package -n ceph-common
428 Summary: Ceph Common
429 %if 0%{?suse_version}
430 Group: System/Filesystems
431 %endif
432 Requires: librbd1 = %{_epoch_prefix}%{version}-%{release}
433 Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
434 Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release}
435 Requires: python%{python3_pkgversion}-rados = %{_epoch_prefix}%{version}-%{release}
436 Requires: python%{python3_pkgversion}-rbd = %{_epoch_prefix}%{version}-%{release}
437 Requires: python%{python3_pkgversion}-cephfs = %{_epoch_prefix}%{version}-%{release}
438 Requires: python%{python3_pkgversion}-rgw = %{_epoch_prefix}%{version}-%{release}
439 Requires: python%{python3_pkgversion}-ceph-argparse = %{_epoch_prefix}%{version}-%{release}
440 Requires: python%{python3_pkgversion}-ceph-common = %{_epoch_prefix}%{version}-%{release}
441 %if 0%{?fedora} || 0%{?rhel}
442 Requires: python%{python3_pkgversion}-prettytable
443 %endif
444 %if 0%{?suse_version}
445 Requires: python%{python3_pkgversion}-PrettyTable
446 %endif
447 %if 0%{with libradosstriper}
448 Requires: libradosstriper1 = %{_epoch_prefix}%{version}-%{release}
449 %endif
450 %{?systemd_requires}
451 %if 0%{?suse_version}
452 Requires(pre): pwdutils
453 %endif
454 %description -n ceph-common
455 Common utilities to mount and interact with a ceph storage cluster.
456 Comprised of files that are common to Ceph clients and servers.
457
458 %package mds
459 Summary: Ceph Metadata Server Daemon
460 %if 0%{?suse_version}
461 Group: System/Filesystems
462 %endif
463 Requires: ceph-base = %{_epoch_prefix}%{version}-%{release}
464 %description mds
465 ceph-mds is the metadata server daemon for the Ceph distributed file system.
466 One or more instances of ceph-mds collectively manage the file system
467 namespace, coordinating access to the shared OSD cluster.
468
469 %package mon
470 Summary: Ceph Monitor Daemon
471 %if 0%{?suse_version}
472 Group: System/Filesystems
473 %endif
474 Provides: ceph-test:/usr/bin/ceph-monstore-tool
475 Requires: ceph-base = %{_epoch_prefix}%{version}-%{release}
476 %if 0%{?weak_deps}
477 Recommends: nvme-cli
478 %if 0%{?suse_version}
479 Requires: smartmontools
480 %else
481 Recommends: smartmontools
482 %endif
483 %endif
484 %description mon
485 ceph-mon is the cluster monitor daemon for the Ceph distributed file
486 system. One or more instances of ceph-mon form a Paxos part-time
487 parliament cluster that provides extremely reliable and durable storage
488 of cluster membership, configuration, and state.
489
490 %package mgr
491 Summary: Ceph Manager Daemon
492 %if 0%{?suse_version}
493 Group: System/Filesystems
494 %endif
495 Requires: ceph-base = %{_epoch_prefix}%{version}-%{release}
496 Requires: ceph-mgr-modules-core = %{_epoch_prefix}%{version}-%{release}
497 %if 0%{?rhel} == 7
498 Requires: python%{python3_version_nodots}-six
499 %else
500 Requires: python%{python3_pkgversion}-six
501 %endif
502 %if 0%{?weak_deps}
503 Recommends: ceph-mgr-dashboard = %{_epoch_prefix}%{version}-%{release}
504 Recommends: ceph-mgr-diskprediction-local = %{_epoch_prefix}%{version}-%{release}
505 Recommends: ceph-mgr-diskprediction-cloud = %{_epoch_prefix}%{version}-%{release}
506 Recommends: ceph-mgr-k8sevents = %{_epoch_prefix}%{version}-%{release}
507 Recommends: ceph-mgr-cephadm = %{_epoch_prefix}%{version}-%{release}
508 Recommends: python%{python3_pkgversion}-influxdb
509 %endif
510 %description mgr
511 ceph-mgr enables python modules that provide services (such as the REST
512 module derived from Calamari) and expose CLI hooks. ceph-mgr gathers
513 the cluster maps, the daemon metadata, and performance counters, and
514 exposes all these to the python modules.
515
516 %package mgr-dashboard
517 Summary: Ceph Dashboard
518 BuildArch: noarch
519 %if 0%{?suse_version}
520 Group: System/Filesystems
521 %endif
522 Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release}
523 Requires: ceph-grafana-dashboards = %{_epoch_prefix}%{version}-%{release}
524 Requires: ceph-prometheus-alerts = %{_epoch_prefix}%{version}-%{release}
525 %if 0%{?fedora} || 0%{?rhel}
526 Requires: python%{python3_pkgversion}-cherrypy
527 Requires: python%{python3_pkgversion}-jwt
528 Requires: python%{python3_pkgversion}-routes
529 Requires: python%{python3_pkgversion}-werkzeug
530 %if 0%{?weak_deps}
531 Recommends: python%{python3_pkgversion}-saml
532 %endif
533 %endif
534 %if 0%{?suse_version}
535 Requires: python%{python3_pkgversion}-CherryPy
536 Requires: python%{python3_pkgversion}-PyJWT
537 Requires: python%{python3_pkgversion}-Routes
538 Requires: python%{python3_pkgversion}-Werkzeug
539 Recommends: python%{python3_pkgversion}-python3-saml
540 %endif
541 %description mgr-dashboard
542 ceph-mgr-dashboard is a manager module, providing a web-based application
543 to monitor and manage many aspects of a Ceph cluster and related components.
544 See the Dashboard documentation at http://docs.ceph.com/ for details and a
545 detailed feature overview.
546
547 %package mgr-diskprediction-local
548 Summary: Ceph Manager module for predicting disk failures
549 BuildArch: noarch
550 %if 0%{?suse_version}
551 Group: System/Filesystems
552 %endif
553 Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release}
554 Requires: python%{python3_pkgversion}-numpy
555 Requires: python3-scipy
556 %if 0%{?rhel} == 7
557 Requires: numpy
558 Requires: scipy
559 %endif
560 %description mgr-diskprediction-local
561 ceph-mgr-diskprediction-local is a ceph-mgr module that tries to predict
562 disk failures using local algorithms and machine-learning databases.
563
564 %package mgr-diskprediction-cloud
565 Summary: Ceph Manager module for cloud-based disk failure prediction
566 BuildArch: noarch
567 %if 0%{?suse_version}
568 Group: System/Filesystems
569 %endif
570 Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release}
571 %if 0%{without python2}
572 Requires: python3-grpcio
573 Requires: python3-protobuf
574 %else
575 Requires: python2-grpcio
576 Requires: python2-protobuf
577 %endif
578 %description mgr-diskprediction-cloud
579 ceph-mgr-diskprediction-cloud is a ceph-mgr module that tries to predict
580 disk failures using services in the Google cloud.
581
582 %package mgr-modules-core
583 Summary: Ceph Manager modules which are always enabled
584 BuildArch: noarch
585 %if 0%{?suse_version}
586 Group: System/Filesystems
587 %endif
588 %if 0%{?rhel} == 7
589 Requires: python%{python3_version_nodots}-bcrypt
590 Requires: python%{python3_version_nodots}-pyOpenSSL
591 Requires: python%{python3_version_nodots}-requests
592 Requires: python%{python3_version_nodots}-PyYAML
593 Requires: python%{python3_version_nodots}-dateutil
594 %else
595 Requires: python%{python3_pkgversion}-bcrypt
596 Requires: python%{python3_pkgversion}-pecan
597 Requires: python%{python3_pkgversion}-pyOpenSSL
598 Requires: python%{python3_pkgversion}-requests
599 Requires: python%{python3_pkgversion}-dateutil
600 %endif
601 %if 0%{?fedora} || 0%{?rhel} >= 8
602 Requires: python%{python3_pkgversion}-cherrypy
603 Requires: python%{python3_pkgversion}-pyyaml
604 Requires: python%{python3_pkgversion}-werkzeug
605 %endif
606 %if 0%{?suse_version}
607 Requires: python%{python3_pkgversion}-CherryPy
608 Requires: python%{python3_pkgversion}-PyYAML
609 Requires: python%{python3_pkgversion}-Werkzeug
610 %endif
611 %if 0%{?weak_deps}
612 Recommends: ceph-mgr-rook = %{_epoch_prefix}%{version}-%{release}
613 %endif
614 %description mgr-modules-core
615 ceph-mgr-modules-core provides a set of modules which are always
616 enabled by ceph-mgr.
617
618 %package mgr-rook
619 BuildArch: noarch
620 Summary: Ceph Manager module for Rook-based orchestration
621 %if 0%{?suse_version}
622 Group: System/Filesystems
623 %endif
624 Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release}
625 Requires: python%{python3_pkgversion}-kubernetes
626 Requires: python%{python3_pkgversion}-jsonpatch
627 %description mgr-rook
628 ceph-mgr-rook is a ceph-mgr module for orchestration functions using
629 a Rook backend.
630
631 %package mgr-k8sevents
632 BuildArch: noarch
633 Summary: Ceph Manager module to orchestrate ceph-events to kubernetes' events API
634 %if 0%{?suse_version}
635 Group: System/Filesystems
636 %endif
637 Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release}
638 Requires: python%{python3_pkgversion}-kubernetes
639 %description mgr-k8sevents
640 ceph-mgr-k8sevents is a ceph-mgr module that sends every ceph-events
641 to kubernetes' events API
642
643 %package mgr-cephadm
644 Summary: Ceph Manager module for cephadm-based orchestration
645 BuildArch: noarch
646 %if 0%{?suse_version}
647 Group: System/Filesystems
648 %endif
649 Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release}
650 Requires: python%{python3_pkgversion}-remoto
651 Requires: cephadm = %{_epoch_prefix}%{version}-%{release}
652 %if 0%{?suse_version}
653 Requires: openssh
654 Requires: python%{python3_pkgversion}-Jinja2
655 %endif
656 %if 0%{?rhel} || 0%{?fedora}
657 Requires: openssh-clients
658 Requires: python%{python3_pkgversion}-jinja2
659 %endif
660 %description mgr-cephadm
661 ceph-mgr-cephadm is a ceph-mgr module for orchestration functions using
662 the integrated cephadm deployment tool management operations.
663
664 %package fuse
665 Summary: Ceph fuse-based client
666 %if 0%{?suse_version}
667 Group: System/Filesystems
668 %endif
669 Requires: fuse
670 Requires: python%{python3_pkgversion}
671 %description fuse
672 FUSE based client for Ceph distributed network file system
673
674 %package -n rbd-fuse
675 Summary: Ceph fuse-based client
676 %if 0%{?suse_version}
677 Group: System/Filesystems
678 %endif
679 Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
680 Requires: librbd1 = %{_epoch_prefix}%{version}-%{release}
681 %description -n rbd-fuse
682 FUSE based client to map Ceph rbd images to files
683
684 %package -n rbd-mirror
685 Summary: Ceph daemon for mirroring RBD images
686 %if 0%{?suse_version}
687 Group: System/Filesystems
688 %endif
689 Requires: ceph-base = %{_epoch_prefix}%{version}-%{release}
690 Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
691 Requires: librbd1 = %{_epoch_prefix}%{version}-%{release}
692 %description -n rbd-mirror
693 Daemon for mirroring RBD images between Ceph clusters, streaming
694 changes asynchronously.
695
696 %package immutable-object-cache
697 Summary: Ceph daemon for immutable object cache
698 %if 0%{?suse_version}
699 Group: System/Filesystems
700 %endif
701 Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
702 %description immutable-object-cache
703 Daemon for immutable object cache.
704
705 %package -n rbd-nbd
706 Summary: Ceph RBD client base on NBD
707 %if 0%{?suse_version}
708 Group: System/Filesystems
709 %endif
710 Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
711 Requires: librbd1 = %{_epoch_prefix}%{version}-%{release}
712 %description -n rbd-nbd
713 NBD based client to map Ceph rbd images to local device
714
715 %package radosgw
716 Summary: Rados REST gateway
717 %if 0%{?suse_version}
718 Group: System/Filesystems
719 %endif
720 Requires: ceph-base = %{_epoch_prefix}%{version}-%{release}
721 %if 0%{with selinux}
722 Requires: ceph-selinux = %{_epoch_prefix}%{version}-%{release}
723 %endif
724 Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
725 Requires: librgw2 = %{_epoch_prefix}%{version}-%{release}
726 %if 0%{?rhel} || 0%{?fedora}
727 Requires: mailcap
728 %endif
729 %description radosgw
730 RADOS is a distributed object store used by the Ceph distributed
731 storage system. This package provides a REST gateway to the
732 object store that aims to implement a superset of Amazon's S3
733 service as well as the OpenStack Object Storage ("Swift") API.
734
735 %if %{with ocf}
736 %package resource-agents
737 Summary: OCF-compliant resource agents for Ceph daemons
738 %if 0%{?suse_version}
739 Group: System/Filesystems
740 %endif
741 Requires: ceph-base = %{_epoch_prefix}%{version}
742 Requires: resource-agents
743 %description resource-agents
744 Resource agents for monitoring and managing Ceph daemons
745 under Open Cluster Framework (OCF) compliant resource
746 managers such as Pacemaker.
747 %endif
748
749 %package osd
750 Summary: Ceph Object Storage Daemon
751 %if 0%{?suse_version}
752 Group: System/Filesystems
753 %endif
754 Provides: ceph-test:/usr/bin/ceph-osdomap-tool
755 Requires: ceph-base = %{_epoch_prefix}%{version}-%{release}
756 Requires: lvm2
757 Requires: sudo
758 Requires: libstoragemgmt
759 Requires: python%{python3_pkgversion}-ceph-common = %{_epoch_prefix}%{version}-%{release}
760 %if 0%{?weak_deps}
761 Recommends: nvme-cli
762 %if 0%{?suse_version}
763 Requires: smartmontools
764 %else
765 Recommends: smartmontools
766 %endif
767 %endif
768 %description osd
769 ceph-osd is the object storage daemon for the Ceph distributed file
770 system. It is responsible for storing objects on a local file system
771 and providing access to them over the network.
772
773 %if 0%{with seastar}
774 %package crimson-osd
775 Summary: Ceph Object Storage Daemon (crimson)
776 %if 0%{?suse_version}
777 Group: System/Filesystems
778 %endif
779 Requires: ceph-osd = %{_epoch_prefix}%{version}-%{release}
780 %description crimson-osd
781 crimson-osd is the object storage daemon for the Ceph distributed file
782 system. It is responsible for storing objects on a local file system
783 and providing access to them over the network.
784 %endif
785
786 %package -n librados2
787 Summary: RADOS distributed object store client library
788 %if 0%{?suse_version}
789 Group: System/Libraries
790 %endif
791 %if 0%{?rhel} || 0%{?fedora}
792 Obsoletes: ceph-libs < %{_epoch_prefix}%{version}-%{release}
793 %endif
794 %description -n librados2
795 RADOS is a reliable, autonomic distributed object storage cluster
796 developed as part of the Ceph distributed storage system. This is a
797 shared library allowing applications to access the distributed object
798 store using a simple file-like interface.
799
800 %package -n librados-devel
801 Summary: RADOS headers
802 %if 0%{?suse_version}
803 Group: Development/Libraries/C and C++
804 %endif
805 Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
806 Obsoletes: ceph-devel < %{_epoch_prefix}%{version}-%{release}
807 Provides: librados2-devel = %{_epoch_prefix}%{version}-%{release}
808 Obsoletes: librados2-devel < %{_epoch_prefix}%{version}-%{release}
809 %description -n librados-devel
810 This package contains C libraries and headers needed to develop programs
811 that use RADOS object store.
812
813 %package -n libradospp-devel
814 Summary: RADOS headers
815 %if 0%{?suse_version}
816 Group: Development/Libraries/C and C++
817 %endif
818 Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
819 Requires: librados-devel = %{_epoch_prefix}%{version}-%{release}
820 %description -n libradospp-devel
821 This package contains C++ libraries and headers needed to develop programs
822 that use RADOS object store.
823
824 %package -n librgw2
825 Summary: RADOS gateway client library
826 %if 0%{?suse_version}
827 Group: System/Libraries
828 %endif
829 Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
830 %description -n librgw2
831 This package provides a library implementation of the RADOS gateway
832 (distributed object store with S3 and Swift personalities).
833
834 %package -n librgw-devel
835 Summary: RADOS gateway client library
836 %if 0%{?suse_version}
837 Group: Development/Libraries/C and C++
838 %endif
839 Requires: librados-devel = %{_epoch_prefix}%{version}-%{release}
840 Requires: librgw2 = %{_epoch_prefix}%{version}-%{release}
841 Provides: librgw2-devel = %{_epoch_prefix}%{version}-%{release}
842 Obsoletes: librgw2-devel < %{_epoch_prefix}%{version}-%{release}
843 %description -n librgw-devel
844 This package contains libraries and headers needed to develop programs
845 that use RADOS gateway client library.
846
847 %package -n python%{python3_pkgversion}-rgw
848 Summary: Python 3 libraries for the RADOS gateway
849 %if 0%{?suse_version}
850 Group: Development/Libraries/Python
851 %endif
852 Requires: librgw2 = %{_epoch_prefix}%{version}-%{release}
853 Requires: python%{python3_pkgversion}-rados = %{_epoch_prefix}%{version}-%{release}
854 %{?python_provide:%python_provide python%{python3_pkgversion}-rgw}
855 Provides: python-rgw = %{_epoch_prefix}%{version}-%{release}
856 Obsoletes: python-rgw < %{_epoch_prefix}%{version}-%{release}
857 %description -n python%{python3_pkgversion}-rgw
858 This package contains Python 3 libraries for interacting with Cephs RADOS
859 gateway.
860
861 %package -n python%{python3_pkgversion}-rados
862 Summary: Python 3 libraries for the RADOS object store
863 %if 0%{?suse_version}
864 Group: Development/Libraries/Python
865 %endif
866 Requires: python%{python3_pkgversion}
867 Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
868 %{?python_provide:%python_provide python%{python3_pkgversion}-rados}
869 Provides: python-rados = %{_epoch_prefix}%{version}-%{release}
870 Obsoletes: python-rados < %{_epoch_prefix}%{version}-%{release}
871 %description -n python%{python3_pkgversion}-rados
872 This package contains Python 3 libraries for interacting with Cephs RADOS
873 object store.
874
875 %if 0%{with libradosstriper}
876 %package -n libradosstriper1
877 Summary: RADOS striping interface
878 %if 0%{?suse_version}
879 Group: System/Libraries
880 %endif
881 Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
882 %description -n libradosstriper1
883 Striping interface built on top of the rados library, allowing
884 to stripe bigger objects onto several standard rados objects using
885 an interface very similar to the rados one.
886
887 %package -n libradosstriper-devel
888 Summary: RADOS striping interface headers
889 %if 0%{?suse_version}
890 Group: Development/Libraries/C and C++
891 %endif
892 Requires: libradosstriper1 = %{_epoch_prefix}%{version}-%{release}
893 Requires: librados-devel = %{_epoch_prefix}%{version}-%{release}
894 Requires: libradospp-devel = %{_epoch_prefix}%{version}-%{release}
895 Obsoletes: ceph-devel < %{_epoch_prefix}%{version}-%{release}
896 Provides: libradosstriper1-devel = %{_epoch_prefix}%{version}-%{release}
897 Obsoletes: libradosstriper1-devel < %{_epoch_prefix}%{version}-%{release}
898 %description -n libradosstriper-devel
899 This package contains libraries and headers needed to develop programs
900 that use RADOS striping interface.
901 %endif
902
903 %package -n librbd1
904 Summary: RADOS block device client library
905 %if 0%{?suse_version}
906 Group: System/Libraries
907 %endif
908 Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
909 %if 0%{?suse_version}
910 Requires(post): coreutils
911 %endif
912 %if 0%{?rhel} || 0%{?fedora}
913 Obsoletes: ceph-libs < %{_epoch_prefix}%{version}-%{release}
914 %endif
915 %description -n librbd1
916 RBD is a block device striped across multiple distributed objects in
917 RADOS, a reliable, autonomic distributed object storage cluster
918 developed as part of the Ceph distributed storage system. This is a
919 shared library allowing applications to manage these block devices.
920
921 %package -n librbd-devel
922 Summary: RADOS block device headers
923 %if 0%{?suse_version}
924 Group: Development/Libraries/C and C++
925 %endif
926 Requires: librbd1 = %{_epoch_prefix}%{version}-%{release}
927 Requires: librados-devel = %{_epoch_prefix}%{version}-%{release}
928 Requires: libradospp-devel = %{_epoch_prefix}%{version}-%{release}
929 Obsoletes: ceph-devel < %{_epoch_prefix}%{version}-%{release}
930 Provides: librbd1-devel = %{_epoch_prefix}%{version}-%{release}
931 Obsoletes: librbd1-devel < %{_epoch_prefix}%{version}-%{release}
932 %description -n librbd-devel
933 This package contains libraries and headers needed to develop programs
934 that use RADOS block device.
935
936 %package -n python%{python3_pkgversion}-rbd
937 Summary: Python 3 libraries for the RADOS block device
938 %if 0%{?suse_version}
939 Group: Development/Libraries/Python
940 %endif
941 Requires: librbd1 = %{_epoch_prefix}%{version}-%{release}
942 Requires: python%{python3_pkgversion}-rados = %{_epoch_prefix}%{version}-%{release}
943 %{?python_provide:%python_provide python%{python3_pkgversion}-rbd}
944 Provides: python-rbd = %{_epoch_prefix}%{version}-%{release}
945 Obsoletes: python-rbd < %{_epoch_prefix}%{version}-%{release}
946 %description -n python%{python3_pkgversion}-rbd
947 This package contains Python 3 libraries for interacting with Cephs RADOS
948 block device.
949
950 %package -n libcephfs2
951 Summary: Ceph distributed file system client library
952 %if 0%{?suse_version}
953 Group: System/Libraries
954 %endif
955 Obsoletes: libcephfs1 < %{_epoch_prefix}%{version}-%{release}
956 %if 0%{?rhel} || 0%{?fedora}
957 Obsoletes: ceph-libs < %{_epoch_prefix}%{version}-%{release}
958 Obsoletes: ceph-libcephfs
959 %endif
960 %description -n libcephfs2
961 Ceph is a distributed network file system designed to provide excellent
962 performance, reliability, and scalability. This is a shared library
963 allowing applications to access a Ceph distributed file system via a
964 POSIX-like interface.
965
966 %package -n libcephfs-devel
967 Summary: Ceph distributed file system headers
968 %if 0%{?suse_version}
969 Group: Development/Libraries/C and C++
970 %endif
971 Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release}
972 Requires: librados-devel = %{_epoch_prefix}%{version}-%{release}
973 Obsoletes: ceph-devel < %{_epoch_prefix}%{version}-%{release}
974 Provides: libcephfs2-devel = %{_epoch_prefix}%{version}-%{release}
975 Obsoletes: libcephfs2-devel < %{_epoch_prefix}%{version}-%{release}
976 %description -n libcephfs-devel
977 This package contains libraries and headers needed to develop programs
978 that use Cephs distributed file system.
979
980 %package -n python%{python3_pkgversion}-cephfs
981 Summary: Python 3 libraries for Ceph distributed file system
982 %if 0%{?suse_version}
983 Group: Development/Libraries/Python
984 %endif
985 Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release}
986 Requires: python%{python3_pkgversion}-rados = %{_epoch_prefix}%{version}-%{release}
987 Requires: python%{python3_pkgversion}-ceph-argparse = %{_epoch_prefix}%{version}-%{release}
988 %{?python_provide:%python_provide python%{python3_pkgversion}-cephfs}
989 Provides: python-cephfs = %{_epoch_prefix}%{version}-%{release}
990 Obsoletes: python-cephfs < %{_epoch_prefix}%{version}-%{release}
991 %description -n python%{python3_pkgversion}-cephfs
992 This package contains Python 3 libraries for interacting with Cephs distributed
993 file system.
994
995 %package -n python%{python3_pkgversion}-ceph-argparse
996 Summary: Python 3 utility libraries for Ceph CLI
997 %if 0%{?suse_version}
998 Group: Development/Libraries/Python
999 %endif
1000 %{?python_provide:%python_provide python%{python3_pkgversion}-ceph-argparse}
1001 %description -n python%{python3_pkgversion}-ceph-argparse
1002 This package contains types and routines for Python 3 used by the Ceph CLI as
1003 well as the RESTful interface. These have to do with querying the daemons for
1004 command-description information, validating user command input against those
1005 descriptions, and submitting the command to the appropriate daemon.
1006
1007 %package -n python%{python3_pkgversion}-ceph-common
1008 Summary: Python 3 utility libraries for Ceph
1009 %if 0%{?fedora} || 0%{?rhel} >= 8
1010 Requires: python%{python3_pkgversion}-pyyaml
1011 %endif
1012 %if 0%{?suse_version}
1013 Requires: python%{python3_pkgversion}-PyYAML
1014 %endif
1015 %if 0%{?suse_version}
1016 Group: Development/Libraries/Python
1017 %endif
1018 %{?python_provide:%python_provide python%{python3_pkgversion}-ceph-common}
1019 %description -n python%{python3_pkgversion}-ceph-common
1020 This package contains data structures, classes and functions used by Ceph.
1021 It also contains utilities used for the cephadm orchestrator.
1022
1023 %if 0%{with cephfs_shell}
1024 %package -n cephfs-shell
1025 Summary: Interactive shell for Ceph file system
1026 Requires: python%{python3_pkgversion}-cmd2
1027 Requires: python%{python3_pkgversion}-colorama
1028 Requires: python%{python3_pkgversion}-cephfs
1029 %description -n cephfs-shell
1030 This package contains an interactive tool that allows accessing a Ceph
1031 file system without mounting it by providing a nice pseudo-shell which
1032 works like an FTP client.
1033 %endif
1034
1035 %if 0%{with ceph_test_package}
1036 %package -n ceph-test
1037 Summary: Ceph benchmarks and test tools
1038 %if 0%{?suse_version}
1039 Group: System/Benchmark
1040 %endif
1041 Requires: ceph-common = %{_epoch_prefix}%{version}-%{release}
1042 Requires: xmlstarlet
1043 Requires: jq
1044 Requires: socat
1045 %description -n ceph-test
1046 This package contains Ceph benchmarks and test tools.
1047 %endif
1048
1049 %if 0%{with cephfs_java}
1050
1051 %package -n libcephfs_jni1
1052 Summary: Java Native Interface library for CephFS Java bindings
1053 %if 0%{?suse_version}
1054 Group: System/Libraries
1055 %endif
1056 Requires: java
1057 Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release}
1058 %description -n libcephfs_jni1
1059 This package contains the Java Native Interface library for CephFS Java
1060 bindings.
1061
1062 %package -n libcephfs_jni-devel
1063 Summary: Development files for CephFS Java Native Interface library
1064 %if 0%{?suse_version}
1065 Group: Development/Libraries/Java
1066 %endif
1067 Requires: java
1068 Requires: libcephfs_jni1 = %{_epoch_prefix}%{version}-%{release}
1069 Obsoletes: ceph-devel < %{_epoch_prefix}%{version}-%{release}
1070 Provides: libcephfs_jni1-devel = %{_epoch_prefix}%{version}-%{release}
1071 Obsoletes: libcephfs_jni1-devel < %{_epoch_prefix}%{version}-%{release}
1072 %description -n libcephfs_jni-devel
1073 This package contains the development files for CephFS Java Native Interface
1074 library.
1075
1076 %package -n cephfs-java
1077 Summary: Java libraries for the Ceph File System
1078 %if 0%{?suse_version}
1079 Group: System/Libraries
1080 %endif
1081 Requires: java
1082 Requires: libcephfs_jni1 = %{_epoch_prefix}%{version}-%{release}
1083 Requires: junit
1084 BuildRequires: junit
1085 %description -n cephfs-java
1086 This package contains the Java libraries for the Ceph File System.
1087
1088 %endif
1089
1090 %package -n rados-objclass-devel
1091 Summary: RADOS object class development kit
1092 %if 0%{?suse_version}
1093 Group: Development/Libraries/C and C++
1094 %endif
1095 Requires: libradospp-devel = %{_epoch_prefix}%{version}-%{release}
1096 %description -n rados-objclass-devel
1097 This package contains libraries and headers needed to develop RADOS object
1098 class plugins.
1099
1100 %if 0%{with selinux}
1101
1102 %package selinux
1103 Summary: SELinux support for Ceph MON, OSD and MDS
1104 %if 0%{?suse_version}
1105 Group: System/Filesystems
1106 %endif
1107 Requires: ceph-base = %{_epoch_prefix}%{version}-%{release}
1108 Requires: policycoreutils, libselinux-utils
1109 Requires(post): ceph-base = %{_epoch_prefix}%{version}-%{release}
1110 Requires(post): selinux-policy-base >= %{_selinux_policy_version}, policycoreutils, gawk
1111 Requires(postun): policycoreutils
1112 %description selinux
1113 This package contains SELinux support for Ceph MON, OSD and MDS. The package
1114 also performs file-system relabelling which can take a long time on heavily
1115 populated file-systems.
1116
1117 %endif
1118
1119 %package grafana-dashboards
1120 Summary: The set of Grafana dashboards for monitoring purposes
1121 BuildArch: noarch
1122 %if 0%{?suse_version}
1123 Group: System/Filesystems
1124 %endif
1125 %description grafana-dashboards
1126 This package provides a set of Grafana dashboards for monitoring of
1127 Ceph clusters. The dashboards require a Prometheus server setup
1128 collecting data from Ceph Manager "prometheus" module and Prometheus
1129 project "node_exporter" module. The dashboards are designed to be
1130 integrated with the Ceph Manager Dashboard web UI.
1131
1132 %package prometheus-alerts
1133 Summary: Prometheus alerts for a Ceph deplyoment
1134 BuildArch: noarch
1135 Group: System/Monitoring
1136 %description prometheus-alerts
1137 This package provides Ceph’s default alerts for Prometheus.
1138
1139 #################################################################################
1140 # common
1141 #################################################################################
1142 %prep
1143 %autosetup -p1 -n ceph-15.2.9
1144
1145 %build
1146 # LTO can be enabled as soon as the following GCC bug is fixed:
1147 # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=48200
1148 %define _lto_cflags %{nil}
1149
1150 %if 0%{?rhel} == 7
1151 . /opt/rh/devtoolset-8/enable
1152 %endif
1153
1154 %if 0%{with cephfs_java}
1155 # Find jni.h
1156 for i in /usr/{lib64,lib}/jvm/java/include{,/linux}; do
1157 [ -d $i ] && java_inc="$java_inc -I$i"
1158 done
1159 %endif
1160
1161 %if 0%{?suse_version}
1162 # the following setting fixed an OOM condition we once encountered in the OBS
1163 RPM_OPT_FLAGS="$RPM_OPT_FLAGS --param ggc-min-expand=20 --param ggc-min-heapsize=32768"
1164 %endif
1165
1166 export CPPFLAGS="$java_inc"
1167 export CFLAGS="$RPM_OPT_FLAGS"
1168 export CXXFLAGS="$RPM_OPT_FLAGS"
1169 export LDFLAGS="$RPM_LD_FLAGS"
1170
1171 # Parallel build settings ...
1172 CEPH_MFLAGS_JOBS="%{?_smp_mflags}"
1173 CEPH_SMP_NCPUS=$(echo "$CEPH_MFLAGS_JOBS" | sed 's/-j//')
1174 %if 0%{?__isa_bits} == 32
1175 # 32-bit builds can use 3G memory max, which is not enough even for -j2
1176 CEPH_SMP_NCPUS="1"
1177 %endif
1178 # do not eat all memory
1179 echo "Available memory:"
1180 free -h
1181 echo "System limits:"
1182 ulimit -a
1183 if test -n "$CEPH_SMP_NCPUS" -a "$CEPH_SMP_NCPUS" -gt 1 ; then
1184 mem_per_process=2500
1185 max_mem=$(LANG=C free -m | sed -n "s|^Mem: *\([0-9]*\).*$|\1|p")
1186 max_jobs="$(($max_mem / $mem_per_process))"
1187 test "$CEPH_SMP_NCPUS" -gt "$max_jobs" && CEPH_SMP_NCPUS="$max_jobs" && echo "Warning: Reducing build parallelism to -j$max_jobs because of memory limits"
1188 test "$CEPH_SMP_NCPUS" -le 0 && CEPH_SMP_NCPUS="1" && echo "Warning: Not using parallel build at all because of memory limits"
1189 fi
1190 export CEPH_SMP_NCPUS
1191 export CEPH_MFLAGS_JOBS="-j$CEPH_SMP_NCPUS"
1192
1193 env | sort
1194
1195 mkdir build
1196 cd build
1197 %if 0%{?rhel} == 7
1198 CMAKE=cmake3
1199 %else
1200 CMAKE=cmake
1201 %endif
1202 ${CMAKE} .. \
1203 -DCMAKE_INSTALL_PREFIX=%{_prefix} \
1204 -DCMAKE_INSTALL_LIBDIR=%{_libdir} \
1205 -DCMAKE_INSTALL_LIBEXECDIR=%{_libexecdir} \
1206 -DCMAKE_INSTALL_LOCALSTATEDIR=%{_localstatedir} \
1207 -DCMAKE_INSTALL_SYSCONFDIR=%{_sysconfdir} \
1208 -DCMAKE_INSTALL_MANDIR=%{_mandir} \
1209 -DCMAKE_INSTALL_DOCDIR=%{_docdir}/ceph \
1210 -DCMAKE_INSTALL_INCLUDEDIR=%{_includedir} \
1211 -DWITH_MANPAGE=ON \
1212 -DWITH_PYTHON3=%{python3_version} \
1213 -DWITH_MGR_DASHBOARD_FRONTEND=OFF \
1214 %if 0%{without ceph_test_package}
1215 -DWITH_TESTS=OFF \
1216 %endif
1217 %if 0%{with cephfs_java}
1218 -DWITH_CEPHFS_JAVA=ON \
1219 %endif
1220 %if 0%{with selinux}
1221 -DWITH_SELINUX=ON \
1222 %endif
1223 %if %{with lttng}
1224 -DWITH_LTTNG=ON \
1225 -DWITH_BABELTRACE=ON \
1226 %else
1227 -DWITH_LTTNG=OFF \
1228 -DWITH_BABELTRACE=OFF \
1229 %endif
1230 $CEPH_EXTRA_CMAKE_ARGS \
1231 %if 0%{with ocf}
1232 -DWITH_OCF=ON \
1233 %endif
1234 %ifarch aarch64 armv7hl mips mipsel ppc ppc64 ppc64le %{ix86} x86_64
1235 -DWITH_BOOST_CONTEXT=ON \
1236 %else
1237 -DWITH_BOOST_CONTEXT=OFF \
1238 %endif
1239 %if 0%{with cephfs_shell}
1240 -DWITH_CEPHFS_SHELL=ON \
1241 %endif
1242 %if 0%{with libradosstriper}
1243 -DWITH_LIBRADOSSTRIPER=ON \
1244 %else
1245 -DWITH_LIBRADOSSTRIPER=OFF \
1246 %endif
1247 %if 0%{with amqp_endpoint}
1248 -DWITH_RADOSGW_AMQP_ENDPOINT=ON \
1249 %else
1250 -DWITH_RADOSGW_AMQP_ENDPOINT=OFF \
1251 %endif
1252 %if 0%{with kafka_endpoint}
1253 -DWITH_RADOSGW_KAFKA_ENDPOINT=ON \
1254 %else
1255 -DWITH_RADOSGW_KAFKA_ENDPOINT=OFF \
1256 %endif
1257 %if 0%{with cmake_verbose_logging}
1258 -DCMAKE_VERBOSE_MAKEFILE=ON \
1259 %endif
1260 -DBOOST_J=$CEPH_SMP_NCPUS \
1261 -DWITH_GRAFANA=ON
1262
1263 %if %{with cmake_verbose_logging}
1264 cat ./CMakeFiles/CMakeOutput.log
1265 cat ./CMakeFiles/CMakeError.log
1266 %endif
1267
1268 make "$CEPH_MFLAGS_JOBS"
1269
1270
1271 %if 0%{with make_check}
1272 %check
1273 # run in-tree unittests
1274 cd build
1275 ctest "$CEPH_MFLAGS_JOBS"
1276 %endif
1277
1278
1279 %install
1280 pushd build
1281 make DESTDIR=%{buildroot} install
1282 # we have dropped sysvinit bits
1283 rm -f %{buildroot}/%{_sysconfdir}/init.d/ceph
1284 popd
1285 install -m 0644 -D src/etc-rbdmap %{buildroot}%{_sysconfdir}/ceph/rbdmap
1286 %if 0%{?fedora} || 0%{?rhel}
1287 install -m 0644 -D etc/sysconfig/ceph %{buildroot}%{_sysconfdir}/sysconfig/ceph
1288 %endif
1289 %if 0%{?suse_version}
1290 install -m 0644 -D etc/sysconfig/ceph %{buildroot}%{_fillupdir}/sysconfig.%{name}
1291 %endif
1292 install -m 0644 -D systemd/ceph.tmpfiles.d %{buildroot}%{_tmpfilesdir}/ceph-common.conf
1293 install -m 0644 -D systemd/50-ceph.preset %{buildroot}%{_libexecdir}/systemd/system-preset/50-ceph.preset
1294 mkdir -p %{buildroot}%{_sbindir}
1295 install -m 0644 -D src/logrotate.conf %{buildroot}%{_sysconfdir}/logrotate.d/ceph
1296 chmod 0644 %{buildroot}%{_docdir}/ceph/sample.ceph.conf
1297 install -m 0644 -D COPYING %{buildroot}%{_docdir}/ceph/COPYING
1298 install -m 0644 -D etc/sysctl/90-ceph-osd.conf %{buildroot}%{_sysctldir}/90-ceph-osd.conf
1299
1300 install -m 0755 src/cephadm/cephadm %{buildroot}%{_sbindir}/cephadm
1301 mkdir -p %{buildroot}%{_sharedstatedir}/cephadm
1302 chmod 0700 %{buildroot}%{_sharedstatedir}/cephadm
1303 mkdir -p %{buildroot}%{_sharedstatedir}/cephadm/.ssh
1304 chmod 0700 %{buildroot}%{_sharedstatedir}/cephadm/.ssh
1305 touch %{buildroot}%{_sharedstatedir}/cephadm/.ssh/authorized_keys
1306 chmod 0600 %{buildroot}%{_sharedstatedir}/cephadm/.ssh/authorized_keys
1307
1308 # firewall templates and /sbin/mount.ceph symlink
1309 %if 0%{?suse_version}
1310 mkdir -p %{buildroot}/sbin
1311 ln -sf %{_sbindir}/mount.ceph %{buildroot}/sbin/mount.ceph
1312 %endif
1313
1314 # udev rules
1315 install -m 0644 -D udev/50-rbd.rules %{buildroot}%{_udevrulesdir}/50-rbd.rules
1316
1317 # sudoers.d
1318 install -m 0440 -D sudoers.d/ceph-osd-smartctl %{buildroot}%{_sysconfdir}/sudoers.d/ceph-osd-smartctl
1319
1320 %if 0%{?rhel} >= 8
1321 pathfix.py -pni "%{__python3} %{py3_shbang_opts}" %{buildroot}%{_bindir}/*
1322 pathfix.py -pni "%{__python3} %{py3_shbang_opts}" %{buildroot}%{_sbindir}/*
1323 %endif
1324
1325 #set up placeholder directories
1326 mkdir -p %{buildroot}%{_sysconfdir}/ceph
1327 mkdir -p %{buildroot}%{_localstatedir}/run/ceph
1328 mkdir -p %{buildroot}%{_localstatedir}/log/ceph
1329 mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/tmp
1330 mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/mon
1331 mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/osd
1332 mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/mds
1333 mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/mgr
1334 mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/crash
1335 mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/crash/posted
1336 mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/radosgw
1337 mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/bootstrap-osd
1338 mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/bootstrap-mds
1339 mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/bootstrap-rgw
1340 mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/bootstrap-mgr
1341 mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/bootstrap-rbd
1342 mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/bootstrap-rbd-mirror
1343
1344 # prometheus alerts
1345 install -m 644 -D monitoring/prometheus/alerts/ceph_default_alerts.yml %{buildroot}/etc/prometheus/ceph/ceph_default_alerts.yml
1346
1347 %if 0%{?suse_version}
1348 # create __pycache__ directories and their contents
1349 %py3_compile %{buildroot}%{python3_sitelib}
1350 # hardlink duplicate files under /usr to save space
1351 %fdupes %{buildroot}%{_prefix}
1352 %endif
1353
1354 %if 0%{?rhel} == 8
1355 %py_byte_compile %{__python3} %{buildroot}%{python3_sitelib}
1356 %endif
1357
1358 %clean
1359 rm -rf %{buildroot}
1360
1361 #################################################################################
1362 # files and systemd scriptlets
1363 #################################################################################
1364 %files
1365
1366 %files base
1367 %{_bindir}/ceph-crash
1368 %{_bindir}/crushtool
1369 %{_bindir}/monmaptool
1370 %{_bindir}/osdmaptool
1371 %{_bindir}/ceph-kvstore-tool
1372 %{_bindir}/ceph-run
1373 %{_libexecdir}/systemd/system-preset/50-ceph.preset
1374 %{_sbindir}/ceph-create-keys
1375 %dir %{_libexecdir}/ceph
1376 %{_libexecdir}/ceph/ceph_common.sh
1377 %dir %{_libdir}/rados-classes
1378 %{_libdir}/rados-classes/*
1379 %dir %{_libdir}/ceph
1380 %dir %{_libdir}/ceph/erasure-code
1381 %{_libdir}/ceph/erasure-code/libec_*.so*
1382 %dir %{_libdir}/ceph/compressor
1383 %{_libdir}/ceph/compressor/libceph_*.so*
1384 %{_unitdir}/ceph-crash.service
1385 %dir %{_libdir}/ceph/crypto
1386 %{_libdir}/ceph/crypto/libceph_*.so*
1387 %if %{with lttng}
1388 %{_libdir}/libos_tp.so*
1389 %{_libdir}/libosd_tp.so*
1390 %endif
1391 %config(noreplace) %{_sysconfdir}/logrotate.d/ceph
1392 %if 0%{?fedora} || 0%{?rhel}
1393 %config(noreplace) %{_sysconfdir}/sysconfig/ceph
1394 %endif
1395 %if 0%{?suse_version}
1396 %{_fillupdir}/sysconfig.*
1397 %endif
1398 %{_unitdir}/ceph.target
1399 %dir %{python3_sitelib}/ceph_volume
1400 %{python3_sitelib}/ceph_volume/*
1401 %{python3_sitelib}/ceph_volume-*
1402 %{_mandir}/man8/ceph-deploy.8*
1403 %{_mandir}/man8/ceph-create-keys.8*
1404 %{_mandir}/man8/ceph-run.8*
1405 %{_mandir}/man8/crushtool.8*
1406 %{_mandir}/man8/osdmaptool.8*
1407 %{_mandir}/man8/monmaptool.8*
1408 %{_mandir}/man8/ceph-kvstore-tool.8*
1409 #set up placeholder directories
1410 %attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/crash
1411 %attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/crash/posted
1412 %attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/tmp
1413 %attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/bootstrap-osd
1414 %attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/bootstrap-mds
1415 %attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/bootstrap-rgw
1416 %attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/bootstrap-mgr
1417 %attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/bootstrap-rbd
1418 %attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/bootstrap-rbd-mirror
1419
1420 %post base
1421 /sbin/ldconfig
1422 %if 0%{?suse_version}
1423 %fillup_only
1424 if [ $1 -eq 1 ] ; then
1425 /usr/bin/systemctl preset ceph.target ceph-crash.service >/dev/null 2>&1 || :
1426 fi
1427 %endif
1428 %if 0%{?fedora} || 0%{?rhel}
1429 %systemd_post ceph.target ceph-crash.service
1430 %endif
1431 if [ $1 -eq 1 ] ; then
1432 /usr/bin/systemctl start ceph.target ceph-crash.service >/dev/null 2>&1 || :
1433 fi
1434
1435 %preun base
1436 %if 0%{?suse_version}
1437 %service_del_preun ceph.target ceph-crash.service
1438 %endif
1439 %if 0%{?fedora} || 0%{?rhel}
1440 %systemd_preun ceph.target ceph-crash.service
1441 %endif
1442
1443 %postun base
1444 /sbin/ldconfig
1445 %if 0%{?suse_version}
1446 DISABLE_RESTART_ON_UPDATE="yes"
1447 %service_del_postun ceph.target
1448 %endif
1449 %if 0%{?fedora} || 0%{?rhel}
1450 %systemd_postun ceph.target
1451 %endif
1452 if [ $1 -ge 1 ] ; then
1453 # Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to
1454 # "yes". In any case: if units are not running, do not touch them.
1455 SYSCONF_CEPH=%{_sysconfdir}/sysconfig/ceph
1456 if [ -f $SYSCONF_CEPH -a -r $SYSCONF_CEPH ] ; then
1457 source $SYSCONF_CEPH
1458 fi
1459 fi
1460
1461 %pre -n cephadm
1462 getent group cephadm >/dev/null || groupadd -r cephadm
1463 getent passwd cephadm >/dev/null || useradd -r -g cephadm -s /bin/bash -c "cephadm user for mgr/cephadm" -d %{_sharedstatedir}/cephadm cephadm
1464 exit 0
1465
1466 %if ! 0%{?suse_version}
1467 %postun -n cephadm
1468 userdel -r cephadm || true
1469 exit 0
1470 %endif
1471
1472 %files -n cephadm
1473 %{_sbindir}/cephadm
1474 %{_mandir}/man8/cephadm.8*
1475 %attr(0700,cephadm,cephadm) %dir %{_sharedstatedir}/cephadm
1476 %attr(0700,cephadm,cephadm) %dir %{_sharedstatedir}/cephadm/.ssh
1477 %attr(0600,cephadm,cephadm) %{_sharedstatedir}/cephadm/.ssh/authorized_keys
1478
1479 %files common
1480 %dir %{_docdir}/ceph
1481 %doc %{_docdir}/ceph/sample.ceph.conf
1482 %license %{_docdir}/ceph/COPYING
1483 %{_bindir}/ceph
1484 %{_bindir}/ceph-authtool
1485 %{_bindir}/ceph-conf
1486 %{_bindir}/ceph-dencoder
1487 %{_bindir}/ceph-rbdnamer
1488 %{_bindir}/ceph-syn
1489 %{_bindir}/cephfs-data-scan
1490 %{_bindir}/cephfs-journal-tool
1491 %{_bindir}/cephfs-table-tool
1492 %{_bindir}/rados
1493 %{_bindir}/radosgw-admin
1494 %{_bindir}/rbd
1495 %{_bindir}/rbd-replay
1496 %{_bindir}/rbd-replay-many
1497 %{_bindir}/rbdmap
1498 %{_sbindir}/mount.ceph
1499 %if 0%{?suse_version}
1500 /sbin/mount.ceph
1501 %endif
1502 %if %{with lttng}
1503 %{_bindir}/rbd-replay-prep
1504 %endif
1505 %{_bindir}/ceph-post-file
1506 %{_tmpfilesdir}/ceph-common.conf
1507 %{_mandir}/man8/ceph-authtool.8*
1508 %{_mandir}/man8/ceph-conf.8*
1509 %{_mandir}/man8/ceph-dencoder.8*
1510 %{_mandir}/man8/ceph-diff-sorted.8*
1511 %{_mandir}/man8/ceph-rbdnamer.8*
1512 %{_mandir}/man8/ceph-syn.8*
1513 %{_mandir}/man8/ceph-post-file.8*
1514 %{_mandir}/man8/ceph.8*
1515 %{_mandir}/man8/mount.ceph.8*
1516 %{_mandir}/man8/rados.8*
1517 %{_mandir}/man8/radosgw-admin.8*
1518 %{_mandir}/man8/rbd.8*
1519 %{_mandir}/man8/rbdmap.8*
1520 %{_mandir}/man8/rbd-replay.8*
1521 %{_mandir}/man8/rbd-replay-many.8*
1522 %{_mandir}/man8/rbd-replay-prep.8*
1523 %{_mandir}/man8/rgw-orphan-list.8*
1524 %dir %{_datadir}/ceph/
1525 %{_datadir}/ceph/known_hosts_drop.ceph.com
1526 %{_datadir}/ceph/id_rsa_drop.ceph.com
1527 %{_datadir}/ceph/id_rsa_drop.ceph.com.pub
1528 %dir %{_sysconfdir}/ceph/
1529 %config %{_sysconfdir}/bash_completion.d/ceph
1530 %config %{_sysconfdir}/bash_completion.d/rados
1531 %config %{_sysconfdir}/bash_completion.d/rbd
1532 %config %{_sysconfdir}/bash_completion.d/radosgw-admin
1533 %config(noreplace) %{_sysconfdir}/ceph/rbdmap
1534 %{_unitdir}/rbdmap.service
1535 %dir %{_udevrulesdir}
1536 %{_udevrulesdir}/50-rbd.rules
1537 %attr(3770,ceph,ceph) %dir %{_localstatedir}/log/ceph/
1538 %attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/
1539
1540 %pre common
1541 CEPH_GROUP_ID=167
1542 CEPH_USER_ID=167
1543 %if 0%{?rhel} || 0%{?fedora}
1544 /usr/sbin/groupadd ceph -g $CEPH_GROUP_ID -o -r 2>/dev/null || :
1545 /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 || :
1546 %endif
1547 %if 0%{?suse_version}
1548 if ! getent group ceph >/dev/null ; then
1549 CEPH_GROUP_ID_OPTION=""
1550 getent group $CEPH_GROUP_ID >/dev/null || CEPH_GROUP_ID_OPTION="-g $CEPH_GROUP_ID"
1551 groupadd ceph $CEPH_GROUP_ID_OPTION -r 2>/dev/null || :
1552 fi
1553 if ! getent passwd ceph >/dev/null ; then
1554 CEPH_USER_ID_OPTION=""
1555 getent passwd $CEPH_USER_ID >/dev/null || CEPH_USER_ID_OPTION="-u $CEPH_USER_ID"
1556 useradd ceph $CEPH_USER_ID_OPTION -r -g ceph -s /sbin/nologin 2>/dev/null || :
1557 fi
1558 usermod -c "Ceph storage service" \
1559 -d %{_localstatedir}/lib/ceph \
1560 -g ceph \
1561 -s /sbin/nologin \
1562 ceph
1563 %endif
1564 exit 0
1565
1566 %post common
1567 %tmpfiles_create %{_tmpfilesdir}/ceph-common.conf
1568
1569 %postun common
1570 # Package removal cleanup
1571 if [ "$1" -eq "0" ] ; then
1572 rm -rf %{_localstatedir}/log/ceph
1573 rm -rf %{_sysconfdir}/ceph
1574 fi
1575
1576 %files mds
1577 %{_bindir}/ceph-mds
1578 %{_mandir}/man8/ceph-mds.8*
1579 %{_unitdir}/ceph-mds@.service
1580 %{_unitdir}/ceph-mds.target
1581 %attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/mds
1582
1583 %post mds
1584 %if 0%{?suse_version}
1585 if [ $1 -eq 1 ] ; then
1586 /usr/bin/systemctl preset ceph-mds@\*.service ceph-mds.target >/dev/null 2>&1 || :
1587 fi
1588 %endif
1589 %if 0%{?fedora} || 0%{?rhel}
1590 %systemd_post ceph-mds@\*.service ceph-mds.target
1591 %endif
1592 if [ $1 -eq 1 ] ; then
1593 /usr/bin/systemctl start ceph-mds.target >/dev/null 2>&1 || :
1594 fi
1595
1596 %preun mds
1597 %if 0%{?suse_version}
1598 %service_del_preun ceph-mds@\*.service ceph-mds.target
1599 %endif
1600 %if 0%{?fedora} || 0%{?rhel}
1601 %systemd_preun ceph-mds@\*.service ceph-mds.target
1602 %endif
1603
1604 %postun mds
1605 %if 0%{?suse_version}
1606 DISABLE_RESTART_ON_UPDATE="yes"
1607 %service_del_postun ceph-mds@\*.service ceph-mds.target
1608 %endif
1609 %if 0%{?fedora} || 0%{?rhel}
1610 %systemd_postun ceph-mds@\*.service ceph-mds.target
1611 %endif
1612 if [ $1 -ge 1 ] ; then
1613 # Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to
1614 # "yes". In any case: if units are not running, do not touch them.
1615 SYSCONF_CEPH=%{_sysconfdir}/sysconfig/ceph
1616 if [ -f $SYSCONF_CEPH -a -r $SYSCONF_CEPH ] ; then
1617 source $SYSCONF_CEPH
1618 fi
1619 if [ "X$CEPH_AUTO_RESTART_ON_UPGRADE" = "Xyes" ] ; then
1620 /usr/bin/systemctl try-restart ceph-mds@\*.service > /dev/null 2>&1 || :
1621 fi
1622 fi
1623
1624 %files mgr
1625 %{_bindir}/ceph-mgr
1626 %dir %{_datadir}/ceph/mgr
1627 %{_datadir}/ceph/mgr/mgr_module.*
1628 %{_datadir}/ceph/mgr/mgr_util.*
1629 %if 0%{?rhel} == 7
1630 %{_datadir}/ceph/mgr/__pycache__
1631 %endif
1632 %{_unitdir}/ceph-mgr@.service
1633 %{_unitdir}/ceph-mgr.target
1634 %attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/mgr
1635
1636 %post mgr
1637 %if 0%{?suse_version}
1638 if [ $1 -eq 1 ] ; then
1639 /usr/bin/systemctl preset ceph-mgr@\*.service ceph-mgr.target >/dev/null 2>&1 || :
1640 fi
1641 %endif
1642 %if 0%{?fedora} || 0%{?rhel}
1643 %systemd_post ceph-mgr@\*.service ceph-mgr.target
1644 %endif
1645 if [ $1 -eq 1 ] ; then
1646 /usr/bin/systemctl start ceph-mgr.target >/dev/null 2>&1 || :
1647 fi
1648
1649 %preun mgr
1650 %if 0%{?suse_version}
1651 %service_del_preun ceph-mgr@\*.service ceph-mgr.target
1652 %endif
1653 %if 0%{?fedora} || 0%{?rhel}
1654 %systemd_preun ceph-mgr@\*.service ceph-mgr.target
1655 %endif
1656
1657 %postun mgr
1658 %if 0%{?suse_version}
1659 DISABLE_RESTART_ON_UPDATE="yes"
1660 %service_del_postun ceph-mgr@\*.service ceph-mgr.target
1661 %endif
1662 %if 0%{?fedora} || 0%{?rhel}
1663 %systemd_postun ceph-mgr@\*.service ceph-mgr.target
1664 %endif
1665 if [ $1 -ge 1 ] ; then
1666 # Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to
1667 # "yes". In any case: if units are not running, do not touch them.
1668 SYSCONF_CEPH=%{_sysconfdir}/sysconfig/ceph
1669 if [ -f $SYSCONF_CEPH -a -r $SYSCONF_CEPH ] ; then
1670 source $SYSCONF_CEPH
1671 fi
1672 if [ "X$CEPH_AUTO_RESTART_ON_UPGRADE" = "Xyes" ] ; then
1673 /usr/bin/systemctl try-restart ceph-mgr@\*.service > /dev/null 2>&1 || :
1674 fi
1675 fi
1676
1677 %files mgr-dashboard
1678 %{_datadir}/ceph/mgr/dashboard
1679
1680 %post mgr-dashboard
1681 if [ $1 -eq 1 ] ; then
1682 /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || :
1683 fi
1684
1685 %postun mgr-dashboard
1686 if [ $1 -eq 1 ] ; then
1687 /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || :
1688 fi
1689
1690 %files mgr-diskprediction-local
1691 %{_datadir}/ceph/mgr/diskprediction_local
1692
1693 %post mgr-diskprediction-local
1694 if [ $1 -eq 1 ] ; then
1695 /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || :
1696 fi
1697
1698 %postun mgr-diskprediction-local
1699 if [ $1 -eq 1 ] ; then
1700 /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || :
1701 fi
1702
1703 %files mgr-diskprediction-cloud
1704 %{_datadir}/ceph/mgr/diskprediction_cloud
1705
1706 %post mgr-diskprediction-cloud
1707 if [ $1 -eq 1 ] ; then
1708 /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || :
1709 fi
1710
1711 %postun mgr-diskprediction-cloud
1712 if [ $1 -eq 1 ] ; then
1713 /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || :
1714 fi
1715
1716 %files mgr-modules-core
1717 %dir %{_datadir}/ceph/mgr
1718 %{_datadir}/ceph/mgr/alerts
1719 %{_datadir}/ceph/mgr/balancer
1720 %{_datadir}/ceph/mgr/crash
1721 %{_datadir}/ceph/mgr/devicehealth
1722 %{_datadir}/ceph/mgr/influx
1723 %{_datadir}/ceph/mgr/insights
1724 %{_datadir}/ceph/mgr/iostat
1725 %{_datadir}/ceph/mgr/localpool
1726 %{_datadir}/ceph/mgr/orchestrator
1727 %{_datadir}/ceph/mgr/osd_perf_query
1728 %{_datadir}/ceph/mgr/osd_support
1729 %{_datadir}/ceph/mgr/pg_autoscaler
1730 %{_datadir}/ceph/mgr/progress
1731 %{_datadir}/ceph/mgr/prometheus
1732 %{_datadir}/ceph/mgr/rbd_support
1733 %{_datadir}/ceph/mgr/restful
1734 %{_datadir}/ceph/mgr/selftest
1735 %{_datadir}/ceph/mgr/status
1736 %{_datadir}/ceph/mgr/telegraf
1737 %{_datadir}/ceph/mgr/telemetry
1738 %{_datadir}/ceph/mgr/test_orchestrator
1739 %{_datadir}/ceph/mgr/volumes
1740 %{_datadir}/ceph/mgr/zabbix
1741
1742 %files mgr-rook
1743 %{_datadir}/ceph/mgr/rook
1744
1745 %post mgr-rook
1746 if [ $1 -eq 1 ] ; then
1747 /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || :
1748 fi
1749
1750 %postun mgr-rook
1751 if [ $1 -eq 1 ] ; then
1752 /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || :
1753 fi
1754
1755 %files mgr-k8sevents
1756 %{_datadir}/ceph/mgr/k8sevents
1757
1758 %post mgr-k8sevents
1759 if [ $1 -eq 1 ] ; then
1760 /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || :
1761 fi
1762
1763 %postun mgr-k8sevents
1764 if [ $1 -eq 1 ] ; then
1765 /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || :
1766 fi
1767
1768 %files mgr-cephadm
1769 %{_datadir}/ceph/mgr/cephadm
1770
1771 %post mgr-cephadm
1772 if [ $1 -eq 1 ] ; then
1773 /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || :
1774 fi
1775
1776 %postun mgr-cephadm
1777 if [ $1 -eq 1 ] ; then
1778 /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || :
1779 fi
1780
1781 %files mon
1782 %{_bindir}/ceph-mon
1783 %{_bindir}/ceph-monstore-tool
1784 %{_mandir}/man8/ceph-mon.8*
1785 %{_unitdir}/ceph-mon@.service
1786 %{_unitdir}/ceph-mon.target
1787 %attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/mon
1788
1789 %post mon
1790 %if 0%{?suse_version}
1791 if [ $1 -eq 1 ] ; then
1792 /usr/bin/systemctl preset ceph-mon@\*.service ceph-mon.target >/dev/null 2>&1 || :
1793 fi
1794 %endif
1795 %if 0%{?fedora} || 0%{?rhel}
1796 %systemd_post ceph-mon@\*.service ceph-mon.target
1797 %endif
1798 if [ $1 -eq 1 ] ; then
1799 /usr/bin/systemctl start ceph-mon.target >/dev/null 2>&1 || :
1800 fi
1801
1802 %preun mon
1803 %if 0%{?suse_version}
1804 %service_del_preun ceph-mon@\*.service ceph-mon.target
1805 %endif
1806 %if 0%{?fedora} || 0%{?rhel}
1807 %systemd_preun ceph-mon@\*.service ceph-mon.target
1808 %endif
1809
1810 %postun mon
1811 %if 0%{?suse_version}
1812 DISABLE_RESTART_ON_UPDATE="yes"
1813 %service_del_postun ceph-mon@\*.service ceph-mon.target
1814 %endif
1815 %if 0%{?fedora} || 0%{?rhel}
1816 %systemd_postun ceph-mon@\*.service ceph-mon.target
1817 %endif
1818 if [ $1 -ge 1 ] ; then
1819 # Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to
1820 # "yes". In any case: if units are not running, do not touch them.
1821 SYSCONF_CEPH=%{_sysconfdir}/sysconfig/ceph
1822 if [ -f $SYSCONF_CEPH -a -r $SYSCONF_CEPH ] ; then
1823 source $SYSCONF_CEPH
1824 fi
1825 if [ "X$CEPH_AUTO_RESTART_ON_UPGRADE" = "Xyes" ] ; then
1826 /usr/bin/systemctl try-restart ceph-mon@\*.service > /dev/null 2>&1 || :
1827 fi
1828 fi
1829
1830 %files fuse
1831 %{_bindir}/ceph-fuse
1832 %{_mandir}/man8/ceph-fuse.8*
1833 %{_sbindir}/mount.fuse.ceph
1834 %{_unitdir}/ceph-fuse@.service
1835 %{_unitdir}/ceph-fuse.target
1836
1837 %files -n rbd-fuse
1838 %{_bindir}/rbd-fuse
1839 %{_mandir}/man8/rbd-fuse.8*
1840
1841 %files -n rbd-mirror
1842 %{_bindir}/rbd-mirror
1843 %{_mandir}/man8/rbd-mirror.8*
1844 %{_unitdir}/ceph-rbd-mirror@.service
1845 %{_unitdir}/ceph-rbd-mirror.target
1846
1847 %post -n rbd-mirror
1848 %if 0%{?suse_version}
1849 if [ $1 -eq 1 ] ; then
1850 /usr/bin/systemctl preset ceph-rbd-mirror@\*.service ceph-rbd-mirror.target >/dev/null 2>&1 || :
1851 fi
1852 %endif
1853 %if 0%{?fedora} || 0%{?rhel}
1854 %systemd_post ceph-rbd-mirror@\*.service ceph-rbd-mirror.target
1855 %endif
1856 if [ $1 -eq 1 ] ; then
1857 /usr/bin/systemctl start ceph-rbd-mirror.target >/dev/null 2>&1 || :
1858 fi
1859
1860 %preun -n rbd-mirror
1861 %if 0%{?suse_version}
1862 %service_del_preun ceph-rbd-mirror@\*.service ceph-rbd-mirror.target
1863 %endif
1864 %if 0%{?fedora} || 0%{?rhel}
1865 %systemd_preun ceph-rbd-mirror@\*.service ceph-rbd-mirror.target
1866 %endif
1867
1868 %postun -n rbd-mirror
1869 %if 0%{?suse_version}
1870 DISABLE_RESTART_ON_UPDATE="yes"
1871 %service_del_postun ceph-rbd-mirror@\*.service ceph-rbd-mirror.target
1872 %endif
1873 %if 0%{?fedora} || 0%{?rhel}
1874 %systemd_postun ceph-rbd-mirror@\*.service ceph-rbd-mirror.target
1875 %endif
1876 if [ $1 -ge 1 ] ; then
1877 # Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to
1878 # "yes". In any case: if units are not running, do not touch them.
1879 SYSCONF_CEPH=%{_sysconfdir}/sysconfig/ceph
1880 if [ -f $SYSCONF_CEPH -a -r $SYSCONF_CEPH ] ; then
1881 source $SYSCONF_CEPH
1882 fi
1883 if [ "X$CEPH_AUTO_RESTART_ON_UPGRADE" = "Xyes" ] ; then
1884 /usr/bin/systemctl try-restart ceph-rbd-mirror@\*.service > /dev/null 2>&1 || :
1885 fi
1886 fi
1887
1888 %files immutable-object-cache
1889 %{_bindir}/ceph-immutable-object-cache
1890 %{_mandir}/man8/ceph-immutable-object-cache.8*
1891 %{_unitdir}/ceph-immutable-object-cache@.service
1892 %{_unitdir}/ceph-immutable-object-cache.target
1893
1894 %post immutable-object-cache
1895 %if 0%{?suse_version}
1896 if [ $1 -eq 1 ] ; then
1897 /usr/bin/systemctl preset ceph-immutable-object-cache@\*.service ceph-immutable-object-cache.target >/dev/null 2>&1 || :
1898 fi
1899 %endif
1900 %if 0%{?fedora} || 0%{?rhel}
1901 %systemd_post ceph-immutable-object-cache@\*.service ceph-immutable-object-cache.target
1902 %endif
1903 if [ $1 -eq 1 ] ; then
1904 /usr/bin/systemctl start ceph-immutable-object-cache.target >/dev/null 2>&1 || :
1905 fi
1906
1907 %preun immutable-object-cache
1908 %if 0%{?suse_version}
1909 %service_del_preun ceph-immutable-object-cache@\*.service ceph-immutable-object-cache.target
1910 %endif
1911 %if 0%{?fedora} || 0%{?rhel}
1912 %systemd_preun ceph-immutable-object-cache@\*.service ceph-immutable-object-cache.target
1913 %endif
1914
1915 %postun immutable-object-cache
1916 test -n "$FIRST_ARG" || FIRST_ARG=$1
1917 %if 0%{?suse_version}
1918 DISABLE_RESTART_ON_UPDATE="yes"
1919 %service_del_postun ceph-immutable-object-cache@\*.service ceph-immutable-object-cache.target
1920 %endif
1921 %if 0%{?fedora} || 0%{?rhel}
1922 %systemd_postun ceph-immutable-object-cache@\*.service ceph-immutable-object-cache.target
1923 %endif
1924 if [ $FIRST_ARG -ge 1 ] ; then
1925 # Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to
1926 # "yes". In any case: if units are not running, do not touch them.
1927 SYSCONF_CEPH=%{_sysconfdir}/sysconfig/ceph
1928 if [ -f $SYSCONF_CEPH -a -r $SYSCONF_CEPH ] ; then
1929 source $SYSCONF_CEPH
1930 fi
1931 if [ "X$CEPH_AUTO_RESTART_ON_UPGRADE" = "Xyes" ] ; then
1932 /usr/bin/systemctl try-restart ceph-immutable-object-cache@\*.service > /dev/null 2>&1 || :
1933 fi
1934 fi
1935
1936 %files -n rbd-nbd
1937 %{_bindir}/rbd-nbd
1938 %{_mandir}/man8/rbd-nbd.8*
1939
1940 %files radosgw
1941 %{_bindir}/ceph-diff-sorted
1942 %{_bindir}/radosgw
1943 %{_bindir}/radosgw-token
1944 %{_bindir}/radosgw-es
1945 %{_bindir}/radosgw-object-expirer
1946 %{_bindir}/rgw-orphan-list
1947 %{_libdir}/libradosgw.so*
1948 %{_mandir}/man8/radosgw.8*
1949 %dir %{_localstatedir}/lib/ceph/radosgw
1950 %{_unitdir}/ceph-radosgw@.service
1951 %{_unitdir}/ceph-radosgw.target
1952
1953 %post radosgw
1954 /sbin/ldconfig
1955 %if 0%{?suse_version}
1956 if [ $1 -eq 1 ] ; then
1957 /usr/bin/systemctl preset ceph-radosgw@\*.service ceph-radosgw.target >/dev/null 2>&1 || :
1958 fi
1959 %endif
1960 %if 0%{?fedora} || 0%{?rhel}
1961 %systemd_post ceph-radosgw@\*.service ceph-radosgw.target
1962 %endif
1963 if [ $1 -eq 1 ] ; then
1964 /usr/bin/systemctl start ceph-radosgw.target >/dev/null 2>&1 || :
1965 fi
1966
1967 %preun radosgw
1968 %if 0%{?suse_version}
1969 %service_del_preun ceph-radosgw@\*.service ceph-radosgw.target
1970 %endif
1971 %if 0%{?fedora} || 0%{?rhel}
1972 %systemd_preun ceph-radosgw@\*.service ceph-radosgw.target
1973 %endif
1974
1975 %postun radosgw
1976 /sbin/ldconfig
1977 %if 0%{?suse_version}
1978 DISABLE_RESTART_ON_UPDATE="yes"
1979 %service_del_postun ceph-radosgw@\*.service ceph-radosgw.target
1980 %endif
1981 %if 0%{?fedora} || 0%{?rhel}
1982 %systemd_postun ceph-radosgw@\*.service ceph-radosgw.target
1983 %endif
1984 if [ $1 -ge 1 ] ; then
1985 # Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to
1986 # "yes". In any case: if units are not running, do not touch them.
1987 SYSCONF_CEPH=%{_sysconfdir}/sysconfig/ceph
1988 if [ -f $SYSCONF_CEPH -a -r $SYSCONF_CEPH ] ; then
1989 source $SYSCONF_CEPH
1990 fi
1991 if [ "X$CEPH_AUTO_RESTART_ON_UPGRADE" = "Xyes" ] ; then
1992 /usr/bin/systemctl try-restart ceph-radosgw@\*.service > /dev/null 2>&1 || :
1993 fi
1994 fi
1995
1996 %files osd
1997 %{_bindir}/ceph-clsinfo
1998 %{_bindir}/ceph-bluestore-tool
1999 %{_bindir}/ceph-objectstore-tool
2000 %{_bindir}/ceph-osdomap-tool
2001 %{_bindir}/ceph-osd
2002 %{_libexecdir}/ceph/ceph-osd-prestart.sh
2003 %{_sbindir}/ceph-volume
2004 %{_sbindir}/ceph-volume-systemd
2005 %{_mandir}/man8/ceph-clsinfo.8*
2006 %{_mandir}/man8/ceph-osd.8*
2007 %{_mandir}/man8/ceph-bluestore-tool.8*
2008 %{_mandir}/man8/ceph-volume.8*
2009 %{_mandir}/man8/ceph-volume-systemd.8*
2010 %{_unitdir}/ceph-osd@.service
2011 %{_unitdir}/ceph-osd.target
2012 %{_unitdir}/ceph-volume@.service
2013 %attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/osd
2014 %config(noreplace) %{_sysctldir}/90-ceph-osd.conf
2015 %{_sysconfdir}/sudoers.d/ceph-osd-smartctl
2016
2017 %post osd
2018 %if 0%{?suse_version}
2019 if [ $1 -eq 1 ] ; then
2020 /usr/bin/systemctl preset ceph-osd@\*.service ceph-volume@\*.service ceph-osd.target >/dev/null 2>&1 || :
2021 fi
2022 %endif
2023 %if 0%{?fedora} || 0%{?rhel}
2024 %systemd_post ceph-osd@\*.service ceph-volume@\*.service ceph-osd.target
2025 %endif
2026 if [ $1 -eq 1 ] ; then
2027 /usr/bin/systemctl start ceph-osd.target >/dev/null 2>&1 || :
2028 fi
2029 %if 0%{?sysctl_apply}
2030 %sysctl_apply 90-ceph-osd.conf
2031 %else
2032 /usr/lib/systemd/systemd-sysctl %{_sysctldir}/90-ceph-osd.conf > /dev/null 2>&1 || :
2033 %endif
2034
2035 %preun osd
2036 %if 0%{?suse_version}
2037 %service_del_preun ceph-osd@\*.service ceph-volume@\*.service ceph-osd.target
2038 %endif
2039 %if 0%{?fedora} || 0%{?rhel}
2040 %systemd_preun ceph-osd@\*.service ceph-volume@\*.service ceph-osd.target
2041 %endif
2042
2043 %postun osd
2044 %if 0%{?suse_version}
2045 DISABLE_RESTART_ON_UPDATE="yes"
2046 %service_del_postun ceph-osd@\*.service ceph-volume@\*.service ceph-osd.target
2047 %endif
2048 %if 0%{?fedora} || 0%{?rhel}
2049 %systemd_postun ceph-osd@\*.service ceph-volume@\*.service ceph-osd.target
2050 %endif
2051 if [ $1 -ge 1 ] ; then
2052 # Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to
2053 # "yes". In any case: if units are not running, do not touch them.
2054 SYSCONF_CEPH=%{_sysconfdir}/sysconfig/ceph
2055 if [ -f $SYSCONF_CEPH -a -r $SYSCONF_CEPH ] ; then
2056 source $SYSCONF_CEPH
2057 fi
2058 if [ "X$CEPH_AUTO_RESTART_ON_UPGRADE" = "Xyes" ] ; then
2059 /usr/bin/systemctl try-restart ceph-osd@\*.service ceph-volume@\*.service > /dev/null 2>&1 || :
2060 fi
2061 fi
2062
2063 %if 0%{with seastar}
2064 %files crimson-osd
2065 %{_bindir}/crimson-osd
2066 %endif
2067
2068 %if %{with ocf}
2069
2070 %files resource-agents
2071 %dir %{_prefix}/lib/ocf
2072 %dir %{_prefix}/lib/ocf/resource.d
2073 %dir %{_prefix}/lib/ocf/resource.d/ceph
2074 %attr(0755,-,-) %{_prefix}/lib/ocf/resource.d/ceph/rbd
2075
2076 %endif
2077
2078 %files -n librados2
2079 %{_libdir}/librados.so.*
2080 %dir %{_libdir}/ceph
2081 %{_libdir}/ceph/libceph-common.so.*
2082 %if %{with lttng}
2083 %{_libdir}/librados_tp.so.*
2084 %endif
2085 %dir %{_sysconfdir}/ceph
2086
2087 %post -n librados2 -p /sbin/ldconfig
2088
2089 %postun -n librados2 -p /sbin/ldconfig
2090
2091 %files -n librados-devel
2092 %dir %{_includedir}/rados
2093 %{_includedir}/rados/librados.h
2094 %{_includedir}/rados/rados_types.h
2095 %{_libdir}/librados.so
2096 %if %{with lttng}
2097 %{_libdir}/librados_tp.so
2098 %endif
2099 %{_bindir}/librados-config
2100 %{_mandir}/man8/librados-config.8*
2101
2102 %files -n libradospp-devel
2103 %dir %{_includedir}/rados
2104 %{_includedir}/rados/buffer.h
2105 %{_includedir}/rados/buffer_fwd.h
2106 %{_includedir}/rados/crc32c.h
2107 %{_includedir}/rados/inline_memory.h
2108 %{_includedir}/rados/librados.hpp
2109 %{_includedir}/rados/librados_fwd.hpp
2110 %{_includedir}/rados/page.h
2111 %{_includedir}/rados/rados_types.hpp
2112
2113 %files -n python%{python3_pkgversion}-rados
2114 %{python3_sitearch}/rados.cpython*.so
2115 %{python3_sitearch}/rados-*.egg-info
2116
2117 %if 0%{with libradosstriper}
2118 %files -n libradosstriper1
2119 %{_libdir}/libradosstriper.so.*
2120
2121 %post -n libradosstriper1 -p /sbin/ldconfig
2122
2123 %postun -n libradosstriper1 -p /sbin/ldconfig
2124
2125 %files -n libradosstriper-devel
2126 %dir %{_includedir}/radosstriper
2127 %{_includedir}/radosstriper/libradosstriper.h
2128 %{_includedir}/radosstriper/libradosstriper.hpp
2129 %{_libdir}/libradosstriper.so
2130 %endif
2131
2132 %files -n librbd1
2133 %{_libdir}/librbd.so.*
2134 %if %{with lttng}
2135 %{_libdir}/librbd_tp.so.*
2136 %endif
2137
2138 %post -n librbd1 -p /sbin/ldconfig
2139
2140 %postun -n librbd1 -p /sbin/ldconfig
2141
2142 %files -n librbd-devel
2143 %dir %{_includedir}/rbd
2144 %{_includedir}/rbd/librbd.h
2145 %{_includedir}/rbd/librbd.hpp
2146 %{_includedir}/rbd/features.h
2147 %{_libdir}/librbd.so
2148 %if %{with lttng}
2149 %{_libdir}/librbd_tp.so
2150 %endif
2151
2152 %files -n librgw2
2153 %{_libdir}/librgw.so.*
2154 %if %{with lttng}
2155 %{_libdir}/librgw_op_tp.so.*
2156 %{_libdir}/librgw_rados_tp.so.*
2157 %endif
2158
2159 %post -n librgw2 -p /sbin/ldconfig
2160
2161 %postun -n librgw2 -p /sbin/ldconfig
2162
2163 %files -n librgw-devel
2164 %dir %{_includedir}/rados
2165 %{_includedir}/rados/librgw.h
2166 %{_includedir}/rados/rgw_file.h
2167 %{_libdir}/librgw.so
2168 %if %{with lttng}
2169 %{_libdir}/librgw_op_tp.so
2170 %{_libdir}/librgw_rados_tp.so
2171 %endif
2172
2173 %files -n python%{python3_pkgversion}-rgw
2174 %{python3_sitearch}/rgw.cpython*.so
2175 %{python3_sitearch}/rgw-*.egg-info
2176
2177 %files -n python%{python3_pkgversion}-rbd
2178 %{python3_sitearch}/rbd.cpython*.so
2179 %{python3_sitearch}/rbd-*.egg-info
2180
2181 %files -n libcephfs2
2182 %{_libdir}/libcephfs.so.*
2183 %dir %{_sysconfdir}/ceph
2184
2185 %post -n libcephfs2 -p /sbin/ldconfig
2186
2187 %postun -n libcephfs2 -p /sbin/ldconfig
2188
2189 %files -n libcephfs-devel
2190 %dir %{_includedir}/cephfs
2191 %{_includedir}/cephfs/libcephfs.h
2192 %{_includedir}/cephfs/ceph_ll_client.h
2193 %{_libdir}/libcephfs.so
2194
2195 %files -n python%{python3_pkgversion}-cephfs
2196 %{python3_sitearch}/cephfs.cpython*.so
2197 %{python3_sitearch}/cephfs-*.egg-info
2198 %{python3_sitelib}/ceph_volume_client.py
2199 %{python3_sitelib}/__pycache__/ceph_volume_client.cpython*.py*
2200
2201 %files -n python%{python3_pkgversion}-ceph-argparse
2202 %{python3_sitelib}/ceph_argparse.py
2203 %{python3_sitelib}/__pycache__/ceph_argparse.cpython*.py*
2204 %{python3_sitelib}/ceph_daemon.py
2205 %{python3_sitelib}/__pycache__/ceph_daemon.cpython*.py*
2206
2207 %files -n python%{python3_pkgversion}-ceph-common
2208 %{python3_sitelib}/ceph
2209 %{python3_sitelib}/ceph-*.egg-info
2210
2211 %if 0%{with cephfs_shell}
2212 %files -n cephfs-shell
2213 %{python3_sitelib}/cephfs_shell-*.egg-info
2214 %{_bindir}/cephfs-shell
2215 %endif
2216
2217 %if 0%{with ceph_test_package}
2218 %files -n ceph-test
2219 %{_bindir}/ceph-client-debug
2220 %{_bindir}/ceph_bench_log
2221 %{_bindir}/ceph_kvstorebench
2222 %{_bindir}/ceph_multi_stress_watch
2223 %{_bindir}/ceph_erasure_code
2224 %{_bindir}/ceph_erasure_code_benchmark
2225 %{_bindir}/ceph_omapbench
2226 %{_bindir}/ceph_objectstore_bench
2227 %{_bindir}/ceph_perf_objectstore
2228 %{_bindir}/ceph_perf_local
2229 %{_bindir}/ceph_perf_msgr_client
2230 %{_bindir}/ceph_perf_msgr_server
2231 %{_bindir}/ceph_psim
2232 %{_bindir}/ceph_radosacl
2233 %{_bindir}/ceph_rgw_jsonparser
2234 %{_bindir}/ceph_rgw_multiparser
2235 %{_bindir}/ceph_scratchtool
2236 %{_bindir}/ceph_scratchtoolpp
2237 %{_bindir}/ceph_test_*
2238 %{_bindir}/ceph-coverage
2239 %{_bindir}/ceph-debugpack
2240 %{_bindir}/ceph-dedup-tool
2241 %{_mandir}/man8/ceph-debugpack.8*
2242 %dir %{_libdir}/ceph
2243 %{_libdir}/ceph/ceph-monstore-update-crush.sh
2244 %endif
2245
2246 %if 0%{with cephfs_java}
2247 %files -n libcephfs_jni1
2248 %{_libdir}/libcephfs_jni.so.*
2249
2250 %post -n libcephfs_jni1 -p /sbin/ldconfig
2251
2252 %postun -n libcephfs_jni1 -p /sbin/ldconfig
2253
2254 %files -n libcephfs_jni-devel
2255 %{_libdir}/libcephfs_jni.so
2256
2257 %files -n cephfs-java
2258 %{_javadir}/libcephfs.jar
2259 %{_javadir}/libcephfs-test.jar
2260 %endif
2261
2262 %files -n rados-objclass-devel
2263 %dir %{_includedir}/rados
2264 %{_includedir}/rados/objclass.h
2265
2266 %if 0%{with selinux}
2267 %files selinux
2268 %attr(0600,root,root) %{_datadir}/selinux/packages/ceph.pp
2269 %{_datadir}/selinux/devel/include/contrib/ceph.if
2270 %{_mandir}/man8/ceph_selinux.8*
2271
2272 %post selinux
2273 # backup file_contexts before update
2274 . /etc/selinux/config
2275 FILE_CONTEXT=/etc/selinux/${SELINUXTYPE}/contexts/files/file_contexts
2276 cp ${FILE_CONTEXT} ${FILE_CONTEXT}.pre
2277
2278 # Install the policy
2279 /usr/sbin/semodule -i %{_datadir}/selinux/packages/ceph.pp
2280
2281 # Load the policy if SELinux is enabled
2282 if ! /usr/sbin/selinuxenabled; then
2283 # Do not relabel if selinux is not enabled
2284 exit 0
2285 fi
2286
2287 if diff ${FILE_CONTEXT} ${FILE_CONTEXT}.pre > /dev/null 2>&1; then
2288 # Do not relabel if file contexts did not change
2289 exit 0
2290 fi
2291
2292 # Check whether the daemons are running
2293 /usr/bin/systemctl status ceph.target > /dev/null 2>&1
2294 STATUS=$?
2295
2296 # Stop the daemons if they were running
2297 if test $STATUS -eq 0; then
2298 /usr/bin/systemctl stop ceph.target > /dev/null 2>&1
2299 fi
2300
2301 # Relabel the files fix for first package install
2302 /usr/sbin/fixfiles -C ${FILE_CONTEXT}.pre restore 2> /dev/null
2303
2304 rm -f ${FILE_CONTEXT}.pre
2305 # The fixfiles command won't fix label for /var/run/ceph
2306 /usr/sbin/restorecon -R /var/run/ceph > /dev/null 2>&1
2307
2308 # Start the daemons iff they were running before
2309 if test $STATUS -eq 0; then
2310 /usr/bin/systemctl start ceph.target > /dev/null 2>&1 || :
2311 fi
2312 exit 0
2313
2314 %postun selinux
2315 if [ $1 -eq 0 ]; then
2316 # backup file_contexts before update
2317 . /etc/selinux/config
2318 FILE_CONTEXT=/etc/selinux/${SELINUXTYPE}/contexts/files/file_contexts
2319 cp ${FILE_CONTEXT} ${FILE_CONTEXT}.pre
2320
2321 # Remove the module
2322 /usr/sbin/semodule -n -r ceph > /dev/null 2>&1
2323
2324 # Reload the policy if SELinux is enabled
2325 if ! /usr/sbin/selinuxenabled ; then
2326 # Do not relabel if SELinux is not enabled
2327 exit 0
2328 fi
2329
2330 # Check whether the daemons are running
2331 /usr/bin/systemctl status ceph.target > /dev/null 2>&1
2332 STATUS=$?
2333
2334 # Stop the daemons if they were running
2335 if test $STATUS -eq 0; then
2336 /usr/bin/systemctl stop ceph.target > /dev/null 2>&1
2337 fi
2338
2339 /usr/sbin/fixfiles -C ${FILE_CONTEXT}.pre restore 2> /dev/null
2340 rm -f ${FILE_CONTEXT}.pre
2341 # The fixfiles command won't fix label for /var/run/ceph
2342 /usr/sbin/restorecon -R /var/run/ceph > /dev/null 2>&1
2343
2344 # Start the daemons if they were running before
2345 if test $STATUS -eq 0; then
2346 /usr/bin/systemctl start ceph.target > /dev/null 2>&1 || :
2347 fi
2348 fi
2349 exit 0
2350 %endif
2351
2352 %files grafana-dashboards
2353 %if 0%{?suse_version}
2354 %attr(0755,root,root) %dir %{_sysconfdir}/grafana
2355 %attr(0755,root,root) %dir %{_sysconfdir}/grafana/dashboards
2356 %endif
2357 %attr(0755,root,root) %dir %{_sysconfdir}/grafana/dashboards/ceph-dashboard
2358 %config %{_sysconfdir}/grafana/dashboards/ceph-dashboard/*
2359 %doc monitoring/grafana/dashboards/README
2360 %doc monitoring/grafana/README.md
2361
2362 %files prometheus-alerts
2363 %if 0%{?suse_version}
2364 %attr(0755,root,root) %dir %{_sysconfdir}/prometheus
2365 %endif
2366 %attr(0755,root,root) %dir %{_sysconfdir}/prometheus/ceph
2367 %config %{_sysconfdir}/prometheus/ceph/ceph_default_alerts.yml
2368
2369 %changelog