[Cmake-commits] CMake branch, next, updated. v3.0.1-4921-g21b8ed4

Brad King brad.king at kitware.com
Mon Aug 18 11:21:18 EDT 2014


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".

The branch, next has been updated
       via  21b8ed478f842bde32a4562327effbc0b99e7792 (commit)
       via  653529ce55a9c33fa7378708793caac92a857794 (commit)
       via  39b5df2f3714c32d498fcb7c88f5bda456f75cb3 (commit)
      from  ca6712495cdd958bef3bbaf2bf0d5dabc4ce70d5 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=21b8ed478f842bde32a4562327effbc0b99e7792
commit 21b8ed478f842bde32a4562327effbc0b99e7792
Merge: ca67124 653529c
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Mon Aug 18 11:21:17 2014 -0400
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Mon Aug 18 11:21:17 2014 -0400

    Merge topic 'ctest_update_status_only' into next
    
    653529ce CTest: Allow / to be in the build name, and be consistent with the build name
    39b5df2f ctest_update: Add CTEST_UPDATE_VERSION_ONLY option to only note the version


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=653529ce55a9c33fa7378708793caac92a857794
commit 653529ce55a9c33fa7378708793caac92a857794
Author:     Bill Hoffman <bill.hoffman at kitware.com>
AuthorDate: Wed Aug 13 17:58:05 2014 -0400
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Mon Aug 18 11:22:18 2014 -0400

    CTest: Allow / to be in the build name, and be consistent with the build name
    
    Prior to this change / was not allowed in the build name. This was tested
    with a CDash server and worked. In addition the safe build name was not
    used everywhere. This caused mismatched build names to be in the xml
    files going to CDash which caused different rows to be created for the
    same build.

diff --git a/Source/CTest/cmCTestSubmitHandler.cxx b/Source/CTest/cmCTestSubmitHandler.cxx
index 109905c..06fcb75 100644
--- a/Source/CTest/cmCTestSubmitHandler.cxx
+++ b/Source/CTest/cmCTestSubmitHandler.cxx
@@ -1479,8 +1479,10 @@ int cmCTestSubmitHandler::ProcessHandler()
 //----------------------------------------------------------------------------
 std::string cmCTestSubmitHandler::GetSubmitResultsPrefix()
 {
+  std::string buildname = cmCTest::SafeBuildIdField(
+    this->CTest->GetCTestConfiguration("BuildName"));
   std::string name = this->CTest->GetCTestConfiguration("Site") +
-    "___" + this->CTest->GetCTestConfiguration("BuildName") +
+    "___" + buildname +
     "___" + this->CTest->GetCurrentTag() + "-" +
     this->CTest->GetTestModelString() + "___XML___";
   return name;
diff --git a/Source/CTest/cmCTestUpdateHandler.cxx b/Source/CTest/cmCTestUpdateHandler.cxx
index fda61ea..68f5fe1 100644
--- a/Source/CTest/cmCTestUpdateHandler.cxx
+++ b/Source/CTest/cmCTestUpdateHandler.cxx
@@ -258,12 +258,13 @@ int cmCTestUpdateHandler::ProcessHandler()
   double elapsed_time_start = cmSystemTools::GetTime();
 
   bool updated = vc->Update();
-
+  std::string buildname = cmCTest::SafeBuildIdField(
+    this->CTest->GetCTestConfiguration("BuildName"));
   os << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
     << "<Update mode=\"Client\" Generator=\"ctest-"
     << cmVersion::GetCMakeVersion() << "\">\n"
     << "\t<Site>" << this->CTest->GetCTestConfiguration("Site") << "</Site>\n"
-    << "\t<BuildName>" << this->CTest->GetCTestConfiguration("BuildName")
+    << "\t<BuildName>" << buildname
     << "</BuildName>\n"
     << "\t<BuildStamp>" << this->CTest->GetCurrentTag() << "-"
     << this->CTest->GetTestModelString() << "</BuildStamp>" << std::endl;
diff --git a/Source/CTest/cmCTestUploadHandler.cxx b/Source/CTest/cmCTestUploadHandler.cxx
index 4c3f81b..e33c387 100644
--- a/Source/CTest/cmCTestUploadHandler.cxx
+++ b/Source/CTest/cmCTestUploadHandler.cxx
@@ -44,14 +44,15 @@ int cmCTestUploadHandler::ProcessHandler()
       "Cannot open Upload.xml file" << std::endl);
     return -1;
     }
