Repository navigation
fix(release): build Linux binaries that start on older glibc - #66
Merged
Merged
Conversation
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.
Closes #64.
Why musl
The
linux-gnubinaries need the glibc of whicheverubuntu-latestimage built them, so the floor rises each time GitHub moves that label. Statically linked musl binaries have no glibc requirement. Building the gnu targets onubuntu-22.04would also fix today's floor, but only until that runner image is retired.The gnu archives keep their names and are still published, because the AUR
runex-binpackage and the Homebrew tap download them by name.The portability check
A new CI job builds each musl target natively, on
ubuntu-latestandubuntu-24.04-armwith the toolchain actionrelease.ymluses, and runsrunex versioninubuntu:22.04anddebian:12. Any output on stderr fails it, not only a failed start. With the current stable rustc, the x86_64 gnu build no longer fails to start on Ubuntu 22.04: the loader runs it and printsweak version `GLIBC_2.39' not foundon every invocation, and the shell hook runs runex on every key press. Against the gnu targets the check failed on both architectures; against musl it passes.release.ymlruns only on a tag, so its two new matrix entries are first exercised by the next release. They build the same targets on the same runners as the check.Behaviour that differs under musl
When
HOMEis unset,dirs-sysfalls back togetpwuid_r, which musl answers from/etc/passwdonly, without NSS. On a host whose users come from LDAP or sssd, runex started withoutHOMEwould find no home directory. Interactive shells setHOME.The latency of
runex hookunder musl's allocator has not been measured against the gnu build.