This changes the depends
system to build libmultiprocess by default. As a result Guix builds now add bitcoin-node
and bitcoin-gui
to the release binaries. See #30983 for a discussion of variations on this approach.
Combined with #30955 and #31003 this makes it feasible to implement a Stratum v2 Template Provider (or something similar) as an external tool that communicates with the node via IPC.
A complete implementation can be seen in https://github.com/Sjors/bitcoin/pull/48. That implementation builds on top of the Bitcoin Core codebase, but a Template Provider could also be built in Rust from the ground up. Or as a standalone c++ application that uses a library we (might, one day) expose.
IIUC the regular bitcoind
, bitcoin-qt
, etc binaries are not affected by this change.
It may be useful to also merge #30437 and document its usage.
bitcoin-gui
could be omitted, but that doesn’t seem worth complicating the build system.
ci/test/00_setup_env_i686_multiprocess.sh
is flipped to no_multiprocess
.
TODO:
- fix
UndefinedBehaviorSanitizer: dynamic-type-mismatch
failure) and re-enable multiprocess for ASAN job - fix
undefined reference to
LLVMFuzzerTestOneInput’` failure and re-enable multiprocess for fuzzer job - fix
unknown target CPU 'armv8-a+crc+crypto'
failure and re-enable macOS cross - maybe enable multiprocess for test-each-commit job
Followups:
- Multiprocess is skipped for the Windows build for now, see https://github.com/chaincodelabs/libmultiprocess/issues/53.
A previous version of this PR changed the Guix build rather than the depends.