diff --git a/docs/releasing.md b/docs/releasing.md index bcbd3f58e..bffac162e 100644 --- a/docs/releasing.md +++ b/docs/releasing.md @@ -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 | diff --git a/packaging/linux/nfpm.yaml b/packaging/linux/nfpm.yaml index 0102a306b..a0c048148 100644 --- a/packaging/linux/nfpm.yaml +++ b/packaging/linux/nfpm.yaml @@ -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))