fix(release): freeze linux binaries on ubuntu-22.04 to restore glibc 2.35 compatibility - #504
Conversation
…2.35 compatibility A PyInstaller binary requires the build machine's glibc (or newer) at runtime, so the freeze runner sets the compatibility floor for every end user. ubuntu-latest moved the linux amd64 leg to 24.04 (glibc 2.39): the v0.71.0 binary failed with "GLIBC_2.38 not found" on Ubuntu 22.04-era systems -- caught by test-install's Homebrew leg (run 29752342509) once the earlier 'brew trust' failure (#483) stopped masking it. Pin both linux legs to the oldest GA runners (ubuntu-22.04 / ubuntu-22.04-arm, glibc 2.35) so Ubuntu 22.04 / Debian 12 stay installable, and document why -latest must never be used for freeze.
|
Post-merge verification of the glibc floor (local, full freeze-job replica): Build — Run — the produced binary executed in a clean This is the exact scenario where the released v0.71.0 amd64 binary died with |
Why
A PyInstaller binary requires the build machine's glibc (or newer) at runtime, so the freeze runner sets the compatibility floor for every end user. The linux amd64 freeze leg runs on
ubuntu-latest, which is 24.04 (glibc 2.39) — the v0.71.0 binary fails on any glibc < 2.38 system:Caught by
test-install's Homebrew (Linux) leg in the v0.71.0 release run (29752342509), which runs the binary inside thehomebrew/brewimage (Ubuntu 22.04-era glibc). The apt/rpm legs passed only becauseubuntu:latestandfedoracarry new-enough glibc. This is an end-user regression, not a CI quirk: Ubuntu 22.04 / Debian 12 systems cannot run the frozen binary at all. It was previously masked because the v0.66.1 Homebrew leg failed earlier on the missingbrew truststep (fixed in #483).What
Pin both linux freeze legs to the oldest GA runners —
ubuntu-22.04(amd64) andubuntu-22.04-arm(arm64), glibc 2.35 — and document in the matrix why-latestmust never be used for freeze legs. Both runner labels are GA per actions/runner-images (no deprecation scheduled).Verification
GLIBC_2.38(release-run failure above).test-installHomebrew leg, which now exercises exactly the old-glibc scenario. Aworkflow_dispatchdry run ofrelease-kbagenton this branch builds the binary on the pinned runners without publishing anything.Relation to #503
Refs #503 — this is the "mechanical change" the issue describes (option A: pin to
ubuntu-22.04, glibc 2.35 floor). It restores Ubuntu 22.04 LTS and Debian 12. It does not cover RHEL 9 / Amazon Linux 2023 (glibc 2.34) — if that class of distro should run the native binary, the freeze has to move into an older container (debian 11 / manylinux-style base), which is the floor decision #503 leaves to the maintainers. Keeping #503 open for that call is reasonable; this PR removes the immediate 2.38 regression either way.