fix(releasing): restore EL8 install for GNU artifacts (glibc 2.28 floor)#25387
Draft
fix(releasing): restore EL8 install for GNU artifacts (glibc 2.28 floor)#25387
Conversation
f7cee79 to
c59549b
Compare
1bc7735 to
3b286b1
Compare
| @@ -0,0 +1,5 @@ | |||
| Restored support for installing Vector RPMs on RHEL 8 / Rocky 8 / AlmaLinux 8 / CentOS Stream 8. v0.55.0 binaries inadvertently linked against `GLIBC_2.29` and `GLIBC_2.30` after a build-tooling change, breaking installation on EL8 (which ships glibc 2.28). | |||
|
|
|||
| The `x86_64-unknown-linux-gnu` and `aarch64-unknown-linux-gnu` release binaries are now built natively inside an `almalinux:8` container on GitHub-hosted runners, so the build environment IS the install floor (glibc 2.28). AlmaLinux 8 has also been added to the pre-release RPM verification matrix so install on the floor distribution is exercised before publish. | |||
v0.55.0 broke installation on EL8 (RHEL 8 / Rocky 8 / AlmaLinux 8 / CentOS Stream 8). The cross-compilation base image was bumped from a sysroot with glibc 2.23 to one with glibc 2.31, which made the binary reference GLIBC_2.29 and GLIBC_2.30 symbols. EL8 ships glibc 2.28, so the dynamic loader rejects the binary at startup. Build the x86_64-unknown-linux-gnu and aarch64-unknown-linux-gnu release binaries natively inside an almalinux:8 container on GitHub-hosted runners. The build environment IS the install floor (glibc 2.28), so the binary cannot reference a glibc symbol newer than what install will see. - Split build-linux-packages into build-linux-gnu-native (x86_64 and aarch64 GNU, container: almalinux:8 on hosted runners) and build-linux-cross (musl + 32-bit ARM via cross-rs). - Add NATIVE=true mode to Makefile's target/%/vector rule so the package-...-all chain runs cargo build instead of cross. - Add almalinux:8 to the rpm-verify container matrix so install on the floor distribution is exercised before publish. Closes: #25253 Related: #25215, #21721 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
3b286b1 to
02a072b
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
v0.55.0 broke installation on EL8 (RHEL 8 / Rocky 8 / AlmaLinux 8 / CentOS Stream 8). The cross-compilation base image was bumped from a sysroot with glibc 2.23 to one with glibc 2.31, which made the binary reference
GLIBC_2.29andGLIBC_2.30symbols. EL8 ships glibc 2.28, so the dynamic loader rejects the binary at startup.Reported in #25253.
This PR builds the
x86_64-unknown-linux-gnuandaarch64-unknown-linux-gnurelease binaries natively inside analmalinux:8container on GitHub-hosted runners. The build environment IS the install floor (glibc 2.28), so the binary cannot reference a glibc symbol newer than what install will see, by construction. The samealmalinux:8image is also used byrpm-verify, making build and install symmetric.The musl and 32-bit ARM targets continue to use cross-rs. They have no glibc-floor obligation: musl is statically linked, and EL8 family does not ship for 32-bit ARM at all.
What changed
build-linux-packagesintobuild-linux-gnu-native(x86_64 and aarch64 GNU,container: almalinux:8on hosted runners) andbuild-linux-cross(musl + 32-bit ARM via cross-rs on the existing self-hosted runner).NATIVE=truemode to the Makefile'starget/%/vectorrule so thepackage-...-allchain runscargo buildinstead ofcross.almalinux:8to therpm-verifycontainer matrix so install on the floor distribution is exercised before publish.MANYLINUX_DIGESTmechanism that were the previous proposal: the native-build approach makes them unnecessary.Vector configuration
N/A. Build-tooling change.
How did you test this PR?
Custom CI build exercises the full publish matrix end-to-end: native GNU build inside
almalinux:8(x86_64 onubuntu-24.04, aarch64 onubuntu-24.04-arm), cross builds for musl and 32-bit ARM onrelease-builder-linux, andrpm-verifyonalmalinux:8(the floor) plus the rest of the matrix.Change Type
Is this a breaking change?
This restores behavior that was unintentionally regressed in v0.55.0.
Does this PR include user facing changes?
changelog.d/25253_el8_glibc_floor.fix.md.References