[Cmake-commits] CMake branch, next, updated. v2.8.2-1037-g2238a7d

David Cole david.cole at kitware.com
Fri Oct 8 15:57:13 EDT 2010


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  2238a7d825adeedf11a338617b12d2fdf4976b32 (commit)
       via  c81ad34e85fcc18fe8095b01e3b06d2cf1005155 (commit)
      from  6f45b2191b5a952ad675a5490fd73b893dc8e9a1 (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=2238a7d825adeedf11a338617b12d2fdf4976b32
commit 2238a7d825adeedf11a338617b12d2fdf4976b32
Merge: 6f45b21 c81ad34
Author:     David Cole <david.cole at kitware.com>
AuthorDate: Fri Oct 8 15:57:08 2010 -0400
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Fri Oct 8 15:57:08 2010 -0400

    Merge topic 'add-cse-contract-test' into next
    
    c81ad34 Add a contract test for building the CSE.


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c81ad34e85fcc18fe8095b01e3b06d2cf1005155
commit c81ad34e85fcc18fe8095b01e3b06d2cf1005155
Author:     David Cole <david.cole at kitware.com>
AuthorDate: Fri Oct 8 15:09:24 2010 -0400
Commit:     David Cole <david.cole at kitware.com>
CommitDate: Fri Oct 8 15:09:24 2010 -0400

    Add a contract test for building the CSE.
    
    To activate the CSE contract test on a given Linux
    machine's CMake dashboard, put
    
    CMAKE_CONTRACT_PROJECTS:STRING=cse-snapshot
    
    in the CMake dashboard's initial cache.
    
    The chosen snapshot does not generate subproject
    dependency info right now. That code was in a
    previous revision in the CSE's svn repo that
    apparently has not been merged into the present cse
    git repository master branch. After that is fixed up
    in the cse repo, we can update the tag here so that
    the snapshot built here can run a sub-project based
    dashboard script. For now, it runs as one big build
    step, building 'all'.

diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt
index 895cb2a..ed12c65 100644
--- a/Tests/CMakeLists.txt
+++ b/Tests/CMakeLists.txt
@@ -21,7 +21,11 @@ IF(DEFINED ENV{HOME} AND NOT CTEST_NO_TEST_HOME)
   FILE(MAKE_DIRECTORY "${TEST_HOME}")
   FILE(WRITE "${TEST_HOME}/.cvspass" ":pserver:anoncvs at www.cmake.org:/cvsroot/KWSys A\n")
   SET(TEST_HOME_ENV_CODE "# Fake a user home directory to avoid polluting the real one.
-SET(ENV{HOME} \"${TEST_HOME}\")")
+# But provide original ENV{HOME} value in ENV{CTEST_REAL_HOME} for tests that
+# need access to the real HOME directory.
+SET(ENV{CTEST_REAL_HOME} \"$ENV{HOME}\")
+SET(ENV{HOME} \"${TEST_HOME}\")
+")
 ENDIF()
 
 # Choose a default configuration for CTest tests.
diff --git a/Tests/Contracts/cse-snapshot/CMakeLists.txt b/Tests/Contracts/cse-snapshot/CMakeLists.txt
new file mode 100644
index 0000000..a2f5e9c
--- /dev/null
+++ b/Tests/Contracts/cse-snapshot/CMakeLists.txt
@@ -0,0 +1,100 @@
+cmake_minimum_required(VERSION 2.8)
+project(cse-snapshot)
+
+include(ExternalProject)
+
+include("${CMAKE_CURRENT_SOURCE_DIR}/LocalOverrides.cmake" OPTIONAL)
+include("${CMAKE_CURRENT_BINARY_DIR}/LocalOverrides.cmake" OPTIONAL)
+
+if(NOT DEFINED HOME)
+  if(DEFINED ENV{CTEST_REAL_HOME})
+    set(HOME "$ENV{CTEST_REAL_HOME}")
+  else()
+    set(HOME "$ENV{HOME}")
+  endif()
+endif()
+
+set(tag "510345e4360ac3b07ddb29e527207297f7cc6d89")
+string(SUBSTRING "${tag}" 0 8 shorttag)
+
+set(base_dir "${HOME}/.cmake/Contracts/${PROJECT_NAME}/${shorttag}")
+set(binary_dir "${base_dir}/build")
+set(script_dir "${base_dir}")
+set(source_dir "${base_dir}/src")
+
+if(NOT DEFINED BUILDNAME)
+  set(BUILDNAME "CMakeContract-${shorttag}")
+endif()
+
+if(NOT DEFINED SITE)
+  site_name(SITE)
+endif()
+
+if(NOT DEFINED PROCESSOR_COUNT)
+  # Unknown:
+  set(PROCESSOR_COUNT 0)
+
+  # Linux:
+  set(cpuinfo_file "/proc/cpuinfo")
+  if(EXISTS "${cpuinfo_file}")
+    file(STRINGS "${cpuinfo_file}" procs REGEX "^processor.: [0-9]+$")
+    list(LENGTH procs PROCESSOR_COUNT)
+  endif()
+
+  # Mac:
+  if(APPLE)
+    find_program(cmd_sysctl "sysctl")
+    if(cmd_sysctl)
+      execute_process(COMMAND ${cmd_sysctl} -n hw.ncpu
+        OUTPUT_VARIABLE PROCESSOR_COUNT
+        OUTPUT_STRIP_TRAILING_WHITESPACE)
+    endif()
+  endif()
+
+  # Windows:
+  if(WIN32)
+    set(PROCESSOR_COUNT "$ENV{NUMBER_OF_PROCESSORS}")
+  endif()
+endif()
+
+find_package(Git)
+if(NOT GIT_EXECUTABLE)
+  message(FATAL_ERROR "error: could not find git")
+  # adjust PATH to find git, or set GIT_EXECUTABLE in LocalOverrides.cmake
+endif()
+
+configure_file(
+  "${CMAKE_CURRENT_SOURCE_DIR}/Dashboard.cmake.in"
+  "${script_dir}/Dashboard.cmake"
+  @ONLY)
+
+# Source dir for this project exists outside the CMake build tree because it
+# is absolutely huge.
+#
+if(EXISTS "${source_dir}/.git")
+  # If it exists already, download is a complete no-op:
+  ExternalProject_Add(download-${PROJECT_NAME}
+    DOWNLOAD_COMMAND ""
+    CONFIGURE_COMMAND ""
+    BUILD_COMMAND ""
+    INSTALL_COMMAND ""
+  )
+else()
+  # If it does not yet exist, download clones the git repository:
+  ExternalProject_Add(download-${PROJECT_NAME}
+    SOURCE_DIR "${source_dir}"
+    GIT_REPOSITORY "git://public.kitware.com/cse.git"
+    GIT_TAG "${tag}"
+    CONFIGURE_COMMAND ""
+    BUILD_COMMAND ""
+    INSTALL_COMMAND ""
+  )
+endif()
+
+ExternalProject_Add(build-${PROJECT_NAME}
+  DOWNLOAD_COMMAND ""
+  CONFIGURE_COMMAND ""
+  BUILD_COMMAND ${CMAKE_CTEST_COMMAND} -S "${script_dir}/Dashboard.cmake"
+  INSTALL_COMMAND ""
+  DEPENDS download-${PROJECT_NAME}
+  )
diff --git a/Tests/Contracts/cse-snapshot/Dashboard.cmake.in b/Tests/Contracts/cse-snapshot/Dashboard.cmake.in
new file mode 100644
index 0000000..138eb3f
--- /dev/null
+++ b/Tests/Contracts/cse-snapshot/Dashboard.cmake.in
@@ -0,0 +1,76 @@
+# This "ctest -S" script may be configured to drive a nightly dashboard on any
+# Linux machine.
+#
+set(CTEST_BINARY_DIRECTORY "@binary_dir@")
+set(CTEST_BUILD_NAME "@BUILDNAME@")
+set(CTEST_SITE "@SITE@")
+set(CTEST_SOURCE_DIRECTORY "@source_dir@")
+set(PROCESSOR_COUNT "@PROCESSOR_COUNT@")
+
+# Assume a Linux build, with a make that supports -j. Modify this script if
+# assumption is ever invalid.
+#
+if(PROCESSOR_COUNT)
+  set(CTEST_BUILD_FLAGS "-j${PROCESSOR_COUNT}")
+endif()
+
+set(CTEST_CMAKE_GENERATOR "Unix Makefiles")
+set(CTEST_NOTES_FILES "${CTEST_SCRIPT_DIRECTORY}/${CTEST_SCRIPT_NAME}")
+
+message("Cleaning binary dir '${CTEST_BINARY_DIRECTORY}'")
+ctest_empty_binary_directory("${CTEST_BINARY_DIRECTORY}")
+
+# Intentionally no ctest_update step in this script. This script is run as a
+# "Contract" test on a CMake dashboard submission using the just-built ctest
+# as the driver. The download step in the Contract CMakeLists file takes care
+# of setting up the source tree before calling this ctest -S script. The idea
+# is that the source tree will be the same every day, so there should not be
+# an "update" step for this build.
+
+message("Configuring CSE in binary dir '${CTEST_BINARY_DIRECTORY}'")
+set_property(GLOBAL PROPERTY SubProject "CSE-toplevel")
+set_property(GLOBAL PROPERTY Label "CSE-toplevel")
+
+ctest_start("Experimental")
+
+set(CSE_TOPLEVEL_OPTIONS
+  -DEXTERNAL_PROJECT_DASHBOARD_BUILD:BOOL=ON
+  -DEXTERNAL_PROJECT_TESTS:BOOL=ON
+  -DCSE_INSTALL_PREFIX:PATH=${CTEST_BINARY_DIRECTORY}/built
+  -DCSE_SUBSET:STRING=ALL
+  -DCTEST_SITE:STRING=${CTEST_SITE}
+)
+
+ctest_configure(OPTIONS "${CSE_TOPLEVEL_OPTIONS}")
+
+# The configure step produces a file listing the CSE packages and dependencies.
+# This file also generates Project.xml and stores it in ${PROJECT_XML}.
+#
+set(subprojects "")
+if(EXISTS "${CTEST_BINARY_DIRECTORY}/CSEBuildtimeDepends.cmake")
+  message("Including CSEBuildtimeDepends.cmake")
+  include("${CTEST_BINARY_DIRECTORY}/CSEBuildtimeDepends.cmake")
+  set(subprojects ${CSE_ALL_SORTED})
+  message("Submitting Project.xml")
+  ctest_submit(FILES ${PROJECT_XML})
+endif()
+
+message("Submitting CSE configure results")
+ctest_submit()
+
+if(subprojects)
+  message("Building by looping over subprojects...")
+  foreach(subproject ${subprojects})
+    message("##########  ${subproject}  ##########")
+    set_property(GLOBAL PROPERTY SubProject "${subproject}")
+    set_property(GLOBAL PROPERTY Label "${subproject}")
+    ctest_build(TARGET "${subproject}" APPEND)
+    message("Submitting ${subproject} build results")
+    ctest_submit(PARTS build)
+  endforeach()
+else()
+  message("Building all...")
+  ctest_build(APPEND)
+  message("Submitting build results")
+  ctest_submit(PARTS build)
+endif()
diff --git a/Tests/Contracts/cse-snapshot/RunTest.cmake b/Tests/Contracts/cse-snapshot/RunTest.cmake
new file mode 100644
index 0000000..7eb6301
--- /dev/null
+++ b/Tests/Contracts/cse-snapshot/RunTest.cmake
@@ -0,0 +1,3 @@
+set(exe "$ENV{HOME}/.cmake/Contracts/cse-snapshot/510345e4/build/built/Release/git-1.6.5.2/bin/git")
+set(args help clone)
+set(cse-snapshot_RUN_TEST ${exe} ${args})

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

Summary of changes:
 Tests/CMakeLists.txt                            |    6 +-
 Tests/Contracts/cse-snapshot/CMakeLists.txt     |  100 +++++++++++++++++++++++
 Tests/Contracts/cse-snapshot/Dashboard.cmake.in |   76 +++++++++++++++++
 Tests/Contracts/cse-snapshot/RunTest.cmake      |    3 +
 4 files changed, 184 insertions(+), 1 deletions(-)
 create mode 100644 Tests/Contracts/cse-snapshot/CMakeLists.txt
 create mode 100644 Tests/Contracts/cse-snapshot/Dashboard.cmake.in
 create mode 100644 Tests/Contracts/cse-snapshot/RunTest.cmake


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list