diff --git a/ceph.spec b/ceph.spec index 2b820d1..6066b7b 100644 --- a/ceph.spec +++ b/ceph.spec @@ -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 - 2:18.1.2-0.2 - Rebuilt for Python 3.12