mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-03-01 18:49:15 +01:00
Merge bitcoin/bitcoin#34143: build: Prevent system header fallback and include path pollution
65134c7e5fdepends: Prefix include path for headers-only `systemtap` package (Hennadii Stepanov)94a692b6aacmake: Add missed `USDT::headers` (Hennadii Stepanov)b5375c44eddepends: Prefix include path for headers-only `boost` package (Hennadii Stepanov)d73378ffcccmake: Add missed `Boost::headers` (Hennadii Stepanov) Pull request description: Currently, header-only dependencies in the depends subsystem are installed into the standard `include/` subdirectory. This inadvertently exposes their headers to the compiler via `-I` flags brought in by other dependencies (e.g., `libevent` or `sqlite`). This "include path pollution" masks missing dependencies in the build configuration. While the build might succeed by accident due to this overlap, it creates a fragile state. If the overlapping library is removed, the build will break, or, worse, the compiler may silently fall back to the host system's default paths (e.g., `/usr/include`). This PR improves build system security and hygiene by enforcing strict, distinguished include paths for header-only dependencies. The missing dependencies revealed by this change (`Boost::headers`, `USDT::headers`) have been fixed in separate commits. ACKs for top commit: theuni: re-ACK65134c7e5ffanquake: ACK65134c7e5fTree-SHA512: 41667b46c3bd2f872951a5651b30f7d1468f49f1265196b7868233ed44b2eb0e33f1f69a1af348b55f07a8d1f594e276eb49b724e80b8eae85aed1c9bacae197
This commit is contained in:
@@ -13,6 +13,8 @@ define $(package)_set_vars
|
||||
$(package)_config_opts += -DBOOST_INSTALL_LAYOUT=system
|
||||
$(package)_config_opts += -DBUILD_TESTING=OFF
|
||||
$(package)_config_opts += -DCMAKE_DISABLE_FIND_PACKAGE_ICU=ON
|
||||
# Install to a unique path to prevent accidental inclusion via other dependencies' -I flags.
|
||||
$(package)_config_opts += -DCMAKE_INSTALL_INCLUDEDIR=$(package)/include
|
||||
endef
|
||||
|
||||
define $(package)_config_cmds
|
||||
|
||||
@@ -6,7 +6,11 @@ $(package)_sha256_hash=966a360fb73a4b65a8d0b51b389577b3c4f92a327e84aae58682103e8
|
||||
$(package)_patches=remove_SDT_ASM_SECTION_AUTOGROUP_SUPPORT_check.patch
|
||||
|
||||
define $(package)_preprocess_cmds
|
||||
patch -p1 < $($(package)_patch_dir)/remove_SDT_ASM_SECTION_AUTOGROUP_SUPPORT_check.patch && \
|
||||
mkdir -p $($(package)_staging_prefix_dir)/include/sys && \
|
||||
cp includes/sys/sdt.h $($(package)_staging_prefix_dir)/include/sys/sdt.h
|
||||
patch -p1 < $($(package)_patch_dir)/remove_SDT_ASM_SECTION_AUTOGROUP_SUPPORT_check.patch
|
||||
endef
|
||||
|
||||
# Install to a unique path to prevent accidental inclusion via other dependencies' -I flags.
|
||||
define $(package)_stage_cmds
|
||||
mkdir -p $($(package)_staging_prefix_dir)/$(package)/include/sys && \
|
||||
cp includes/sys/sdt.h $($(package)_staging_prefix_dir)/$(package)/include/sys/sdt.h
|
||||
endef
|
||||
|
||||
@@ -163,6 +163,7 @@ if("@usdt_packages@" MATCHES "^[ ]*$")
|
||||
set(WITH_USDT OFF CACHE BOOL "")
|
||||
else()
|
||||
set(WITH_USDT ON CACHE BOOL "")
|
||||
set(USDT_INCLUDE_DIR "${CMAKE_CURRENT_LIST_DIR}/systemtap/include" CACHE PATH "")
|
||||
endif()
|
||||
|
||||
set(ipc_packages @ipc_packages@)
|
||||
|
||||
@@ -20,6 +20,7 @@ target_link_libraries(bitcoin_ipc
|
||||
PRIVATE
|
||||
core_interface
|
||||
univalue
|
||||
Boost::headers
|
||||
)
|
||||
|
||||
if(BUILD_TESTS)
|
||||
|
||||
@@ -164,6 +164,7 @@ target_link_libraries(test_bitcoin
|
||||
secp256k1
|
||||
Boost::headers
|
||||
libevent::extra
|
||||
$<TARGET_NAME_IF_EXISTS:USDT::headers>
|
||||
)
|
||||
|
||||
if(ENABLE_WALLET)
|
||||
|
||||
Reference in New Issue
Block a user