RFC: Rethinking depends native package build strategy #35048

issue hebasto openend this issue on April 10, 2026
  1. hebasto commented at 10:22 am on April 10, 2026: member

    When building release binaries in the Guix environment, the depends native packages, namely native_capnp, native_libmultiprocess, and native_qt, are currently built for every target host. This results in a needless expenditure of Guix builders’ compute resources.

    One possible improvement is to build these native packages as part of a Guix profile instead.

    Pros:

    1. Speeds up the depends build process across all hosts by roughly 20%, significantly reducing resource consumption for builders.

    2. Removes the need to expose the native build toolchain to the cross-compilation build environment, which improves security and build isolation.

    Cons:

    1. The Guix manifest file will need to be updated to maintain three new package definitions.

    Alternative Approach:

    As an alternative, the depends build subsystem could be restructured to share and reuse native packages across hosts where possible. This would eliminate the need to modify the Guix manifest and might provide some benefit to developers building depends locally. However, local builders already benefit from an effective built-package cache.

    Additionally, the effectiveness of this alternative could be undermined when using LLVM-only build profiles for macOS targets.

    Conclusion:

    There is clear room to optimize the release build process, which relies heavily on volunteer computing resources. I believe the performance gains and isolation improvements are well worth the extra complexity and maintenance burden introduced to the Guix manifest.

    I am posting this RFC to gather conceptual feedback and opinions on this approach.

  2. hebasto added the label Build system on Apr 10, 2026
  3. hebasto renamed this:
    RFC: Rethinking native depends package build strategy
    RFC: Rethinking depends native package build strategy
    on Apr 10, 2026
  4. ryanofsky commented at 12:29 pm on April 10, 2026: contributor

    native_capnp, native_libmultiprocess, and native_qt, are currently built for every target host

    I was confused by this. May help to clarify the problem IIUC is not that these packages are being built for every host but that they are being rebuilt for every host and more ideally would be cached?

  5. hebasto commented at 4:18 pm on April 10, 2026: member

    native_capnp, native_libmultiprocess, and native_qt, are currently built for every target host

    I was confused by this. May help to clarify the problem IIUC is not that these packages are being built for every host but that they are being rebuilt for every host and more ideally would be cached?

    That’s correct. Currently, built native packages are cached within host-specific subdirectories, meaning they aren’t shared or reused across different hosts.

    If we decide this caching behavior is the preferred direction for an improvement, I’ve mentioned it as an alternative approach in the OP.


github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2026-04-11 09:13 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me