diff --git a/.gitignore b/.gitignore index e69de29..566c393 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1,2 @@ +ceph-*.tar.* +*.src.rpm diff --git a/0001-src-common-crc32c_intel_fast.patch b/0001-src-common-crc32c_intel_fast.patch new file mode 100644 index 0000000..80066b7 --- /dev/null +++ b/0001-src-common-crc32c_intel_fast.patch @@ -0,0 +1,228 @@ +--- ceph-15.2.4/src/yasm-wrapper.orig 2020-06-30 11:40:51.000000000 -0400 ++++ ceph-15.2.4/src/yasm-wrapper 2020-07-20 12:21:34.574980869 -0400 +@@ -1,10 +1,11 @@ +-#!/bin/sh -e ++#!/bin/sh + + # libtool and yasm do not get along. + # filter out any crap that libtool feeds us that yasm does not understand. + #echo $0: got $* + new="" + touch="" ++object="" + while [ -n "$*" ]; do + case "$1" in + -f ) +@@ -29,6 +30,12 @@ + touch="$1" + shift + ;; ++ -o ) ++ shift ++ object="$1" ++ new="$new -o $1" ++ shift ++ ;; + * ) + new="$new $1" + shift +@@ -36,8 +43,15 @@ + esac + done + +-#echo $0: yasm $new +-yasm $new ++#echo ${0}: yasm ${new} ++yasm ${new} ++ ++echo ${new} | grep -- "crc32c_intel_fast*asm\.s" ++if [ $? -ne 0 ]; then ++ touch /tmp/${object} ++ ld -r -z ibt -z shstk -z noexecstack -o ${object}.tmp ${object} ++ mv ${object}.tmp ${object} ++fi + + [ -n "$touch" ] && touch $touch + +--- ceph-15.2.2/src/common/crc32c_intel_fast_asm.s.orig 2020-05-26 08:34:32.226201974 -0400 ++++ ceph-15.2.2/src/common/crc32c_intel_fast_asm.s 2020-05-26 17:19:20.327201974 -0400 +@@ -1,5 +1,5 @@ + ; +-; Copyright 2012-2013 Intel Corporation All Rights Reserved. ++; Copyright 2012-2015 Intel Corporation All Rights Reserved. + ; All rights reserved. + ; + ; http://opensource.org/licenses/BSD-3-Clause +@@ -59,16 +59,34 @@ + xor rbx, rbx ;; rbx = crc1 = 0; + xor r10, r10 ;; r10 = crc2 = 0; + ++ cmp len, %%bSize*3*2 ++ jbe %%non_prefetch ++ + %assign i 0 + %rep %%bSize/8 - 1 +- crc32 rax, [bufptmp+i + 0*%%bSize] ;; update crc0 +- crc32 rbx, [bufptmp+i + 1*%%bSize] ;; update crc1 +- crc32 r10, [bufptmp+i + 2*%%bSize] ;; update crc2 ++ %if i < %%bSize*3/4 ++ prefetchnta [bufptmp+ %%bSize*3 + i*4] ++ %endif ++ crc32 rax, qword [bufptmp+i + 0*%%bSize] ;; update crc0 ++ crc32 rbx, qword [bufptmp+i + 1*%%bSize] ;; update crc1 ++ crc32 r10, qword [bufptmp+i + 2*%%bSize] ;; update crc2 + %assign i (i+8) + %endrep +- crc32 rax, [bufptmp+i + 0*%%bSize] ;; update crc0 +- crc32 rbx, [bufptmp+i + 1*%%bSize] ;; update crc1 +-; SKIP ;crc32 r10, [bufptmp+i + 2*%%bSize] ;; update crc2 ++ jmp %%next %+ %1 ++ ++%%non_prefetch: ++ %assign i 0 ++ %rep %%bSize/8 - 1 ++ crc32 rax, qword [bufptmp+i + 0*%%bSize] ;; update crc0 ++ crc32 rbx, qword [bufptmp+i + 1*%%bSize] ;; update crc1 ++ crc32 r10, qword [bufptmp+i + 2*%%bSize] ;; update crc2 ++ %assign i (i+8) ++ %endrep ++ ++%%next %+ %1: ++ crc32 rax, qword [bufptmp+i + 0*%%bSize] ;; update crc0 ++ crc32 rbx, qword [bufptmp+i + 1*%%bSize] ;; update crc1 ++; SKIP ;crc32 r10, qword [bufptmp+i + 2*%%bSize] ;; update crc2 + + ; merge in crc0 + movzx bufp_dw, al +@@ -180,12 +198,15 @@ + %define crc_init_dw r8d + %endif + +- ++ endbranch + push rdi + push rbx + + mov rax, crc_init ;; rax = crc_init; + ++ cmp len, 8 ++ jb less_than_8 ++ + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;; 1) ALIGN: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +@@ -195,9 +216,6 @@ + ;; amount of the address + je proc_block ;; Skip if aligned + +- cmp len, 8 +- jb less_than_8 +- + ;;;; Calculate CRC of unaligned bytes of the buffer (if any) ;;;; + mov rbx, [bufptmp] ;; load a quadword from the buffer + add bufptmp, bufp ;; align buffer pointer for +@@ -233,7 +251,7 @@ + jnc bit7 ;; jump to bit-6 if bit-7 == 0 + %assign i 0 + %rep 16 +- crc32 rax, [bufptmp+i] ;; compute crc32 of 8-byte data ++ crc32 rax, qword [bufptmp+i] ;; compute crc32 of 8-byte data + %assign i (i+8) + %endrep + je do_return ;; return if remaining data is zero +@@ -244,7 +262,7 @@ + jnc bit6 ;; jump to bit-6 if bit-7 == 0 + %assign i 0 + %rep 8 +- crc32 rax, [bufptmp+i] ;; compute crc32 of 8-byte data ++ crc32 rax, qword [bufptmp+i] ;; compute crc32 of 8-byte data + %assign i (i+8) + %endrep + je do_return ;; return if remaining data is zero +@@ -254,7 +272,7 @@ + jnc bit5 ;; jump to bit-5 if bit-6 == 0 + %assign i 0 + %rep 4 +- crc32 rax, [bufptmp+i] ;; compute crc32 of 8-byte data ++ crc32 rax, qword [bufptmp+i] ;; compute crc32 of 8-byte data + %assign i (i+8) + %endrep + je do_return ;; return if remaining data is zero +@@ -264,7 +282,7 @@ + jnc bit4 ;; jump to bit-4 if bit-5 == 0 + %assign i 0 + %rep 2 +- crc32 rax, [bufptmp+i] ;; compute crc32 of 8-byte data ++ crc32 rax, qword [bufptmp+i] ;; compute crc32 of 8-byte data + %assign i (i+8) + %endrep + je do_return ;; return if remaining data is zero +@@ -272,11 +290,11 @@ + bit4: + shl len_b, 1 ;; shift-out MSB (bit-4) + jnc bit3 ;; jump to bit-3 if bit-4 == 0 +- crc32 rax, [bufptmp] ;; compute crc32 of 8-byte data ++ crc32 rax, qword [bufptmp] ;; compute crc32 of 8-byte data + je do_return ;; return if remaining data is zero + add bufptmp, 8 ;; buf +=8; (next 8 bytes) + bit3: +- mov rbx, [bufptmp] ;; load a 8-bytes from the buffer: ++ mov rbx, qword [bufptmp] ;; load a 8-bytes from the buffer: + shl len_b, 1 ;; shift-out MSB (bit-3) + jnc bit2 ;; jump to bit-2 if bit-3 == 0 + crc32 eax, ebx ;; compute crc32 of 4-byte data +--- ceph-15.2.2/src/common/crc32c_intel_fast_zero_asm.s.orig 2020-05-26 08:34:32.226201974 -0400 ++++ ceph-15.2.2/src/common/crc32c_intel_fast_zero_asm.s 2020-05-26 17:19:32.497201974 -0400 +@@ -1,5 +1,5 @@ + ; +-; Copyright 2012-2013 Intel Corporation All Rights Reserved. ++; Copyright 2012-2015 Intel Corporation All Rights Reserved. + ; All rights reserved. + ; + ; http://opensource.org/licenses/BSD-3-Clause +@@ -59,6 +59,19 @@ + xor rbx, rbx ;; rbx = crc1 = 0; + xor r10, r10 ;; r10 = crc2 = 0; + ++ cmp len, %%bSize*3*2 ++ jbe %%non_prefetch ++ ++ %assign i 0 ++ %rep %%bSize/8 - 1 ++ crc32 rax, bufptmp ;; update crc0 ++ crc32 rbx, bufptmp ;; update crc1 ++ crc32 r10, bufptmp ;; update crc2 ++ %assign i (i+8) ++ %endrep ++ jmp %%next %+ %1 ++ ++%%non_prefetch: + %assign i 0 + %rep %%bSize/8 - 1 + crc32 rax, bufptmp ;; update crc0 +@@ -66,6 +79,8 @@ + crc32 r10, bufptmp ;; update crc2 + %assign i (i+8) + %endrep ++ ++%%next %+ %1: + crc32 rax, bufptmp ;; update crc0 + crc32 rbx, bufptmp ;; update crc1 + ; SKIP ;crc32 r10, bufptmp ;; update crc2 +@@ -180,12 +195,15 @@ + %define crc_init_dw r8d + %endif + +- ++ endbranch + push rdi + push rbx + + mov rax, crc_init ;; rax = crc_init; + ++ cmp len, 8 ++ jb less_than_8 ++ + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;; 1) ALIGN: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + diff --git a/0002-src-common-CMakeLists.txt.patch b/0002-src-common-CMakeLists.txt.patch new file mode 100644 index 0000000..e3252b3 --- /dev/null +++ b/0002-src-common-CMakeLists.txt.patch @@ -0,0 +1,13 @@ +diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt +index 65ba10b0f1..eeedc29c37 100644 +--- a/src/common/CMakeLists.txt ++++ b/src/common/CMakeLists.txt +@@ -165,7 +165,7 @@ elseif(HAVE_ARMV8_CRC) + crc32c_aarch64.c) + endif(HAVE_INTEL) + +-add_library(crc32 ${crc32_srcs}) ++add_library(crc32 STATIC ${crc32_srcs}) + if(HAVE_ARMV8_CRC) + set_target_properties(crc32 PROPERTIES + COMPILE_FLAGS "${CMAKE_C_FLAGS} ${ARMV8_CRC_COMPILE_FLAGS}") diff --git a/0003-src-common-bitstr.h.patch b/0003-src-common-bitstr.h.patch new file mode 100644 index 0000000..ed2b0ce --- /dev/null +++ b/0003-src-common-bitstr.h.patch @@ -0,0 +1,21 @@ +--- ceph-15.1.0/src/common/bit_str.h.orig 2020-02-03 09:47:20.047149798 -0500 ++++ ceph-15.1.0/src/common/bit_str.h 2020-02-03 09:47:50.213149798 -0500 +@@ -17,6 +17,7 @@ + #include + #include + #include ++#include + + namespace ceph { + class Formatter; +--- ceph-15.2.4/src/global/signal_handler.h.orig 2020-07-17 12:57:54.763628429 -0400 ++++ ceph-15.2.4/src/global/signal_handler.h 2020-07-17 12:58:10.610628429 -0400 +@@ -16,6 +16,8 @@ + #define CEPH_GLOBAL_SIGNAL_HANDLER_H + + #include ++#include ++ + #include "acconfig.h" + + typedef void (*signal_handler_t)(int); diff --git a/ceph.spec b/ceph.spec new file mode 100644 index 0000000..e4cc03a --- /dev/null +++ b/ceph.spec @@ -0,0 +1,3116 @@ +# +# spec file for package ceph +# +# Copyright (C) 2004-2019 The Ceph Project Developers. See COPYING file +# at the top-level directory of this distribution and at +# https://github.com/ceph/ceph/blob/master/COPYING +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. +# +# This file is under the GNU Lesser General Public License, version 2.1 +# +# Please submit bugfixes or comments via http://tracker.ceph.com/ +# + +################################################################################# +# conditional build section +# +# please read http://rpm.org/user_doc/conditional_builds.html for explanation of +# bcond syntax! +################################################################################# +%global _hardened_build 1 + +%bcond_with make_check +%bcond_with cmake_verbose_logging +%bcond_without ceph_test_package +%ifarch s390 s390x +%bcond_with tcmalloc +%else +%bcond_without tcmalloc +%endif + +%if 0%{?fedora} || 0%{?rhel} +%bcond_without selinux +%if 0%{?rhel} >= 8 +%bcond_with cephfs_java +%else +%bcond_without cephfs_java +%endif +%bcond_without amqp_endpoint +%bcond_without kafka_endpoint +%bcond_without lttng +%bcond_without libradosstriper +%bcond_without ocf +%global _remote_tarball_prefix https://download.ceph.com/tarballs/ +%endif +%if 0%{?suse_version} +%bcond_with amqp_endpoint +%bcond_with cephfs_java +%bcond_with kafka_endpoint +%ifarch x86_64 aarch64 ppc64le +%bcond_without lttng +%else +%bcond_with lttng +%endif +%bcond_with ocf +%bcond_with selinux +#Compat macro for _fillupdir macro introduced in Nov 2017 +%if ! %{defined _fillupdir} +%global _fillupdir /var/adm/fillup-templates +%endif +%endif +%bcond_with seastar +%if 0%{?fedora} || 0%{?suse_version} >= 1500 +# distros that ship cmd2 and/or colorama +%bcond_without cephfs_shell +%else +# distros that do _not_ ship cmd2/colorama +%bcond_with cephfs_shell +%endif +%if 0%{?fedora} || 0%{?suse_version} || 0%{?rhel} >= 8 +%global weak_deps 1 +%endif +%if %{with selinux} +# get selinux policy version +# Force 0.0.0 policy version for centos builds to avoid repository sync issues between rhel and centos +%if 0%{?centos} +%global _selinux_policy_version 0.0.0 +%else +%{!?_selinux_policy_version: %global _selinux_policy_version 0.0.0} +%endif +%endif + +%{!?_udevrulesdir: %global _udevrulesdir /lib/udev/rules.d} +%{!?tmpfiles_create: %global tmpfiles_create systemd-tmpfiles --create} +%{!?python3_pkgversion: %global python3_pkgversion 3} +%{!?python3_version_nodots: %global python3_version_nodots 3} +%{!?python3_version: %global python3_version 3} +%if 0%{?rhel} == 7 +%define __python %{__python3} +%endif +# unify libexec for all targets +%global _libexecdir %{_exec_prefix}/lib + +# disable dwz which compresses the debuginfo +%global _find_debuginfo_dwz_opts %{nil} + +################################################################################# +# main package definition +################################################################################# +Name: ceph +Version: 15.2.5 +Release: 1%{?dist} +%if 0%{?fedora} || 0%{?rhel} +Epoch: 2 +%endif + +# define _epoch_prefix macro which will expand to the empty string if epoch is +# undefined +%global _epoch_prefix %{?epoch:%{epoch}:} + +Summary: User space components of the Ceph file system +#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 +License: (LGPLv2.1 or LGPLv3) and CC-BY-SA-3.0 and GPLv2 and Boost-1.0 and BSD and MIT +%if 0%{?suse_version} +Group: System/Filesystems +%endif +URL: http://ceph.com/ +Source0: %{?_remote_tarball_prefix}ceph-%{version}.tar.gz +Patch0001: 0001-src-common-crc32c_intel_fast.patch +Patch0002: 0002-src-common-CMakeLists.txt.patch +Patch0003: 0003-src-common-bitstr.h.patch +Source1: cmake-modules-BuildBoost.cmake.noautopatch +# ceph 14.0.1 does not support 32-bit architectures, bugs #1727788, #1727787 +ExcludeArch: i686 armv7hl +%if 0%{?suse_version} +# _insert_obs_source_lines_here +ExclusiveArch: x86_64 aarch64 ppc64le s390x +%endif +################################################################################# +# dependencies that apply across all distro families +################################################################################# +Requires: ceph-osd = %{_epoch_prefix}%{version}-%{release} +Requires: ceph-mds = %{_epoch_prefix}%{version}-%{release} +Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release} +Requires: ceph-mon = %{_epoch_prefix}%{version}-%{release} +Requires(post): binutils +%if 0%{with cephfs_java} +BuildRequires: java-devel +BuildRequires: sharutils +%endif +%if 0%{with selinux} +BuildRequires: checkpolicy +BuildRequires: selinux-policy-devel +%endif +BuildRequires: gperf +%if 0%{?rhel} == 7 +BuildRequires: cmake3 > 3.5 +%else +BuildRequires: cmake > 3.5 +%endif +BuildRequires: cryptsetup +BuildRequires: fuse-devel +BuildRequires: fmt-devel +%if 0%{?rhel} == 7 +# devtoolset offers newer make and valgrind-devel, but the old ones are good +# enough. +BuildRequires: devtoolset-8-gcc-c++ >= 8.3.1-3.1 +%else +BuildRequires: gcc-c++ +%endif +BuildRequires: gdbm +%if 0%{with tcmalloc} +%if 0%{?fedora} || 0%{?rhel} +BuildRequires: gperftools-devel >= 2.6.1 +%endif +%if 0%{?suse_version} +BuildRequires: gperftools-devel >= 2.4 +%endif +%endif +BuildRequires: leveldb-devel > 1.2 +BuildRequires: libaio-devel +BuildRequires: libblkid-devel >= 2.17 +BuildRequires: libcurl-devel +BuildRequires: libcap-ng-devel +BuildRequires: pkgconfig(libudev) +BuildRequires: libnl3-devel +BuildRequires: liboath-devel +BuildRequires: libtool +BuildRequires: libxml2-devel +BuildRequires: make +BuildRequires: ncurses-devel +BuildRequires: parted +BuildRequires: patch +BuildRequires: perl +BuildRequires: pkgconfig +BuildRequires: procps +BuildRequires: python%{python3_pkgversion} +BuildRequires: python%{python3_pkgversion}-devel +BuildRequires: python%{python3_pkgversion}-setuptools +BuildRequires: snappy-devel +BuildRequires: sudo +BuildRequires: pkgconfig(udev) +BuildRequires: util-linux +BuildRequires: valgrind-devel +BuildRequires: which +BuildRequires: xfsprogs +BuildRequires: xfsprogs-devel +BuildRequires: xmlstarlet +BuildRequires: yasm +%if 0%{with amqp_endpoint} +BuildRequires: librabbitmq-devel +%endif +%if 0%{with kafka_endpoint} +BuildRequires: librdkafka-devel +%endif +%if 0%{with make_check} +BuildRequires: jq +BuildRequires: libuuid-devel +%if 0%{?rhel} == 7 +BuildRequires: python%{python3_version_nodots}-bcrypt +BuildRequires: python%{python3_version_nodots}-nose +BuildRequires: python%{python3_version_nodots}-requests +BuildRequires: python%{python3_version_nodots}-dateutil +%else +BuildRequires: python%{python3_pkgversion}-bcrypt +BuildRequires: python%{python3_pkgversion}-nose +BuildRequires: python%{python3_pkgversion}-pecan +BuildRequires: python%{python3_pkgversion}-requests +BuildRequires: python%{python3_pkgversion}-dateutil +%endif +%if 0%{?rhel} == 7 +BuildRequires: python%{python3_version_nodots}-six +BuildRequires: python%{python3_version_nodots}-virtualenv +%else +BuildRequires: python%{python3_pkgversion}-six +BuildRequires: python%{python3_pkgversion}-virtualenv +%endif +%if 0%{?rhel} == 7 +BuildRequires: python%{python3_version_nodots}-coverage +%else +BuildRequires: python%{python3_pkgversion}-coverage +%endif +%if 0%{?rhel} == 7 +BuildRequires: python%{python3_version_nodots}-pyOpenSSL +%else +BuildRequires: python%{python3_pkgversion}-pyOpenSSL +%endif +BuildRequires: socat +%endif +%if 0%{with seastar} +BuildRequires: c-ares-devel +BuildRequires: gnutls-devel +BuildRequires: hwloc-devel +BuildRequires: libpciaccess-devel +BuildRequires: lksctp-tools-devel +BuildRequires: protobuf-devel +BuildRequires: ragel +BuildRequires: systemtap-sdt-devel +BuildRequires: yaml-cpp-devel +%endif +################################################################################# +# distro-conditional dependencies +################################################################################# +%if 0%{?suse_version} +BuildRequires: pkgconfig(systemd) +BuildRequires: systemd-rpm-macros +%{?systemd_requires} +PreReq: %fillup_prereq +BuildRequires: fdupes +BuildRequires: net-tools +BuildRequires: libbz2-devel +BuildRequires: mozilla-nss-devel +BuildRequires: keyutils-devel +BuildRequires: libopenssl-devel +BuildRequires: lsb-release +BuildRequires: openldap2-devel +#BuildRequires: krb5 +#BuildRequires: krb5-devel +BuildRequires: cunit-devel +BuildRequires: python%{python3_pkgversion}-setuptools +BuildRequires: python%{python3_pkgversion}-Cython +BuildRequires: python%{python3_pkgversion}-PrettyTable +BuildRequires: python%{python3_pkgversion}-Sphinx +BuildRequires: rdma-core-devel +BuildRequires: liblz4-devel >= 1.7 +# for prometheus-alerts +BuildRequires: golang-github-prometheus-prometheus +%endif +%if 0%{?fedora} || 0%{?rhel} +Requires: systemd +BuildRequires: boost-devel +BuildRequires: boost-random +BuildRequires: nss-devel +BuildRequires: keyutils-libs-devel +BuildRequires: libibverbs-devel +BuildRequires: librdmacm-devel +BuildRequires: openldap-devel +#BuildRequires: krb5-devel +BuildRequires: openssl-devel +BuildRequires: CUnit-devel +BuildRequires: redhat-lsb-core +BuildRequires: python%{python3_pkgversion}-devel +BuildRequires: python%{python3_pkgversion}-setuptools +%if 0%{?rhel} == 7 +BuildRequires: python%{python3_version_nodots}-Cython +%else +BuildRequires: python%{python3_pkgversion}-Cython +%endif +BuildRequires: python%{python3_pkgversion}-prettytable +BuildRequires: python%{python3_pkgversion}-sphinx +BuildRequires: lz4-devel >= 1.7 +%endif +# distro-conditional make check dependencies +%if 0%{with make_check} +%if 0%{?fedora} || 0%{?rhel} +BuildRequires: libtool-ltdl-devel +BuildRequires: xmlsec1 +BuildRequires: xmlsec1-devel +%ifarch x86_64 +BuildRequires: xmlsec1-nss +%endif +BuildRequires: xmlsec1-openssl +BuildRequires: xmlsec1-openssl-devel +%if 0%{?rhel} == 7 +BuildRequires: python%{python3_version_nodots}-jwt +BuildRequires: python%{python3_version_nodots}-scipy +%else +BuildRequires: python%{python3_pkgversion}-cherrypy +BuildRequires: python%{python3_pkgversion}-jwt +BuildRequires: python%{python3_pkgversion}-routes +BuildRequires: python%{python3_pkgversion}-scipy +BuildRequires: python%{python3_pkgversion}-werkzeug +%endif +%if 0%{?rhel} == 7 +BuildRequires: python%{python3_version_nodots}-pyOpenSSL +%else +BuildRequires: python%{python3_pkgversion}-pyOpenSSL +%endif +%endif +%if 0%{?suse_version} +BuildRequires: libxmlsec1-1 +BuildRequires: libxmlsec1-nss1 +BuildRequires: libxmlsec1-openssl1 +BuildRequires: python%{python3_pkgversion}-CherryPy +BuildRequires: python%{python3_pkgversion}-PyJWT +BuildRequires: python%{python3_pkgversion}-Routes +BuildRequires: python%{python3_pkgversion}-Werkzeug +BuildRequires: python%{python3_pkgversion}-numpy-devel +BuildRequires: xmlsec1-devel +BuildRequires: xmlsec1-openssl-devel +%endif +%endif +# lttng and babeltrace for rbd-replay-prep +%if %{with lttng} +%if 0%{?fedora} || 0%{?rhel} +BuildRequires: lttng-ust-devel +BuildRequires: libbabeltrace-devel +%endif +%if 0%{?suse_version} +BuildRequires: lttng-ust-devel +BuildRequires: babeltrace-devel +%endif +%endif +%if 0%{?suse_version} +BuildRequires: libexpat-devel +%endif +%if 0%{?rhel} || 0%{?fedora} +BuildRequires: expat-devel +%endif +#hardened-cc1 +%if 0%{?fedora} || 0%{?rhel} +BuildRequires: redhat-rpm-config +%endif +%if 0%{with seastar} +%if 0%{?fedora} || 0%{?rhel} +BuildRequires: cryptopp-devel +BuildRequires: numactl-devel +BuildRequires: protobuf-compiler +%endif +%if 0%{?suse_version} +BuildRequires: libcryptopp-devel +BuildRequires: libnuma-devel +%endif +%endif +%if 0%{?rhel} >= 8 +BuildRequires: /usr/bin/pathfix.py +%endif + +%description +Ceph is a massively scalable, open-source, distributed storage system that runs +on commodity hardware and delivers object, block and file system storage. + + +################################################################################# +# subpackages +################################################################################# +%package base +Summary: Ceph Base Package +%if 0%{?suse_version} +Group: System/Filesystems +%endif +Provides: ceph-test:/usr/bin/ceph-kvstore-tool +Requires: ceph-common = %{_epoch_prefix}%{version}-%{release} +Requires: librbd1 = %{_epoch_prefix}%{version}-%{release} +Requires: librados2 = %{_epoch_prefix}%{version}-%{release} +Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release} +Requires: librgw2 = %{_epoch_prefix}%{version}-%{release} +%if 0%{with selinux} +Requires: ceph-selinux = %{_epoch_prefix}%{version}-%{release} +%endif +Requires: cryptsetup +Requires: e2fsprogs +Requires: findutils +Requires: grep +Requires: logrotate +Requires: parted +Requires: psmisc +Requires: python%{python3_pkgversion}-setuptools +Requires: util-linux +Requires: xfsprogs +Requires: which +%if 0%{?fedora} || 0%{?rhel} +# The following is necessary due to tracker 36508 and can be removed once the +# associated upstream bugs are resolved. +%if 0%{with tcmalloc} +Requires: gperftools-libs >= 2.6.1 +%endif +%endif +%if 0%{?weak_deps} +Recommends: chrony +%endif +%description base +Base is the package that includes all the files shared amongst ceph servers + +%package -n cephadm +Summary: Utility to bootstrap Ceph clusters +Requires: lvm2 +%if 0%{?suse_version} +Requires: apparmor-abstractions +%endif +Requires: python%{python3_pkgversion} +%if 0%{?weak_deps} +Recommends: podman +%endif +%description -n cephadm +Utility to bootstrap a Ceph cluster and manage Ceph daemons deployed +with systemd and podman. + +%package -n ceph-common +Summary: Ceph Common +%if 0%{?suse_version} +Group: System/Filesystems +%endif +Requires: librbd1 = %{_epoch_prefix}%{version}-%{release} +Requires: librados2 = %{_epoch_prefix}%{version}-%{release} +Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release} +Requires: python%{python3_pkgversion}-rados = %{_epoch_prefix}%{version}-%{release} +Requires: python%{python3_pkgversion}-rbd = %{_epoch_prefix}%{version}-%{release} +Requires: python%{python3_pkgversion}-cephfs = %{_epoch_prefix}%{version}-%{release} +Requires: python%{python3_pkgversion}-rgw = %{_epoch_prefix}%{version}-%{release} +Requires: python%{python3_pkgversion}-ceph-argparse = %{_epoch_prefix}%{version}-%{release} +Requires: python%{python3_pkgversion}-ceph-common = %{_epoch_prefix}%{version}-%{release} +%if 0%{?fedora} || 0%{?rhel} +Requires: python%{python3_pkgversion}-prettytable +%endif +%if 0%{?suse_version} +Requires: python%{python3_pkgversion}-PrettyTable +%endif +%if 0%{with libradosstriper} +Requires: libradosstriper1 = %{_epoch_prefix}%{version}-%{release} +%endif +%{?systemd_requires} +%if 0%{?suse_version} +Requires(pre): pwdutils +%endif +%description -n ceph-common +Common utilities to mount and interact with a ceph storage cluster. +Comprised of files that are common to Ceph clients and servers. + +%package mds +Summary: Ceph Metadata Server Daemon +%if 0%{?suse_version} +Group: System/Filesystems +%endif +Requires: ceph-base = %{_epoch_prefix}%{version}-%{release} +%description mds +ceph-mds is the metadata server daemon for the Ceph distributed file system. +One or more instances of ceph-mds collectively manage the file system +namespace, coordinating access to the shared OSD cluster. + +%package mon +Summary: Ceph Monitor Daemon +%if 0%{?suse_version} +Group: System/Filesystems +%endif +Provides: ceph-test:/usr/bin/ceph-monstore-tool +Requires: ceph-base = %{_epoch_prefix}%{version}-%{release} +%description mon +ceph-mon is the cluster monitor daemon for the Ceph distributed file +system. One or more instances of ceph-mon form a Paxos part-time +parliament cluster that provides extremely reliable and durable storage +of cluster membership, configuration, and state. + +%package mgr +Summary: Ceph Manager Daemon +%if 0%{?suse_version} +Group: System/Filesystems +%endif +Requires: ceph-base = %{_epoch_prefix}%{version}-%{release} +Requires: ceph-mgr-modules-core = %{_epoch_prefix}%{version}-%{release} +%if 0%{?rhel} == 7 +Requires: python%{python3_version_nodots}-six +%else +Requires: python%{python3_pkgversion}-six +%endif +%if 0%{?weak_deps} +Recommends: ceph-mgr-dashboard = %{_epoch_prefix}%{version}-%{release} +Recommends: ceph-mgr-diskprediction-local = %{_epoch_prefix}%{version}-%{release} +Recommends: ceph-mgr-diskprediction-cloud = %{_epoch_prefix}%{version}-%{release} +Recommends: ceph-mgr-k8sevents = %{_epoch_prefix}%{version}-%{release} +Recommends: ceph-mgr-cephadm = %{_epoch_prefix}%{version}-%{release} +Recommends: python%{python3_pkgversion}-influxdb +%endif +%description mgr +ceph-mgr enables python modules that provide services (such as the REST +module derived from Calamari) and expose CLI hooks. ceph-mgr gathers +the cluster maps, the daemon metadata, and performance counters, and +exposes all these to the python modules. + +%package mgr-dashboard +Summary: Ceph Dashboard +BuildArch: noarch +%if 0%{?suse_version} +Group: System/Filesystems +%endif +Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release} +Requires: ceph-grafana-dashboards = %{_epoch_prefix}%{version}-%{release} +Requires: ceph-prometheus-alerts = %{_epoch_prefix}%{version}-%{release} +%if 0%{?fedora} || 0%{?rhel} +Requires: python%{python3_pkgversion}-cherrypy +Requires: python%{python3_pkgversion}-jwt +Requires: python%{python3_pkgversion}-routes +Requires: python%{python3_pkgversion}-werkzeug +%if 0%{?weak_deps} +Recommends: python%{python3_pkgversion}-saml +%endif +%endif +%if 0%{?suse_version} +Requires: python%{python3_pkgversion}-CherryPy +Requires: python%{python3_pkgversion}-PyJWT +Requires: python%{python3_pkgversion}-Routes +Requires: python%{python3_pkgversion}-Werkzeug +Recommends: python%{python3_pkgversion}-python3-saml +%endif +%description mgr-dashboard +ceph-mgr-dashboard is a manager module, providing a web-based application +to monitor and manage many aspects of a Ceph cluster and related components. +See the Dashboard documentation at http://docs.ceph.com/ for details and a +detailed feature overview. + +%package mgr-diskprediction-local +Summary: Ceph Manager module for predicting disk failures +BuildArch: noarch +%if 0%{?suse_version} +Group: System/Filesystems +%endif +Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release} +Requires: python%{python3_pkgversion}-numpy +Requires: python%{python3_pkgversion}-scipy +%if 0%{?rhel} == 7 +Requires: numpy +Requires: scipy +%endif +%description mgr-diskprediction-local +ceph-mgr-diskprediction-local is a ceph-mgr module that tries to predict +disk failures using local algorithms and machine-learning databases. + +%package mgr-diskprediction-cloud +Summary: Ceph Manager module for cloud-based disk failure prediction +BuildArch: noarch +%if 0%{?suse_version} +Group: System/Filesystems +%endif +Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release} +Requires: python%{python3_pkgversion}-grpcio +Requires: python%{python3_pkgversion}-protobuf +%description mgr-diskprediction-cloud +ceph-mgr-diskprediction-cloud is a ceph-mgr module that tries to predict +disk failures using services in the Google cloud. + +%package mgr-modules-core +Summary: Ceph Manager modules which are always enabled +BuildArch: noarch +%if 0%{?suse_version} +Group: System/Filesystems +%endif +%if 0%{?rhel} == 7 +Requires: python%{python3_version_nodots}-bcrypt +Requires: python%{python3_version_nodots}-pyOpenSSL +Requires: python%{python3_version_nodots}-requests +Requires: python%{python3_version_nodots}-PyYAML +Requires: python%{python3_version_nodots}-dateutil +%else +Requires: python%{python3_pkgversion}-bcrypt +Requires: python%{python3_pkgversion}-pecan +Requires: python%{python3_pkgversion}-pyOpenSSL +Requires: python%{python3_pkgversion}-requests +Requires: python%{python3_pkgversion}-dateutil +%endif +%if 0%{?fedora} || 0%{?rhel} >= 8 +Requires: python%{python3_pkgversion}-cherrypy +Requires: python%{python3_pkgversion}-pyyaml +Requires: python%{python3_pkgversion}-werkzeug +%endif +%if 0%{?suse_version} +Requires: python%{python3_pkgversion}-CherryPy +Requires: python%{python3_pkgversion}-PyYAML +Requires: python%{python3_pkgversion}-Werkzeug +%endif +%if 0%{?weak_deps} +Recommends: ceph-mgr-rook = %{_epoch_prefix}%{version}-%{release} +%endif +%description mgr-modules-core +ceph-mgr-modules-core provides a set of modules which are always +enabled by ceph-mgr. + +%package mgr-rook +BuildArch: noarch +Summary: Ceph Manager module for Rook-based orchestration +%if 0%{?suse_version} +Group: System/Filesystems +%endif +Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release} +Requires: python%{python3_pkgversion}-kubernetes +Requires: python%{python3_pkgversion}-jsonpatch +%description mgr-rook +ceph-mgr-rook is a ceph-mgr module for orchestration functions using +a Rook backend. + +%package mgr-k8sevents +BuildArch: noarch +Summary: Ceph Manager module to orchestrate ceph-events to kubernetes' events API +%if 0%{?suse_version} +Group: System/Filesystems +%endif +Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release} +Requires: python%{python3_pkgversion}-kubernetes +%description mgr-k8sevents +ceph-mgr-k8sevents is a ceph-mgr module that sends every ceph-events +to kubernetes' events API + +%package mgr-cephadm +Summary: Ceph Manager module for cephadm-based orchestration +BuildArch: noarch +%if 0%{?suse_version} +Group: System/Filesystems +%endif +Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release} +Requires: python%{python3_pkgversion}-remoto +Requires: cephadm = %{_epoch_prefix}%{version}-%{release} +%if 0%{?suse_version} +Requires: openssh +Requires: python%{python3_pkgversion}-Jinja2 +%endif +%if 0%{?rhel} || 0%{?fedora} +Requires: openssh-clients +Requires: python%{python3_pkgversion}-jinja2 +%endif +%description mgr-cephadm +ceph-mgr-cephadm is a ceph-mgr module for orchestration functions using +the integrated cephadm deployment tool management operations. + +%package fuse +Summary: Ceph fuse-based client +%if 0%{?suse_version} +Group: System/Filesystems +%endif +Requires: fuse +Requires: python%{python3_pkgversion} +%description fuse +FUSE based client for Ceph distributed network file system + +%package -n rbd-fuse +Summary: Ceph fuse-based client +%if 0%{?suse_version} +Group: System/Filesystems +%endif +Requires: librados2 = %{_epoch_prefix}%{version}-%{release} +Requires: librbd1 = %{_epoch_prefix}%{version}-%{release} +%description -n rbd-fuse +FUSE based client to map Ceph rbd images to files + +%package -n rbd-mirror +Summary: Ceph daemon for mirroring RBD images +%if 0%{?suse_version} +Group: System/Filesystems +%endif +Requires: ceph-base = %{_epoch_prefix}%{version}-%{release} +Requires: librados2 = %{_epoch_prefix}%{version}-%{release} +Requires: librbd1 = %{_epoch_prefix}%{version}-%{release} +%description -n rbd-mirror +Daemon for mirroring RBD images between Ceph clusters, streaming +changes asynchronously. + +%package immutable-object-cache +Summary: Ceph daemon for immutable object cache +%if 0%{?suse_version} +Group: System/Filesystems +%endif +Requires: librados2 = %{_epoch_prefix}%{version}-%{release} +%description immutable-object-cache +Daemon for immutable object cache. + +%package -n rbd-nbd +Summary: Ceph RBD client base on NBD +%if 0%{?suse_version} +Group: System/Filesystems +%endif +Requires: librados2 = %{_epoch_prefix}%{version}-%{release} +Requires: librbd1 = %{_epoch_prefix}%{version}-%{release} +%description -n rbd-nbd +NBD based client to map Ceph rbd images to local device + +%package radosgw +Summary: Rados REST gateway +%if 0%{?suse_version} +Group: System/Filesystems +%endif +Requires: ceph-base = %{_epoch_prefix}%{version}-%{release} +%if 0%{with selinux} +Requires: ceph-selinux = %{_epoch_prefix}%{version}-%{release} +%endif +Requires: librados2 = %{_epoch_prefix}%{version}-%{release} +Requires: librgw2 = %{_epoch_prefix}%{version}-%{release} +%if 0%{?rhel} || 0%{?fedora} +Requires: mailcap +%endif +%description radosgw +RADOS is a distributed object store used by the Ceph distributed +storage system. This package provides a REST gateway to the +object store that aims to implement a superset of Amazon's S3 +service as well as the OpenStack Object Storage ("Swift") API. + +%if %{with ocf} +%package resource-agents +Summary: OCF-compliant resource agents for Ceph daemons +%if 0%{?suse_version} +Group: System/Filesystems +%endif +Requires: ceph-base = %{_epoch_prefix}%{version} +Requires: resource-agents +%description resource-agents +Resource agents for monitoring and managing Ceph daemons +under Open Cluster Framework (OCF) compliant resource +managers such as Pacemaker. +%endif + +%package osd +Summary: Ceph Object Storage Daemon +%if 0%{?suse_version} +Group: System/Filesystems +%endif +Provides: ceph-test:/usr/bin/ceph-osdomap-tool +Requires: ceph-base = %{_epoch_prefix}%{version}-%{release} +Requires: lvm2 +Requires: sudo +Requires: libstoragemgmt +Requires: python%{python3_pkgversion}-ceph-common = %{_epoch_prefix}%{version}-%{release} +%description osd +ceph-osd is the object storage daemon for the Ceph distributed file +system. It is responsible for storing objects on a local file system +and providing access to them over the network. + +%if 0%{with seastar} +%package crimson-osd +Summary: Ceph Object Storage Daemon (crimson) +%if 0%{?suse_version} +Group: System/Filesystems +%endif +Requires: ceph-osd = %{_epoch_prefix}%{version}-%{release} +%description crimson-osd +crimson-osd is the object storage daemon for the Ceph distributed file +system. It is responsible for storing objects on a local file system +and providing access to them over the network. +%endif + +%package -n librados2 +Summary: RADOS distributed object store client library +%if 0%{?suse_version} +Group: System/Libraries +%endif +%if 0%{?rhel} || 0%{?fedora} +Obsoletes: ceph-libs < %{_epoch_prefix}%{version}-%{release} +%endif +%description -n librados2 +RADOS is a reliable, autonomic distributed object storage cluster +developed as part of the Ceph distributed storage system. This is a +shared library allowing applications to access the distributed object +store using a simple file-like interface. + +%package -n librados-devel +Summary: RADOS headers +%if 0%{?suse_version} +Group: Development/Libraries/C and C++ +%endif +Requires: librados2 = %{_epoch_prefix}%{version}-%{release} +Obsoletes: ceph-devel < %{_epoch_prefix}%{version}-%{release} +Provides: librados2-devel = %{_epoch_prefix}%{version}-%{release} +Obsoletes: librados2-devel < %{_epoch_prefix}%{version}-%{release} +%description -n librados-devel +This package contains C libraries and headers needed to develop programs +that use RADOS object store. + +%package -n libradospp-devel +Summary: RADOS headers +%if 0%{?suse_version} +Group: Development/Libraries/C and C++ +%endif +Requires: librados2 = %{_epoch_prefix}%{version}-%{release} +Requires: librados-devel = %{_epoch_prefix}%{version}-%{release} +%description -n libradospp-devel +This package contains C++ libraries and headers needed to develop programs +that use RADOS object store. + +%package -n librgw2 +Summary: RADOS gateway client library +%if 0%{?suse_version} +Group: System/Libraries +%endif +Requires: librados2 = %{_epoch_prefix}%{version}-%{release} +%description -n librgw2 +This package provides a library implementation of the RADOS gateway +(distributed object store with S3 and Swift personalities). + +%package -n librgw-devel +Summary: RADOS gateway client library +%if 0%{?suse_version} +Group: Development/Libraries/C and C++ +%endif +Requires: librados-devel = %{_epoch_prefix}%{version}-%{release} +Requires: librgw2 = %{_epoch_prefix}%{version}-%{release} +Provides: librgw2-devel = %{_epoch_prefix}%{version}-%{release} +Obsoletes: librgw2-devel < %{_epoch_prefix}%{version}-%{release} +%description -n librgw-devel +This package contains libraries and headers needed to develop programs +that use RADOS gateway client library. + +%package -n python%{python3_pkgversion}-rgw +Summary: Python 3 libraries for the RADOS gateway +%if 0%{?suse_version} +Group: Development/Libraries/Python +%endif +Requires: librgw2 = %{_epoch_prefix}%{version}-%{release} +Requires: python%{python3_pkgversion}-rados = %{_epoch_prefix}%{version}-%{release} +%{?python_provide:%python_provide python%{python3_pkgversion}-rgw} +Provides: python-rgw = %{_epoch_prefix}%{version}-%{release} +Obsoletes: python-rgw < %{_epoch_prefix}%{version}-%{release} +%description -n python%{python3_pkgversion}-rgw +This package contains Python 3 libraries for interacting with Cephs RADOS +gateway. + +%package -n python%{python3_pkgversion}-rados +Summary: Python 3 libraries for the RADOS object store +%if 0%{?suse_version} +Group: Development/Libraries/Python +%endif +Requires: python%{python3_pkgversion} +Requires: librados2 = %{_epoch_prefix}%{version}-%{release} +%{?python_provide:%python_provide python%{python3_pkgversion}-rados} +Provides: python-rados = %{_epoch_prefix}%{version}-%{release} +Obsoletes: python-rados < %{_epoch_prefix}%{version}-%{release} +%description -n python%{python3_pkgversion}-rados +This package contains Python 3 libraries for interacting with Cephs RADOS +object store. + +%if 0%{with libradosstriper} +%package -n libradosstriper1 +Summary: RADOS striping interface +%if 0%{?suse_version} +Group: System/Libraries +%endif +Requires: librados2 = %{_epoch_prefix}%{version}-%{release} +%description -n libradosstriper1 +Striping interface built on top of the rados library, allowing +to stripe bigger objects onto several standard rados objects using +an interface very similar to the rados one. + +%package -n libradosstriper-devel +Summary: RADOS striping interface headers +%if 0%{?suse_version} +Group: Development/Libraries/C and C++ +%endif +Requires: libradosstriper1 = %{_epoch_prefix}%{version}-%{release} +Requires: librados-devel = %{_epoch_prefix}%{version}-%{release} +Requires: libradospp-devel = %{_epoch_prefix}%{version}-%{release} +Obsoletes: ceph-devel < %{_epoch_prefix}%{version}-%{release} +Provides: libradosstriper1-devel = %{_epoch_prefix}%{version}-%{release} +Obsoletes: libradosstriper1-devel < %{_epoch_prefix}%{version}-%{release} +%description -n libradosstriper-devel +This package contains libraries and headers needed to develop programs +that use RADOS striping interface. +%endif + +%package -n librbd1 +Summary: RADOS block device client library +%if 0%{?suse_version} +Group: System/Libraries +%endif +Requires: librados2 = %{_epoch_prefix}%{version}-%{release} +%if 0%{?suse_version} +Requires(post): coreutils +%endif +%if 0%{?rhel} || 0%{?fedora} +Obsoletes: ceph-libs < %{_epoch_prefix}%{version}-%{release} +%endif +%description -n librbd1 +RBD is a block device striped across multiple distributed objects in +RADOS, a reliable, autonomic distributed object storage cluster +developed as part of the Ceph distributed storage system. This is a +shared library allowing applications to manage these block devices. + +%package -n librbd-devel +Summary: RADOS block device headers +%if 0%{?suse_version} +Group: Development/Libraries/C and C++ +%endif +Requires: librbd1 = %{_epoch_prefix}%{version}-%{release} +Requires: librados-devel = %{_epoch_prefix}%{version}-%{release} +Requires: libradospp-devel = %{_epoch_prefix}%{version}-%{release} +Obsoletes: ceph-devel < %{_epoch_prefix}%{version}-%{release} +Provides: librbd1-devel = %{_epoch_prefix}%{version}-%{release} +Obsoletes: librbd1-devel < %{_epoch_prefix}%{version}-%{release} +%description -n librbd-devel +This package contains libraries and headers needed to develop programs +that use RADOS block device. + +%package -n python%{python3_pkgversion}-rbd +Summary: Python 3 libraries for the RADOS block device +%if 0%{?suse_version} +Group: Development/Libraries/Python +%endif +Requires: librbd1 = %{_epoch_prefix}%{version}-%{release} +Requires: python%{python3_pkgversion}-rados = %{_epoch_prefix}%{version}-%{release} +%{?python_provide:%python_provide python%{python3_pkgversion}-rbd} +Provides: python-rbd = %{_epoch_prefix}%{version}-%{release} +Obsoletes: python-rbd < %{_epoch_prefix}%{version}-%{release} +%description -n python%{python3_pkgversion}-rbd +This package contains Python 3 libraries for interacting with Cephs RADOS +block device. + +%package -n libcephfs2 +Summary: Ceph distributed file system client library +%if 0%{?suse_version} +Group: System/Libraries +%endif +Obsoletes: libcephfs1 < %{_epoch_prefix}%{version}-%{release} +%if 0%{?rhel} || 0%{?fedora} +Obsoletes: ceph-libs < %{_epoch_prefix}%{version}-%{release} +Obsoletes: ceph-libcephfs < %{_epoch_prefix}%{version}-%{release} +%endif +%description -n libcephfs2 +Ceph is a distributed network file system designed to provide excellent +performance, reliability, and scalability. This is a shared library +allowing applications to access a Ceph distributed file system via a +POSIX-like interface. + +%package -n libcephfs-devel +Summary: Ceph distributed file system headers +%if 0%{?suse_version} +Group: Development/Libraries/C and C++ +%endif +Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release} +Requires: librados-devel = %{_epoch_prefix}%{version}-%{release} +Obsoletes: ceph-devel < %{_epoch_prefix}%{version}-%{release} +Provides: libcephfs2-devel = %{_epoch_prefix}%{version}-%{release} +Obsoletes: libcephfs2-devel < %{_epoch_prefix}%{version}-%{release} +%description -n libcephfs-devel +This package contains libraries and headers needed to develop programs +that use Cephs distributed file system. + +%package -n python%{python3_pkgversion}-cephfs +Summary: Python 3 libraries for Ceph distributed file system +%if 0%{?suse_version} +Group: Development/Libraries/Python +%endif +Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release} +Requires: python%{python3_pkgversion}-rados = %{_epoch_prefix}%{version}-%{release} +Requires: python%{python3_pkgversion}-ceph-argparse = %{_epoch_prefix}%{version}-%{release} +%{?python_provide:%python_provide python%{python3_pkgversion}-cephfs} +Provides: python-cephfs = %{_epoch_prefix}%{version}-%{release} +Obsoletes: python-cephfs < %{_epoch_prefix}%{version}-%{release} +%description -n python%{python3_pkgversion}-cephfs +This package contains Python 3 libraries for interacting with Cephs distributed +file system. + +%package -n python%{python3_pkgversion}-ceph-argparse +Summary: Python 3 utility libraries for Ceph CLI +%if 0%{?suse_version} +Group: Development/Libraries/Python +%endif +%{?python_provide:%python_provide python%{python3_pkgversion}-ceph-argparse} +%description -n python%{python3_pkgversion}-ceph-argparse +This package contains types and routines for Python 3 used by the Ceph CLI as +well as the RESTful interface. These have to do with querying the daemons for +command-description information, validating user command input against those +descriptions, and submitting the command to the appropriate daemon. + +%package -n python%{python3_pkgversion}-ceph-common +Summary: Python 3 utility libraries for Ceph +%if 0%{?fedora} || 0%{?rhel} >= 8 +Requires: python%{python3_pkgversion}-pyyaml +%endif +%if 0%{?suse_version} +Requires: python%{python3_pkgversion}-PyYAML +%endif +%if 0%{?suse_version} +Group: Development/Libraries/Python +%endif +%{?python_provide:%python_provide python%{python3_pkgversion}-ceph-common} +%description -n python%{python3_pkgversion}-ceph-common +This package contains data structures, classes and functions used by Ceph. +It also contains utilities used for the cephadm orchestrator. + +%if 0%{with cephfs_shell} +%package -n cephfs-shell +Summary: Interactive shell for Ceph file system +Requires: python%{python3_pkgversion}-cmd2 +Requires: python%{python3_pkgversion}-colorama +Requires: python%{python3_pkgversion}-cephfs +%description -n cephfs-shell +This package contains an interactive tool that allows accessing a Ceph +file system without mounting it by providing a nice pseudo-shell which +works like an FTP client. +%endif + +%if 0%{with ceph_test_package} +%package -n ceph-test +Summary: Ceph benchmarks and test tools +%if 0%{?suse_version} +Group: System/Benchmark +%endif +Requires: ceph-common = %{_epoch_prefix}%{version}-%{release} +Requires: xmlstarlet +Requires: jq +Requires: socat +BuildRequires: gtest-devel +BuildRequires: gmock-devel +%description -n ceph-test +This package contains Ceph benchmarks and test tools. +%endif + +%if 0%{with cephfs_java} + +%package -n libcephfs_jni1 +Summary: Java Native Interface library for CephFS Java bindings +%if 0%{?suse_version} +Group: System/Libraries +%endif +Requires: java +Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release} +%description -n libcephfs_jni1 +This package contains the Java Native Interface library for CephFS Java +bindings. + +%package -n libcephfs_jni-devel +Summary: Development files for CephFS Java Native Interface library +%if 0%{?suse_version} +Group: Development/Libraries/Java +%endif +Requires: java +Requires: libcephfs_jni1 = %{_epoch_prefix}%{version}-%{release} +Obsoletes: ceph-devel < %{_epoch_prefix}%{version}-%{release} +Provides: libcephfs_jni1-devel = %{_epoch_prefix}%{version}-%{release} +Obsoletes: libcephfs_jni1-devel < %{_epoch_prefix}%{version}-%{release} +%description -n libcephfs_jni-devel +This package contains the development files for CephFS Java Native Interface +library. + +%package -n cephfs-java +Summary: Java libraries for the Ceph File System +%if 0%{?suse_version} +Group: System/Libraries +%endif +Requires: java +Requires: libcephfs_jni1 = %{_epoch_prefix}%{version}-%{release} +Requires: junit +BuildRequires: junit +%description -n cephfs-java +This package contains the Java libraries for the Ceph File System. + +%endif + +%package -n rados-objclass-devel +Summary: RADOS object class development kit +%if 0%{?suse_version} +Group: Development/Libraries/C and C++ +%endif +Requires: libradospp-devel = %{_epoch_prefix}%{version}-%{release} +%description -n rados-objclass-devel +This package contains libraries and headers needed to develop RADOS object +class plugins. + +%if 0%{with selinux} + +%package selinux +Summary: SELinux support for Ceph MON, OSD and MDS +%if 0%{?suse_version} +Group: System/Filesystems +%endif +Requires: ceph-base = %{_epoch_prefix}%{version}-%{release} +Requires: policycoreutils, libselinux-utils +Requires(post): ceph-base = %{_epoch_prefix}%{version}-%{release} +Requires(post): selinux-policy-base >= %{_selinux_policy_version}, policycoreutils, gawk +Requires(postun): policycoreutils +%description selinux +This package contains SELinux support for Ceph MON, OSD and MDS. The package +also performs file-system relabelling which can take a long time on heavily +populated file-systems. + +%endif + +%package grafana-dashboards +Summary: The set of Grafana dashboards for monitoring purposes +BuildArch: noarch +%if 0%{?suse_version} +Group: System/Filesystems +%endif +%description grafana-dashboards +This package provides a set of Grafana dashboards for monitoring of +Ceph clusters. The dashboards require a Prometheus server setup +collecting data from Ceph Manager "prometheus" module and Prometheus +project "node_exporter" module. The dashboards are designed to be +integrated with the Ceph Manager Dashboard web UI. + +%package prometheus-alerts +Summary: Prometheus alerts for a Ceph deplyoment +BuildArch: noarch +Group: System/Monitoring +%description prometheus-alerts +This package provides Ceph’s default alerts for Prometheus. + +################################################################################# +# common +################################################################################# +%prep +%autosetup -p1 +%ifarch x86_64 +patch -p1 < %{SOURCE1} +%endif + +%build +# LTO can be enabled as soon as the following GCC bug is fixed: +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=48200 +%define _lto_cflags %{nil} + +%if 0%{?rhel} == 7 +. /opt/rh/devtoolset-8/enable +%endif + +%if 0%{with cephfs_java} +# Find jni.h +for i in /usr/{lib64,lib}/jvm/java/include{,/linux}; do + [ -d $i ] && java_inc="$java_inc -I$i" +done +%endif + +%if 0%{?suse_version} +# the following setting fixed an OOM condition we once encountered in the OBS +RPM_OPT_FLAGS="$RPM_OPT_FLAGS --param ggc-min-expand=20 --param ggc-min-heapsize=32768" +%endif + +export CPPFLAGS="$java_inc" +export CFLAGS="$RPM_OPT_FLAGS" +export CXXFLAGS="$RPM_OPT_FLAGS" +export LDFLAGS="$RPM_LD_FLAGS" + +# Parallel build settings ... +CEPH_MFLAGS_JOBS="%{?_smp_mflags}" +CEPH_SMP_NCPUS=$(echo "$CEPH_MFLAGS_JOBS" | sed 's/-j//') +%if 0%{?__isa_bits} == 32 +# 32-bit builds can use 3G memory max, which is not enough even for -j2 +CEPH_SMP_NCPUS="1" +%endif +# do not eat all memory +echo "Available memory:" +free -h +echo "System limits:" +ulimit -a +if test -n "$CEPH_SMP_NCPUS" -a "$CEPH_SMP_NCPUS" -gt 1 ; then + mem_per_process=2700 + max_mem=$(LANG=C free -m | sed -n "s|^Mem: *\([0-9]*\).*$|\1|p") + max_jobs="$(($max_mem / $mem_per_process))" + 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" + test "$CEPH_SMP_NCPUS" -le 0 && CEPH_SMP_NCPUS="1" && echo "Warning: Not using parallel build at all because of memory limits" +fi +export CEPH_SMP_NCPUS +export CEPH_MFLAGS_JOBS="-j$CEPH_SMP_NCPUS" + +env | sort + +mkdir build +cd build +%if 0%{?rhel} == 7 +%global cmake cmake3 +%endif +%{cmake} .. \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + -DBUILD_CONFIG=rpmbuild \ + -DCMAKE_INSTALL_PREFIX=%{_prefix} \ + -DCMAKE_INSTALL_LIBDIR=%{_libdir} \ + -DCMAKE_INSTALL_LIBEXECDIR=%{_libexecdir} \ + -DCMAKE_INSTALL_LOCALSTATEDIR=%{_localstatedir} \ + -DCMAKE_INSTALL_SYSCONFDIR=%{_sysconfdir} \ + -DCMAKE_INSTALL_MANDIR=%{_mandir} \ + -DCMAKE_INSTALL_DOCDIR=%{_docdir}/ceph \ + -DCMAKE_INSTALL_INCLUDEDIR=%{_includedir} \ + -DWITH_MANPAGE=ON \ + -DWITH_PYTHON3=%{python3_version} \ + -DWITH_MGR_DASHBOARD_FRONTEND=OFF \ +%if 0%{without ceph_test_package} + -DWITH_TESTS=OFF \ +%endif +%if 0%{with cephfs_java} + -DWITH_CEPHFS_JAVA=ON \ +%endif +%if 0%{with selinux} + -DWITH_SELINUX=ON \ +%endif +%if %{with lttng} + -DWITH_LTTNG=ON \ + -DWITH_BABELTRACE=ON \ +%else + -DWITH_LTTNG=OFF \ + -DWITH_BABELTRACE=OFF \ +%endif + $CEPH_EXTRA_CMAKE_ARGS \ +%if 0%{with ocf} + -DWITH_OCF=ON \ +%endif + -DWITH_REENTRANT_STRSIGNAL=ON \ + -DWITH_SYSTEM_BOOST=ON \ +%ifarch aarch64 armv7hl mips mipsel ppc ppc64 ppc64le %{ix86} x86_64 + -DWITH_BOOST_CONTEXT=ON \ +%else + -DWITH_BOOST_CONTEXT=OFF \ +%endif +%if 0%{with cephfs_shell} + -DWITH_CEPHFS_SHELL=ON \ +%endif +%if 0%{with libradosstriper} + -DWITH_LIBRADOSSTRIPER=ON \ +%else + -DWITH_LIBRADOSSTRIPER=OFF \ +%endif +%if 0%{with amqp_endpoint} + -DWITH_RADOSGW_AMQP_ENDPOINT=ON \ +%else + -DWITH_RADOSGW_AMQP_ENDPOINT=OFF \ +%endif +%if 0%{with kafka_endpoint} + -DWITH_RADOSGW_KAFKA_ENDPOINT=ON \ +%else + -DWITH_RADOSGW_KAFKA_ENDPOINT=OFF \ +%endif +%if 0%{with cmake_verbose_logging} + -DCMAKE_VERBOSE_MAKEFILE=ON \ +%endif + -DBOOST_J=$CEPH_SMP_NCPUS \ +%if 0%{with ceph_test_package} + -DWITH_SYSTEM_GTEST=ON \ +%endif + -DWITH_GRAFANA=ON + +%if %{with cmake_verbose_logging} +cat ./CMakeFiles/CMakeOutput.log +cat ./CMakeFiles/CMakeError.log +%endif + +export VERBOSE=1 +export V=1 +%cmake_build "$CEPH_MFLAGS_JOBS" + + +%if 0%{with make_check} +%check +# run in-tree unittests +# cd build +# ctest "$CEPH_MFLAGS_JOBS" +%endif + + +%install +pushd build +%cmake_install +# we have dropped sysvinit bits +rm -f %{buildroot}/%{_sysconfdir}/init.d/ceph +popd +install -m 0644 -D src/etc-rbdmap %{buildroot}%{_sysconfdir}/ceph/rbdmap +%if 0%{?fedora} || 0%{?rhel} +install -m 0644 -D etc/sysconfig/ceph %{buildroot}%{_sysconfdir}/sysconfig/ceph +%endif +%if 0%{?suse_version} +install -m 0644 -D etc/sysconfig/ceph %{buildroot}%{_fillupdir}/sysconfig.%{name} +%endif +install -m 0644 -D systemd/ceph.tmpfiles.d %{buildroot}%{_tmpfilesdir}/ceph-common.conf +install -m 0644 -D systemd/50-ceph.preset %{buildroot}%{_libexecdir}/systemd/system-preset/50-ceph.preset +mkdir -p %{buildroot}%{_sbindir} +install -m 0644 -D src/logrotate.conf %{buildroot}%{_sysconfdir}/logrotate.d/ceph +chmod 0644 %{buildroot}%{_docdir}/ceph/sample.ceph.conf +install -m 0644 -D COPYING %{buildroot}%{_docdir}/ceph/COPYING +install -m 0644 -D etc/sysctl/90-ceph-osd.conf %{buildroot}%{_sysctldir}/90-ceph-osd.conf + +install -m 0755 src/cephadm/cephadm %{buildroot}%{_sbindir}/cephadm +mkdir -p %{buildroot}%{_sharedstatedir}/cephadm +chmod 0700 %{buildroot}%{_sharedstatedir}/cephadm +mkdir -p %{buildroot}%{_sharedstatedir}/cephadm/.ssh +chmod 0700 %{buildroot}%{_sharedstatedir}/cephadm/.ssh +touch %{buildroot}%{_sharedstatedir}/cephadm/.ssh/authorized_keys +chmod 0600 %{buildroot}%{_sharedstatedir}/cephadm/.ssh/authorized_keys + +# firewall templates and /sbin/mount.ceph symlink +%if 0%{?suse_version} +mkdir -p %{buildroot}/sbin +ln -sf %{_sbindir}/mount.ceph %{buildroot}/sbin/mount.ceph +%endif + +# udev rules +install -m 0644 -D udev/50-rbd.rules %{buildroot}%{_udevrulesdir}/50-rbd.rules + +# sudoers.d +install -m 0600 -D sudoers.d/ceph-osd-smartctl %{buildroot}%{_sysconfdir}/sudoers.d/ceph-osd-smartctl +install -m 0600 -D sudoers.d/cephadm %{buildroot}%{_sysconfdir}/sudoers.d/cephadm + +%if 0%{?rhel} >= 8 +pathfix.py -pni "%{__python3} %{py3_shbang_opts}" %{buildroot}%{_bindir}/* +pathfix.py -pni "%{__python3} %{py3_shbang_opts}" %{buildroot}%{_sbindir}/* +%endif + +#set up placeholder directories +mkdir -p %{buildroot}%{_sysconfdir}/ceph +mkdir -p %{buildroot}%{_localstatedir}/run/ceph +mkdir -p %{buildroot}%{_localstatedir}/log/ceph +mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/tmp +mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/mon +mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/osd +mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/mds +mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/mgr +mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/crash +mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/crash/posted +mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/radosgw +mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/bootstrap-osd +mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/bootstrap-mds +mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/bootstrap-rgw +mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/bootstrap-mgr +mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/bootstrap-rbd +mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/bootstrap-rbd-mirror + +# prometheus alerts +install -m 644 -D monitoring/prometheus/alerts/ceph_default_alerts.yml %{buildroot}/etc/prometheus/ceph/ceph_default_alerts.yml + +%if 0%{?suse_version} +# create __pycache__ directories and their contents +%py3_compile %{buildroot}%{python3_sitelib} +# hardlink duplicate files under /usr to save space +%fdupes %{buildroot}%{_prefix} +%endif + +%if 0%{?rhel} == 8 || 0%{?fedora} >= 33 +%py_byte_compile %{__python3} %{buildroot}%{python3_sitelib} +%endif + +################################################################################# +# files and systemd scriptlets +################################################################################# +%files + +%files base +%{_bindir}/ceph-crash +%{_bindir}/crushtool +%{_bindir}/monmaptool +%{_bindir}/osdmaptool +%{_bindir}/ceph-kvstore-tool +%{_bindir}/ceph-run +%{_libexecdir}/systemd/system-preset/50-ceph.preset +%{_sbindir}/ceph-create-keys +%dir %{_libexecdir}/ceph +%{_libexecdir}/ceph/ceph_common.sh +%dir %{_libdir}/rados-classes +%{_libdir}/rados-classes/* +%dir %{_libdir}/ceph +%dir %{_libdir}/ceph/erasure-code +%{_libdir}/ceph/erasure-code/libec_*.so* +%dir %{_libdir}/ceph/compressor +%{_libdir}/ceph/compressor/libceph_*.so* +%{_unitdir}/ceph-crash.service +%dir %{_libdir}/ceph/crypto +%{_libdir}/ceph/crypto/libceph_*.so* +%if %{with lttng} +%{_libdir}/libos_tp.so* +%{_libdir}/libosd_tp.so* +%endif +%config(noreplace) %{_sysconfdir}/logrotate.d/ceph +%if 0%{?fedora} || 0%{?rhel} +%config(noreplace) %{_sysconfdir}/sysconfig/ceph +%endif +%if 0%{?suse_version} +%{_fillupdir}/sysconfig.* +%endif +%{_unitdir}/ceph.target +%dir %{python3_sitelib}/ceph_volume +%{python3_sitelib}/ceph_volume/* +%{python3_sitelib}/ceph_volume-* +%{_mandir}/man8/ceph-deploy.8* +%{_mandir}/man8/ceph-create-keys.8* +%{_mandir}/man8/ceph-run.8* +%{_mandir}/man8/crushtool.8* +%{_mandir}/man8/osdmaptool.8* +%{_mandir}/man8/monmaptool.8* +%{_mandir}/man8/ceph-kvstore-tool.8* +#set up placeholder directories +%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/crash +%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/crash/posted +%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/tmp +%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/bootstrap-osd +%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/bootstrap-mds +%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/bootstrap-rgw +%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/bootstrap-mgr +%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/bootstrap-rbd +%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/bootstrap-rbd-mirror + +%post base +/sbin/ldconfig +%if 0%{?suse_version} +%fillup_only +if [ $1 -eq 1 ] ; then +/usr/bin/systemctl preset ceph.target ceph-crash.service >/dev/null 2>&1 || : +fi +%endif +%if 0%{?fedora} || 0%{?rhel} +%systemd_post ceph.target ceph-crash.service +%endif +if [ $1 -eq 1 ] ; then +/usr/bin/systemctl start ceph.target ceph-crash.service >/dev/null 2>&1 || : +fi + +%preun base +%if 0%{?suse_version} +%service_del_preun ceph.target ceph-crash.service +%endif +%if 0%{?fedora} || 0%{?rhel} +%systemd_preun ceph.target ceph-crash.service +%endif + +%postun base +/sbin/ldconfig +%if 0%{?suse_version} +DISABLE_RESTART_ON_UPDATE="yes" +%service_del_postun ceph.target +%endif +%if 0%{?fedora} || 0%{?rhel} +%systemd_postun ceph.target +%endif +if [ $1 -ge 1 ] ; then + # Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to + # "yes". In any case: if units are not running, do not touch them. + SYSCONF_CEPH=%{_sysconfdir}/sysconfig/ceph + if [ -f $SYSCONF_CEPH -a -r $SYSCONF_CEPH ] ; then + source $SYSCONF_CEPH + fi +fi + +%pre -n cephadm +getent group cephadm >/dev/null || groupadd -r cephadm +getent passwd cephadm >/dev/null || useradd -r -g cephadm -s /bin/bash -c "cephadm user for mgr/cephadm" -d %{_sharedstatedir}/cephadm cephadm +exit 0 + +%if ! 0%{?suse_version} +%postun -n cephadm +userdel -r cephadm || true +exit 0 +%endif + +%files -n cephadm +%{_sbindir}/cephadm +%{_mandir}/man8/cephadm.8* +%{_sysconfdir}/sudoers.d/cephadm +%attr(0700,cephadm,cephadm) %dir %{_sharedstatedir}/cephadm +%attr(0700,cephadm,cephadm) %dir %{_sharedstatedir}/cephadm/.ssh +%attr(0600,cephadm,cephadm) %{_sharedstatedir}/cephadm/.ssh/authorized_keys + +%files common +%dir %{_docdir}/ceph +%doc %{_docdir}/ceph/sample.ceph.conf +%license %{_docdir}/ceph/COPYING +%{_bindir}/ceph +%{_bindir}/ceph-authtool +%{_bindir}/ceph-conf +%{_bindir}/ceph-dencoder +%{_bindir}/ceph-rbdnamer +%{_bindir}/ceph-syn +%{_bindir}/cephfs-data-scan +%{_bindir}/cephfs-journal-tool +%{_bindir}/cephfs-table-tool +%{_bindir}/rados +%{_bindir}/radosgw-admin +%{_bindir}/rbd +%{_bindir}/rbd-replay +%{_bindir}/rbd-replay-many +%{_bindir}/rbdmap +%{_sbindir}/mount.ceph +%if 0%{?suse_version} +/sbin/mount.ceph +%endif +%if %{with lttng} +%{_bindir}/rbd-replay-prep +%endif +%{_bindir}/ceph-post-file +%{_tmpfilesdir}/ceph-common.conf +%{_mandir}/man8/ceph-authtool.8* +%{_mandir}/man8/ceph-conf.8* +%{_mandir}/man8/ceph-dencoder.8* +%{_mandir}/man8/ceph-diff-sorted.8* +%{_mandir}/man8/ceph-rbdnamer.8* +%{_mandir}/man8/ceph-syn.8* +%{_mandir}/man8/ceph-post-file.8* +%{_mandir}/man8/ceph.8* +%{_mandir}/man8/mount.ceph.8* +%{_mandir}/man8/rados.8* +%{_mandir}/man8/radosgw-admin.8* +%{_mandir}/man8/rbd.8* +%{_mandir}/man8/rbdmap.8* +%{_mandir}/man8/rbd-replay.8* +%{_mandir}/man8/rbd-replay-many.8* +%{_mandir}/man8/rbd-replay-prep.8* +%{_mandir}/man8/rgw-orphan-list.8* +%dir %{_datadir}/ceph/ +%{_datadir}/ceph/known_hosts_drop.ceph.com +%{_datadir}/ceph/id_rsa_drop.ceph.com +%{_datadir}/ceph/id_rsa_drop.ceph.com.pub +%dir %{_sysconfdir}/ceph/ +%config %{_sysconfdir}/bash_completion.d/ceph +%config %{_sysconfdir}/bash_completion.d/rados +%config %{_sysconfdir}/bash_completion.d/rbd +%config %{_sysconfdir}/bash_completion.d/radosgw-admin +%config(noreplace) %{_sysconfdir}/ceph/rbdmap +%{_unitdir}/rbdmap.service +%dir %{_udevrulesdir} +%{_udevrulesdir}/50-rbd.rules +%attr(3770,ceph,ceph) %dir %{_localstatedir}/log/ceph/ +%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/ + +%pre common +CEPH_GROUP_ID=167 +CEPH_USER_ID=167 +%if 0%{?rhel} || 0%{?fedora} +/usr/sbin/groupadd ceph -g $CEPH_GROUP_ID -o -r 2>/dev/null || : +/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 || : +%endif +%if 0%{?suse_version} +if ! getent group ceph >/dev/null ; then + CEPH_GROUP_ID_OPTION="" + getent group $CEPH_GROUP_ID >/dev/null || CEPH_GROUP_ID_OPTION="-g $CEPH_GROUP_ID" + groupadd ceph $CEPH_GROUP_ID_OPTION -r 2>/dev/null || : +fi +if ! getent passwd ceph >/dev/null ; then + CEPH_USER_ID_OPTION="" + getent passwd $CEPH_USER_ID >/dev/null || CEPH_USER_ID_OPTION="-u $CEPH_USER_ID" + useradd ceph $CEPH_USER_ID_OPTION -r -g ceph -s /sbin/nologin 2>/dev/null || : +fi +usermod -c "Ceph storage service" \ + -d %{_localstatedir}/lib/ceph \ + -g ceph \ + -s /sbin/nologin \ + ceph +%endif +exit 0 + +%post common +%tmpfiles_create %{_tmpfilesdir}/ceph-common.conf + +%postun common +# Package removal cleanup +if [ "$1" -eq "0" ] ; then + rm -rf %{_localstatedir}/log/ceph + rm -rf %{_sysconfdir}/ceph +fi + +%files mds +%{_bindir}/ceph-mds +%{_mandir}/man8/ceph-mds.8* +%{_unitdir}/ceph-mds@.service +%{_unitdir}/ceph-mds.target +%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/mds + +%post mds +%if 0%{?suse_version} +if [ $1 -eq 1 ] ; then + /usr/bin/systemctl preset ceph-mds@\*.service ceph-mds.target >/dev/null 2>&1 || : +fi +%endif +%if 0%{?fedora} || 0%{?rhel} +%systemd_post ceph-mds@\*.service ceph-mds.target +%endif +if [ $1 -eq 1 ] ; then +/usr/bin/systemctl start ceph-mds.target >/dev/null 2>&1 || : +fi + +%preun mds +%if 0%{?suse_version} +%service_del_preun ceph-mds@\*.service ceph-mds.target +%endif +%if 0%{?fedora} || 0%{?rhel} +%systemd_preun ceph-mds@\*.service ceph-mds.target +%endif + +%postun mds +%if 0%{?suse_version} +DISABLE_RESTART_ON_UPDATE="yes" +%service_del_postun ceph-mds@\*.service ceph-mds.target +%endif +%if 0%{?fedora} || 0%{?rhel} +%systemd_postun ceph-mds@\*.service ceph-mds.target +%endif +if [ $1 -ge 1 ] ; then + # Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to + # "yes". In any case: if units are not running, do not touch them. + SYSCONF_CEPH=%{_sysconfdir}/sysconfig/ceph + if [ -f $SYSCONF_CEPH -a -r $SYSCONF_CEPH ] ; then + source $SYSCONF_CEPH + fi + if [ "X$CEPH_AUTO_RESTART_ON_UPGRADE" = "Xyes" ] ; then + /usr/bin/systemctl try-restart ceph-mds@\*.service > /dev/null 2>&1 || : + fi +fi + +%files mgr +%{_bindir}/ceph-mgr +%dir %{_datadir}/ceph/mgr +%{_datadir}/ceph/mgr/mgr_module.* +%{_datadir}/ceph/mgr/mgr_util.* +%if 0%{?rhel} == 7 +%{_datadir}/ceph/mgr/__pycache__ +%endif +%{_unitdir}/ceph-mgr@.service +%{_unitdir}/ceph-mgr.target +%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/mgr + +%post mgr +%if 0%{?suse_version} +if [ $1 -eq 1 ] ; then + /usr/bin/systemctl preset ceph-mgr@\*.service ceph-mgr.target >/dev/null 2>&1 || : +fi +%endif +%if 0%{?fedora} || 0%{?rhel} +%systemd_post ceph-mgr@\*.service ceph-mgr.target +%endif +if [ $1 -eq 1 ] ; then +/usr/bin/systemctl start ceph-mgr.target >/dev/null 2>&1 || : +fi + +%preun mgr +%if 0%{?suse_version} +%service_del_preun ceph-mgr@\*.service ceph-mgr.target +%endif +%if 0%{?fedora} || 0%{?rhel} +%systemd_preun ceph-mgr@\*.service ceph-mgr.target +%endif + +%postun mgr +%if 0%{?suse_version} +DISABLE_RESTART_ON_UPDATE="yes" +%service_del_postun ceph-mgr@\*.service ceph-mgr.target +%endif +%if 0%{?fedora} || 0%{?rhel} +%systemd_postun ceph-mgr@\*.service ceph-mgr.target +%endif +if [ $1 -ge 1 ] ; then + # Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to + # "yes". In any case: if units are not running, do not touch them. + SYSCONF_CEPH=%{_sysconfdir}/sysconfig/ceph + if [ -f $SYSCONF_CEPH -a -r $SYSCONF_CEPH ] ; then + source $SYSCONF_CEPH + fi + if [ "X$CEPH_AUTO_RESTART_ON_UPGRADE" = "Xyes" ] ; then + /usr/bin/systemctl try-restart ceph-mgr@\*.service > /dev/null 2>&1 || : + fi +fi + +%files mgr-dashboard +%{_datadir}/ceph/mgr/dashboard + +%post mgr-dashboard +if [ $1 -eq 1 ] ; then + /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || : +fi + +%postun mgr-dashboard +if [ $1 -eq 1 ] ; then + /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || : +fi + +%files mgr-diskprediction-local +%{_datadir}/ceph/mgr/diskprediction_local + +%post mgr-diskprediction-local +if [ $1 -eq 1 ] ; then + /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || : +fi + +%postun mgr-diskprediction-local +if [ $1 -eq 1 ] ; then + /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || : +fi + +%files mgr-diskprediction-cloud +%{_datadir}/ceph/mgr/diskprediction_cloud + +%post mgr-diskprediction-cloud +if [ $1 -eq 1 ] ; then + /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || : +fi + +%postun mgr-diskprediction-cloud +if [ $1 -eq 1 ] ; then + /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || : +fi + +%files mgr-modules-core +%dir %{_datadir}/ceph/mgr +%{_datadir}/ceph/mgr/alerts +%{_datadir}/ceph/mgr/balancer +%{_datadir}/ceph/mgr/crash +%{_datadir}/ceph/mgr/devicehealth +%{_datadir}/ceph/mgr/influx +%{_datadir}/ceph/mgr/insights +%{_datadir}/ceph/mgr/iostat +%{_datadir}/ceph/mgr/localpool +%{_datadir}/ceph/mgr/orchestrator +%{_datadir}/ceph/mgr/osd_perf_query +%{_datadir}/ceph/mgr/osd_support +%{_datadir}/ceph/mgr/pg_autoscaler +%{_datadir}/ceph/mgr/progress +%{_datadir}/ceph/mgr/prometheus +%{_datadir}/ceph/mgr/rbd_support +%{_datadir}/ceph/mgr/restful +%{_datadir}/ceph/mgr/selftest +%{_datadir}/ceph/mgr/status +%{_datadir}/ceph/mgr/telegraf +%{_datadir}/ceph/mgr/telemetry +%{_datadir}/ceph/mgr/test_orchestrator +%{_datadir}/ceph/mgr/volumes +%{_datadir}/ceph/mgr/zabbix + +%files mgr-rook +%{_datadir}/ceph/mgr/rook + +%post mgr-rook +if [ $1 -eq 1 ] ; then + /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || : +fi + +%postun mgr-rook +if [ $1 -eq 1 ] ; then + /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || : +fi + +%files mgr-k8sevents +%{_datadir}/ceph/mgr/k8sevents + +%post mgr-k8sevents +if [ $1 -eq 1 ] ; then + /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || : +fi + +%postun mgr-k8sevents +if [ $1 -eq 1 ] ; then + /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || : +fi + +%files mgr-cephadm +%{_datadir}/ceph/mgr/cephadm + +%post mgr-cephadm +if [ $1 -eq 1 ] ; then + /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || : +fi + +%postun mgr-cephadm +if [ $1 -eq 1 ] ; then + /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || : +fi + +%files mon +%{_bindir}/ceph-mon +%{_bindir}/ceph-monstore-tool +%{_mandir}/man8/ceph-mon.8* +%{_unitdir}/ceph-mon@.service +%{_unitdir}/ceph-mon.target +%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/mon + +%post mon +%if 0%{?suse_version} +if [ $1 -eq 1 ] ; then + /usr/bin/systemctl preset ceph-mon@\*.service ceph-mon.target >/dev/null 2>&1 || : +fi +%endif +%if 0%{?fedora} || 0%{?rhel} +%systemd_post ceph-mon@\*.service ceph-mon.target +%endif +if [ $1 -eq 1 ] ; then +/usr/bin/systemctl start ceph-mon.target >/dev/null 2>&1 || : +fi + +%preun mon +%if 0%{?suse_version} +%service_del_preun ceph-mon@\*.service ceph-mon.target +%endif +%if 0%{?fedora} || 0%{?rhel} +%systemd_preun ceph-mon@\*.service ceph-mon.target +%endif + +%postun mon +%if 0%{?suse_version} +DISABLE_RESTART_ON_UPDATE="yes" +%service_del_postun ceph-mon@\*.service ceph-mon.target +%endif +%if 0%{?fedora} || 0%{?rhel} +%systemd_postun ceph-mon@\*.service ceph-mon.target +%endif +if [ $1 -ge 1 ] ; then + # Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to + # "yes". In any case: if units are not running, do not touch them. + SYSCONF_CEPH=%{_sysconfdir}/sysconfig/ceph + if [ -f $SYSCONF_CEPH -a -r $SYSCONF_CEPH ] ; then + source $SYSCONF_CEPH + fi + if [ "X$CEPH_AUTO_RESTART_ON_UPGRADE" = "Xyes" ] ; then + /usr/bin/systemctl try-restart ceph-mon@\*.service > /dev/null 2>&1 || : + fi +fi + +%files fuse +%{_bindir}/ceph-fuse +%{_mandir}/man8/ceph-fuse.8* +%{_sbindir}/mount.fuse.ceph +%{_unitdir}/ceph-fuse@.service +%{_unitdir}/ceph-fuse.target + +%files -n rbd-fuse +%{_bindir}/rbd-fuse +%{_mandir}/man8/rbd-fuse.8* + +%files -n rbd-mirror +%{_bindir}/rbd-mirror +%{_mandir}/man8/rbd-mirror.8* +%{_unitdir}/ceph-rbd-mirror@.service +%{_unitdir}/ceph-rbd-mirror.target + +%post -n rbd-mirror +%if 0%{?suse_version} +if [ $1 -eq 1 ] ; then + /usr/bin/systemctl preset ceph-rbd-mirror@\*.service ceph-rbd-mirror.target >/dev/null 2>&1 || : +fi +%endif +%if 0%{?fedora} || 0%{?rhel} +%systemd_post ceph-rbd-mirror@\*.service ceph-rbd-mirror.target +%endif +if [ $1 -eq 1 ] ; then +/usr/bin/systemctl start ceph-rbd-mirror.target >/dev/null 2>&1 || : +fi + +%preun -n rbd-mirror +%if 0%{?suse_version} +%service_del_preun ceph-rbd-mirror@\*.service ceph-rbd-mirror.target +%endif +%if 0%{?fedora} || 0%{?rhel} +%systemd_preun ceph-rbd-mirror@\*.service ceph-rbd-mirror.target +%endif + +%postun -n rbd-mirror +%if 0%{?suse_version} +DISABLE_RESTART_ON_UPDATE="yes" +%service_del_postun ceph-rbd-mirror@\*.service ceph-rbd-mirror.target +%endif +%if 0%{?fedora} || 0%{?rhel} +%systemd_postun ceph-rbd-mirror@\*.service ceph-rbd-mirror.target +%endif +if [ $1 -ge 1 ] ; then + # Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to + # "yes". In any case: if units are not running, do not touch them. + SYSCONF_CEPH=%{_sysconfdir}/sysconfig/ceph + if [ -f $SYSCONF_CEPH -a -r $SYSCONF_CEPH ] ; then + source $SYSCONF_CEPH + fi + if [ "X$CEPH_AUTO_RESTART_ON_UPGRADE" = "Xyes" ] ; then + /usr/bin/systemctl try-restart ceph-rbd-mirror@\*.service > /dev/null 2>&1 || : + fi +fi + +%files immutable-object-cache +%{_bindir}/ceph-immutable-object-cache +%{_mandir}/man8/ceph-immutable-object-cache.8* +%{_unitdir}/ceph-immutable-object-cache@.service +%{_unitdir}/ceph-immutable-object-cache.target + +%post immutable-object-cache +%if 0%{?suse_version} +if [ $1 -eq 1 ] ; then + /usr/bin/systemctl preset ceph-immutable-object-cache@\*.service ceph-immutable-object-cache.target >/dev/null 2>&1 || : +fi +%endif +%if 0%{?fedora} || 0%{?rhel} +%systemd_post ceph-immutable-object-cache@\*.service ceph-immutable-object-cache.target +%endif +if [ $1 -eq 1 ] ; then +/usr/bin/systemctl start ceph-immutable-object-cache.target >/dev/null 2>&1 || : +fi + +%preun immutable-object-cache +%if 0%{?suse_version} +%service_del_preun ceph-immutable-object-cache@\*.service ceph-immutable-object-cache.target +%endif +%if 0%{?fedora} || 0%{?rhel} +%systemd_preun ceph-immutable-object-cache@\*.service ceph-immutable-object-cache.target +%endif + +%postun immutable-object-cache +test -n "$FIRST_ARG" || FIRST_ARG=$1 +%if 0%{?suse_version} +DISABLE_RESTART_ON_UPDATE="yes" +%service_del_postun ceph-immutable-object-cache@\*.service ceph-immutable-object-cache.target +%endif +%if 0%{?fedora} || 0%{?rhel} +%systemd_postun ceph-immutable-object-cache@\*.service ceph-immutable-object-cache.target +%endif +if [ $FIRST_ARG -ge 1 ] ; then + # Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to + # "yes". In any case: if units are not running, do not touch them. + SYSCONF_CEPH=%{_sysconfdir}/sysconfig/ceph + if [ -f $SYSCONF_CEPH -a -r $SYSCONF_CEPH ] ; then + source $SYSCONF_CEPH + fi + if [ "X$CEPH_AUTO_RESTART_ON_UPGRADE" = "Xyes" ] ; then + /usr/bin/systemctl try-restart ceph-immutable-object-cache@\*.service > /dev/null 2>&1 || : + fi +fi + +%files -n rbd-nbd +%{_bindir}/rbd-nbd +%{_mandir}/man8/rbd-nbd.8* + +%files radosgw +%{_bindir}/ceph-diff-sorted +%{_bindir}/radosgw +%{_bindir}/radosgw-token +%{_bindir}/radosgw-es +%{_bindir}/radosgw-object-expirer +%{_bindir}/rgw-orphan-list +%{_libdir}/libradosgw.so* +%{_mandir}/man8/radosgw.8* +%dir %{_localstatedir}/lib/ceph/radosgw +%{_unitdir}/ceph-radosgw@.service +%{_unitdir}/ceph-radosgw.target + +%post radosgw +/sbin/ldconfig +%if 0%{?suse_version} +if [ $1 -eq 1 ] ; then + /usr/bin/systemctl preset ceph-radosgw@\*.service ceph-radosgw.target >/dev/null 2>&1 || : +fi +%endif +%if 0%{?fedora} || 0%{?rhel} +%systemd_post ceph-radosgw@\*.service ceph-radosgw.target +%endif +if [ $1 -eq 1 ] ; then +/usr/bin/systemctl start ceph-radosgw.target >/dev/null 2>&1 || : +fi + +%preun radosgw +%if 0%{?suse_version} +%service_del_preun ceph-radosgw@\*.service ceph-radosgw.target +%endif +%if 0%{?fedora} || 0%{?rhel} +%systemd_preun ceph-radosgw@\*.service ceph-radosgw.target +%endif + +%postun radosgw +/sbin/ldconfig +%if 0%{?suse_version} +DISABLE_RESTART_ON_UPDATE="yes" +%service_del_postun ceph-radosgw@\*.service ceph-radosgw.target +%endif +%if 0%{?fedora} || 0%{?rhel} +%systemd_postun ceph-radosgw@\*.service ceph-radosgw.target +%endif +if [ $1 -ge 1 ] ; then + # Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to + # "yes". In any case: if units are not running, do not touch them. + SYSCONF_CEPH=%{_sysconfdir}/sysconfig/ceph + if [ -f $SYSCONF_CEPH -a -r $SYSCONF_CEPH ] ; then + source $SYSCONF_CEPH + fi + if [ "X$CEPH_AUTO_RESTART_ON_UPGRADE" = "Xyes" ] ; then + /usr/bin/systemctl try-restart ceph-radosgw@\*.service > /dev/null 2>&1 || : + fi +fi + +%files osd +%{_bindir}/ceph-clsinfo +%{_bindir}/ceph-bluestore-tool +%{_bindir}/ceph-objectstore-tool +%{_bindir}/ceph-osdomap-tool +%{_bindir}/ceph-osd +%{_libexecdir}/ceph/ceph-osd-prestart.sh +%{_sbindir}/ceph-volume +%{_sbindir}/ceph-volume-systemd +%{_mandir}/man8/ceph-clsinfo.8* +%{_mandir}/man8/ceph-osd.8* +%{_mandir}/man8/ceph-bluestore-tool.8* +%{_mandir}/man8/ceph-volume.8* +%{_mandir}/man8/ceph-volume-systemd.8* +%{_unitdir}/ceph-osd@.service +%{_unitdir}/ceph-osd.target +%{_unitdir}/ceph-volume@.service +%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/osd +%config(noreplace) %{_sysctldir}/90-ceph-osd.conf +%{_sysconfdir}/sudoers.d/ceph-osd-smartctl + +%post osd +%if 0%{?suse_version} +if [ $1 -eq 1 ] ; then + /usr/bin/systemctl preset ceph-osd@\*.service ceph-volume@\*.service ceph-osd.target >/dev/null 2>&1 || : +fi +%endif +%if 0%{?fedora} || 0%{?rhel} +%systemd_post ceph-osd@\*.service ceph-volume@\*.service ceph-osd.target +%endif +if [ $1 -eq 1 ] ; then +/usr/bin/systemctl start ceph-osd.target >/dev/null 2>&1 || : +fi +%if 0%{?sysctl_apply} + %sysctl_apply 90-ceph-osd.conf +%else + /usr/lib/systemd/systemd-sysctl %{_sysctldir}/90-ceph-osd.conf > /dev/null 2>&1 || : +%endif + +%preun osd +%if 0%{?suse_version} +%service_del_preun ceph-osd@\*.service ceph-volume@\*.service ceph-osd.target +%endif +%if 0%{?fedora} || 0%{?rhel} +%systemd_preun ceph-osd@\*.service ceph-volume@\*.service ceph-osd.target +%endif + +%postun osd +%if 0%{?suse_version} +DISABLE_RESTART_ON_UPDATE="yes" +%service_del_postun ceph-osd@\*.service ceph-volume@\*.service ceph-osd.target +%endif +%if 0%{?fedora} || 0%{?rhel} +%systemd_postun ceph-osd@\*.service ceph-volume@\*.service ceph-osd.target +%endif +if [ $1 -ge 1 ] ; then + # Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to + # "yes". In any case: if units are not running, do not touch them. + SYSCONF_CEPH=%{_sysconfdir}/sysconfig/ceph + if [ -f $SYSCONF_CEPH -a -r $SYSCONF_CEPH ] ; then + source $SYSCONF_CEPH + fi + if [ "X$CEPH_AUTO_RESTART_ON_UPGRADE" = "Xyes" ] ; then + /usr/bin/systemctl try-restart ceph-osd@\*.service ceph-volume@\*.service > /dev/null 2>&1 || : + fi +fi + +%if 0%{with seastar} +%files crimson-osd +%{_bindir}/crimson-osd +%endif + +%if %{with ocf} + +%files resource-agents +%dir %{_prefix}/lib/ocf +%dir %{_prefix}/lib/ocf/resource.d +%dir %{_prefix}/lib/ocf/resource.d/ceph +%attr(0755,-,-) %{_prefix}/lib/ocf/resource.d/ceph/rbd + +%endif + +%files -n librados2 +%{_libdir}/librados.so.* +%dir %{_libdir}/ceph +%{_libdir}/ceph/libceph-common.so.* +%if %{with lttng} +%{_libdir}/librados_tp.so.* +%endif +%dir %{_sysconfdir}/ceph + +%post -n librados2 -p /sbin/ldconfig + +%postun -n librados2 -p /sbin/ldconfig + +%files -n librados-devel +%dir %{_includedir}/rados +%{_includedir}/rados/librados.h +%{_includedir}/rados/rados_types.h +%{_libdir}/librados.so +%if %{with lttng} +%{_libdir}/librados_tp.so +%endif +%{_bindir}/librados-config +%{_mandir}/man8/librados-config.8* + +%files -n libradospp-devel +%dir %{_includedir}/rados +%{_includedir}/rados/buffer.h +%{_includedir}/rados/buffer_fwd.h +%{_includedir}/rados/crc32c.h +%{_includedir}/rados/inline_memory.h +%{_includedir}/rados/librados.hpp +%{_includedir}/rados/librados_fwd.hpp +%{_includedir}/rados/page.h +%{_includedir}/rados/rados_types.hpp + +%files -n python%{python3_pkgversion}-rados +%{python3_sitearch}/rados.cpython*.so +%{python3_sitearch}/rados-*.egg-info + +%if 0%{with libradosstriper} +%files -n libradosstriper1 +%{_libdir}/libradosstriper.so.* + +%post -n libradosstriper1 -p /sbin/ldconfig + +%postun -n libradosstriper1 -p /sbin/ldconfig + +%files -n libradosstriper-devel +%dir %{_includedir}/radosstriper +%{_includedir}/radosstriper/libradosstriper.h +%{_includedir}/radosstriper/libradosstriper.hpp +%{_libdir}/libradosstriper.so +%endif + +%files -n librbd1 +%{_libdir}/librbd.so.* +%if %{with lttng} +%{_libdir}/librbd_tp.so.* +%endif + +%post -n librbd1 -p /sbin/ldconfig + +%postun -n librbd1 -p /sbin/ldconfig + +%files -n librbd-devel +%dir %{_includedir}/rbd +%{_includedir}/rbd/librbd.h +%{_includedir}/rbd/librbd.hpp +%{_includedir}/rbd/features.h +%{_libdir}/librbd.so +%if %{with lttng} +%{_libdir}/librbd_tp.so +%endif + +%files -n librgw2 +%{_libdir}/librgw.so.* +%{_libdir}/librgw_admin_user.so.* +%if %{with lttng} +%{_libdir}/librgw_op_tp.so.* +%{_libdir}/librgw_rados_tp.so.* +%endif + +%post -n librgw2 -p /sbin/ldconfig + +%postun -n librgw2 -p /sbin/ldconfig + +%files -n librgw-devel +%dir %{_includedir}/rados +%{_includedir}/rados/librgw.h +%{_includedir}/rados/librgw_admin_user.h +%{_includedir}/rados/rgw_file.h +%{_libdir}/librgw.so +%{_libdir}/librgw_admin_user.so +%if %{with lttng} +%{_libdir}/librgw_op_tp.so +%{_libdir}/librgw_rados_tp.so +%endif + +%files -n python%{python3_pkgversion}-rgw +%{python3_sitearch}/rgw.cpython*.so +%{python3_sitearch}/rgw-*.egg-info + +%files -n python%{python3_pkgversion}-rbd +%{python3_sitearch}/rbd.cpython*.so +%{python3_sitearch}/rbd-*.egg-info + +%files -n libcephfs2 +%{_libdir}/libcephfs.so.* +%dir %{_sysconfdir}/ceph + +%post -n libcephfs2 -p /sbin/ldconfig + +%postun -n libcephfs2 -p /sbin/ldconfig + +%files -n libcephfs-devel +%dir %{_includedir}/cephfs +%{_includedir}/cephfs/libcephfs.h +%{_includedir}/cephfs/ceph_ll_client.h +%{_libdir}/libcephfs.so + +%files -n python%{python3_pkgversion}-cephfs +%{python3_sitearch}/cephfs.cpython*.so +%{python3_sitearch}/cephfs-*.egg-info +%{python3_sitelib}/ceph_volume_client.py +%{python3_sitelib}/__pycache__/ceph_volume_client.cpython*.py* + +%files -n python%{python3_pkgversion}-ceph-argparse +%{python3_sitelib}/ceph_argparse.py +%{python3_sitelib}/__pycache__/ceph_argparse.cpython*.py* +%{python3_sitelib}/ceph_daemon.py +%{python3_sitelib}/__pycache__/ceph_daemon.cpython*.py* + +%files -n python%{python3_pkgversion}-ceph-common +%{python3_sitelib}/ceph +%{python3_sitelib}/ceph-*.egg-info + +%if 0%{with cephfs_shell} +%files -n cephfs-shell +%{python3_sitelib}/cephfs_shell-*.egg-info +%{_bindir}/cephfs-shell +%endif + +%if 0%{with ceph_test_package} +%files -n ceph-test +%{_bindir}/ceph-client-debug +%{_bindir}/ceph_bench_log +%{_bindir}/ceph_kvstorebench +%{_bindir}/ceph_multi_stress_watch +%{_bindir}/ceph_erasure_code +%{_bindir}/ceph_erasure_code_benchmark +%{_bindir}/ceph_omapbench +%{_bindir}/ceph_objectstore_bench +%{_bindir}/ceph_perf_objectstore +%{_bindir}/ceph_perf_local +%{_bindir}/ceph_perf_msgr_client +%{_bindir}/ceph_perf_msgr_server +%{_bindir}/ceph_psim +%{_bindir}/ceph_radosacl +%{_bindir}/ceph_rgw_jsonparser +%{_bindir}/ceph_rgw_multiparser +%{_bindir}/ceph_scratchtool +%{_bindir}/ceph_scratchtoolpp +%{_bindir}/ceph_test_* +%{_bindir}/ceph-coverage +%{_bindir}/ceph-debugpack +%{_bindir}/ceph-dedup-tool +%{_mandir}/man8/ceph-debugpack.8* +%dir %{_libdir}/ceph +%{_libdir}/ceph/ceph-monstore-update-crush.sh +%endif + +%if 0%{with cephfs_java} +%files -n libcephfs_jni1 +%{_libdir}/libcephfs_jni.so.* + +%post -n libcephfs_jni1 -p /sbin/ldconfig + +%postun -n libcephfs_jni1 -p /sbin/ldconfig + +%files -n libcephfs_jni-devel +%{_libdir}/libcephfs_jni.so + +%files -n cephfs-java +%{_javadir}/libcephfs.jar +%{_javadir}/libcephfs-test.jar +%endif + +%files -n rados-objclass-devel +%dir %{_includedir}/rados +%{_includedir}/rados/objclass.h + +%if 0%{with selinux} +%files selinux +%attr(0600,root,root) %{_datadir}/selinux/packages/ceph.pp +%{_datadir}/selinux/devel/include/contrib/ceph.if +%{_mandir}/man8/ceph_selinux.8* + +%post selinux +# backup file_contexts before update +. /etc/selinux/config +FILE_CONTEXT=/etc/selinux/${SELINUXTYPE}/contexts/files/file_contexts +cp ${FILE_CONTEXT} ${FILE_CONTEXT}.pre + +# Install the policy +/usr/sbin/semodule -i %{_datadir}/selinux/packages/ceph.pp + +# Load the policy if SELinux is enabled +if ! /usr/sbin/selinuxenabled; then + # Do not relabel if selinux is not enabled + exit 0 +fi + +if diff ${FILE_CONTEXT} ${FILE_CONTEXT}.pre > /dev/null 2>&1; then + # Do not relabel if file contexts did not change + exit 0 +fi + +# Check whether the daemons are running +/usr/bin/systemctl status ceph.target > /dev/null 2>&1 +STATUS=$? + +# Stop the daemons if they were running +if test $STATUS -eq 0; then + /usr/bin/systemctl stop ceph.target > /dev/null 2>&1 +fi + +# Relabel the files fix for first package install +/usr/sbin/fixfiles -C ${FILE_CONTEXT}.pre restore 2> /dev/null + +rm -f ${FILE_CONTEXT}.pre +# The fixfiles command won't fix label for /var/run/ceph +/usr/sbin/restorecon -R /var/run/ceph > /dev/null 2>&1 + +# Start the daemons iff they were running before +if test $STATUS -eq 0; then + /usr/bin/systemctl start ceph.target > /dev/null 2>&1 || : +fi +exit 0 + +%postun selinux +if [ $1 -eq 0 ]; then + # backup file_contexts before update + . /etc/selinux/config + FILE_CONTEXT=/etc/selinux/${SELINUXTYPE}/contexts/files/file_contexts + cp ${FILE_CONTEXT} ${FILE_CONTEXT}.pre + + # Remove the module + /usr/sbin/semodule -n -r ceph > /dev/null 2>&1 + + # Reload the policy if SELinux is enabled + if ! /usr/sbin/selinuxenabled ; then + # Do not relabel if SELinux is not enabled + exit 0 + fi + + # Check whether the daemons are running + /usr/bin/systemctl status ceph.target > /dev/null 2>&1 + STATUS=$? + + # Stop the daemons if they were running + if test $STATUS -eq 0; then + /usr/bin/systemctl stop ceph.target > /dev/null 2>&1 + fi + + /usr/sbin/fixfiles -C ${FILE_CONTEXT}.pre restore 2> /dev/null + rm -f ${FILE_CONTEXT}.pre + # The fixfiles command won't fix label for /var/run/ceph + /usr/sbin/restorecon -R /var/run/ceph > /dev/null 2>&1 + + # Start the daemons if they were running before + if test $STATUS -eq 0; then + /usr/bin/systemctl start ceph.target > /dev/null 2>&1 || : + fi +fi +exit 0 + +%endif + +%files grafana-dashboards +%if 0%{?suse_version} +%attr(0755,root,root) %dir %{_sysconfdir}/grafana +%attr(0755,root,root) %dir %{_sysconfdir}/grafana/dashboards +%endif +%attr(0755,root,root) %dir %{_sysconfdir}/grafana/dashboards/ceph-dashboard +%config %{_sysconfdir}/grafana/dashboards/ceph-dashboard/* +%doc monitoring/grafana/dashboards/README +%doc monitoring/grafana/README.md + +%files prometheus-alerts +%if 0%{?suse_version} +%attr(0755,root,root) %dir %{_sysconfdir}/prometheus +%endif +%attr(0755,root,root) %dir %{_sysconfdir}/prometheus/ceph +%config %{_sysconfdir}/prometheus/ceph/ceph_default_alerts.yml + +%changelog +* Wed Sep 16 2020 Kaleb S. KEITHLEY - 2:15.2.5-1 +- ceph 15.2.5 GA + +* Wed Jul 29 2020 Richard W.M. Jones - 2:15.2.4-11 +- Rebuild against fmt 7. + +* Mon Jul 27 2020 Fedora Release Engineering - 2:15.2.4-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Tue Jul 21 2020 Kaleb S. KEITHLEY - 2:15.2.4-9 +- %cmake_build and %cmake_install + +* Mon Jul 20 2020 Kaleb S. KEITHLEY - 2:15.2.4-8 +- see 15.2.4-4 (f33-java11) for real this time +- and use %make_install macro + +* Mon Jul 20 2020 Kaleb S. KEITHLEY - 2:15.2.4-7 +- see 15.2.4-3, hopefully for real this time +- and use %make_install macro + +* Fri Jul 17 2020 Kaleb S. KEITHLEY - 2:15.2.4-6 +- see 15.2.4-4 + +* Fri Jul 17 2020 Kaleb S. KEITHLEY - 2:15.2.4-5 +- see 15.2.4-3 + +* Fri Jul 17 2020 Kaleb S. KEITHLEY - 2:15.2.4-4 +- Rebuilt for JDK-11, see https://fedoraproject.org/wiki/Changes/Java11 + +* Fri Jul 17 2020 Kaleb S. KEITHLEY - 2:15.2.4-3 +- use `ld -r -z ibt -z shstk...` instead of magic hackery to get CET ibt + and shstk. N.B. updated yasm in f33/rawhide now has support for + .note.gnu.properties so even this will go away in the next build +- signal_handler.cc, use HAVE_REENTRANT_STRSIGNAL, strsignal(3) + +* Fri Jul 10 2020 Jiri Vanek - 2:15.2.4-2 +- Rebuilt for JDK-11, see https://fedoraproject.org/wiki/Changes/Java11 + +* Wed Jul 1 2020 Kaleb S. KEITHLEY - 2:15.2.4-1 +- ceph 15.2.4 GA + +* Tue Jun 23 2020 Kaleb S. KEITHLEY +- explicit BuildRequires python3-setuptools + +* Mon Jun 1 2020 Kaleb S. KEITHLEY - 2:15.2.3-1 +- ceph 15.2.3 GA + +* Tue May 26 2020 Kaleb S. KEITHLEY - 2:15.2.2-3 +- ceph 15.2.2, CET enable src/common/crc32c_intel_*_asm.s; shstk, ibt +- and other fixes +- see https://github.com/intel/isa-l/blob/master/crc/crc32_iscsi_00.asm + +* Tue May 26 2020 Miro Hrončok - 2:15.2.2-2 +- Rebuilt for Python 3.9 + +* Mon May 18 2020 Kaleb S. KEITHLEY - 2:15.2.2-1 +- ceph 15.2.2 GA + +* Mon May 18 2020 Kaleb S. KEITHLEY - 2:15.2.1-2 +- ceph 15.2.1, gmock and gtest. (although gmock last built for f27) + +* Fri Apr 10 2020 Kaleb S. KEITHLEY - 2:15.2.1-1 +- ceph 15.2.1 GA + +* Mon Mar 23 2020 Kaleb S. KEITHLEY - 2:15.2.0-1 +- ceph 15.2.0 GA + +* Mon Mar 16 2020 Kaleb S. KEITHLEY - 2:15.1.1-2 +- ceph 15.1.1 fmt, rhbz#1805422 again + +* Mon Mar 16 2020 Kaleb S. KEITHLEY - 2:15.1.1-1 +- ceph 15.1.1 RC + +* Thu Mar 5 2020 Kaleb S. KEITHLEY - 2:15.1.0-3 +- ceph 15.1.0, rhbz#1809799 + +* Thu Feb 20 2020 Kaleb S. KEITHLEY - 2:15.1.0-2 +- ceph 15.1.0, fmt, rhbz#1805422 + +* Tue Feb 11 2020 Kaleb S. KEITHLEY - 2:15.1.0-1 +- ceph 15.1.0 RC + +* Mon Feb 3 2020 Kaleb S. KEITHLEY - 2:14.2.7-2 +- ceph 14.2.7 python3-remoto #1784216 + +* Sat Feb 1 2020 Kaleb S. KEITHLEY - 2:14.2.7-1 +- ceph 14.2.7 GA + +* Wed Jan 29 2020 Kaleb S. KEITHLEY - 2:14.2.6-4 +- ceph 14.2.6, https://tracker.ceph.com/issues/43649 + +* Mon Jan 27 2020 Kaleb S. KEITHLEY - 2:14.2.6-3 +- ceph 14.2.6, (temporarily) disable unit tests + +* Fri Jan 24 2020 Kaleb S. KEITHLEY +- ceph 14.2.6, gcc-10, missing includes + +* Thu Jan 9 2020 Kaleb S. KEITHLEY - 2:14.2.6-2 +- ceph 14.2.6 + +* Thu Jan 9 2020 Kaleb S. KEITHLEY - 2:14.2.6-1 +- ceph 14.2.6 GA + +* Tue Dec 10 2019 Kaleb S. KEITHLEY - 2:14.2.5-1 +- ceph 14.2.5 GA + +* Mon Nov 11 2019 Kaleb S. KEITHLEY - 2:14.2.4-3 +- ceph 14.2.4, fix typo + +* Tue Nov 5 2019 Kaleb S. KEITHLEY - 2:14.2.4-2 +- ceph 14.2.4, partial fix for bz#1768017 + +* Tue Sep 17 2019 Kaleb S. KEITHLEY - 2:14.2.4-1 +- ceph 14.2.4 GA + +* Wed Sep 4 2019 Kaleb S. KEITHLEY - 2:14.2.3-1 +- ceph 14.2.3 GA + +* Mon Aug 19 2019 Miro Hrončok - 2:14.2.2-3 +- Rebuilt for Python 3.8 + +* Wed Jul 24 2019 Fedora Release Engineering - 2:14.2.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Fri Jul 19 2019 Kaleb S. KEITHLEY - 2:14.2.2-1 +- ceph 14.2.2 GA + +* Tue May 28 2019 Kaleb S. KEITHLEY - 2:14.2.0-2 +- numpy -> python3-numpy, bz#1712203 (and why I like to keep upstream + and fedora .spec files in sync) + +* Wed May 8 2019 Kaleb S. KEITHLEY +- sync w/ upstream to minimize diffs/drift + +* Mon Apr 29 2019 Boris Ranto - 2:14.2.1-1 +- Rebase to latest upstream version (14.2.1) + +* Tue Mar 19 2019 Kaleb S. KEITHLEY - 2:14.2.0-1 +- ceph 14.2.0 GA + +* Wed Mar 13 2019 Boris Ranto - 2:14.1.1-1 +- Rebase to latest upstream version + +* Thu Mar 07 2019 Adam Williamson - 2:14.1.0-3 +- Return epoch to 2, epochs cannot ever go backwards + +* Wed Mar 6 2019 Kaleb S. KEITHLEY - 1:14.1.0-2 +- ceph 14.1.0 w/ static libcrc32 + +* Wed Feb 27 2019 Boris Ranto - 1:14.1.0-1 +- Rebase to v14.1.0 (updated for fixes in upstream nautilus branch) + +* Thu Feb 21 2019 Kaleb S. KEITHLEY - 1:14.0.1-2 +- Eliminate redundant CMAKE_* macros when using %%cmake global +- Add CMAKE_BUILD_TYPE=RelWithDeb(ug)Info and BUILD_CONFIG=rpmbuild + +* Wed Feb 20 2019 Kaleb S. KEITHLEY - 1:14.0.1-1 +- rebuild for f31/rawhide, including: +- use the %%{cmake} %%global to get all the extra Fedora cmake options. + (This is Fedora, so don't care so much about rhel/rhel7 cmake3.) +- reset epoch to 1. Note we use (have been using) epoch=1 in Fedora since + forever. I presume this is so that people can install Ceph RPMs from + ceph.com if they prefer those, which use epoch=2, and not run into issues + when updating. + +* Thu Feb 7 2019 Kaleb S. KEITHLEY - 2:14.0.1-4 +- w/ fixes for gcc9 + +* Thu Jan 31 2019 Fedora Release Engineering - 2:14.0.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Sat Dec 08 2018 Boris Ranto - 2:14.0.1-2 +- fix pyOpenSSL depemdency + +* Tue Dec 04 2018 Boris Ranto - 2:14.0.1-1 +- New release (2:14.0.1-1) +- Sync with upstream +- Drop 32-bit support + +* Wed Nov 21 2018 Boris Ranto - 2:13.2.2-1 +- New release (2:13.2.2-1) +- Sync with upstream + +* Mon Oct 29 2018 Kaleb S. KEITHLEY - 1:12.2.9-1 +- New release (1:12.2.9-1) + +* Wed Sep 12 2018 Kaleb S. KEITHLEY - 1:12.2.8-2 +- Fedora 30 python3. Note ceph-mgr subpackage, ceph-detect-init, ceph-disk, + ceph-volume, and ceph-volume-systemd are missing in this build + +* Fri Aug 31 2018 Kaleb S. KEITHLEY - 1:12.2.8-1 +- New release (1:12.2.8-1) + +* Wed Jul 18 2018 Kaleb S. KEITHLEY - 1:12.2.7-1 +- New release (1:12.2.7-1) + +* Thu Jul 12 2018 Fedora Release Engineering - 1:12.2.6-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Wed Jul 11 2018 Kaleb S. KEITHLEY - 1:12.2.6-1 +- New release (1:12.2.6-1) + +* Mon Jul 2 2018 Kaleb S. KEITHLEY - 1:12.2.5-3 +- New release (1:12.2.5-3) w/ python-3.7 + +* Fri Jun 29 2018 Kaleb S. KEITHLEY - 1:12.2.5-2 +- New release (1:12.2.5-2) + +* Fri Apr 27 2018 Kaleb S. KEITHLEY - 1:12.2.5-1 +- New release (1:12.2.5-1) + +* Fri Apr 13 2018 Rafael dos Santos - 1:12.2.4-2 +- Use standard Fedora linker flags (bug #1547552) + +* Fri Mar 2 2018 Kaleb S. KEITHLEY - 1:12.2.4-1 +- New release (1:12.2.4-1) +- rhbz#1446610, rhbz#1546611, cephbz#23039 + +* Wed Feb 21 2018 Kaleb S. KEITHLEY - 1:12.2.3-1 +- New release (1:12.2.3-1) + +* Thu Feb 15 2018 Kaleb S. KEITHLEY - 1:12.2.2-3 +- no ldconfig in F28 + +* Wed Feb 07 2018 Fedora Release Engineering - 1:12.2.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Tue Dec 5 2017 Kaleb S. KEITHLEY - 1:12.2.2-1 +- New release (1:12.2.2-1) +- Fix build error on arm + +* Thu Oct 05 2017 Boris Ranto - 1:12.2.1-2 +- Obsolete ceph-libs-compat package + +* Wed Sep 27 2017 Kaleb S. KEITHLEY - 1:12.2.1-1 +- New release (1:12.2.1-1) + +* Tue Aug 29 2017 Kaleb S. KEITHLEY - 1:12.2.0-1 +- New release (1:12.2.0-1) + +* Thu Aug 24 2017 Kaleb S. KEITHLEY - 1:12.1.4-5 +- libibverbs(-devel) is superceded by rdma-core(-devel), again + +* Thu Aug 24 2017 Kaleb S. KEITHLEY - 1:12.1.4-4 +- libibverbs(-devel) is superceded by rdma-core(-devel) + +* Tue Aug 22 2017 Adam Williamson - 1:12.1.4-3 +- Disable RDMA support on 32-bit ARM (#1484155) + +* Thu Aug 17 2017 Kaleb S. KEITHLEY - 1:12.1.4-2 +- fix %%epoch in comment, ppc64le lowmem_builder + +* Wed Aug 16 2017 Kaleb S. KEITHLEY - 1:12.1.4-1 +- New release (1:12.1.4-1) + +* Sat Aug 12 2017 Kaleb S. KEITHLEY - 1:12.1.3-1 +- New release (1:12.1.3-1) + +* Fri Aug 11 2017 Kaleb S. KEITHLEY - 1:12.1.2-3 +- rebuild with librpm.so.7 + +* Thu Aug 10 2017 Kaleb S. KEITHLEY - 1:12.1.2-2 +- Fix 32-bit alignment + +* Thu Aug 3 2017 Kaleb S. KEITHLEY - 1:12.1.2-1 +- New release (1:12.1.2-1) + +* Tue Aug 1 2017 Boris Ranto - 1:12.1.1-8 +- Fix ppc64 build + +* Tue Aug 1 2017 Kaleb S. KEITHLEY - 1:12.1.1-7 +- python34 and other nits +- still no fix for ppc64 + +* Sun Jul 30 2017 Florian Weimer - 1:12.1.1-6 +- Reenable ppc64le, with binutils fix for ppc64le (#1475636) + +* Fri Jul 28 2017 Kaleb S. KEITHLEY - 1:12.1.1-5 +- ppc64le disabled until bz #1475636 resolution + +* Fri Jul 28 2017 Kaleb S. KEITHLEY - 1:12.1.1-4 +- 12.1.1 w/ hacks for armv7hl: low mem, no java jni +- WTIH_BABELTRACE -> WITH_BABELTRACE for all archs +- still no fix for ppc64 + +* Wed Jul 26 2017 Fedora Release Engineering - 1:12.1.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Sat Jul 22 2017 Kaleb S. KEITHLEY - 1:12.1.1-2 +- 12.1.1 w/ rocksdb patch (i686) + +* Sat Jul 22 2017 Kaleb S. KEITHLEY - 1:12.1.1-1 +- New release (1:12.1.1-1) + +* Fri Jul 21 2017 Kaleb S. KEITHLEY - 1:12.1.1-0 +- New release (1:12.1.1-0) + +* Fri Jul 21 2017 Kalev Lember - 1:10.2.7-3 +- Rebuilt for Boost 1.64 + +* Mon May 15 2017 Fedora Release Engineering - 1:10.2.7-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_27_Mass_Rebuild + +* Mon Apr 17 2017 Kaleb S. KEITHLEY - 1:10.2.7-1 +- New release (1:10.2.7-1) + +* Wed Feb 08 2017 Boris Ranto - 1:10.2.5-2 +- New release (1:10.2.5-2) + +* Fri Jan 13 2017 Boris Ranto - 1:10.2.5-1 +- New release (1:10.2.5-1) +- hack: do not test for libxfs, assume it is present + +* Wed Dec 14 2016 Boris Ranto - 1:10.2.4-2 +- New version (1:10.2.4-2) +- This syncs up with the upstream 10.2.5 +- Doing it this way because of broken lookaside cache +- Fix the -devel obsoletes + +* Thu Dec 08 2016 Boris Ranto - 1:10.2.4-1 +- New version (1:10.2.4-1) +- Disable erasure_codelib neon build +- Use newer -devel package format +- Sync up the spec file + +* Wed Oct 26 2016 Ken Dreyer - 1:10.2.3-4 +- librgw: add API version defines for librgw and rgw_file + +* Wed Oct 26 2016 Ken Dreyer - 1:10.2.3-3 +- update patches style for rdopkg + +* Thu Sep 29 2016 Boris Ranto - 1:10.2.3-2 +- New release (1:10.2.3-2) +- common: instantiate strict_si_cast not + +* Thu Sep 29 2016 Boris Ranto - 1:10.2.3-1 +- New version (1:10.2.3-1) +- Disable erasure_codelib neon build + +* Sun Aug 07 2016 Igor Gnatenko - 1:10.2.2-4 +- Rebuild for LevelDB 1.18 + +* Tue Jul 19 2016 Fedora Release Engineering - 1:10.2.2-3 +- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages + +* Tue Jun 21 2016 Boris Ranto - 1:10.2.2-2 +- New release (1:10.2.2-2) +- fix tcmalloc handling in spec file + +* Mon Jun 20 2016 Boris Ranto - 1:10.2.2-1 +- New version (1:10.2.2-1) +- Disable erasure_codelib neon build +- Do not use -momit-leaf-frame-pointer flag + +* Mon May 16 2016 Boris Ranto - 1:10.2.1-1 +- New version (1:10.2.1-1) +- Disable erasure_codelib neon build +- Do not use -momit-leaf-frame-pointer flag + +* Fri May 06 2016 Dan Horák - 10.2.0-3 +- fix build on s390(x) - gperftools/tcmalloc not available there + +* Fri Apr 22 2016 Boris Ranto - 10.2.0-2 +- Do not use -momit-leaf-frame-pointer flag + +* Fri Apr 22 2016 Boris Ranto - - +- Rebase to version 10.2.0 +- Disable erasure_codelib neon build + +* Mon Apr 11 2016 Richard W.M. Jones - 1:9.2.0-5 +- Fix large startup times of processes linking to -lrbd. + Backport upstream commit 1c2831a2, fixes RHBZ#1319483. +- Add workaround for XFS header brokenness. + +* Wed Feb 03 2016 Fedora Release Engineering - 1:9.2.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Thu Jan 14 2016 Jonathan Wakely - 1:9.2.0-3 +- Rebuilt for Boost 1.60 + +* Mon Dec 14 2015 Dan Horák - 1:9.2.0-2 +- fix build on s390(x) - gperftools/tcmalloc not available there + +* Tue Nov 10 2015 Boris Ranto - 1:9.2.0-1 +- Rebase to latest stable upstream version (9.2.0 - infernalis) +- Use upstream spec file + +* Tue Oct 27 2015 Boris Ranto - 1:0.94.5-1 +- Rebase to latest upstream version + +* Tue Oct 20 2015 Boris Ranto - 1:0.94.4-1 +- Rebase to latest upstream version +- The rtdsc patch got merged upstream and is already present in the release + +* Thu Aug 27 2015 Jonathan Wakely - 1:0.94.3-2 +- Rebuilt for Boost 1.59 + +* Thu Aug 27 2015 Boris Ranto - 1:0.94.3-1 +- Rebase to latest upstream version +- The boost patch got merged upstream and is already present in the release + +* Fri Jul 31 2015 Richard W.M. Jones - 1:0.94.2-4 +- Fix build against boost 1.58 (http://tracker.ceph.com/issues/11576). + +* Wed Jul 29 2015 Fedora Release Engineering - 1:0.94.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Changes/F23Boost159 + +* Wed Jul 22 2015 David Tardon - 1:0.94.2-2 +- rebuild for Boost 1.58 + +* Thu Jul 16 2015 Boris Ranto - 1:0.94.2-1 +- Rebase to latest upstream version + +* Wed Jun 17 2015 Fedora Release Engineering - 1:0.94.1-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Mon Jun 08 2015 Dan Horák - 1:0.94.1-4 +- fix build on s390(x) - no gperftools there + +* Thu May 21 2015 Boris Ranto - 1:0.94.1-3 +- Disable lttng support (rhbz#1223319) + +* Mon May 18 2015 Boris Ranto - 1:0.94.1-2 +- Fix arm linking issue (rhbz#1222286) + +* Tue Apr 14 2015 Boris Ranto - 1:0.94.1-1 +- Rebase to latest upstream version and sync-up the spec file +- Add arm compilation patches + +* Wed Apr 01 2015 Ken Dreyer - 1:0.87.1-3 +- add version numbers to Obsoletes (RHBZ #1193182) + +* Wed Mar 4 2015 Boris Ranto - 1:0.87.1-2 +- Perform a hardened build +- Use git-formatted patches +- Add patch for pthreads rwlock unlock problem +- Do not remove conf files on uninstall +- Remove the cleanup function, it is only necessary for f20 and f21 + +* Wed Feb 25 2015 Boris Ranto - 1:0.87.1-1 +- Rebase to latest upstream +- Remove boost patch, it is in upstream tarball +- Build with yasm, tarball contains fix for the SELinux issue + +* Thu Jan 29 2015 Petr Machata - 1:0.87-2 +- Rebuild for boost 1.57.0 +- Include instead of + . Keep the old dumping behavior in + osd/ECBackend.cc (ceph-0.87-boost157.patch) + +* Mon Nov 3 2014 Boris Ranto - 1:0.87-1 +- Rebase to latest major version (firefly -> giant) + +* Thu Oct 16 2014 Boris Ranto - 1:0.80.6-3 +- Fix a typo in librados-devel vs librados2-devel dependency + +* Fri Oct 10 2014 Boris Ranto - 1:0.80.6-2 +- Provide empty file list for python-ceph-compat and ceph-devel-compat + +* Fri Oct 10 2014 Boris Ranto - 1:0.80.6-1 +- Rebase to 0.80.6 +- Split ceph-devel and python-ceph packages + +* Tue Sep 9 2014 Dan Horák - 1:0.80.5-10 +- update Requires for s390(x) + +* Wed Sep 3 2014 Boris Ranto - 1:0.80.5-9 +- Symlink librd.so.1 to /usr/lib64/qemu only on rhel6+ x86_64 (1136811) + +* Thu Aug 21 2014 Boris Ranto - 1:0.80.5-8 +- Revert the previous change +- Fix bz 1118504, second attempt (yasm appears to be the package that caused this +- Fix bogus dates + +* Wed Aug 20 2014 Boris Ranto - 1:0.80.5-7 +- Several more merges from file to try to fix the selinux issue (1118504) + +* Sun Aug 17 2014 Kalev Lember - 1:0.80.5-6 +- Obsolete ceph-libcephfs + +* Sat Aug 16 2014 Boris Ranto - 1:0.80.5-5 +- Do not require xfsprogs/xfsprogs-devel for el6 +- Require gperftools-devel for non-ppc*/s390* architectures only +- Do not require junit -- no need to build libcephfs-test.jar +- Build without libxfs for el6 +- Build without tcmalloc for ppc*/s390* architectures +- Location of mkcephfs must depend on a rhel release +- Use epoch in the Requires fields [1130700] + +* Sat Aug 16 2014 Boris Ranto - 1:0.80.5-4 +- Use the proper version name in Obsoletes + +* Fri Aug 15 2014 Fedora Release Engineering - 1:0.80.5-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Fri Aug 15 2014 Boris Ranto - 1:0.80.5-2 +- Add the arm pthread hack + +* Fri Aug 15 2014 Boris Ranto - 1:0.80.5-1 +- Bump the Epoch, we need to keep the latest stable, not development, ceph version in fedora +- Use the upstream spec file with the ceph-libs split +- Add libs-compat subpackage [1116546] +- use fedora in rhel 7 checks +- obsolete libcephfs [1116614] +- depend on redhat-lsb-core for the initscript [1108696] + +* Wed Aug 13 2014 Kalev Lember - 0.81.0-6 +- Add obsoletes to keep the upgrade path working (#1118510) + +* Mon Jul 7 2014 Kaleb S. KEITHLEY - 0.81.0-5 +- revert to old spec until after f21 branch + +* Fri Jul 4 2014 Kaleb S. KEITHLEY +- temporary exclude f21/armv7hl. N.B. it builds fine on f20/armv7hl. + +* Fri Jul 4 2014 Kaleb S. KEITHLEY - 0.81.0-4 +- upstream ceph.spec file + +* Tue Jul 1 2014 Kaleb S. KEITHLEY - 0.81.0-3 +- upstream ceph.spec file + +* Sat Jun 07 2014 Fedora Release Engineering - 0.81.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Thu Jun 5 2014 Kaleb S. KEITHLEY +- el6 ppc64 likewise for tcmalloc, merge from origin/el6 + +* Thu Jun 5 2014 Kaleb S. KEITHLEY +- el6 ppc64 does not have gperftools, merge from origin/el6 + +* Thu Jun 5 2014 Kaleb S. KEITHLEY - 0.81.0-1 +- ceph-0.81.0 + +* Wed Jun 4 2014 Peter Robinson 0.80.1-5 +- gperftools now available on aarch64/ppc64 + +* Fri May 23 2014 Petr Machata - 0.80.1-4 +- Rebuild for boost 1.55.0 + +* Fri May 23 2014 David Tardon - 0.80.1-3 +- rebuild for boost 1.55.0 + +* Wed May 14 2014 Kaleb S. KEITHLEY - 0.80.1-2 +- build epel-6 +- exclude %%{_libdir}/ceph/erasure-code in base package + +* Tue May 13 2014 Kaleb S. KEITHLEY - 0.80.1-1 +- Update to latest stable upstream release, BZ 1095201 +- PIE, _hardened_build, BZ 955174 + +* Thu Feb 06 2014 Ken Dreyer - 0.72.2-2 +- Move plugins from -devel into -libs package (#891993). Thanks Michael + Schwendt. + +* Mon Jan 06 2014 Ken Dreyer 0.72.2-1 +- Update to latest stable upstream release +- Use HTTPS for URLs +- Submit Automake 1.12 patch upstream +- Move unversioned shared libs from ceph-libs into ceph-devel + +* Wed Dec 18 2013 Marcin Juszkiewicz 0.67.3-4 +- build without tcmalloc on aarch64 (no gperftools) + +* Sat Nov 30 2013 Peter Robinson 0.67.3-3 +- gperftools not currently available on aarch64 + +* Mon Oct 07 2013 Dan Horák - 0.67.3-2 +- fix build on non-x86_64 64-bit arches + +* Wed Sep 11 2013 Josef Bacik - 0.67.3-1 +- update to 0.67.3 + +* Wed Sep 11 2013 Michael Schwendt - 0.61.7-3 +- let base package include all its documentation files via %%doc magic, + so for Fedora 20 Unversioned Docdirs no files are included accidentally +- include the sample config files again (instead of just an empty docdir + that has been added for #846735) +- don't include librbd.so.1 also in -devel package (#1003202) +- move one misplaced rados plugin from -devel into -libs package (#891993) +- include missing directories in -devel and -libs packages +- move librados-config into the -devel pkg where its manual page is, too +- add %%_isa to subpackage dependencies +- don't use %%defattr anymore +- add V=1 to make invocation for verbose build output + +* Wed Jul 31 2013 Peter Robinson 0.61.7-2 +- re-enable tmalloc on arm now gperftools is fixed + +* Mon Jul 29 2013 Josef Bacik - 0.61.7-1 +- Update to 0.61.7 + +* Sat Jul 27 2013 pmachata@redhat.com - 0.56.4-2 +- Rebuild for boost 1.54.0 + +* Fri Mar 29 2013 Josef Bacik - 0.56.4-1 +- Update to 0.56.4 +- Add upstream d02340d90c9d30d44c962bea7171db3fe3bfba8e to fix logrotate + +* Wed Feb 20 2013 Josef Bacik - 0.56.3-1 +- Update to 0.56.3 + +* Mon Feb 11 2013 Richard W.M. Jones - 0.53-2 +- Rebuilt to try to fix boost dependency problem in Rawhide. + +* Thu Nov 1 2012 Josef Bacik - 0.53-1 +- Update to 0.53 + +* Mon Sep 24 2012 Jonathan Dieter - 0.51-3 +- Fix automake 1.12 error +- Rebuild after buildroot was messed up + +* Tue Sep 18 2012 Jonathan Dieter - 0.51-2 +- Use system leveldb + +* Fri Sep 07 2012 David Nalley - 0.51-1 +- Updating to 0.51 +- Updated url and source url. + +* Wed Jul 18 2012 Fedora Release Engineering - 0.46-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Wed May 9 2012 Josef Bacik - 0.46-1 +- updated to upstream 0.46 +- broke out libcephfs (rhbz# 812975) + +* Mon Apr 23 2012 Dan Horák - 0.45-2 +- fix detection of C++11 atomic header + +* Thu Apr 12 2012 Josef Bacik - 0.45-1 +- updating to upstream 0.45 + +* Wed Apr 4 2012 Niels de Vos - 0.44-5 +- Add LDFLAGS=-lpthread on any ARM architecture +- Add CFLAGS=-DAO_USE_PTHREAD_DEFS on ARMv5tel + +* Mon Mar 26 2012 Dan Horák 0.44-4 +- gperftools not available also on ppc + +* Mon Mar 26 2012 Jonathan Dieter - 0.44-3 +- Remove unneeded patch + +* Sun Mar 25 2012 Jonathan Dieter - 0.44-2 +- Update to 0.44 +- Fix build problems + +* Mon Mar 5 2012 Jonathan Dieter - 0.43-1 +- Update to 0.43 +- Remove upstreamed compile fixes patch +- Remove obsoleted dump_pop patch + +* Tue Feb 28 2012 Fedora Release Engineering - 0.41-2 +- Rebuilt for c++ ABI breakage + +* Thu Feb 16 2012 Tom Callaway 0.41-1 +- update to 0.41 +- fix issues preventing build +- rebuild against gperftools + +* Sat Dec 03 2011 David Nalley 0.38-1 +- updating to upstream 0.39 + +* Sat Nov 05 2011 David Nalley 0.37-1 +- create /etc/ceph - bug 745462 +- upgrading to 0.37, fixing 745460, 691033 +- fixing various logrotate bugs 748930, 747101 + +* Fri Aug 19 2011 Dan Horák 0.31-4 +- google-perftools not available also on s390(x) + +* Mon Jul 25 2011 Karsten Hopp 0.31-3 +- build without tcmalloc on ppc64, BR google-perftools is not available there + +* Tue Jul 12 2011 Josef Bacik 0.31-2 +- Remove curl/types.h include since we don't use it anymore + +* Tue Jul 12 2011 Josef Bacik 0.31-1 +- Update to 0.31 + +* Tue Apr 5 2011 Josef Bacik 0.26-2 +- Add the compile fix patch + +* Tue Apr 5 2011 Josef Bacik 0.26 +- Update to 0.26 + +* Tue Mar 22 2011 Josef Bacik 0.25.1-1 +- Update to 0.25.1 + +* Tue Feb 08 2011 Fedora Release Engineering - 0.21.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Wed Sep 29 2010 Steven Pritchard 0.21.3-1 +- Update to 0.21.3. + +* Mon Aug 30 2010 Steven Pritchard 0.21.2-1 +- Update to 0.21.2. + +* Thu Aug 26 2010 Steven Pritchard 0.21.1-1 +- Update to 0.21.1. +- Sample configs moved to /usr/share/doc/ceph/. +- Added cclass, rbd, and cclsinfo. +- Dropped mkmonfs and rbdtool. +- mkcephfs moved to /sbin. +- Add libcls_rbd.so. + +* Tue Jul 6 2010 Josef Bacik 0.20.2-1 +- update to 0.20.2 + +* Wed May 5 2010 Josef Bacik 0.20-1 +- update to 0.20 +- disable hadoop building +- remove all the test binaries properly + +* Fri Apr 30 2010 Sage Weil 0.19.1-5 +- Remove java deps (no need to build hadoop by default) +- Include all required librados helpers +- Include fetch_config sample +- Include rbdtool +- Remove misc debugging, test binaries + +* Fri Apr 30 2010 Josef Bacik 0.19.1-4 +- Add java-devel and java tricks to get hadoop to build + +* Mon Apr 26 2010 Josef Bacik 0.19.1-3 +- Move the rados and cauthtool man pages into the base package + +* Sun Apr 25 2010 Jonathan Dieter 0.19.1-2 +- Add missing libhadoopcephfs.so* to file list +- Add COPYING to all subpackages +- Fix ownership of /usr/lib[64]/ceph +- Enhance description of fuse client + +* Tue Apr 20 2010 Josef Bacik 0.19.1-1 +- Update to 0.19.1 + +* Mon Feb 8 2010 Josef Bacik 0.18-1 +- Initial spec file creation, based on the template provided in the ceph src diff --git a/cmake-modules-BuildBoost.cmake.noautopatch b/cmake-modules-BuildBoost.cmake.noautopatch new file mode 100644 index 0000000..47ab7a7 --- /dev/null +++ b/cmake-modules-BuildBoost.cmake.noautopatch @@ -0,0 +1,13 @@ +diff --git a/cmake/modules/BuildBoost.cmake b/cmake/modules/BuildBoost.cmake +index 2e92132366..3cb1e3d958 100644 +--- a/cmake/modules/BuildBoost.cmake ++++ b/cmake/modules/BuildBoost.cmake +@@ -62,7 +62,7 @@ function(do_build_boost version) + else() + list(APPEND boost_features "address-model=32") + endif() +- set(BOOST_CXXFLAGS "-fPIC -w") # check on arm, etc <---XXX ++ set(BOOST_CXXFLAGS "-fPIC -w -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -ftemplate-depth-1024 -fno-new-ttp-matching -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free") # check on arm, etc <---XXX + list(APPEND boost_features "cxxflags=${BOOST_CXXFLAGS}") + + set(boost_with_libs) diff --git a/sources b/sources new file mode 100644 index 0000000..9fa2b9d --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA512 (ceph-15.2.5.tar.gz) = 55de068886c48293e92ef95cf8343ae44825fd2bf9c3fa7d47cda92907a47bae79e0af730cd34d0155b0777901d0fd6f9d1f30537c66c54c95098df7368fca2e