-
Notifications
You must be signed in to change notification settings - Fork 36.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add bitcoin-{node,gui} to release binaries for IPC #31802
base: master
Are you sure you want to change the base?
Conversation
Bring in a few cmake changes to improve cmake support chaincodelabs/libmultiprocess#140 build: don't clobber user/superproject c++ version chaincodelabs/libmultiprocess#142 build: add option for external mpgen binary chaincodelabs/libmultiprocess#143 cleanup: initialize vars in the EventLoop constructor in the correct order chaincodelabs/libmultiprocess#146 cmake: Suppress compiler warnings from capnproto headers chaincodelabs/libmultiprocess#147 cmake: EXTERNAL_MPGEN cleanups chaincodelabs/libmultiprocess#148 util: fix -Wpessimizing-move warning chaincodelabs/libmultiprocess#145 CTest: Module must be included at the top level chaincodelabs/libmultiprocess#149 Avoid `-Wundef` compiler warnings chaincodelabs/libmultiprocess#152 refactor: Fix compiler and clang-tidy warnings
git-subtree-dir: src/ipc/libmultiprocess git-subtree-split: 9558ceb0d47ac1f62f88d29ec55f8f3099e32b20
Rename WITH_MULTIPROCESS to ENABLE_IPC, because ENABLE_IPC is a more accurate name for the feature. It controls whether the src/ipc/ directory is built and whether IPC features like -ipcbind, -ipcconnect, and -ipcfd are available. It does NOT currently enable multiprocess features which are implemented in bitcoin#10102 building on top of the IPC features. It will also no longer (as of the next commit), control whether a find_package is call is made so the "WITH_" prefix is also inappropriate. -BEGIN VERIFY SCRIPT- git grep -l WITH_MULTIPROCESS | xargs sed -i s/WITH_MULTIPROCESS/ENABLE_IPC/g -END VERIFY SCRIPT-
When ENABLE_IPC option is on, build with libmultiprocess subtree and `add_subdirectory(src/ipc/libmultiprocess)` instead of external package and `find_package(Libmultiprocess)` by default. Behavior can be toggled with `WITH_LIBMULTIPROCESS` option. Using a subtree should be more convenient for most bitcoin developers, but using an external package is more convenient for developing in the libmultiprocess repository. The `WITH_LIBMULTIPROCESS` option is also used to avoid needing to changing the depends build here. But in later commits, the depends build is switched to use the add_subdirectory build as well. Co-authored-by: Cory Fields <[email protected]>
This change is technically not needed to add libmultiprocess as a subtree, but it avoids a CI failure in followup PR bitcoin#30975 which enables multiprocess build option in more CI jobs. In that PR, several jobs fail due to the mptest executable not being built by default, as reported bitcoin#30975 (comment)
This change is technically not needed to add libmultiprocess as a subtree, but it avoids a CI failure in followup PR bitcoin#30975 which enables multiprocess build option in more CI jobs. In that PR, the "macOS 14 native no depends job" fails due to warnings in boost headers treated as errors, reported in bitcoin#30975 (comment) and chaincodelabs/libmultiprocess#138
This change is technically not needed to add libmultiprocess as a subtree, but it avoids a CI failure in followup PR bitcoin#30975 which enables multiprocess build option in more CI jobs. In that PR, clang-tidy job fails due to missing generated example files as reported bitcoin#30975 (comment) Different fixes were suggested bitcoin#30975 (comment) and bitcoin#30975 (comment) Co-authored-by: Hennadii Stepanov <[email protected]>
Co-authored-by: Cory Fields <[email protected]>
Without this change linter produces errors about: - Use of std::filesystem the libmultiprocess example program. - Use of locale-dependent functions in example program, in the build time code generator, and in the runtime library for debug logging. - Include guards not beginning with BITCOIN_
Move parts of the int_get_build_id into a new int_get_build_properties function. There is no change in behavior. This just organizes assignments better so some build properties can be used to help compute build ids in the next commit.
With newly introduced libmultiprocess subtree, there's no need for depends system to download and track changes to the upstream repository. Note that adding the libmultiprocess subtree does not allow dropping libmultiprocess packages from the depends build, because libmultiprocess includes a code generation tool called mpgen, and in cross-compiled builds, bitcoin core's cmake build system doesn't have access to a native toolchain and can't build mpgen itself, so the depends system (or the native environment if not using depends) needs to supply it.
Co-authored-by: Hennadii Stepanov <[email protected]>
Except: 1. i686, DEBUG (changed to "no multiprocess") 2. Windows due to lack of support
Install capnp where needed. The bitcoin-node binary is built on all platforms which have multiprocess enabled, but for functional tests it's only used in the macOS native (no depends) and CentOS native (depends) jobs.
Except for Windows and OpenBSD.
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers. Code Coverage & BenchmarksFor details see: https://corecheck.dev/bitcoin/bitcoin/pulls/31802. ReviewsSee the guideline for information on the review process. ConflictsReviewers, this pull request conflicts with the following ones:
If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first. |
Have depends make libmultiprocess by default, which has the effect of including it in the release binaries. Except for Windows and OpenBSD which are not supported yet, the latter due to a fairly trivial upstream issue.
The initial main use case is to enable experimental support for the Mining IPC interface. A working example of a Stratum v2 Template Provider client using this interface can be found here: Sjors#48.
Additionally the
bitcoin-node
andbitcoin-gui
are added toMaintenance.cmake
.Builds on #30975 (which originally tried to do this) and #31741.
See #31756 for discussion of when this should happen. See also #31098 for any remaining issues specific to the Mining interface. Will keep this draft for now.
Guix hashes: