CheckSourceTree test: read UpdateCommand from Update.xml.
If GIT_EXECUTABLE is not passed in, and is not available from DartConfiguration.tcl or CTestConfiguration.ini, then make one more last ditch attempt to get it from Update.xml, if there is an Update.xml. For dashboards that have successfully done a ctest_update call, there should be an Update.xml in the Testing subdir of the binary tree. Parse that file for the git executable recorded in the <UpdateCommand> element. And make this test pass on those RogueResearch dashboard machines!
This commit is contained in:
parent
b699509aee
commit
a77aa7065e
|
@ -149,26 +149,77 @@ if(is_git_checkout AND NOT GIT_EXECUTABLE)
|
|||
# from it:
|
||||
#
|
||||
if(ctest_ini_file)
|
||||
file(STRINGS "${ctest_ini_file}" lines REGEX "^GITCommand: (.*)$")
|
||||
string(REGEX REPLACE "^GITCommand: (.*)$" "\\1" exe "${lines}")
|
||||
file(STRINGS "${ctest_ini_file}" line REGEX "^GITCommand: (.*)$")
|
||||
string(REGEX REPLACE "^GITCommand: (.*)$" "\\1" line "${line}")
|
||||
if("${line}" MATCHES "^\"")
|
||||
string(REGEX REPLACE "^\"([^\"]+)\" *.*$" "\\1" line "${line}")
|
||||
else()
|
||||
string(REGEX REPLACE "^([^ ]+) *.*$" "\\1" line "${line}")
|
||||
endif()
|
||||
set(exe "${line}")
|
||||
if("${exe}" STREQUAL "GITCOMMAND-NOTFOUND")
|
||||
set(exe "")
|
||||
endif()
|
||||
if(exe)
|
||||
message("info: GIT_EXECUTABLE set by 'GITCommand:' from '${ctest_ini_file}'")
|
||||
endif()
|
||||
|
||||
if(NOT exe)
|
||||
file(STRINGS "${ctest_ini_file}" lines REGEX "^UpdateCommand: (.*)$")
|
||||
string(REGEX REPLACE "^UpdateCommand: (.*)$" "\\1" exe "${lines}")
|
||||
file(STRINGS "${ctest_ini_file}" line REGEX "^UpdateCommand: (.*)$")
|
||||
string(REGEX REPLACE "^UpdateCommand: (.*)$" "\\1" line "${line}")
|
||||
if("${line}" MATCHES "^\"")
|
||||
string(REGEX REPLACE "^\"([^\"]+)\" *.*$" "\\1" line "${line}")
|
||||
else()
|
||||
string(REGEX REPLACE "^([^ ]+) *.*$" "\\1" line "${line}")
|
||||
endif()
|
||||
set(exe "${line}")
|
||||
if("${exe}" STREQUAL "GITCOMMAND-NOTFOUND")
|
||||
set(exe "")
|
||||
endif()
|
||||
if(exe)
|
||||
message("info: GIT_EXECUTABLE set by 'UpdateCommand:' from '${ctest_ini_file}'")
|
||||
endif()
|
||||
endif()
|
||||
else()
|
||||
message("info: no DartConfiguration.tcl or CTestConfiguration.ini file...")
|
||||
endif()
|
||||
|
||||
# If we have still not grokked the exe, look in the Update.xml file to see
|
||||
# if we can parse it from there...
|
||||
#
|
||||
if(NOT exe)
|
||||
file(GLOB_RECURSE update_xml_file "${CMake_BINARY_DIR}/Testing/Update.xml")
|
||||
if(update_xml_file)
|
||||
file(STRINGS "${update_xml_file}" line
|
||||
REGEX "^.*<UpdateCommand>(.*)</UpdateCommand>$" LIMIT_COUNT 1)
|
||||
string(REPLACE ""\;" "\"" line "${line}")
|
||||
string(REGEX REPLACE "^.*<UpdateCommand>(.*)</UpdateCommand>$" "\\1" line "${line}")
|
||||
if("${line}" MATCHES "^\"")
|
||||
string(REGEX REPLACE "^\"([^\"]+)\" *.*$" "\\1" line "${line}")
|
||||
else()
|
||||
string(REGEX REPLACE "^([^ ]+) *.*$" "\\1" line "${line}")
|
||||
endif()
|
||||
if(line)
|
||||
set(exe "${line}")
|
||||
endif()
|
||||
if(exe)
|
||||
message("info: GIT_EXECUTABLE set by '<UpdateCommand>' from '${update_xml_file}'")
|
||||
endif()
|
||||
else()
|
||||
message("info: no Update.xml file...")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(exe)
|
||||
set(GIT_EXECUTABLE "${exe}")
|
||||
message("info: set GIT_EXECUTABLE to '${GIT_EXECUTABLE}' based on '${ctest_ini_file}'")
|
||||
message("GIT_EXECUTABLE='${GIT_EXECUTABLE}'")
|
||||
message("")
|
||||
|
||||
if(NOT EXISTS "${GIT_EXECUTABLE}")
|
||||
message(FATAL_ERROR "GIT_EXECUTABLE does not exist...")
|
||||
endif()
|
||||
else()
|
||||
message(FATAL_ERROR "could not determine GIT_EXECUTABLE based on '${ctest_ini_file}'...")
|
||||
message(FATAL_ERROR "could not determine GIT_EXECUTABLE...")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
|
Loading…
Reference in New Issue