#36272 guix: split Linux toolchain

full analysis

https://github.com/bitcoin/bitcoin/pull/36272 · fanquake · +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

Dependencies

Enables:

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.

Data

dossier JSON · extract JSON · model openrouter/google/gemini-3.8-flash, generated 2026-09-17T15:59, confidence high, input hash 3d659dc0d1bcf4ec