Repository navigation
Stop the Linux library needing glibc 2.38 - #47
Merged
Merged
Conversation
build-native built libbuildmonitor_ui.so on the runner's own Ubuntu 24.04. A library records the glibc symbol versions of the headers it was compiled against, and the committed ones need GLIBC_2.38, for __isoc23_sscanf, fmod and fmodf, and GLIBCXX_3.4.29. The loader refuses that on Ubuntu 22.04, Debian 12 and RHEL 8 and 9, so the Linux head could not open a window there and BuildMonitor exited. It is now built in a manylinux_2_28 container by native/build-linux.sh, the way DiffEngine builds its viewer's, and the workflow checks the result rather than trusting it: nothing above GLIBC_2.28, and nothing recorded as needed outside a short list. That container's linker records every library it is handed, and raylib hands on libSM and libICE, which a stock Ubuntu lacks, so the library is linked with --as-needed. Built that way from this commit, the linux-x64 library needs nothing above GLIBC_2.27 and GLIBCXX_3.4.21, and loads on the container's own glibc 2.28, where the committed one is refused. The committed binaries are not changed here: build-native rebuilds them and opens the PR.
Co-authored-by: SimonCropp <122666+SimonCropp@users.noreply.github.com>
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.
The committed Linux libraries were built on the runner's own Ubuntu 24.04. A library records the glibc symbol versions of the headers it was compiled against, and these needed
GLIBC_2.38(for__isoc23_sscanf,fmodandfmodf) andGLIBCXX_3.4.29. The loader refuses that on Ubuntu 22.04, Debian 12 and RHEL 8 and 9, so the Linux head could not open a window there and BuildMonitor exited.What changes
native/build-linux.shbuilds the library in amanylinux_2_28container, the way DiffEngine builds its viewer's.build-nativeruns it there and then checks the result rather than trusting it: nothing aboveGLIBC_2.28, and nothing recorded as needed outside a short list.--as-needed. That container's linker records every library it is handed, and raylib hands on libSM and libICE, which a stock Ubuntu lacks.Checked
GLIBC_2.38,GLIBCXX_3.4.29GLIBC_2.27,GLIBCXX_3.4.21GLIBC_2.38,GLIBCXX_3.4.29GLIBC_2.27,GLIBCXX_3.4.21Read from the committed files' own version requirements, and the same numbers
build-nativeprinted for both architectures.On glibc 2.28, in the manylinux image itself, the old linux-x64 library is refused with
version `GLIBC_2.38' not foundand the new one loads and answersbm_version()with 20. linux-arm64 was checked by its symbol versions only, not loaded on an old glibc.Linked without
--as-needed, the same build records libSM, libICE and libXext among others.