]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph.spec.in: only require c-ares >= 1.28 on el10+ 69295/head
authorKefu Chai <k.chai@proxmox.com>
Fri, 5 Jun 2026 01:34:56 +0000 (09:34 +0800)
committerKefu Chai <k.chai@proxmox.com>
Fri, 5 Jun 2026 02:07:37 +0000 (10:07 +0800)
87e233bb2628784c8c59603e74bc728a8944265e added an unconditional
"Requires: c-ares >= 1.28.0" to ceph-osd-crimson: seastar links
ares_query_dnsrec, which c-ares only grew in 1.28, and the libcares.so.2
SONAME doesn't carry the version so rpm can't infer the floor itself.

But the floor only earns its place where the build links the symbol
against a newer c-ares than the runtime has, and that's an EL thing.
el10's minors cross 1.28 under one $releasever (10.1 ships 1.25, 10.2
ships 1.34), so a builder rolls to 1.34 while a frozen 10.1 node stays on
1.25; without the floor the rpm installs there and the osd then crashes
on the missing symbol. el9 builds the legacy ares_query path and doesn't
need it at all.

Fedora and SUSE don't have the skew: one c-ares per release, built and
run against the same one, so the auto libcares.so.2 dep covers them. So
pin it only on el10+, arch-qualified with %{?_isa}.

Signed-off-by: Kefu Chai <k.chai@proxmox.com>
ceph.spec.in

index 5dc6275be02e6a988d1ab92a32515d71dadb5ffb..fccb233929ad3b689f13552d25293d76b61655f4 100644 (file)
@@ -952,10 +952,10 @@ Group:            System/Filesystems
 Requires:      ceph-osd = %{_epoch_prefix}%{version}-%{release}
 Obsoletes:     ceph-osd < %{_epoch_prefix}%{version}-%{release}
 Requires:      binutils
-%if 0%{?suse_version}
-Requires:      libcares2 >= %{c_ares_min_version}
-%else
-Requires:      c-ares >= %{c_ares_min_version}
+# libcares.so.2 doesn't carry the version, and only EL crosses 1.28 between a
+# rolling builder and a frozen older minor, so pin the c-ares floor there.
+%if 0%{?rhel} >= 10
+Requires:      c-ares%{?_isa} >= %{c_ares_min_version}
 %endif
 Requires:      protobuf
 %description osd-crimson