#36272 guix: split Linux toolchain
https://github.com/bitcoin/bitcoin/pull/36272 · · +306/-275 in 5 files, 1 commits · labels: Build system
Goal
- Allow modular Linux toolchain configurations in Guix builds
- Enables alternative setups like static release binaries and binary size tuning
Splits Guix cross-compilation toolchain recipes from manifest_build.scm into a dedicated toolchains.scm module and introduces a linux_static.scm manifest. Guix-build is updated to configure GUIX_PACKAGE_PATH and consume the new manifest for Linux builds.
Problem: Guix Linux toolchain declarations were embedded directly inside the monolithic build manifest, preventing alternative toolchain configurations such as static-pie builds or non-GUI libstdc++ optimizations from being composed cleanly.
Category: Build and CI (#8 of 55)
P2 · unblocks #25573
- P2 because it unblocks static release builds and toolchain tuning for binary size
- Significantly improves maintainability of release binary build definitions
Unblocks static release builds (#25573) and toolchain tuning for binary size (#36193). The author explicitly notes this refactoring is a prerequisite for static builds, representing a major maintainability improvement tied directly to concrete future release binary work.
Membership: Directly modifies Guix build scripts and manifest definitions under contrib/guix.
Factors: security/stability 0, bug 0, performance 0, user value 0, leverage 2
Reviewability: Ready
- Ready for review
- Applies cleanly to master with passing CI
The PR has passing CI, applies cleanly to master, and has no blocking author feedback pending.
Author status: active
Agreement: Positive
- Positive initial reception with no objections raised
- Concept approval without stated reasons (hebasto)
Concept ACK from hebasto with no objections raised.
hebasto provided a Concept ACK promptly after opening, and no reviewers have raised criticisms.
- hebasto: 'Concept ACK.'
Review verdicts (DrahtBot): 0
- Concept ACK: hebasto
Dependencies
Files
581 lines under test/bench/ci.
- contrib/guix/toolchains.scm +284/-0
- contrib/guix/manifest_build.scm +2/-273
- contrib/guix/guix-build +9/-1
- contrib/guix/linux_static.scm +8/-0
- contrib/guix/manifest_gui.scm +3/-1
Card
Splits Guix toolchain definitions out of manifest_build.scm into a separate toolchains.scm module and adds a linux_static.scm manifest. This unblocks producing static-pie release binaries (#25573) as well as stripped-down libstdc++ builds (#36193). The PR is cleanly rebased with passing CI and has received a Concept ACK from hebasto.