-
+  std::string buildname = cmCTest::SafeBuildIdField(
+    this->CTest->GetCTestConfiguration("BuildName"));
   cmCTest::SetOfStrings::const_iterator it;
   ofs << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
      << "<?xml-stylesheet type=\"text/xsl\" "
     "href=\"Dart/Source/Server/XSL/Build.xsl "
     "<file:///Dart/Source/Server/XSL/Build.xsl> \"?>\n"
      << "<Site BuildName=\""
-     << this->CTest->GetCTestConfiguration("BuildName")
+     << buildname
      << "\" BuildStamp=\""
      << this->CTest->GetCurrentTag() << "-"
      << this->CTest->GetTestModelString() << "\" Name=\""
diff --git a/Source/cmCTest.cxx b/Source/cmCTest.cxx
index b28f3b5..a7905a4 100644
--- a/Source/cmCTest.cxx
+++ b/Source/cmCTest.cxx
@@ -488,9 +488,11 @@ int cmCTest::Initialize(const char* binary_dir, cmCTestStartCommand* command)
     {
     cmCTestLog(this, DEBUG, "Here: " << __LINE__ << std::endl);
     cmCTestLog(this, OUTPUT,
-      "   Site: " << this->GetCTestConfiguration("Site") << std::endl
-      << "   Build name: " << this->GetCTestConfiguration("BuildName")
-      << std::endl);
+               "   Site: " << this->GetCTestConfiguration("Site") << std::endl
+               << "   Build name: "
+               << cmCTest::SafeBuildIdField(
+                 this->GetCTestConfiguration("BuildName"))
+               << std::endl);
     cmCTestLog(this, DEBUG, "Produce XML is on" << std::endl);
     if ( this->TestModel == cmCTest::NIGHTLY &&
          this->GetCTestConfiguration("NightlyStartTime").empty() )
@@ -1441,7 +1443,7 @@ std::string cmCTest::SafeBuildIdField(const std::string& value)
     // Disallow non-filename and non-space whitespace characters.
     // If they occur, replace them with ""
     //
