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.