# disable dwz which compresses the debuginfo
%global _find_debuginfo_dwz_opts %{nil}
+
+# define %_epoch_prefix macro which will expand to the empty string if %epoch is undefined
+%global _epoch_prefix %{?epoch:%{epoch}:}
+
#################################################################################
# main package definition
#################################################################################
Name: ceph
Version: @VERSION@
Release: @RPM_RELEASE@%{?dist}
+%if 0%{?fedora} || 0%{?rhel}
Epoch: 1
+%endif
Summary: User space components of the Ceph file system
License: LGPL-2.1 and CC-BY-SA-1.0 and GPL-2.0 and BSL-1.0 and GPL-2.0-with-autoconf-exception and BSD-3-Clause and MIT
%if 0%{?suse_version}
#################################################################################
# dependencies that apply across all distro families
#################################################################################
-Requires: ceph-osd = %{epoch}:%{version}-%{release}
-Requires: ceph-mds = %{epoch}:%{version}-%{release}
-Requires: ceph-mgr = %{epoch}:%{version}-%{release}
-Requires: ceph-mon = %{epoch}:%{version}-%{release}
+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
%if 0%{?suse_version}
Group: System/Filesystems
%endif
-Requires: ceph-common = %{epoch}:%{version}-%{release}
-Requires: librbd1 = %{epoch}:%{version}-%{release}
-Requires: librados2 = %{epoch}:%{version}-%{release}
-Requires: libcephfs2 = %{epoch}:%{version}-%{release}
-Requires: librgw2 = %{epoch}:%{version}-%{release}
+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}:%{version}-%{release}
+Requires: ceph-selinux = %{_epoch_prefix}%{version}-%{release}
%endif
Requires: python
Requires: python-requests
%if 0%{?suse_version}
Group: System/Filesystems
%endif
-Requires: librbd1 = %{epoch}:%{version}-%{release}
-Requires: librados2 = %{epoch}:%{version}-%{release}
-Requires: libcephfs2 = %{epoch}:%{version}-%{release}
-Requires: python-rados = %{epoch}:%{version}-%{release}
-Requires: python-rbd = %{epoch}:%{version}-%{release}
-Requires: python-cephfs = %{epoch}:%{version}-%{release}
-Requires: python-rgw = %{epoch}:%{version}-%{release}
+Requires: librbd1 = %{_epoch_prefix}%{version}-%{release}
+Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
+Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release}
+Requires: python-rados = %{_epoch_prefix}%{version}-%{release}
+Requires: python-rbd = %{_epoch_prefix}%{version}-%{release}
+Requires: python-cephfs = %{_epoch_prefix}%{version}-%{release}
+Requires: python-rgw = %{_epoch_prefix}%{version}-%{release}
%if 0%{?fedora} || 0%{?rhel}
Requires: python-prettytable
%endif
%if 0%{?suse_version}
Group: System/Filesystems
%endif
-Requires: ceph-base = %{epoch}:%{version}-%{release}
+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
%if 0%{?suse_version}
Group: System/Filesystems
%endif
-Requires: ceph-base = %{epoch}:%{version}-%{release}
+Requires: ceph-base = %{_epoch_prefix}%{version}-%{release}
# For ceph-rest-api
%if 0%{?fedora} || 0%{?rhel}
Requires: python-flask
%if 0%{?suse_version}
Group: System/Filesystems
%endif
-Requires: ceph-base = %{epoch}:%{version}-%{release}
+Requires: ceph-base = %{_epoch_prefix}%{version}-%{release}
%if 0%{?fedora} || 0%{?rhel}
Requires: python-cherrypy
%endif
%if 0%{?suse_version}
Group: System/Filesystems
%endif
-Requires: librados2 = %{epoch}:%{version}-%{release}
-Requires: librbd1 = %{epoch}:%{version}-%{release}
+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
%if 0%{?suse_version}
Group: System/Filesystems
%endif
-Requires: ceph-common = %{epoch}:%{version}-%{release}
-Requires: librados2 = %{epoch}:%{version}-%{release}
+Requires: ceph-common = %{_epoch_prefix}%{version}-%{release}
+Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
%description -n rbd-mirror
Daemon for mirroring RBD images between Ceph clusters, streaming
changes asynchronously.
%if 0%{?suse_version}
Group: System/Filesystems
%endif
-Requires: librados2 = %{epoch}:%{version}-%{release}
-Requires: librbd1 = %{epoch}:%{version}-%{release}
+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
%if 0%{?suse_version}
Group: System/Filesystems
%endif
-Requires: ceph-common = %{epoch}:%{version}-%{release}
+Requires: ceph-common = %{_epoch_prefix}%{version}-%{release}
%if 0%{with selinux}
-Requires: ceph-selinux = %{epoch}:%{version}-%{release}
+Requires: ceph-selinux = %{_epoch_prefix}%{version}-%{release}
%endif
-Requires: librados2 = %{epoch}:%{version}-%{release}
-Requires: librgw2 = %{epoch}:%{version}-%{release}
+Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
+Requires: librgw2 = %{_epoch_prefix}%{version}-%{release}
%if 0%{?rhel} || 0%{?fedora}
Requires: mailcap
%endif
Group: System/Filesystems
%endif
License: LGPL-2.0
-Requires: ceph-base = %{epoch}:%{version}
+Requires: ceph-base = %{_epoch_prefix}%{version}
Requires: resource-agents
%description resource-agents
Resource agents for monitoring and managing Ceph daemons
%if 0%{?suse_version}
Group: System/Filesystems
%endif
-Requires: ceph-base = %{epoch}:%{version}-%{release}
+Requires: ceph-base = %{_epoch_prefix}%{version}-%{release}
# for sgdisk, used by ceph-disk
%if 0%{?fedora} || 0%{?rhel}
Requires: gdisk
%endif
License: LGPL-2.0
%if 0%{?rhel} || 0%{?fedora}
-Obsoletes: ceph-libs < %{epoch}:%{version}-%{release}
+Obsoletes: ceph-libs < %{_epoch_prefix}%{version}-%{release}
%endif
%description -n librados2
RADOS is a reliable, autonomic distributed object storage cluster
Group: Development/Libraries/C and C++
%endif
License: LGPL-2.0
-Requires: librados2 = %{epoch}:%{version}-%{release}
-Obsoletes: ceph-devel < %{epoch}:%{version}-%{release}
-Provides: librados2-devel = %{epoch}:%{version}-%{release}
-Obsoletes: librados2-devel < %{epoch}:%{version}-%{release}
+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 libraries and headers needed to develop programs
that use RADOS object store.
Group: System/Libraries
%endif
License: LGPL-2.0
-Requires: librados2 = %{epoch}:%{version}-%{release}
+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).
Group: Development/Libraries/C and C++
%endif
License: LGPL-2.0
-Requires: librados-devel = %{epoch}:%{version}-%{release}
-Requires: librgw2 = %{epoch}:%{version}-%{release}
-Provides: librgw2-devel = %{epoch}:%{version}-%{release}
-Obsoletes: librgw2-devel < %{epoch}:%{version}-%{release}
+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.
Group: Development/Languages/Python
%endif
License: LGPL-2.0
-Requires: librgw2 = %{epoch}:%{version}-%{release}
-Requires: python-rados = %{epoch}:%{version}-%{release}
-Obsoletes: python-ceph < %{epoch}:%{version}-%{release}
+Requires: librgw2 = %{_epoch_prefix}%{version}-%{release}
+Requires: python-rados = %{_epoch_prefix}%{version}-%{release}
+Obsoletes: python-ceph < %{_epoch_prefix}%{version}-%{release}
%description -n python-rgw
This package contains Python 2 libraries for interacting with Cephs RADOS
gateway.
Group: Development/Languages/Python
%endif
License: LGPL-2.0
-Requires: librgw2 = %{epoch}:%{version}-%{release}
-Requires: python%{python3_pkgversion}-rados = %{epoch}:%{version}-%{release}
+Requires: librgw2 = %{_epoch_prefix}%{version}-%{release}
+Requires: python%{python3_pkgversion}-rados = %{_epoch_prefix}%{version}-%{release}
%description -n python%{python3_pkgversion}-rgw
This package contains Python 3 libraries for interacting with Cephs RADOS
gateway.
Group: Development/Languages/Python
%endif
License: LGPL-2.0
-Requires: librados2 = %{epoch}:%{version}-%{release}
-Obsoletes: python-ceph < %{epoch}:%{version}-%{release}
+Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
+Obsoletes: python-ceph < %{_epoch_prefix}%{version}-%{release}
%description -n python-rados
This package contains Python 2 libraries for interacting with Cephs RADOS
object store.
%endif
License: LGPL-2.0
Requires: python%{python3_pkgversion}
-Requires: librados2 = %{epoch}:%{version}-%{release}
+Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
%description -n python%{python3_pkgversion}-rados
This package contains Python 3 libraries for interacting with Cephs RADOS
object store.
Group: System/Libraries
%endif
License: LGPL-2.0
-Requires: librados2 = %{epoch}:%{version}-%{release}
+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
Group: Development/Libraries/C and C++
%endif
License: LGPL-2.0
-Requires: libradosstriper1 = %{epoch}:%{version}-%{release}
-Requires: librados-devel = %{epoch}:%{version}-%{release}
-Obsoletes: ceph-devel < %{epoch}:%{version}-%{release}
-Provides: libradosstriper1-devel = %{epoch}:%{version}-%{release}
-Obsoletes: libradosstriper1-devel < %{epoch}:%{version}-%{release}
+Requires: libradosstriper1 = %{_epoch_prefix}%{version}-%{release}
+Requires: librados-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.
Group: System/Libraries
%endif
License: LGPL-2.0
-Requires: librados2 = %{epoch}:%{version}-%{release}
+Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
%if 0%{?rhel} || 0%{?fedora}
-Obsoletes: ceph-libs < %{epoch}:%{version}-%{release}
+Obsoletes: ceph-libs < %{_epoch_prefix}%{version}-%{release}
%endif
%description -n librbd1
RBD is a block device striped across multiple distributed objects in
Group: Development/Libraries/C and C++
%endif
License: LGPL-2.0
-Requires: librbd1 = %{epoch}:%{version}-%{release}
-Requires: librados-devel = %{epoch}:%{version}-%{release}
-Obsoletes: ceph-devel < %{epoch}:%{version}-%{release}
-Provides: librbd1-devel = %{epoch}:%{version}-%{release}
-Obsoletes: librbd1-devel < %{epoch}:%{version}-%{release}
+Requires: librbd1 = %{_epoch_prefix}%{version}-%{release}
+Requires: librados-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.
Group: Development/Languages/Python
%endif
License: LGPL-2.0
-Requires: librbd1 = %{epoch}:%{version}-%{release}
-Requires: python-rados = %{epoch}:%{version}-%{release}
-Obsoletes: python-ceph < %{epoch}:%{version}-%{release}
+Requires: librbd1 = %{_epoch_prefix}%{version}-%{release}
+Requires: python-rados = %{_epoch_prefix}%{version}-%{release}
+Obsoletes: python-ceph < %{_epoch_prefix}%{version}-%{release}
%description -n python-rbd
This package contains Python 2 libraries for interacting with Cephs RADOS
block device.
Group: Development/Languages/Python
%endif
License: LGPL-2.0
-Requires: librbd1 = %{epoch}:%{version}-%{release}
-Requires: python%{python3_pkgversion}-rados = %{epoch}:%{version}-%{release}
+Requires: librbd1 = %{_epoch_prefix}%{version}-%{release}
+Requires: python%{python3_pkgversion}-rados = %{_epoch_prefix}%{version}-%{release}
%description -n python%{python3_pkgversion}-rbd
This package contains Python 3 libraries for interacting with Cephs RADOS
block device.
%endif
License: LGPL-2.0
%if 0%{?rhel} || 0%{?fedora}
-Obsoletes: ceph-libs < %{epoch}:%{version}-%{release}
+Obsoletes: ceph-libs < %{_epoch_prefix}%{version}-%{release}
Obsoletes: ceph-libcephfs
%endif
%description -n libcephfs2
Group: Development/Libraries/C and C++
%endif
License: LGPL-2.0
-Requires: libcephfs2 = %{epoch}:%{version}-%{release}
-Requires: librados-devel = %{epoch}:%{version}-%{release}
-Obsoletes: ceph-devel < %{epoch}:%{version}-%{release}
-Provides: libcephfs2-devel = %{epoch}:%{version}-%{release}
-Obsoletes: libcephfs2-devel < %{epoch}:%{version}-%{release}
+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.
Group: Development/Languages/Python
%endif
License: LGPL-2.0
-Requires: libcephfs2 = %{epoch}:%{version}-%{release}
+Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release}
%if 0%{?suse_version}
-Recommends: python-rados = %{epoch}:%{version}-%{release}
+Recommends: python-rados = %{_epoch_prefix}%{version}-%{release}
%endif
-Obsoletes: python-ceph < %{epoch}:%{version}-%{release}
+Obsoletes: python-ceph < %{_epoch_prefix}%{version}-%{release}
%description -n python-cephfs
This package contains Python 2 libraries for interacting with Cephs distributed
file system.
Group: Development/Languages/Python
%endif
License: LGPL-2.0
-Requires: libcephfs2 = %{epoch}:%{version}-%{release}
-Requires: python%{python3_pkgversion}-rados = %{epoch}:%{version}-%{release}
+Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release}
+Requires: python%{python3_pkgversion}-rados = %{_epoch_prefix}%{version}-%{release}
%description -n python%{python3_pkgversion}-cephfs
This package contains Python 3 libraries for interacting with Cephs distributed
file system.
%endif
License: LGPL-2.0
Requires: java
-Requires: libcephfs2 = %{epoch}:%{version}-%{release}
+Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release}
%description -n libcephfs_jni1
This package contains the Java Native Interface library for CephFS Java
bindings.
%endif
License: LGPL-2.0
Requires: java
-Requires: libcephfs_jni1 = %{epoch}:%{version}-%{release}
-Obsoletes: ceph-devel < %{epoch}:%{version}-%{release}
-Provides: libcephfs_jni1-devel = %{epoch}:%{version}-%{release}
-Obsoletes: libcephfs_jni1-devel < %{epoch}:%{version}-%{release}
+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.
%endif
License: LGPL-2.0
Requires: java
-Requires: libcephfs_jni1 = %{epoch}:%{version}-%{release}
+Requires: libcephfs_jni1 = %{_epoch_prefix}%{version}-%{release}
Requires: junit
BuildRequires: junit
%description -n cephfs-java
Summary: RADOS object class development kit
Group: Development/Libraries
License: LGPL-2.0
-Requires: librados2-devel = %{epoch}:%{version}-%{release}
+Requires: librados2-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%{?suse_version}
Group: System/Filesystems
%endif
-Requires: ceph-base = %{epoch}:%{version}-%{release}
+Requires: ceph-base = %{_epoch_prefix}%{version}-%{release}
Requires: policycoreutils, libselinux-utils
Requires(post): selinux-policy-base >= %{_selinux_policy_version}, policycoreutils, gawk
Requires(postun): policycoreutils
%endif
License: LGPL-2.0
Obsoletes: python-ceph
-Requires: python-rados = %{epoch}:%{version}-%{release}
-Requires: python-rbd = %{epoch}:%{version}-%{release}
-Requires: python-cephfs = %{epoch}:%{version}-%{release}
-Requires: python-rgw = %{epoch}:%{version}-%{release}
+Requires: python-rados = %{_epoch_prefix}%{version}-%{release}
+Requires: python-rbd = %{_epoch_prefix}%{version}-%{release}
+Requires: python-cephfs = %{_epoch_prefix}%{version}-%{release}
+Requires: python-rgw = %{_epoch_prefix}%{version}-%{release}
Provides: python-ceph
%description -n python-ceph-compat
This is a compatibility package to accommodate python-ceph split into