-    const char *disallowed = "\\/:*?\"<>|\n\r\t\f\v";
+    const char *disallowed = "\\:*?\"<>|\n\r\t\f\v";
 
     if (safevalue.find_first_of(disallowed) != value.npos)
       {
@@ -1582,12 +1584,14 @@ void cmCTest::EndXML(std::ostream& ostr)
 int cmCTest::GenerateCTestNotesOutput(std::ostream& os,
   const cmCTest::VectorOfStrings& files)
 {
+  std::string buildname = cmCTest::SafeBuildIdField(
+    this->GetCTestConfiguration("BuildName"));
   cmCTest::VectorOfStrings::const_iterator it;
   os << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
      << "<?xml-stylesheet type=\"text/xsl\" "
     "href=\"Dart/Source/Server/XSL/Build.xsl "
     "<file:///Dart/Source/Server/XSL/Build.xsl> \"?>\n"
-     << "<Site BuildName=\"" << this->GetCTestConfiguration("BuildName")
+     << "<Site BuildName=\"" << buildname
      << "\" BuildStamp=\""
      << this->CurrentTag << "-" << this->GetTestModelString() << "\" Name=\""
      << this->GetCTestConfiguration("Site") << "\" Generator=\"ctest"

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=39b5df2f3714c32d498fcb7c88f5bda456f75cb3
commit 39b5df2f3714c32d498fcb7c88f5bda456f75cb3
Author:     Bill Hoffman <bill.hoffman at kitware.com>
AuthorDate: Wed Aug 13 13:45:08 2014 -0400
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Mon Aug 18 11:21:36 2014 -0400

    ctest_update: Add CTEST_UPDATE_VERSION_ONLY option to only note the version
    
    This allows ctest_update to get the current version without actually
    changing the repository.  This is useful when using Jenkins or an
    external project to update the source to a specific version, but you
    still want the current version to show up in CDash.

diff --git a/Help/manual/cmake-variables.7.rst b/Help/manual/cmake-variables.7.rst
index 05a7b33..43c2af3 100644
--- a/Help/manual/cmake-variables.7.rst
+++ b/Help/manual/cmake-variables.7.rst
@@ -360,6 +360,7 @@ Variables for CTest
    /variable/CTEST_TRIGGER_SITE
    /variable/CTEST_UPDATE_COMMAND
    /variable/CTEST_UPDATE_OPTIONS
+   /variable/CTEST_UPDATE_VERSION_ONLY
    /variable/CTEST_USE_LAUNCHERS
 
 Variables for CPack
diff --git a/Help/manual/ctest.1.rst b/Help/manual/ctest.1.rst
index a57a8f0..52e4beb 100644
--- a/Help/manual/ctest.1.rst
+++ b/Help/manual/ctest.1.rst
@@ -668,6 +668,15 @@ Configuration settings to specify the version control tool include:
   * :module:`CTest` module variable: ``UPDATE_TYPE`` if set,
     else ``CTEST_UPDATE_TYPE``
 
+``UpdateVersionOnly``
+  Specify that you want the version control update command to only
+  discover the current version that is checked out, and not to update
+  to a different version.
+
+  * `CTest Script`_ variable: :variable:`CTEST_UPDATE_VERSION_ONLY`
+
+
+
 Additional configuration settings include:
 
 ``NightlyStartTime``
diff --git a/Help/variable/CTEST_UPDATE_VERSION_ONLY.rst b/Help/variable/CTEST_UPDATE_VERSION_ONLY.rst
new file mode 100644
index 0000000..e646e6e
--- /dev/null
+++ b/Help/variable/CTEST_UPDATE_VERSION_ONLY.rst
@@ -0,0 +1,5 @@
+CTEST_UPDATE_VERSION_ONLY
+-------------------------
+
+Specify the CTest ``UpdateVersionOnly`` setting
+in a :manual:`ctest(1)` dashboard client script.
diff --git a/Modules/DartConfiguration.tcl.in b/Modules/DartConfiguration.tcl.in
index 0420882..86049d0 100644
--- a/Modules/DartConfiguration.tcl.in
+++ b/Modules/DartConfiguration.tcl.in
@@ -37,6 +37,9 @@ ConfigureCommand: "@CMAKE_COMMAND@" "@PROJECT_SOURCE_DIR@"
 MakeCommand: @MAKECOMMAND@
 DefaultCTestConfigurationType: @DEFAULT_CTEST_CONFIGURATION_TYPE@
 
+# version control
+UpdateVersionOnly: @CTEST_UPDATE_VERSION_ONLY@
+
 # CVS options
 # Default is "-d -P -A"
 CVSCommand: @CVSCOMMAND@
diff --git a/Source/CTest/cmCTestUpdateCommand.cxx b/Source/CTest/cmCTestUpdateCommand.cxx
index 5408a8a..f87466d 100644
--- a/Source/CTest/cmCTestUpdateCommand.cxx
+++ b/Source/CTest/cmCTestUpdateCommand.cxx
@@ -56,6 +56,8 @@ cmCTestGenericHandler* cmCTestUpdateCommand::InitializeHandler()
   this->CTest->SetCTestConfigurationFromCMakeVariable(this->Makefile,
     "GITUpdateCustom", "CTEST_GIT_UPDATE_CUSTOM");
   this->CTest->SetCTestConfigurationFromCMakeVariable(this->Makefile,
+    "UpdateVersionOnly", "CTEST_UPDATE_VERSION_ONLY");
+  this->CTest->SetCTestConfigurationFromCMakeVariable(this->Makefile,
     "HGCommand", "CTEST_HG_COMMAND");
   this->CTest->SetCTestConfigurationFromCMakeVariable(this->Makefile,
     "HGUpdateOptions", "CTEST_HG_UPDATE_OPTIONS");
diff --git a/Source/CTest/cmCTestVC.cxx b/Source/CTest/cmCTestVC.cxx
index f89fa2b..15f796f 100644
--- a/Source/CTest/cmCTestVC.cxx
+++ b/Source/CTest/cmCTestVC.cxx
@@ -166,10 +166,17 @@ void cmCTestVC::CleanupImpl()
 //----------------------------------------------------------------------------
 bool cmCTestVC::Update()
 {
-  this->NoteOldRevision();
-  this->Log << "--- Begin Update ---\n";
-  bool result = this->UpdateImpl();
-  this->Log << "--- End Update ---\n";
+  bool result = true;
+  // if update version only is on then do not actually update,
+  // just note the current version and finish
+  if(!cmSystemTools::IsOn(
+       this->CTest->GetCTestConfiguration("UpdateVersionOnly").c_str()))
+    {
+    this->NoteOldRevision();
+    this->Log << "--- Begin Update ---\n";
+    result = this->UpdateImpl();
+    this->Log << "--- End Update ---\n";
+    }
   this->NoteNewRevision();
   return result;
 }
diff --git a/Tests/CTestUpdateCommon.cmake b/Tests/CTestUpdateCommon.cmake
index 857c6f5..97153f0 100644
--- a/Tests/CTestUpdateCommon.cmake
+++ b/Tests/CTestUpdateCommon.cmake
@@ -219,6 +219,36 @@ function(run_dashboard_command_line bin_dir)
 endfunction()
 
 #-----------------------------------------------------------------------------
+# Function to find the Update.xml file and make sure
+# it only has the Revision in it and no updates
+function(check_no_update bin_dir)
+  set(PATTERN ${TOP}/${bin_dir}/Testing/*/Update.xml)
+  file(GLOB UPDATE_XML_FILE RELATIVE ${TOP} ${PATTERN})
+  string(REGEX REPLACE "//Update.xml$" "/Update.xml"
+    UPDATE_XML_FILE "${UPDATE_XML_FILE}")
+  message(" found ${UPDATE_XML_FILE}")
+  set(rev_regex "Revision|PriorRevision")
+  file(STRINGS ${TOP}/${UPDATE_XML_FILE} UPDATE_XML_REVISIONS
+    REGEX "^\t<(${rev_regex})>[^<\n]+</(${rev_regex})>$"
+    )
+  set(found_revisons FALSE)
+  foreach(r IN LISTS UPDATE_XML_REVISIONS)
+    if("${r}" MATCHES "PriorRevision")
+      message(FATAL_ERROR "Found PriorRevision in no update test")
+    endif()
+    if("${r}" MATCHES "<Revision>")
+      set(found_revisons TRUE)
+    endif()
+  endforeach()
+  if(found_revisons)
+    message(" found <Revision> in no update test")
+  else()
+    message(FATAL_ERROR " missing <Revision> in no update test")
+  endif()
+endfunction()
+
+
+#-----------------------------------------------------------------------------
 # Function to run the dashboard through a script
 function(run_dashboard_script bin_dir)
   run_child(
@@ -228,13 +258,17 @@ function(run_dashboard_script bin_dir)
 
   # Verify the updates reported by CTest.
   list(APPEND UPDATE_MAYBE Updated{subdir} Updated{CTestConfig.cmake})
-  check_updates(${bin_dir}
-    Updated{foo.txt}
-    Updated{bar.txt}
-    Updated{zot.txt}
-    Updated{subdir/foo.txt}
-    Updated{subdir/bar.txt}
-    )
+  if(NO_UPDATE)
+    check_no_update(${bin_dir})
+  else()
+    check_updates(${bin_dir}
+      Updated{foo.txt}
+      Updated{bar.txt}
+      Updated{zot.txt}
+      Updated{subdir/foo.txt}
+      Updated{subdir/bar.txt}
+      )
+  endif()
 endfunction()
 
 #-----------------------------------------------------------------------------
diff --git a/Tests/CTestUpdateGIT.cmake.in b/Tests/CTestUpdateGIT.cmake.in
index f6939de..41b732b 100644
--- a/Tests/CTestUpdateGIT.cmake.in
+++ b/Tests/CTestUpdateGIT.cmake.in
@@ -317,3 +317,20 @@ set(CTEST_GIT_UPDATE_CUSTOM \${CTEST_GIT_COMMAND} pull origin master)
 
 # Run the dashboard script with CTest.
 run_dashboard_script(dash-binary-custom)
+
+
+rewind_source(dash-source)
+
+#-----------------------------------------------------------------------------
+# Test no update with a dashboard script.
+message("Running CTest Dashboard Script (No update)...")
+
+create_dashboard_script(dash-binary-no-update
+  "# git command configuration
+set(CTEST_GIT_COMMAND \"${GIT}\")
+set(CTEST_UPDATE_VERSION_ONLY TRUE)
+")
+
+# Run the dashboard script with CTest.
+set(NO_UPDATE 1)
+run_dashboard_script(dash-binary-no-update)

-----------------------------------------------------------------------

Summary of changes:


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list