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