Browse Source

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.
David Cole 15 years ago
parent
commit
4ee426b057
1 changed files with 54 additions and 0 deletions
  1. 54 0
      Tests/CMakeTests/CheckSourceTreeTest.cmake.in

+ 54 - 0
Tests/CMakeTests/CheckSourceTreeTest.cmake.in

@@ -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("")