Pin a glibc sysroot in the toolchain, so the bundle's floor is built rather than patched #71
Labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
bcox/tymbal#71
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The plugin GUI stage made the bundle's glibc floor visible: linking ImGui and libX11 pulled symbol versions (sqrtf/acosf @2.43, _inet*_chk @2.42) newer than Flatpak Bitwig's runtime glibc, and the bundle stopped loading in the DAW it is developed against.
The stopgap that shipped with the GUI branch pins the floor at 2.38 by hand:
.symverbindings for the math pair,-U_FORTIFY_SOURCEon libx11, and//plugin:glibc_floor_test, which parses the bundle's.gnu.version_rand fails the build if any demandedGLIBC_version exceeds 2.38. That test is the contract this issue inherits.The proper fix is a pinned sysroot in the
toolchains_llvmconfiguration: link everything against a fetched, sha256-pinned old-glibc sysroot instead of the host's. That closes the one non-hermetic input the build still has — today a clone builds with no system development packages installed except that it links whatever glibc the host happens to run.What makes this a stage rather than a patch:
plugin/render_golden_test.cc's header carries the rules.glibc_floor_testkept: the test then verifies the sysroot did the job, instead of verifying the patchwork.Done means: the symver header and the per_file_copt are gone,
glibc_floor_teststill passes, goldens match at fastbuild and--config=opt, and the bundle loads in Flatpak Bitwig.