mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-04-18 19:47:53 +02:00
a5ac43d98ddoc: Add release notes describing bitcoin wrapper executable (Ryan Ofsky)258bda80c0doc: Mention bitcoin wrapper executable in documentation (Ryan Ofsky)d2739d75c9build: add bitcoin.exe to windows installer (Sjors Provoost)ba649c0006ci: Run multiprocess tests through wrapper executable (Ryan Ofsky)29bdd743bbtest: Support BITCOIN_CMD environment variable (Ryan Ofsky)9c8c68891bmultiprocess: Add bitcoin wrapper executable (Ryan Ofsky)5076d20fdbutil: Add cross-platform ExecVp and GetExePath functions (Ryan Ofsky) Pull request description: Intended to make bitcoin command line features more discoverable and allow installing new multiprocess binaries in libexec/ instead of bin/ so they don't cause confusion. Idea and implementation of this were discussed in https://github.com/bitcoin/bitcoin/issues/30983. --- Initial implementation of this feature is deliberately minimal so the UX can evolve in response to feedback and there are not too many details to debate and discuss in a single PR. But many improvements are possible or planned: - Adding manpage and bash completions. - Showing nicer error messages that detect if an executable isn't installed and suggest how to fix [(comment)](https://github.com/bitcoin/bitcoin/pull/31375#discussion_r2073194474) - Showing wrapper command lines in subcommand in help output [(comment)](https://github.com/bitcoin/bitcoin/pull/31375#discussion_r2077800405). This could be done conditionally as suggested in the comment or be unconditional. - Showing wrapper command lines in subcommand error output. There is a bitcoin-cli error pointed out in [(comment)](https://github.com/bitcoin/bitcoin/pull/31375#discussion_r2091152243) that is needlessly confusing. - Integrating help so `bitcoin help subcommand` invokes `bitcoin subcommand -h`. `bitcoin -h subcommand` should also be supported and be equivalent [(comment)](https://github.com/bitcoin/bitcoin/pull/31375#discussion_r2093116725) - Adding support for `bitcoin-util` subcommands. Ideal interface would probably be more like `bitcoin grind` not `bitcoin util grind` but this has been punted for now. Supporting subcommands directly would require some ArgsManager modifications - Adding a dedicated python functional test for the wrapper. Right now there is some CI coverage by setting the `BITCOIN_CMD` variable, but this doesn't cover things like the help output and version output, and support for different directory layouts. - Better `--multiprocess` (`-m`) / `--monolithic` (`-M`) default selection. Right now, default is monolithic but it probably makes sense to chose more intelligently depending on whether -ipc options are enabled and what binaries are available. - Maybe parsing `bitcoin.conf` and supporting options to control wrapper behavior like custom locations or preferences or aliases. - Better command command line usability. Allow combining short options like (`-ah`). Allow fuzzy matching of subcommands or suggestions if you misspell. (suggested by stickies in review club) - Not directly related to this PR but `bitcoin-cli named` implementation used by the wrapper should do a better job disambiguating named arguments from base64 arguments ending in = as pointed out in [(comment)](https://github.com/bitcoin/bitcoin/pull/31375#discussion_r2091886628) --- This PR is part of the [process separation project](https://github.com/bitcoin/bitcoin/issues/28722). A review club meeting for it took place in https://bitcoincore.reviews/31375 ACKs for top commit: Sjors: utACKa5ac43d98dachow101: ACKa5ac43d98dvasild: ACKa5ac43d98dtheStack: ACKa5ac43d98dismaelsadeeq: fwiw my last review implied an ACKa5ac43d98dhodlinator: ACKa5ac43d98dTree-SHA512: 570e6a4ff8bd79ef6554da3d01f36c0a7c6d2dd7dace8f8732eca98f4a8bc2284474a9beadeba783114fe2f3dd08b2041b3da7753bae0b7f881ec50668cb821f
49 lines
960 B
CMake
49 lines
960 B
CMake
# Copyright (c) 2023-present The Bitcoin Core developers
|
|
# Distributed under the MIT software license, see the accompanying
|
|
# file COPYING or https://opensource.org/license/mit/.
|
|
|
|
add_library(bitcoin_util STATIC EXCLUDE_FROM_ALL
|
|
asmap.cpp
|
|
batchpriority.cpp
|
|
bip32.cpp
|
|
bytevectorhash.cpp
|
|
chaintype.cpp
|
|
check.cpp
|
|
exec.cpp
|
|
exception.cpp
|
|
feefrac.cpp
|
|
fs.cpp
|
|
fs_helpers.cpp
|
|
hasher.cpp
|
|
moneystr.cpp
|
|
rbf.cpp
|
|
readwritefile.cpp
|
|
serfloat.cpp
|
|
signalinterrupt.cpp
|
|
sock.cpp
|
|
strencodings.cpp
|
|
string.cpp
|
|
syserror.cpp
|
|
thread.cpp
|
|
threadinterrupt.cpp
|
|
threadnames.cpp
|
|
time.cpp
|
|
tokenpipe.cpp
|
|
../logging.cpp
|
|
../random.cpp
|
|
../randomenv.cpp
|
|
../streams.cpp
|
|
../support/lockedpool.cpp
|
|
../sync.cpp
|
|
)
|
|
|
|
target_link_libraries(bitcoin_util
|
|
PRIVATE
|
|
core_interface
|
|
bitcoin_clientversion
|
|
bitcoin_crypto
|
|
$<$<PLATFORM_ID:Windows>:ws2_32>
|
|
$<$<PLATFORM_ID:Windows>:iphlpapi>
|
|
$<$<PLATFORM_ID:Windows>:bcrypt>
|
|
)
|