[Cmake-commits] CMake branch, dashboard, updated. 7be0d8260ca2ad5097a34ab2e6835965d07cf27b

Brad King brad.king at kitware.com
Wed Dec 14 11:26:37 EST 2016


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, dashboard has been updated
       via  7be0d8260ca2ad5097a34ab2e6835965d07cf27b (commit)
       via  b512a387b24803c791c0fc21eaf5e01ec400401c (commit)
      from  e92ba4123b610e11f39e5d9d08637cfc496dd8c0 (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 -----------------------------------------------------------------
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=7be0d8260ca2ad5097a34ab2e6835965d07cf27b
commit 7be0d8260ca2ad5097a34ab2e6835965d07cf27b
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Wed Dec 14 11:26:01 2016 -0500
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Wed Dec 14 11:26:01 2016 -0500

    kwsys_common: Implement nightly testing for stage-based workflow
    
    KWSys development is moving to a Fork & Merge Request model where we
    maintain a "stage" for each target branch (e.g. master) that consists of
    the target branch plus some set of MRs merged on top of it.  The job of
    this testing script is now to test one of the integration branches or
    one of their stage branches.  Add infrastructure to create or convert
    the local test repository such that it has tracking branches for each
    stage branch.  Select one to check out and follow for testing.

diff --git a/cmake_common.cmake b/cmake_common.cmake
index ff91ad1..9ed0ccf 100644
--- a/cmake_common.cmake
+++ b/cmake_common.cmake
@@ -429,5 +429,12 @@ if(EXISTS ${cmake_common_dir}/kwsys_common.cmake
   endforeach()
   unset(CTEST_CHECKOUT_COMMAND)
   unset(CTEST_CONFIGURE_COMMAND)
+  if(NOT DEFINED KWSys_git_branch)
+    if(dashboard_git_branch STREQUAL "master")
+      set(KWSys_git_branch master)
+    else()
+      set(KWSys_git_branch stage/master/nightly/latest)
+    endif()
+  endif()
   include(${cmake_common_dir}/kwsys_common.cmake)
 endif()
diff --git a/kwsys_common.cmake b/kwsys_common.cmake
index 512ab84..b7f9f2f 100644
--- a/kwsys_common.cmake
+++ b/kwsys_common.cmake
@@ -127,7 +127,7 @@ endif()
 
 # Select Git source to use.
 if(NOT DEFINED KWSys_git_repo)
-  set(KWSys_git_repo "git://public.kitware.com/KWSys.git")
+  set(KWSys_git_repo "https://gitlab.kitware.com/utils/kwsys.git")
 endif()
 if(NOT DEFINED KWSys_git_branch)
   set(KWSys_git_branch master)
@@ -221,6 +221,12 @@ if(EXISTS ${CTEST_SOURCE_DIRECTORY})
   endif()
 endif()
 
+# Upstream non-head refs to treat like branches.
+set(KWSys_git_extra_branches
+  stage/master/head            # topics staged on master continuously
+  stage/master/nightly/latest  # updated nightly to stage/master/head
+  )
+
 # Support initial checkout if necessary.
 if(NOT EXISTS "${CTEST_SOURCE_DIRECTORY}"
     AND NOT DEFINED CTEST_CHECKOUT_COMMAND)
@@ -229,7 +235,7 @@ if(NOT EXISTS "${CTEST_SOURCE_DIRECTORY}"
   set(ctest_checkout_script ${CTEST_DASHBOARD_ROOT}/${_name}-init.cmake)
   file(WRITE ${ctest_checkout_script} "# git repo init script for ${_name}
 execute_process(
-  COMMAND \"${CTEST_GIT_COMMAND}\" clone -n -b ${KWSys_git_branch} -- \"${KWSys_git_repo}\"
+  COMMAND \"${CTEST_GIT_COMMAND}\" clone -n -- \"${KWSys_git_repo}\"
           \"${CTEST_SOURCE_DIRECTORY}\"
   )
 if(EXISTS \"${CTEST_SOURCE_DIRECTORY}/.git\")
@@ -237,23 +243,74 @@ if(EXISTS \"${CTEST_SOURCE_DIRECTORY}/.git\")
     COMMAND \"${CTEST_GIT_COMMAND}\" config core.autocrlf ${dashboard_git_crlf}
     WORKING_DIRECTORY \"${CTEST_SOURCE_DIRECTORY}\"
     )
+  foreach(b ${KWSys_git_extra_branches})
+    execute_process(
+      COMMAND \"${CTEST_GIT_COMMAND}\" config --add remote.origin.fetch +refs/\${b}:refs/remotes/origin/\${b}
+      WORKING_DIRECTORY \"${CTEST_SOURCE_DIRECTORY}\"
+      )
+  endforeach()
+  execute_process(
+    COMMAND \"${CTEST_GIT_COMMAND}\" fetch
+    WORKING_DIRECTORY \"${CTEST_SOURCE_DIRECTORY}\"
+    )
+  foreach(b ${KWSys_git_extra_branches})
+    execute_process(
+      COMMAND \"${CTEST_GIT_COMMAND}\" branch \${b} origin/\${b}
+      WORKING_DIRECTORY \"${CTEST_SOURCE_DIRECTORY}\"
+      )
+    execute_process(
+      COMMAND \"${CTEST_GIT_COMMAND}\" config branch.\${b}.remote origin
+      WORKING_DIRECTORY \"${CTEST_SOURCE_DIRECTORY}\"
+      )
+    execute_process(
+      COMMAND \"${CTEST_GIT_COMMAND}\" config branch.\${b}.merge refs/\${b}
+      WORKING_DIRECTORY \"${CTEST_SOURCE_DIRECTORY}\"
+      )
+  endforeach()
   execute_process(
-    COMMAND \"${CTEST_GIT_COMMAND}\" checkout
+    COMMAND \"${CTEST_GIT_COMMAND}\" checkout ${KWSys_git_branch}
     WORKING_DIRECTORY \"${CTEST_SOURCE_DIRECTORY}\"
     )
 endif()
 ")
   set(CTEST_CHECKOUT_COMMAND "\"${CMAKE_COMMAND}\" -P \"${ctest_checkout_script}\"")
 elseif(EXISTS "${CTEST_SOURCE_DIRECTORY}/.git")
-  # Start on the branch to be tested.
-  dashboard_git(rev-parse --verify -q refs/heads/${KWSys_git_branch})
-  if(dashboard_git_failed)
-    dashboard_git(checkout -b ${KWSys_git_branch} origin/${KWSys_git_branch})
-  else()
-    dashboard_git(checkout ${KWSys_git_branch})
+  # Upstream URL.
+  dashboard_git(config --get remote.origin.url)
+  if(NOT dashboard_git_output STREQUAL "${KWSys_git_repo}")
+    dashboard_git(config remote.origin.url "${KWSys_git_repo}")
   endif()
-  if(dashboard_git_failed)
-    message(FATAL_ERROR "Failed to checkout branch ${KWSys_git_branch}:\n${dashboard_git_output}")
+
+  # Local refs for remote branches.
+  set(added_branches 0)
+  foreach(b ${KWSys_git_extra_branches})
+    dashboard_git(rev-parse --verify -q refs/remotes/origin/${b})
+    if(dashboard_git_failed)
+      dashboard_git(config --add remote.origin.fetch +refs/${b}:refs/remotes/origin/${b})
+      set(added_branches 1)
+    endif()
+  endforeach()
+  if(added_branches)
+    dashboard_git(fetch origin)
+  endif()
+
+  # Local branches.
+  foreach(b ${KWSys_git_extra_branches})
+    dashboard_git(rev-parse --verify -q refs/heads/${b})
+    if(dashboard_git_failed)
+      dashboard_git(branch ${b} origin/${b})
+      dashboard_git(config branch.${b}.remote origin)
+      dashboard_git(config branch.${b}.merge refs/${b})
+    endif()
+  endforeach()
+
+  # Local checkout.
+  dashboard_git(symbolic-ref HEAD)
+  if(NOT dashboard_git_output STREQUAL "${KWSys_git_branch}")
+    dashboard_git(checkout ${KWSys_git_branch})
+    if(dashboard_git_failed)
+      message(FATAL_ERROR "Failed to checkout branch ${KWSys_git_branch}:\n${dashboard_git_output}")
+    endif()
   endif()
 endif()
 

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b512a387b24803c791c0fc21eaf5e01ec400401c
commit b512a387b24803c791c0fc21eaf5e01ec400401c
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Wed Dec 14 11:25:27 2016 -0500
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Wed Dec 14 11:25:27 2016 -0500

    kwsys_common: Revise per-topic testing infrastructure
    
    KWSys development is moving to a Fork & Merge Request model
    where per-topic testing will be managed by a `refs/test-topics/`
    namespace on the upstream repository.  Convert our topic testing
    infrastructure to fetch this set of refs and test each one.

diff --git a/kwsys_common.cmake b/kwsys_common.cmake
index 8050f2c..512ab84 100644
--- a/kwsys_common.cmake
+++ b/kwsys_common.cmake
@@ -357,50 +357,32 @@ set(dashboard_build_name ${CTEST_BUILD_NAME})
 dashboard_git(branch -f experimental)
 dashboard_git(checkout experimental)
 
-# Download the topics file.
-get_filename_component(_name "${CTEST_SOURCE_DIRECTORY}" NAME)
-set(topics_file ${CTEST_DASHBOARD_ROOT}/${_name}-topics.txt)
-file(DOWNLOAD "${KWSys_topics_url}" "${topics_file}" INACTIVITY_TIMEOUT 5 STATUS status LOG log)
-list(GET status 0 failed)
-if(failed)
-  message(WARNING "Failed to download\n ${KWSys_topics_url}\n${status}\n${log}")
-  return()
-endif()
+# Fetch the test topic branches.
+dashboard_git(fetch origin --prune "+refs/test-topics/*:refs/test-topics/*")
 
-# Parse the topics file.
-set(topic_heads "")
-set(topic_refs "")
-file(STRINGS "${topics_file}" topic_lines LIMIT_COUNT 50 LIMIT_INPUT 65536)
+set(topic_names "")
+dashboard_git(for-each-ref refs/test-topics/ "--format=%(refname)")
+string(REPLACE "\n" ";" topic_lines "${dashboard_git_output}")
 foreach(line ${topic_lines})
-  if("${line}" MATCHES "^([0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]+) ([A-Za-z0-9/._-]+) ([A-Za-z0-9/._-]+)$")
-    set(head ${CMAKE_MATCH_1})
-    set(ref_${head} ${CMAKE_MATCH_2})
-    set(topic_${head} ${CMAKE_MATCH_3})
-    list(APPEND topic_heads ${head})
-    list(APPEND topic_refs ${ref_${head}})
+  if("${line}" MATCHES "^refs/test-topics/([A-Za-z0-9/._-]+)$")
+    list(APPEND topic_names ${CMAKE_MATCH_1})
   else()
     message(WARNING "Skipping unrecognized line:\n ${line}\n")
   endif()
 endforeach()
 
-# Fetch the topics.
-dashboard_git(fetch ${KWSys_topics_repo} ${topic_refs})
-if(dashboard_git_failed)
-  message(WARNING "Failed to fetch topics:\n${dashboard_git_output}\n")
-endif()
-
-# Run an experimental build for each topic head.
-foreach(head ${topic_heads})
+# Run an experimental build for each test topic branch.
+foreach(topic ${topic_names})
+  message(STATUS "Testing topic '${topic}'")
+  set(topic_ref refs/test-topics/${topic})
   dashboard_git(reset --hard ${KWSys_git_branch})
-
-  dashboard_git(rev-parse --verify -q --short=5 ${head})
+  dashboard_git(rev-parse --verify -q --short=5 ${topic_ref})
   if(dashboard_git_failed)
-    message(WARNING "Skipping commit '${head}' that does not exist!")
+    message(WARNING "Skipping topic '${topic}' that disappeared!")
   else()
-    set(topic ${topic_${head}})
     set(short ${dashboard_git_output})
     set(CTEST_BUILD_NAME ${topic}-g${short}+${dashboard_build_name})
-    set(CTEST_GIT_UPDATE_CUSTOM ${CTEST_GIT_COMMAND} reset --hard ${head})
+    set(CTEST_GIT_UPDATE_CUSTOM ${CTEST_GIT_COMMAND} reset --hard ${topic_ref})
     dashboard_run_KWSys()
   endif()
 endforeach()

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

Summary of changes:
 cmake_common.cmake |    7 +++
 kwsys_common.cmake |  125 ++++++++++++++++++++++++++++++++++------------------
 2 files changed, 89 insertions(+), 43 deletions(-)


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list