packaging: RPM glibc floor names libm's GLIBC_2.35, so RHEL 9 refuses it

#1290 (from #1275) declared the glibc floor as `libc.so.6(GLIBC_2.35)(64bit)`. That doesn't stop
RHEL 9: its current glibc, `2.34-283.el9_8`, provides `libc.so.6(GLIBC_2.35)` through backports. On
Rocky Linux 9, dnf upgrades glibc to that build, installs VectorCraft 0.10.0, and `vectorcraft-cli`
then fails with ``/lib64/libm.so.6: version `GLIBC_2.35' not found``. The binaries' only GLIBC_2.35
symbols are `hypot` and `hypotf`, from libm, and RHEL 9 doesn't provide `libm.so.6(GLIBC_2.35)`.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
tydude001
2026-10-16 05:26:32 +07:00
committed by bflatastic
co-authored by Claude Opus 5.5
parent 82db3344bf
commit e12a670c40
2 changed files with 11 additions and 6 deletions
+7 -4
View File
@@ -150,12 +150,14 @@ image raises that floor, so do it deliberately. After packaging, the job prints
metadata and contents, runs `ldd` on the binary and runs each AppImage with `--version`.
**RPM dependencies.** The x86_64 and aarch64 RPMs require 64-bit shared-library
capabilities rather than distribution-specific package names: glibc's `GLIBC_2.35`,
`libm`, `libgcc_s`, `libxkbcommon`, and either Vulkan or EGL. Windowing and GPU
capabilities rather than distribution-specific package names: `libc`, libm's `GLIBC_2.35`,
`libgcc_s`, `libxkbcommon`, and either Vulkan or EGL. Windowing and GPU
libraries are loaded at runtime, so `ldd` alone does not list every requirement.
The glibc capability enforces the same floor as the `.deb`; a distribution with
an older glibc is not supported by these binaries. Weak recommendations still use
package names and do not block installation.
an older glibc is not supported by these binaries. It names libm, whose `hypot` and `hypotf`
are the binaries' GLIBC_2.35 symbols: RHEL 9's glibc 2.34 provides `libc.so.6(GLIBC_2.35)`
through backports, so a libc capability let it install binaries that can't start. Weak
recommendations still use package names and do not block installation.
Before publishing a Linux release:
@@ -224,4 +226,5 @@ warning, never a failed build.
| Date | Change | Summary |
|---|---|---|
| 2026-10-14 | minor | RPM glibc floor names libm's `GLIBC_2.35`: RHEL 9's glibc 2.34 provides libc's through backports |
| 2026-10-12 | minor | RPM dependencies use 64-bit runtime capabilities and enforce glibc 2.35 (#1275); real distro install/start-up checks remain pending |
+4 -2
View File
@@ -45,9 +45,11 @@ overrides:
# Require 64-bit library capabilities, not distro-specific package names. nfpm
# does not scan ELF dependencies; declare the direct runtimes and glibc floor
# as well as the libraries loaded at runtime. Release RPMs are amd64/arm64.
# The glibc floor names libm because the binaries' GLIBC_2.35 symbols (hypot, hypotf) are
# libm's: RHEL 9's glibc 2.34 provides libc.so.6(GLIBC_2.35) through backports, but not this.
depends:
- libc.so.6(GLIBC_2.35)(64bit)
- libm.so.6()(64bit)
- libc.so.6()(64bit)
- libm.so.6(GLIBC_2.35)(64bit)
- libgcc_s.so.1()(64bit)
- libxkbcommon.so.0()(64bit)
- (libvulkan.so.1()(64bit) or libEGL.so.1()(64bit))