Compare commits

...

2 Commits

Author SHA1 Message Date
Ryan Ofsky
41e30ed7ed
Merge 45bfd97ec7c9991f41673d79b01277bfd940e64e into cd8089c20baaaee329cbf7951195953a9f86d7cf 2025-03-16 17:18:40 +01:00
Ryan Ofsky
45bfd97ec7 cmake: Move internal binaries from bin/ to libexec/
Currently when "make install" or "cmake --install" are run, various internal
binaries that are confusing and not typically useful and installed to
`${CMAKE_INSTALL_PREFIX}/bin` and can wind up on the system PATH. This PR moves
internal binaries out of bin/ into libexec/ where they will still be accessible
but will not be automatically placed on the PATH or be confused with more
useful binaries. The PR also adds an install rule for the bitcoin-chainstate
binary. After this PR binaries installed to bin/ are:

- bitcoin-cli
- bitcoind
- bitcoin-qt
- bitcoin-tx
- bitcoin-util
- bitcoin-wallet

And binaries installed to libexec/ are:

- bench_bitcoin
- bitcoin-gui
- bitcoin-node
- test_bitcoin
- test_bitcoin-qt

In the future if #31375 gets merged, there will be a new `bitcoin` wrapper
executable in bin/ that can be used to call other binaries, and with that
present, we could consider moving other binaries from bin/ to libexec/ and
recommending that most users should use the wrapper instead of calling the
different utilities directly. But this PR should make sense with or without
#31375.
2025-02-14 08:19:12 -05:00
7 changed files with 14 additions and 8 deletions

View File

@ -149,7 +149,7 @@ if [ "$RUN_UNIT_TESTS" = "true" ]; then
fi
if [ "$RUN_UNIT_TESTS_SEQUENTIAL" = "true" ]; then
DIR_UNIT_TEST_DATA="${DIR_UNIT_TEST_DATA}" LD_LIBRARY_PATH="${DEPENDS_DIR}/${HOST}/lib" "${BASE_OUTDIR}"/bin/test_bitcoin --catch_system_errors=no -l test_suite
DIR_UNIT_TEST_DATA="${DIR_UNIT_TEST_DATA}" LD_LIBRARY_PATH="${DEPENDS_DIR}/${HOST}/lib" "${BASE_OUTDIR}"/libexec/test_bitcoin --catch_system_errors=no -l test_suite
fi
if [ "$RUN_FUNCTIONAL_TESTS" = "true" ]; then

View File

@ -8,13 +8,18 @@ include(GNUInstallDirs)
function(install_binary_component component)
cmake_parse_arguments(PARSE_ARGV 1
IC # prefix
"HAS_MANPAGE" # options
"HAS_MANPAGE;INTERNAL" # options
"" # one_value_keywords
"" # multi_value_keywords
)
set(target_name ${component})
if(IC_INTERNAL)
set(runtime_dest ${CMAKE_INSTALL_LIBEXECDIR})
else()
set(runtime_dest ${CMAKE_INSTALL_BINDIR})
endif()
install(TARGETS ${target_name}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
RUNTIME DESTINATION ${runtime_dest}
COMPONENT ${component}
)
if(INSTALL_MAN AND IC_HAS_MANPAGE)

View File

@ -352,7 +352,7 @@ if(WITH_MULTIPROCESS AND BUILD_DAEMON)
bitcoin_ipc
$<TARGET_NAME_IF_EXISTS:bitcoin_wallet>
)
install_binary_component(bitcoin-node)
install_binary_component(bitcoin-node INTERNAL)
endif()
if(WITH_MULTIPROCESS AND BUILD_TESTS)
@ -451,6 +451,7 @@ if(BUILD_UTIL_CHAINSTATE)
core_interface
bitcoinkernel
)
install_binary_component(bitcoin-chainstate INTERNAL)
endif()

View File

@ -82,4 +82,4 @@ add_test(NAME bench_sanity_check_high_priority
COMMAND bench_bitcoin -sanity-check -priority-level=high
)
install_binary_component(bench_bitcoin)
install_binary_component(bench_bitcoin INTERNAL)

View File

@ -253,7 +253,7 @@ if(WITH_MULTIPROCESS)
bitcoin_ipc
)
import_plugins(bitcoin-gui)
install_binary_component(bitcoin-gui)
install_binary_component(bitcoin-gui INTERNAL)
if(WIN32)
set_target_properties(bitcoin-gui PROPERTIES WIN32_EXECUTABLE TRUE)
endif()

View File

@ -45,4 +45,4 @@ if(WIN32 AND VCPKG_TARGET_TRIPLET)
)
endif()
install_binary_component(test_bitcoin-qt)
install_binary_component(test_bitcoin-qt INTERNAL)

View File

@ -209,4 +209,4 @@ endfunction()
add_all_test_targets()
install_binary_component(test_bitcoin)
install_binary_component(test_bitcoin INTERNAL)