mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-05-04 02:49:10 +02:00
Merge bitcoin/bitcoin#31741: multiprocess: Add libmultiprocess git subtree
babb9f5db6depends: remove non-native libmultiprocess build (Cory Fields)5d105fb8c3depends: Switch libmultiprocess packages to use local git subtree (Ryan Ofsky)9b35518d2fdepends, moveonly: split up int_get_build_id function (Ryan Ofsky)2d373e2707lint: Add exclusions for libmultiprocess subtree (Ryan Ofsky)e88ab394c1doc: Update documentation to explain libmultiprocess subtree (Ryan Ofsky)d4bc563982cmake: Fix clang-tidy "no input files" errors (Ryan Ofsky)abdf3cb645cmake: Fix warnings from boost headers (Ryan Ofsky)8532fcb1c3cmake: Fix ctest mptest "Unable to find executable" errors (Ryan Ofsky)d597ab1deecmake: Support building with libmultiprocess subtree (Ryan Ofsky)69f0d4adb7scripted-diff: s/WITH_MULTIPROCESS/ENABLE_IPC/ in cmake (Ryan Ofsky)a2f28e4be9Squashed 'src/ipc/libmultiprocess/' content from commit 35944ffd23fa (Ryan Ofsky)d6244f85c5depends: Update libmultiprocess library to simplify cmake subtree build (Ryan Ofsky) Pull request description: This adds the [libmultiprocess](https://github.com/chaincodelabs/libmultiprocess) library and code generator as a subtree in `src/ipc/libmultiprocess` and allows it to be built with the cmake `-DENABLE_IPC` option, which is disabled by default. This PR does not entirely remove the depends system [libmultiprocess package](https://github.com/bitcoin/bitcoin/blob/master/depends/packages/native_libmultiprocess.mk) because the package is useful when cross compiling. (A cross-compiling cmake build cannot easily build and run a native code generation tool.) However, it does update the depends package to build from the new git subtree, instead of being downloaded separately from github, so the same sources are used to build both the runtime library and the code generator. This PR includes the following manual changes (not created automatically with `git subtree add`) which just update the build system and documentation: - [`d6244f85c509` depends: Update libmultiprocess library to simplify cmake subtree build](d6244f85c5) - [`69f0d4adb72c` scripted-diff: s/WITH_MULTIPROCESS/ENABLE_IPC/ in cmake](69f0d4adb7) - [`d597ab1dee6b` cmake: Support building with libmultiprocess subtree](d597ab1dee) - [`8532fcb1c30d` cmake: Fix ctest mptest "Unable to find executable" errors](8532fcb1c3) - [`abdf3cb6456f` cmake: Fix warnings from boost headers](abdf3cb645) - [`d4bc5639829f` cmake: Fix clang-tidy "no input files" errors](d4bc563982) - [`e88ab394c163` doc: Update documentation to explain libmultiprocess subtree](e88ab394c1) - [`2d373e27071f` lint: Add exclusions for libmultiprocess subtree](2d373e2707) - [`9b35518d2f3f` depends, moveonly: split up int_get_build_id function](9b35518d2f) - [`5d105fb8c3ff` depends: Switch libmultiprocess packages to use local git subtree](5d105fb8c3) - [`babb9f5db641` depends: remove non-native libmultiprocess build](babb9f5db6) --- Previous minisketch subtree PR #23114 may be useful for comparison Instructions for subtree verification can be found: - https://github.com/bitcoin/bitcoin/blob/master/doc/developer-notes.md#subtrees - https://github.com/bitcoin/bitcoin/tree/master/test/lint#git-subtree-checksh TL&DR: ```sh git remote add --fetch libmultiprocess https://github.com/chaincodelabs/libmultiprocess.git test/lint/git-subtree-check.sh -r src/ipc/libmultiprocess ``` --- This PR is part of the [process separation project](https://github.com/bitcoin/bitcoin/issues/28722). ACKs for top commit: Sjors: re-ACKbabb9f5db6TheCharlatan: tACKbabb9f5db6vasild: ACKbabb9f5db6Tree-SHA512: 43d4eecca5aab63e55c613de935965666eaced327f9fe859a0e9c9b85f7685dc16c5c8d6e03e09ca998628c5d468633f4f743529930b037049abe8e0101e0143
This commit is contained in:
@@ -8,7 +8,7 @@
|
||||
| *libbitcoin_crypto* | Hardware-optimized functions for data encryption, hashing, message authentication, and key derivation. |
|
||||
| *libbitcoin_kernel* | Consensus engine and support library used for validation by *libbitcoin_node*. |
|
||||
| *libbitcoinqt* | GUI functionality used by *bitcoin-qt* and *bitcoin-gui* executables. |
|
||||
| *libbitcoin_ipc* | IPC functionality used by *bitcoin-node*, *bitcoin-wallet*, *bitcoin-gui* executables to communicate when [`-DWITH_MULTIPROCESS=ON`](multiprocess.md) is used. |
|
||||
| *libbitcoin_ipc* | IPC functionality used by *bitcoin-node*, *bitcoin-wallet*, *bitcoin-gui* executables to communicate when [`-DENABLE_IPC=ON`](multiprocess.md) is used. |
|
||||
| *libbitcoin_node* | P2P and RPC server functionality used by *bitcoind* and *bitcoin-qt* executables. |
|
||||
| *libbitcoin_util* | Home for common functionality shared by different executables and libraries. Similar to *libbitcoin_common*, but lower-level (see [Dependencies](#dependencies)). |
|
||||
| *libbitcoin_wallet* | Wallet functionality used by *bitcoind* and *bitcoin-wallet* executables. |
|
||||
|
||||
@@ -1335,6 +1335,9 @@ Current subtrees include:
|
||||
- src/minisketch
|
||||
- Upstream at https://github.com/bitcoin-core/minisketch ; maintained by Core contributors.
|
||||
|
||||
- src/ipc/libmultiprocess
|
||||
- Upstream at https://github.com/bitcoin-core/libmultiprocess ; maintained by Core contributors.
|
||||
|
||||
Upgrading LevelDB
|
||||
---------------------
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ _This document describes usage of the multiprocess feature. For design informati
|
||||
|
||||
## Build Option
|
||||
|
||||
On Unix systems, the `-DWITH_MULTIPROCESS=ON` build option can be passed to build the supplemental `bitcoin-node` and `bitcoin-gui` multiprocess executables.
|
||||
On Unix systems, the `-DENABLE_IPC=ON` build option can be passed to build the supplemental `bitcoin-node` and `bitcoin-gui` multiprocess executables.
|
||||
|
||||
## Debugging
|
||||
|
||||
@@ -12,7 +12,11 @@ The `-debug=ipc` command line option can be used to see requests and responses b
|
||||
|
||||
## Installation
|
||||
|
||||
The multiprocess feature requires [Cap'n Proto](https://capnproto.org/) and [libmultiprocess](https://github.com/bitcoin-core/libmultiprocess) as dependencies. A simple way to get started using it without installing these dependencies manually is to use the [depends system](../depends) with the `MULTIPROCESS=1` [dependency option](../depends#dependency-options) passed to make:
|
||||
Specifying `-DENABLE_IPC=ON` requires [Cap'n Proto](https://capnproto.org/) to be installed. See [build-unix.md](build-unix.md) and [build-osx.md](build-osx.md) for information about installing dependencies.
|
||||
|
||||
### Depends installation
|
||||
|
||||
Alternately the [depends system](../depends) can be used to avoid need to install local dependencies. A simple way to get started is to pass the `MULTIPROCESS=1` [dependency option](../depends#dependency-options) to make:
|
||||
|
||||
```
|
||||
cd <BITCOIN_SOURCE_DIRECTORY>
|
||||
@@ -25,9 +29,11 @@ build/bin/bitcoin-node -regtest -printtoconsole -debug=ipc
|
||||
BITCOIND=$(pwd)/build/bin/bitcoin-node build/test/functional/test_runner.py
|
||||
```
|
||||
|
||||
The `cmake` build will pick up settings and library locations from the depends directory, so there is no need to pass `-DWITH_MULTIPROCESS=ON` as a separate flag when using the depends system (it's controlled by the `MULTIPROCESS=1` option).
|
||||
The `cmake` build will pick up settings and library locations from the depends directory, so there is no need to pass `-DENABLE_IPC=ON` as a separate flag when using the depends system (it's controlled by the `MULTIPROCESS=1` option).
|
||||
|
||||
Alternately, you can install [Cap'n Proto](https://capnproto.org/) and [libmultiprocess](https://github.com/bitcoin-core/libmultiprocess) packages on your system, and just run `cmake -B build -DWITH_MULTIPROCESS=ON` without using the depends system. The `cmake` build will be able to locate the installed packages via [pkg-config](https://www.freedesktop.org/wiki/Software/pkg-config/). See [Installation](https://github.com/bitcoin-core/libmultiprocess/blob/master/doc/install.md) section of the libmultiprocess readme for install steps. See [build-unix.md](build-unix.md) and [build-osx.md](build-osx.md) for information about installing dependencies in general.
|
||||
### Cross-compiling
|
||||
|
||||
When cross-compiling and not using depends, native code generation tools from [libmultiprocess](https://github.com/bitcoin-core/libmultiprocess) and [Cap'n Proto](https://capnproto.org/) are required. They can be passed to the cmake build by specifying `-DMPGEN_EXECUTABLE=/path/to/mpgen -DCAPNP_EXECUTABLE=/path/to/capnp -DCAPNPC_CXX_EXECUTABLE=/path/to/capnpc-c++` options.
|
||||
|
||||
## Usage
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ We use automated scripts to help extract translations in both Qt, and non-Qt sou
|
||||
|
||||
To automatically regenerate the `bitcoin_en.ts` file, run the following commands:
|
||||
```sh
|
||||
cmake --preset dev-mode -DWITH_USDT=OFF -DWITH_MULTIPROCESS=OFF
|
||||
cmake --preset dev-mode -DWITH_USDT=OFF -DENABLE_IPC=OFF
|
||||
cmake --build build_dev_mode --target translate
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user