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>
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