dash/test/lint
W. J. van der Laan 3411577473
Merge bitcoin/bitcoin#19160: multiprocess: Add basic spawn and IPC support
84934bf70e11fe4cda1cfda60113a54895d4fdd5 multiprocess: Add echoipc RPC method and test (Russell Yanofsky)
7d76cf667eff512043a28d4407cc89f58796c42b multiprocess: Add comments and documentation (Russell Yanofsky)
ddf7ecc8dfc64cf121099fb047e1ac871de94f4c multiprocess: Add bitcoin-node process spawning support (Russell Yanofsky)
10afdf0280fa93bfffb0a7665c60dc155cd84514 multiprocess: Add Ipc interface implementation (Russell Yanofsky)
745c9cebd50fea1664efef571dc1ee1bddc96102 multiprocess: Add Ipc and Init interface definitions (Russell Yanofsky)
5d62d7f6cd48bbc4e9f37ecc369f38d5e1e0036c Update libmultiprocess library (Russell Yanofsky)

Pull request description:

  This PR is part of the [process separation project](https://github.com/bitcoin/bitcoin/projects/10).

  ---

  This PR adds basic process spawning and IPC method call support to `bitcoin-node` executables built with `--enable-multiprocess`[*].

  These changes are used in https://github.com/bitcoin/bitcoin/pull/10102 to let node, gui, and wallet functionality run in different processes, and extended in https://github.com/bitcoin/bitcoin/pull/19460 and https://github.com/bitcoin/bitcoin/pull/19461 after that to allow gui and wallet processes to be started and stopped independently and connect to the node over a socket.

  These changes can also be used to implement new functionality outside the `bitcoin-node` process like external indexes or pluggable transports (https://github.com/bitcoin/bitcoin/pull/18988). The `Ipc::spawnProcess` and `Ipc::serveProcess` methods added here are entry points for spawning a child process and serving a parent process, and being able to make bidirectional, multithreaded method calls between the processes. A simple example of this is implemented in commit "Add echoipc RPC method and test."

  Changes in this PR aside from the echo test were originally part of #10102, but have been split and moved here for easier review, and so they can be used for other applications like external plugins.

  Additional notes about this PR can be found at https://bitcoincore.reviews/19160

  [*] Note: the `--enable-multiprocess` feature is still experimental, and not enabled by default, and not yet supported on windows. More information can be found in [doc/multiprocess.md](https://github.com/bitcoin/bitcoin/blob/master/doc/multiprocess.md)

ACKs for top commit:
  fjahr:
    re-ACK 84934bf70e11fe4cda1cfda60113a54895d4fdd5
  ariard:
    ACK 84934bf. Changes since last ACK fixes the silent merge conflict about `EnsureAnyNodeContext()`. Rebuilt and checked again debug command `echoipc`.

Tree-SHA512: 52a948b5e18a26d7d7a09b83003eaae9b1ed2981978c36c959fe9a55abf70ae6a627c4ff913a3428be17400a3dace30c58b5057fa75c319662c3be98f19810c6
2024-07-27 13:04:24 +07:00
..
check-doc.py Merge bitcoin/bitcoin#26717: test: Improve check-doc.py pattern 2024-06-13 10:06:12 -05:00
commit-script-check.sh Merge bitcoin/bitcoin#21749: test: Bump shellcheck version 2024-04-23 22:41:10 +07:00
extended-lint-all.sh Merge #18673: scripted-diff: Sort test includes 2023-08-29 22:00:59 -05:00
extended-lint-cppcheck.sh test: remove exception for util::Ref which doesn't exist more 2024-04-11 02:26:02 +07:00
git-subtree-check.sh Merge #20813: scripted-diff: Bump copyright headers 2024-04-10 03:19:34 +07:00
lint-all.sh Merge bitcoin/bitcoin#24762: lint: Start to use py lint scripts 2024-05-16 02:09:38 +07:00
lint-assertions.py Merge bitcoin/bitcoin#24856: lint: Converting lint-assertions.sh to lint-assertions.py 2024-06-06 22:58:31 -05:00
lint-circular-dependencies.sh refactor: drop usage of chainstate globals in asset locks logic 2024-06-26 13:50:48 +00:00
lint-cppcheck-dash.sh chore: exclude underscore placeholder from shadowing linter warnings 2024-07-19 17:17:47 +00:00
lint-files.py chore: dashify file list exception for liner 2024-05-16 02:10:16 +07:00
lint-format-strings.sh Merge bitcoin/bitcoin#24762: lint: Start to use py lint scripts 2024-05-16 02:09:38 +07:00
lint-git-commit-check.sh Merge #20071: ci, lint: Remove usage of TRAVIS_COMMIT_RANGE 2024-01-27 22:44:49 -06:00
lint-include-guards.sh Merge bitcoin/bitcoin#19160: multiprocess: Add basic spawn and IPC support 2024-07-27 13:04:24 +07:00
lint-includes.sh qt: drop leftover boost::function usage in Qt, drop header from list 2024-04-23 15:34:48 +00:00
lint-locale-dependence.sh Merge #18673: scripted-diff: Sort test includes 2023-08-29 22:00:59 -05:00
lint-logs.sh Merge #17829: scripted-diff: Bump copyright of files changed in 2019 2023-12-06 11:40:14 -06:00
lint-python-dead-code.sh Merge #21096: Re-add dead code detection 2021-10-05 20:34:00 +03:00
lint-python-mutable-default-parameters.py Merge bitcoin/bitcoin#24800: lint: convert lint-python-mutable-default-parameters.sh to Python 2024-01-02 11:17:47 -06:00
lint-python-utf8-encoding.sh Merge #20813: scripted-diff: Bump copyright headers 2024-04-10 03:19:34 +07:00
lint-python.sh Merge #20813: scripted-diff: Bump copyright headers 2024-04-10 03:19:34 +07:00
lint-shell-locale.sh build/depends: commit dashpay/bls-signatures@66ee820f to source tree as vendored (#5077) 2022-11-22 11:34:46 -06:00
lint-shell.sh Merge #20697: ci: Fix COMMIT_RANGE variable value for PRs 2024-03-27 00:48:27 +07:00
lint-spelling.sh Merge bitcoin/bitcoin#24762: lint: Start to use py lint scripts 2024-05-16 02:09:38 +07:00
lint-submodule.py Merge bitcoin/bitcoin#24803: lint: convert submodule linter test to Python 2024-01-13 19:32:31 -06:00
lint-tests.py Merge bitcoin/bitcoin#24815: lint: convert lint-tests.sh to python 2024-01-13 19:32:31 -06:00
lint-whitespace.sh Merge #20813: scripted-diff: Bump copyright headers 2024-04-10 03:19:34 +07:00
README.md Merge #20567: test: Add option to git-subtree-check to do full check, add help 2023-12-06 11:40:14 -06:00
run-lint-format-strings.py Merge bitcoin/bitcoin#24762: lint: Start to use py lint scripts 2024-05-16 02:09:38 +07:00
spelling.ignore-words.txt Merge bitcoin/bitcoin#24762: lint: Start to use py lint scripts 2024-05-16 02:09:38 +07:00

This folder contains lint scripts.

check-doc.py

Check for missing documentation of command line options.

commit-script-check.sh

Verification of scripted diffs. Scripted diffs are only assumed to run on the latest LTS release of Ubuntu. Running them on other operating systems might require installing GNU tools, such as GNU sed.

git-subtree-check.sh

Run this script from the root of the repository to verify that a subtree matches the contents of the commit it claims to have been updated to.

Usage: test/lint/git-subtree-check.sh [-r] DIR [COMMIT]
       test/lint/git-subtree-check.sh -?
  • DIR is the prefix within the repository to check.
  • COMMIT is the commit to check, if it is not provided, HEAD will be used.
  • -r checks that subtree commit is present in repository.

To do a full check with -r, make sure that you have fetched the upstream repository branch in which the subtree is maintained:

To do so, add the upstream repository as remote:

git remote add --fetch secp256k1 https://github.com/bitcoin-core/secp256k1.git

lint-all.sh

Calls other scripts with the lint- prefix.