Client-only build for RHEL/ELN

Only the client components (ceph-common, librados/librbd, and their
Python bindings) are built in RHEL.  This incorporates these changes
into ELN to avoid importing unwanted dependencies and shorten build
times by not building unneeded server components.
This commit is contained in:
Yaakov Selkowitz 2023-07-06 13:44:39 -04:00
parent 6f9f7e2e4a
commit 7cbddd7e8c
1 changed files with 227 additions and 4 deletions

231
ceph.spec
View File

@ -20,6 +20,37 @@
# please read this for explanation of bcond syntax:
# https://rpm-software-management.github.io/rpm/manual/conditionalbuilds.html
#################################################################################
%bcond_with server
%if %{without server}
%bcond_with make_check
%bcond_with zbd
%bcond_with cmake_verbose_logging
%bcond_with ceph_test_package
%bcond_with tcmalloc
%bcond_with radosgw
%bcond_with rbd_ssd_cache
%bcond_with rbd_rwl_cache
%bcond_with system_pmdk
%bcond_with selinux
%bcond_with amqp_endpoint
%bcond_with kafka_endpoint
%bcond_with lttng
%bcond_without libradosstriper
%bcond_with ocf
%global luarocks_package_name luarocks
%bcond_with lua_packages
%global _remote_tarball_prefix https://download.ceph.com/tarballs/
%bcond_with seastar
%bcond_with jaeger
%bcond_with cephfs_java
%bcond_with cephfs_shell
%bcond_with system_arrow
%bcond_with system_utf8proc
%else
%bcond_with make_check
%bcond_with zbd
%bcond_with cmake_verbose_logging
@ -29,6 +60,7 @@
%else
%bcond_without tcmalloc
%endif
%bcond_without radosgw
%bcond_without rbd_ssd_cache
%ifarch x86_64
%bcond_without rbd_rwl_cache
@ -117,6 +149,7 @@
%if 0%{?fedora} || 0%{?suse_version} || 0%{?rhel} >= 8
%global weak_deps 1
%endif
%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
@ -285,7 +318,9 @@ Requires: rocksdb
BuildRequires: liburing-devel
BuildRequires: pkgconfig(libudev)
BuildRequires: libnl3-devel
%if 0%{?with radosgw}
BuildRequires: liboath-devel
%endif
BuildRequires: libtool
BuildRequires: libxml2-devel
BuildRequires: libzstd-devel
@ -339,11 +374,13 @@ BuildRequires: python%{python3_pkgversion}-natsort
%if 0%{with zbd}
BuildRequires: libzbd-devel
%endif
%if 0%{with jaeger} || 0%{with radosgw}
%if 0%{?suse_version}
BuildRequires: libthrift-devel >= 0.13.0
%else
BuildRequires: thrift-devel >= 0.13.0
%endif
%endif
BuildRequires: re2-devel
%if 0%{with jaeger}
BuildRequires: bison
@ -513,6 +550,8 @@ on commodity hardware and delivers object, block and file system storage.
#################################################################################
# subpackages
#################################################################################
%if %{with server}
%package base
Summary: Ceph Base Package
%if 0%{?suse_version}
@ -566,6 +605,8 @@ Recommends: podman >= 2.0.2
Utility to bootstrap a Ceph cluster and manage Ceph daemons deployed
with systemd and podman.
%endif
%package -n ceph-common
Summary: Ceph Common
%if 0%{?suse_version}
@ -597,6 +638,8 @@ Requires(pre): pwdutils
Common utilities to mount and interact with a ceph storage cluster.
Comprised of files that are common to Ceph clients and servers.
%if %{with server}
%package mds
Summary: Ceph Metadata Server Daemon
%if 0%{?suse_version}
@ -937,6 +980,8 @@ This package contains a tool to deploy OSD with different devices like
lvm or physical disks, and trying to follow a predictable, and robust
way of preparing, activating, and starting the deployed OSD.
%endif
%package -n librados2
Summary: RADOS distributed object store client library
%if 0%{?suse_version}
@ -975,6 +1020,8 @@ Requires: librados-devel = %{_epoch_prefix}%{version}-%{release}
This package contains C++ libraries and headers needed to develop programs
that use RADOS object store.
%if %{with radosgw}
%package -n librgw2
Summary: RADOS gateway client library
%if 0%{?suse_version}
@ -1012,6 +1059,8 @@ Obsoletes: python-rgw < %{_epoch_prefix}%{version}-%{release}
This package contains Python 3 libraries for interacting with Ceph RADOS
gateway.
%endif
%package -n python%{python3_pkgversion}-rados
Summary: Python 3 libraries for the RADOS object store
%if 0%{?suse_version}
@ -1298,6 +1347,8 @@ populated file-systems.
%endif
%if %{with server}
%package grafana-dashboards
Summary: The set of Grafana dashboards for monitoring purposes
BuildArch: noarch
@ -1327,6 +1378,8 @@ Group: System/Monitoring
%description mib
This package provides a Ceph MIB for SNMP traps.
%endif
#################################################################################
# common
#################################################################################
@ -1416,6 +1469,9 @@ env | sort
%else
-DWITH_LIBRADOSSTRIPER:BOOL=OFF \
%endif
%if 0%{without radosgw}
-DWITH_RADOSGW:BOOL=OFF \
%endif
%if 0%{with amqp_endpoint}
-DWITH_RADOSGW_AMQP_ENDPOINT:BOOL=ON \
%else
@ -1470,7 +1526,18 @@ env | sort
-DWITH_SEASTAR:BOOL=ON \
-DWITH_JAEGER:BOOL=OFF \
%endif
%if 0%{with server}
-DWITH_GRAFANA:BOOL=ON
%else
-DWITH_MGR:BOOL=OFF \
-DWITH_EMBEDDED:BOOL=OFF \
-DWITH_SYSTEMD:BOOL=ON \
-DWITH_SPDK:BOOL=OFF \
-DWITH_PMEM:BOOL=OFF \
-DWITH_BOOST_CONTEXT:BOOL=OFF \
-DWITH_LEVELDB:BOOL=OFF \
-DWITH_GRAFANA:BOOL=OFF
%endif
%if %{with cmake_verbose_logging}
cat ./%{__cmake_builddir}/CMakeFiles/CMakeOutput.log
@ -1500,18 +1567,21 @@ install -m 0755 %{buildroot}%{_bindir}/crimson-osd %{buildroot}%{_bindir}/ceph-o
%endif
install -m 0644 -D src/etc-rbdmap %{buildroot}%{_sysconfdir}/ceph/rbdmap
install -m 0644 -D systemd/ceph.tmpfiles.d %{buildroot}%{_tmpfilesdir}/ceph-common.conf
chmod 0644 %{buildroot}%{_docdir}/ceph/sample.ceph.conf
install -m 0644 -D COPYING %{buildroot}%{_docdir}/ceph/COPYING
%if %{with server}
%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}%{_presetdir}/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 -D src/tools/rbd_nbd/rbd-nbd_quiesce %{buildroot}%{_libexecdir}/rbd-nbd/rbd-nbd_quiesce
@ -1522,6 +1592,8 @@ chmod 0700 %{buildroot}%{_sharedstatedir}/cephadm/.ssh
touch %{buildroot}%{_sharedstatedir}/cephadm/.ssh/authorized_keys
chmod 0600 %{buildroot}%{_sharedstatedir}/cephadm/.ssh/authorized_keys
%endif
# firewall templates and /sbin/mount.ceph symlink
%if 0%{?suse_version} && 0%{?suse_version} < 1550
mkdir -p %{buildroot}/sbin
@ -1531,8 +1603,10 @@ ln -sf %{_sbindir}/mount.ceph %{buildroot}/sbin/mount.ceph
# udev rules
install -m 0644 -D udev/50-rbd.rules %{buildroot}%{_udevrulesdir}/50-rbd.rules
%if 0%{with server}
# sudoers.d
install -m 0440 -D sudoers.d/ceph-smartctl %{buildroot}%{_sysconfdir}/sudoers.d/ceph-smartctl
%endif
%if 0%{?rhel} >= 8
%py3_shebang_fix %{buildroot}%{_bindir}/* %{buildroot}%{_sbindir}/*
@ -1542,6 +1616,10 @@ install -m 0440 -D sudoers.d/ceph-smartctl %{buildroot}%{_sysconfdir}/sudoers.d/
mkdir -p %{buildroot}%{_sysconfdir}/ceph
mkdir -p %{buildroot}%{_localstatedir}/run/ceph
mkdir -p %{buildroot}%{_localstatedir}/log/ceph
mkdir -p %{buildroot}%{_localstatedir}/lib/ceph
%if 0%{with server}
mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/tmp
mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/mon
mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/osd
@ -1563,6 +1641,121 @@ install -m 644 -D monitoring/ceph-mixin/prometheus_alerts.yml %{buildroot}/etc/p
# SNMP MIB
install -m 644 -D -t %{buildroot}%{_datadir}/snmp/mibs monitoring/snmp/CEPH-MIB.txt
%else
# Remove the rbd/fuse bits
rm -f %{buildroot}%{_bindir}/ceph-fuse
rm -f %{buildroot}%{_mandir}/man8/ceph-fuse.8*
rm -f %{buildroot}%{_sbindir}/mount.fuse.ceph
rm -f %{buildroot}%{_mandir}/man8/mount.fuse.ceph.8*
rm -f %{buildroot}%{_unitdir}/ceph-fuse@.service
rm -f %{buildroot}%{_unitdir}/ceph-fuse.target
rm -f %{buildroot}%{_bindir}/rbd-fuse
rm -f %{buildroot}%{_mandir}/man8/rbd-fuse.8*
# Remove the ceph-base package
rm -f %{buildroot}%{_bindir}/ceph-crash
rm -f %{buildroot}%{_bindir}/crushtool
rm -f %{buildroot}%{_bindir}/monmaptool
rm -f %{buildroot}%{_bindir}/osdmaptool
rm -f %{buildroot}%{_bindir}/ceph-kvstore-tool
rm -f %{buildroot}%{_bindir}/ceph-run
rm -f %{buildroot}%{_sbindir}/ceph-create-keys
rm -f %{buildroot}%{_sbindir}/ceph-volume
rm -f %{buildroot}%{_sbindir}/ceph-volume-systemd
rm -f %{buildroot}%{_libexecdir}/ceph/ceph_common.sh
rm -rf %{buildroot}%{_libdir}/rados-classes
rm -rf %{buildroot}%{_libdir}/ceph/erasure-code
rm -rf %{buildroot}%{_libdir}/ceph/extblkdev
rm -rf %{buildroot}%{_libdir}/ceph/compressor
rm -rf %{buildroot}%{_libdir}/ceph/crypto
rm -f %{buildroot}%{_unitdir}/ceph-crash.service
rm -f %{buildroot}%{_unitdir}/ceph-volume@.service
rm -f %{buildroot}%{_unitdir}/ceph.target
rm -rf %{buildroot}%{python3_sitelib}/ceph_volume/*
rm -rf %{buildroot}%{python3_sitelib}/ceph_volume-*
rm -f %{buildroot}%{_mandir}/man8/ceph-deploy.8*
rm -f %{buildroot}%{_mandir}/man8/ceph-create-keys.8*
rm -f %{buildroot}%{_mandir}/man8/ceph-volume.8*
rm -f %{buildroot}%{_mandir}/man8/ceph-volume-systemd.8*
rm -f %{buildroot}%{_mandir}/man8/ceph-run.8*
rm -f %{buildroot}%{_mandir}/man8/crushtool.8*
rm -f %{buildroot}%{_mandir}/man8/osdmaptool.8*
rm -f %{buildroot}%{_mandir}/man8/monmaptool.8*
rm -f %{buildroot}%{_mandir}/man8/ceph-kvstore-tool.8*
# Remove the ceph-mds package
rm -f %{buildroot}%{_bindir}/ceph-mds
rm -f %{buildroot}%{_mandir}/man8/ceph-mds.8*
rm -f %{buildroot}%{_unitdir}/ceph-mds@.service
rm -f %{buildroot}%{_unitdir}/ceph-mds.target
# Remove the ceph-mgr package
rm -f %{buildroot}%{_unitdir}/ceph-mgr@.service
rm -f %{buildroot}%{_unitdir}/ceph-mgr.target
# Remove the ceph-mon package
rm -f %{buildroot}%{_bindir}/ceph-mon
rm -f %{buildroot}%{_bindir}/ceph-monstore-tool
rm -f %{buildroot}%{_mandir}/man8/ceph-mon.8*
rm -f %{buildroot}%{_unitdir}/ceph-mon@.service
rm -f %{buildroot}%{_unitdir}/ceph-mon.target
# Remove the ceph-radosgw package
rm -f %{buildroot}%{_unitdir}/ceph-radosgw@.service
rm -f %{buildroot}%{_unitdir}/ceph-radosgw.target
# Remove the ceph-osd package
rm -f %{buildroot}%{_bindir}/ceph-clsinfo
rm -f %{buildroot}%{_bindir}/ceph-bluestore-tool
rm -f %{buildroot}%{_bindir}/ceph-erasure-code-tool
rm -f %{buildroot}%{_bindir}/ceph-objectstore-tool
rm -f %{buildroot}%{_bindir}/ceph-osdomap-tool
rm -f %{buildroot}%{_bindir}/ceph-osd
rm -f %{buildroot}%{_libexecdir}/ceph/ceph-osd-prestart.sh
rm -f %{buildroot}%{_mandir}/man8/ceph-clsinfo.8*
rm -f %{buildroot}%{_mandir}/man8/ceph-osd.8*
rm -f %{buildroot}%{_mandir}/man8/ceph-bluestore-tool.8*
rm -f %{buildroot}%{_unitdir}/ceph-osd@.service
rm -f %{buildroot}%{_unitdir}/ceph-osd.target
# Remove rbd-mirror
rm -f %{buildroot}%{_bindir}/rbd-mirror
rm -f %{buildroot}%{_mandir}/man8/rbd-mirror.8*
rm -f %{buildroot}%{_unitdir}/ceph-rbd-mirror@.service
rm -f %{buildroot}%{_unitdir}/ceph-rbd-mirror.target
# Remove rbd-nbd
rm -f %{buildroot}%{_bindir}/rbd-nbd
rm -f %{buildroot}%{_mandir}/man8/rbd-nbd.8*
# Remove cephfs-top
rm -rf %{buildroot}%{python3_sitelib}/cephfs_top-*.egg-info
rm -f %{buildroot}%{_bindir}/cephfs-top
rm -f %{buildroot}%{_mandir}/man8/cephfs-top.8*
# Remove additional files
rm -f %{buildroot}%{_bindir}/ceph-diff-sorted
rm -f %{buildroot}%{_mandir}/man8/ceph-diff-sorted.8*
# Remove immutable-object-cache
rm -f %{buildroot}%{_bindir}/ceph-immutable-object-cache
rm -f %{buildroot}%{_mandir}/man8/ceph-immutable-object-cache.8*
rm -f %{buildroot}%{_unitdir}/ceph-immutable-object-cache@.service
rm -f %{buildroot}%{_unitdir}/ceph-immutable-object-cache.target
# Remove cephfs-mirror
rm -f %{buildroot}%{_bindir}/cephfs-mirror
rm -f %{buildroot}%{_mandir}/man8/cephfs-mirror.8*
rm -f %{buildroot}%{_unitdir}/cephfs-mirror@.service
rm -f %{buildroot}%{_unitdir}/cephfs-mirror.target
# Remove cephadm
rm -f %{buildroot}%{_sbindir}/cephadm
rm -f %{buildroot}%{_mandir}/man8/cephadm.8*
%endif
%if 0%{?suse_version}
# create __pycache__ directories and their contents
%py3_compile %{buildroot}%{python3_sitelib}
@ -1579,6 +1772,8 @@ install -m 644 -D -t %{buildroot}%{_datadir}/snmp/mibs monitoring/snmp/CEPH-MIB.
#################################################################################
%files
%if 0%{with server}
%files base
%{_bindir}/ceph-crash
%{_bindir}/crushtool
@ -1676,6 +1871,8 @@ exit 0
%attr(0700,cephadm,cephadm) %dir %{_sharedstatedir}/cephadm/.ssh
%config(noreplace) %attr(0600,cephadm,cephadm) %{_sharedstatedir}/cephadm/.ssh/authorized_keys
%endif
%files common
%dir %{_docdir}/ceph
%doc %{_docdir}/ceph/sample.ceph.conf
@ -1691,15 +1888,19 @@ exit 0
%{_bindir}/cephfs-table-tool
%{_bindir}/crushdiff
%{_bindir}/rados
%if 0%{with radosgw}
%{_bindir}/radosgw-admin
%endif
%{_bindir}/rbd
%{_bindir}/rbd-replay
%{_bindir}/rbd-replay-many
%{_bindir}/rbdmap
%if 0%{with radosgw}
%{_bindir}/rgw-gap-list
%{_bindir}/rgw-gap-list-comparator
%{_bindir}/rgw-orphan-list
%{_bindir}/rgw-restore-bucket-index
%endif
%{_sbindir}/mount.ceph
%if 0%{?suse_version} && 0%{?suse_version} < 1550
/sbin/mount.ceph
@ -1714,7 +1915,6 @@ exit 0
%{_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*
@ -1722,13 +1922,17 @@ exit 0
%{_mandir}/man8/crushdiff.8*
%{_mandir}/man8/mount.ceph.8*
%{_mandir}/man8/rados.8*
%if 0%{with radosgw}
%{_mandir}/man8/radosgw-admin.8*
%endif
%{_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*
%if 0%{with radosgw}
%{_mandir}/man8/rgw-orphan-list.8*
%endif
%dir %{_datadir}/ceph/
%{_datadir}/ceph/known_hosts_drop.ceph.com
%{_datadir}/ceph/id_rsa_drop.ceph.com
@ -1737,7 +1941,9 @@ exit 0
%config %{_sysconfdir}/bash_completion.d/ceph
%config %{_sysconfdir}/bash_completion.d/rados
%config %{_sysconfdir}/bash_completion.d/rbd
%if 0%{with radosgw}
%config %{_sysconfdir}/bash_completion.d/radosgw-admin
%endif
%config(noreplace) %{_sysconfdir}/ceph/rbdmap
%{_unitdir}/rbdmap.service
%dir %{_udevrulesdir}
@ -1781,6 +1987,8 @@ if [ "$1" -eq "0" ] ; then
rm -rf %{_sysconfdir}/ceph
fi
%if 0%{with server}
%files mds
%{_bindir}/ceph-mds
%{_mandir}/man8/ceph-mds.8*
@ -2152,6 +2360,7 @@ fi
%dir %{_libexecdir}/rbd-nbd
%{_libexecdir}/rbd-nbd/rbd-nbd_quiesce
%if %{with radosgw}
%files radosgw
%{_bindir}/ceph-diff-sorted
%{_bindir}/radosgw
@ -2159,6 +2368,7 @@ fi
%{_bindir}/radosgw-es
%{_bindir}/radosgw-object-expirer
%{_bindir}/rgw-policy-check
%{_mandir}/man8/ceph-diff-sorted.8*
%{_mandir}/man8/radosgw.8*
%{_mandir}/man8/rgw-policy-check.8*
%dir %{_localstatedir}/lib/ceph/radosgw
@ -2199,6 +2409,7 @@ if [ $1 -ge 1 ] ; then
/usr/bin/systemctl try-restart ceph-radosgw@\*.service > /dev/null 2>&1 || :
fi
fi
%endif
%files osd
%{_bindir}/ceph-clsinfo
@ -2313,6 +2524,8 @@ fi
%endif
%endif
%files -n librados2
%{_libdir}/librados.so.*
%dir %{_libdir}/ceph
@ -2391,6 +2604,8 @@ fi
%{_libdir}/librbd_tp.so
%endif
%if 0%{with radosgw}
%files -n librgw2
%{_libdir}/librgw.so.*
%if %{with lttng}
@ -2414,6 +2629,8 @@ fi
%{python3_sitearch}/rgw.cpython*.so
%{python3_sitearch}/rgw-*.egg-info
%endif
%files -n python%{python3_pkgversion}-rbd
%{python3_sitearch}/rbd.cpython*.so
%{python3_sitearch}/rbd-*.egg-info
@ -2454,10 +2671,12 @@ fi
%{_mandir}/man8/cephfs-shell.8*
%endif
%if 0%{with server}
%files -n cephfs-top
%{python3_sitelib}/cephfs_top-*.egg-info
%{_bindir}/cephfs-top
%{_mandir}/man8/cephfs-top.8*
%endif
%if 0%{with ceph_test_package}
%files -n ceph-test
@ -2613,6 +2832,8 @@ fi
exit 0
%endif
%if 0%{with server}
%files grafana-dashboards
%if 0%{?suse_version}
%attr(0755,root,root) %dir %{_sysconfdir}/grafana
@ -2632,6 +2853,8 @@ exit 0
%attr(0755,root,root) %dir %{_datadir}/snmp
%{_datadir}/snmp/mibs
%endif
%changelog
* Fri Jun 30 2023 Kaleb S. KEITHLEY <kkeithle[at]redhat.com> - 2:18.1.2-0.2
- Rebuilt for Python 3.12