From 0e7f97c7b5de6148b7597b21c9d835b662ae710a Mon Sep 17 00:00:00 2001 From: Dianjin Wang Date: Fri, 11 Sep 2026 12:43:06 +0800 Subject: [PATCH] Add Rocky Linux 10 runtime dependencies to the RPM spec Cloudberry builds and packages on Rocky Linux 10 already -- the build and test images exist and package-convenience-binaries.yml produces rocky10 RPMs for x86_64 and arm64 -- but the spec only carries distro-specific Requires for el8 and el9. On el10 the RPM therefore ships with no library dependencies at all beyond the common set. Add an el10 block derived from the shared libraries an el10 build actually links against (collected with objdump over the installed tree), mapped onto the packages that provide them on Rocky Linux 10. Three el10 specifics drove the package names chosen: - zlib was replaced by zlib-ng-compat. - libbz2, liblz4 and libperl only ship in the *-libs subpackages. Requiring the umbrella perl package instead would pull the whole Perl toolchain, including redhat-rpm-config and systemtap-sdt-devel (263 packages / 312MB versus 65 packages / 65MB). PL/Perl needs nothing beyond perl-libs: plc_perlboot.pl and plc_trusted.pl only load strict, warnings, vars, overload, Carp, Carp::Heavy, feature and Tie::Hash, all of which perl-libs provides. - a stock Rocky Linux 10 ships libcurl-minimal, which conflicts with libcurl while providing the same libcurl.so.4. A plain "Requires: libcurl" makes the package uninstallable there without --allowerasing, so the dependency is expressed as a rich dependency accepting either. The list also covers dependencies the el8/el9 blocks happen to miss (krb5-libs, openssl-libs, libgcc, libicu, liburing, protobuf); those blocks are left alone here to keep this change reviewable. Verified on Rocky Linux 10.1: rpmspec emits the intended Requires, every package exists for both x86_64 and aarch64, and a probe RPM carrying this exact list installs cleanly into a stock rockylinux/rockylinux:10 container. Assisted-by: Claude Code --- .../rpm/apache-cloudberry-db-incubating.spec | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/devops/build/packaging/rpm/apache-cloudberry-db-incubating.spec b/devops/build/packaging/rpm/apache-cloudberry-db-incubating.spec index 707af2352eb..e901d5731fb 100644 --- a/devops/build/packaging/rpm/apache-cloudberry-db-incubating.spec +++ b/devops/build/packaging/rpm/apache-cloudberry-db-incubating.spec @@ -140,6 +140,50 @@ Requires: python3 Requires: xz %endif +# Rocky Linux 10 / RHEL 10. +# +# This list is derived from the shared libraries the el10 build actually +# links against, mapped onto the packages that provide them on el10. +# Three el10 specifics are worth calling out: +# +# - zlib was replaced by zlib-ng-compat. +# - libbz2, liblz4 and libperl only ship in the *-libs subpackages; +# pulling the umbrella perl package instead would drag in the whole +# Perl toolchain (263 packages / 312MB versus 65 / 65MB). +# - a stock Rocky Linux 10 ships libcurl-minimal, which conflicts with +# libcurl while providing the same libcurl.so.4, so a plain +# "Requires: libcurl" makes the package uninstallable there. The rich +# dependency accepts either. +# +# libicu is required both by PostgreSQL itself (postgres and initdb link +# ICU directly) and by the bundled ICU-enabled xerces-c used by ORCA. +%if 0%{?rhel} == 10 +Requires: apr +Requires: bzip2-libs +Requires: glibc +Requires: krb5-libs +Requires: (libcurl or libcurl-minimal) +Requires: libevent +Requires: libgcc +Requires: libicu +Requires: libstdc++ +Requires: liburing +Requires: libuuid +Requires: libuv +Requires: libxml2 +Requires: libyaml +Requires: libzstd +Requires: lz4-libs +Requires: openldap +Requires: openssl-libs +Requires: pam +Requires: perl-libs +Requires: protobuf +Requires: python3 +Requires: readline +Requires: zlib-ng-compat +%endif + %description Apache Cloudberry (Incubating) is an advanced, open-source, massively