Look in the ctest ini file for GitCommand.
If GIT_EXECUTABLE is not passed into the test, but the source tree is a git checkout, then use GitCommand or UpdateCommand from the ctest ini file to set its value. Presumably, a dashboard running the test suite had to have set this properly in order to do the ctest_update step.
This commit is contained in:
parent
e45a600a0f
commit
4ee426b057
|
@ -128,6 +128,51 @@ if(is_cvs_checkout AND CVS_EXECUTABLE)
|
|||
endif()
|
||||
|
||||
|
||||
# If no GIT_EXECUTABLE, see if we can figure out which git was used
|
||||
# for the ctest_update step on this dashboard...
|
||||
#
|
||||
if(is_git_checkout AND NOT GIT_EXECUTABLE)
|
||||
set(ctest_ini_file "")
|
||||
set(exe "")
|
||||
|
||||
# Use the old name:
|
||||
if(EXISTS "${CMake_BINARY_DIR}/DartConfiguration.tcl")
|
||||
set(ctest_ini_file "${CMake_BINARY_DIR}/DartConfiguration.tcl")
|
||||
endif()
|
||||
|
||||
# But if it exists, prefer the new name:
|
||||
if(EXISTS "${CMake_BINARY_DIR}/CTestConfiguration.ini")
|
||||
set(ctest_ini_file "${CMake_BINARY_DIR}/CTestConfiguration.ini")
|
||||
endif()
|
||||
|
||||
# If there is a ctest ini file, read the update command or git command
|
||||
# from it:
|
||||
#
|
||||
if(ctest_ini_file)
|
||||
file(STRINGS "${ctest_ini_file}" lines REGEX "^GITCommand: (.*)$")
|
||||
string(REGEX REPLACE "^GITCommand: (.*)$" "\\1" exe "${lines}")
|
||||
if("${exe}" STREQUAL "GITCOMMAND-NOTFOUND")
|
||||
set(exe "")
|
||||
endif()
|
||||
|
||||
if(NOT exe)
|
||||
file(STRINGS "${ctest_ini_file}" lines REGEX "^UpdateCommand: (.*)$")
|
||||
string(REGEX REPLACE "^UpdateCommand: (.*)$" "\\1" exe "${lines}")
|
||||
if("${exe}" STREQUAL "GITCOMMAND-NOTFOUND")
|
||||
set(exe "")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(exe)
|
||||
set(GIT_EXECUTABLE "${exe}")
|
||||
message("info: set GIT_EXECUTABLE to '${GIT_EXECUTABLE}' based on '${ctest_ini_file}'")
|
||||
else()
|
||||
message(FATAL_ERROR "could not determine GIT_EXECUTABLE based on '${ctest_ini_file}'...")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
||||
if(is_git_checkout AND GIT_EXECUTABLE)
|
||||
# Check with "git status" if there are any local modifications to the
|
||||
# CMake source tree:
|
||||
|
@ -154,6 +199,15 @@ if(is_git_checkout AND GIT_EXECUTABLE)
|
|||
message("=== end output ===")
|
||||
message("")
|
||||
|
||||
execute_process(COMMAND ${GIT_EXECUTABLE} log -1
|
||||
WORKING_DIRECTORY ${CMake_SOURCE_DIR}
|
||||
OUTPUT_VARIABLE git_log_output
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
message("=== output of 'git log -1' ===")
|
||||
message("${git_log_output}")
|
||||
message("=== end output ===")
|
||||
message("")
|
||||
|
||||
message("Copy/paste this command to reproduce:")
|
||||
message("cd \"${CMake_SOURCE_DIR}\" && \"${GIT_EXECUTABLE}\" status")
|
||||
message("")
|
||||
|
|
Loading…
Reference in New Issue