Skip to content

Add Rocky Linux 10 runtime dependencies to the RPM spec - #1983

Draft
tuhaihe wants to merge 1 commit into
apache:mainfrom
tuhaihe:cc/rocky-linux-10-rpm-deps-ac01c0
Draft

Add Rocky Linux 10 runtime dependencies to the RPM spec#1983
tuhaihe wants to merge 1 commit into
apache:mainfrom
tuhaihe:cc/rocky-linux-10-rpm-deps-ac01c0

Conversation

@tuhaihe

@tuhaihe tuhaihe commented Sep 11, 2026

Copy link
Copy Markdown
Member

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

Fixes #ISSUE_Number

What does this PR do?

Type of Change

  • Bug fix (non-breaking change)
  • New feature (non-breaking change)
  • Breaking change (fix or feature with breaking changes)
  • Documentation update

Breaking Changes

Test Plan

  • Unit tests added/updated
  • Integration tests added/updated
  • Passed make installcheck
  • Passed make -C src/test installcheck-cbdb-parallel

Impact

Performance:

User-facing changes:

Dependencies:

Checklist

Additional Context

CI Skip Instructions


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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant