cmake, refactor: Move `find_package(Git)` to `src/CMakeLists.txt`
What changed, and why it matters
This is a harmless build-system cleanup. It moves the CMake command that looks for the Git program from one internal script into another, and passes the discovered Git path explicitly. There is no security issue here.
No security action needed. Treat as a normal build-system refactor.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The commit refactors CMake logic for generating bitcoin-build-info.h. Previously, cmake/script/GenerateBuildInfo.cmake invoked find_package(Git QUIET) itself. After the change, src/CMakeLists.txt calls find_package(Git QUIET) and passes the resulting GIT_EXECUTABLE variable into the script via -DGIT_EXECUTABLE=.... The script now checks if(GIT_EXECUTABLE) instead of if(Git_FOUND). This enables the standard CMake variable CMAKE_DISABLE_FIND_PACKAGE_Git to be used to disable Git discovery. No executable paths, command lines, or inputs are attacker-controlled, and no behavior changes in a way that introduces a vulnerability.
Changed components
CMake build systemsrc/CMakeLists.txtcmake/script/GenerateBuildInfo.cmakeInspect captured patch +4 / −4
diff --git a/cmake/script/GenerateBuildInfo.cmake b/cmake/script/GenerateBuildInfo.cmake
index d3ee2eb0..694961df 100644
--- a/cmake/script/GenerateBuildInfo.cmake
+++ b/cmake/script/GenerateBuildInfo.cmake
@@ -5,7 +5,7 @@
macro(fatal_error)
message(FATAL_ERROR "\n"
"Usage:\n"
- " cmake -D BUILD_INFO_HEADER_PATH=<path> [-D SOURCE_DIR=<path>] -P ${CMAKE_CURRENT_LIST_FILE}\n"
+ " cmake -D BUILD_INFO_HEADER_PATH=<path> -D GIT_EXECUTABLE=<path> [-D SOURCE_DIR=<path>] -P ${CMAKE_CURRENT_LIST_FILE}\n"
"All specified paths must be absolute ones.\n"
)
endmacro()
@@ -31,8 +31,7 @@ endif()
set(GIT_TAG)
set(GIT_COMMIT)
if(NOT "$ENV{BITCOIN_GENBUILD_NO_GIT}" STREQUAL "1")
- find_package(Git QUIET)
- if(Git_FOUND)
+ if(GIT_EXECUTABLE)
execute_process(
COMMAND ${GIT_EXECUTABLE} rev-parse --is-inside-work-tree
WORKING_DIRECTORY ${WORKING_DIR}
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index b37f3c8c..ddbf2d6d 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -37,9 +37,10 @@ if(NOT CMAKE_ARCHIVE_OUTPUT_DIRECTORY)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
endif()
+find_package(Git QUIET)
add_custom_target(generate_build_info
BYPRODUCTS ${PROJECT_BINARY_DIR}/src/bitcoin-build-info.h
- COMMAND ${CMAKE_COMMAND} -DBUILD_INFO_HEADER_PATH=${PROJECT_BINARY_DIR}/src/bitcoin-build-info.h -DSOURCE_DIR=${PROJECT_SOURCE_DIR} -P ${PROJECT_SOURCE_DIR}/cmake/script/GenerateBuildInfo.cmake
+ COMMAND ${CMAKE_COMMAND} -DGIT_EXECUTABLE=${GIT_EXECUTABLE} -DBUILD_INFO_HEADER_PATH=${PROJECT_BINARY_DIR}/src/bitcoin-build-info.h -DSOURCE_DIR=${PROJECT_SOURCE_DIR} -P ${PROJECT_SOURCE_DIR}/cmake/script/GenerateBuildInfo.cmake
COMMENT "Generating bitcoin-build-info.h"
VERBATIM
)
Why this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.