From: Kefu Chai Date: Fri, 5 Jun 2026 01:34:56 +0000 (+0800) Subject: ceph.spec.in: only require c-ares >= 1.28 on el10+ X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=9070653768a363a9e557efac5feade5ea67e0498;p=ceph.git ceph.spec.in: only require c-ares >= 1.28 on el10+ 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 --- diff --git a/ceph.spec.in b/ceph.spec.in index 5dc6275be02..fccb233929a 100644 --- a/ceph.spec.in +++ b/ceph.spec.in @@ -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