This change moves binaries that are not typically invoked directly by users from the bin/ directory to the libexec/ directory in CMake installs and binary releases. The goal of the PR is to introduce a distinction between internal and external binaries so starting with #31802, we can use IPC to implement features in new binaries without adding those binaries to the CLI. The change also helps reduce clutter in bin/, making it easier for users to identify useful tools to run. Summary of changes:
- For source builds (i.e. developer builds) — There are no changes.
- For source installs (i.e.
cmake --installresult) —test_bitcoin,test_bitcoin-qt, andbench_bitcoinare installed in${CMAKE_PREFIX_PATH}/libexecinstead of${CMAKE_PREFIX_PATH}/bin, so they are no longer on the systemPATH. However, they can still be invoked from thelibexec/directory, or from the CLI asbitcoin test,bitcoin test-gui, andbitcoin bench, respectively. - For binary releases — Since
test_bitcoinis the only test binary enabled in releases, the only change is movingtest_bitcoinfrombin/tolibexec/.
The table below shows the install location of each binary after this change, and the availability of each binary.
| Binary | Location | Availability | Change |
|---|---|---|---|
bitcoin |
bin/ |
📦 Binary release (since #31375) | Unchanged |
bitcoin-cli |
bin/ |
📦 Binary release | Unchanged |
bitcoind |
bin/ |
📦 Binary release | Unchanged |
bitcoin-qt |
bin/ |
📦 Binary release | Unchanged |
bitcoin-tx |
bin/ |
📦 Binary release | Unchanged |
bitcoin-util |
bin/ |
📦 Binary release | Unchanged |
bitcoin-wallet |
bin/ |
📦 Binary release | Unchanged |
bench_bitcoin |
libexec/ |
🛠 Source build only | Moved from bin/ |
bitcoin-chainstate |
libexec/ |
🛠 Source build only | Newly installed (was built) |
bitcoin-gui |
libexec/ |
🛠 Source build only (until #31802) | Moved from bin/ |
bitcoin-node |
libexec/ |
🛠 Source build only (until #31802) | Moved from bin/ |
test_bitcoin |
libexec/ |
📦 Binary release | Moved from bin/ |
test_bitcoin-qt |
libexec/ |
🛠 Source build only | Moved from bin/ |
This PR is part of the process separation project.