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  562a7b835a999921cc395c76fde720f94d0547a6 (commit)
       via  aba5cec6b262c392bfd9f94176a80113d1315917 (commit)
       via  3f606fa7d06a209cc2cd3a97afb84951d1c4c033 (commit)
       via  c0b749cf62a2e985c2b1f94ff919107dbd697b2c (commit)
       via  917da5d02766e875ec63eca09eb52b789114674c (commit)
      from  ebac33c84bb11f9fede15a5fc2d929ab5355331d (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=562a7b835a999921cc395c76fde720f94d0547a6
commit 562a7b835a999921cc395c76fde720f94d0547a6
Merge: ebac33c aba5cec
Author:     Daniele E. Domenichelli <daniele.domeniche...@gmail.com>
AuthorDate: Thu Nov 6 09:13:58 2014 -0500
Commit:     CMake Topic Stage <kwro...@kitware.com>
CommitDate: Thu Nov 6 09:13:58 2014 -0500

    Merge topic 'ExternalProject_UPDATE_DISCONNECTED' into next
    
    aba5cec6 ExternalProject: Add unit tests for UPDATE_DISCONNECTED
    3f606fa7 ExternalProject: Add UPDATE_DISCONNECTED option
    c0b749cf ExternalProject: Always add a command to a step
    917da5d0 CMake Nightly Date Stamp


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=aba5cec6b262c392bfd9f94176a80113d1315917
commit aba5cec6b262c392bfd9f94176a80113d1315917
Author:     Daniele E. Domenichelli <daniele.domeniche...@iit.it>
AuthorDate: Wed Nov 5 00:31:43 2014 +0100
Commit:     Daniele E. Domenichelli <daniele.domeniche...@iit.it>
CommitDate: Thu Nov 6 15:09:44 2014 +0100

    ExternalProject: Add unit tests for UPDATE_DISCONNECTED

diff --git a/Tests/ExternalProjectUpdate/CMakeLists.txt 
b/Tests/ExternalProjectUpdate/CMakeLists.txt
index 582b0a8..fbb3388 100644
--- a/Tests/ExternalProjectUpdate/CMakeLists.txt
+++ b/Tests/ExternalProjectUpdate/CMakeLists.txt
@@ -72,6 +72,18 @@ if(do_git_tests)
   )
   ExternalProject_Add_StepDependencies(${proj} download 
SetupLocalGITRepository)
   set_property(TARGET ${proj} PROPERTY FOLDER "GIT")
+
+  set(proj TutorialStep2-GIT)
+  ExternalProject_Add(${proj}
+    GIT_REPOSITORY "${local_git_repo}"
+    GIT_TAG ${TEST_GIT_TAG}
+    CMAKE_GENERATOR "${CMAKE_GENERATOR}"
+    CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
+    INSTALL_COMMAND ""
+    UPDATE_DISCONNECTED 1
+  )
+  ExternalProject_Add_StepDependencies(${proj} download 
SetupLocalGITRepository)
+  set_property(TARGET ${proj} PROPERTY FOLDER "GIT")
 endif()
 
 
diff --git a/Tests/ExternalProjectUpdate/ExternalProjectUpdateTest.cmake 
b/Tests/ExternalProjectUpdate/ExternalProjectUpdateTest.cmake
index 6c7bcfe..7065f36 100644
--- a/Tests/ExternalProjectUpdate/ExternalProjectUpdateTest.cmake
+++ b/Tests/ExternalProjectUpdate/ExternalProjectUpdateTest.cmake
@@ -59,6 +59,102 @@ was expected."
   if( EXISTS ${FETCH_HEAD_file} AND NOT ${fetch_expected})
     message( FATAL_ERROR "Fetch DID occur when it was not expected.")
   endif()
+
+  message( STATUS "Checking ExternalProjectUpdate to tag: ${desired_tag} 
(disconnected)" )
+
+  # Remove the FETCH_HEAD file, so we can check if it gets replaced with a 'git
+  # fetch'.
+  set( FETCH_HEAD_file 
${ExternalProjectUpdate_BINARY_DIR}/CMakeExternals/Source/TutorialStep2-GIT/.git/FETCH_HEAD
 )
+  file( REMOVE ${FETCH_HEAD_file} )
+
+  # Check initial SHA
+  execute_process(COMMAND ${GIT_EXECUTABLE}
+    rev-list --max-count=1 HEAD
+    WORKING_DIRECTORY 
${ExternalProjectUpdate_BINARY_DIR}/CMakeExternals/Source/TutorialStep2-GIT
+    RESULT_VARIABLE error_code
+    OUTPUT_VARIABLE initial_sha
+    OUTPUT_STRIP_TRAILING_WHITESPACE
+    )
+
+  # Configure
+  execute_process(COMMAND ${CMAKE_COMMAND}
+    -G ${CMAKE_GENERATOR} -T "${CMAKE_GENERATOR_TOOLSET}"
+    -A "${CMAKE_GENERATOR_PLATFORM}"
+    -DTEST_GIT_TAG:STRING=${desired_tag}
+    ${ExternalProjectUpdate_SOURCE_DIR}
+    WORKING_DIRECTORY ${ExternalProjectUpdate_BINARY_DIR}
+    RESULT_VARIABLE error_code
+    )
+  if(error_code)
+    message(FATAL_ERROR "Could not configure the project.")
+  endif()
+
+  # Build
+  execute_process(COMMAND ${CMAKE_COMMAND}
+    --build ${ExternalProjectUpdate_BINARY_DIR}
+    RESULT_VARIABLE error_code
+    )
+  if(error_code)
+    message(FATAL_ERROR "Could not build the project.")
+  endif()
+
+  if( EXISTS ${FETCH_HEAD_file} )
+    message( FATAL_ERROR "Fetch occured when it was not expected.")
+  endif()
+
+  # Check the resulting SHA
+  execute_process(COMMAND ${GIT_EXECUTABLE}
+    rev-list --max-count=1 HEAD
+    WORKING_DIRECTORY 
${ExternalProjectUpdate_BINARY_DIR}/CMakeExternals/Source/TutorialStep2-GIT
+    RESULT_VARIABLE error_code
+    OUTPUT_VARIABLE tag_sha
+    OUTPUT_STRIP_TRAILING_WHITESPACE
+    )
+  if(error_code)
+    message(FATAL_ERROR "Could not check the sha.")
+  endif()
+
+  if(NOT (${tag_sha} STREQUAL ${initial_sha}))
+    message(FATAL_ERROR "Update occurred when it was not expected.")
+  endif()
+
+  # Update
+  execute_process(COMMAND ${CMAKE_COMMAND}
+    --build ${ExternalProjectUpdate_BINARY_DIR}
+    --target TutorialStep2-GIT-update
+    RESULT_VARIABLE error_code
+    )
+  if(error_code)
+    message(FATAL_ERROR "Could not build the project.")
+  endif()
+
+  # Check the resulting SHA
+  execute_process(COMMAND ${GIT_EXECUTABLE}
+    rev-list --max-count=1 HEAD
+    WORKING_DIRECTORY 
${ExternalProjectUpdate_BINARY_DIR}/CMakeExternals/Source/TutorialStep2-GIT
+    RESULT_VARIABLE error_code
+    OUTPUT_VARIABLE tag_sha
+    OUTPUT_STRIP_TRAILING_WHITESPACE
+    )
+  if(error_code)
+    message(FATAL_ERROR "Could not check the sha.")
+  endif()
+
+  if(NOT (${tag_sha} STREQUAL ${resulting_sha}))
+    message(FATAL_ERROR "UPDATE_COMMAND produced
+  ${tag_sha}
+when
+  ${resulting_sha}
+was expected."
+    )
+  endif()
+
+  if( NOT EXISTS ${FETCH_HEAD_file} AND ${fetch_expected})
+    message( FATAL_ERROR "Fetch did NOT occur when it was expected.")
+  endif()
+  if( EXISTS ${FETCH_HEAD_file} AND NOT ${fetch_expected})
+    message( FATAL_ERROR "Fetch DID occur when it was not expected.")
+  endif()
 endmacro()
 
 find_package(Git)

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3f606fa7d06a209cc2cd3a97afb84951d1c4c033
commit 3f606fa7d06a209cc2cd3a97afb84951d1c4c033
Author:     Daniele E. Domenichelli <daniele.domeniche...@iit.it>
AuthorDate: Wed Nov 5 00:31:40 2014 +0100
Commit:     Daniele E. Domenichelli <daniele.domeniche...@iit.it>
CommitDate: Thu Nov 6 15:09:43 2014 +0100

    ExternalProject: Add UPDATE_DISCONNECTED option
    
    If UPDATE_DISCONNECTED is set, the update step is not executed
    automatically when building the main target. The update step can still
    be added as a step target and called manually. This is useful if you
    want to allow to build the project when you are disconnected from the
    network (you might still need the network for the download step).
    This is disabled by default.
    
    The directory property EP_UPDATE_DISCONNECTED can be used to change
    the default value for all the external projects in the current
    directory and its subdirectories.

diff --git a/Modules/ExternalProject.cmake b/Modules/ExternalProject.cmake
index bf6cd21..a9c7519 100644
--- a/Modules/ExternalProject.cmake
+++ b/Modules/ExternalProject.cmake
@@ -80,6 +80,8 @@ Create custom targets to build projects in external trees
 
   ``UPDATE_COMMAND <cmd>...``
     Source work-tree update command
+  ``UPDATE_DISCONNECTED 1``
+    Never update automatically from the remote repository
   ``PATCH_COMMAND <cmd>...``
     Command to patch downloaded source
 
@@ -203,6 +205,16 @@ Create custom targets to build projects in external trees
   options.  The ``URL`` option may refer locally to a directory or source
   tarball, or refer to a remote tarball (e.g. ``http://.../src.tgz``).
 
+  If ``UPDATE_DISCONNECTED`` is set, the update step is not executed
+  automatically when building the main target. The update step can still
+  be added as a step target and called manually. This is useful if you
+  want to allow to build the project when you are disconnected from the
+  network (you might still need the network for the download step).
+  This is disabled by default.
+  The directory property ``EP_UPDATE_DISCONNECTED`` can be used to change
+  the default value for all the external projects in the current
+  directory and its subdirectories.
+
 .. command:: ExternalProject_Add_Step
 
   The ``ExternalProject_Add_Step`` function adds a custom step to an
@@ -439,6 +451,13 @@ define_property(DIRECTORY PROPERTY 
"EP_INDEPENDENT_STEP_TARGETS" INHERITED
   "ExternalProject module."
   )
 
+define_property(DIRECTORY PROPERTY "EP_UPDATE_DISCONNECTED" INHERITED
+  BRIEF_DOCS "Never update automatically from the remote repo."
+  FULL_DOCS
+  "See documentation of the ExternalProject_Add() function in the "
+  "ExternalProject module."
+  )
+
 function(_ep_write_gitclone_script script_filename source_dir git_EXECUTABLE 
git_repository git_tag git_submodules src_name work_dir gitclone_infofile 
gitclone_stampfile)
   file(WRITE ${script_filename}
 "if(\"${git_tag}\" STREQUAL \"\")
@@ -1825,6 +1844,12 @@ function(_ep_add_update_command name)
   get_property(svn_repository TARGET ${name} PROPERTY _EP_SVN_REPOSITORY)
   get_property(git_repository TARGET ${name} PROPERTY _EP_GIT_REPOSITORY)
   get_property(hg_repository  TARGET ${name} PROPERTY _EP_HG_REPOSITORY )
+  get_property(update_disconnected_set TARGET ${name} PROPERTY 
_EP_UPDATE_DISCONNECTED SET)
+  if(update_disconnected_set)
+    get_property(update_disconnected TARGET ${name} PROPERTY 
_EP_UPDATE_DISCONNECTED)
+  else()
+    get_property(update_disconnected DIRECTORY PROPERTY EP_UPDATE_DISCONNECTED)
+  endif()
 
   set(work_dir)
   set(comment)
@@ -1914,10 +1939,26 @@ Update to Mercurial >= 2.1.1.
     COMMENT ${comment}
     COMMAND ${cmd}
     ALWAYS ${always}
+    EXCLUDE_FROM_MAIN ${update_disconnected}
     WORKING_DIRECTORY ${work_dir}
     DEPENDEES download
     ${log}
     )
+
+  if(always AND update_disconnected)
+    _ep_get_step_stampfile(${name} skip-update skip-update_stamp_file)
+    string(REPLACE "Performing" "Skipping" comment "${comment}")
+    ExternalProject_Add_Step(${name} skip-update
+      COMMENT ${comment}
+      ALWAYS 1
+      EXCLUDE_FROM_MAIN 1
+      WORKING_DIRECTORY ${work_dir}
+      DEPENDEES download
+      ${log}
+    )
+    set_property(SOURCE ${skip-update_stamp_file} PROPERTY SYMBOLIC 1)
+  endif()
+
 endfunction()
 
 
@@ -2039,10 +2080,22 @@ function(_ep_add_configure_command name)
     set(log "")
   endif()
 
+  get_property(update_disconnected_set TARGET ${name} PROPERTY 
_EP_UPDATE_DISCONNECTED SET)
+  if(update_disconnected_set)
+    get_property(update_disconnected TARGET ${name} PROPERTY 
_EP_UPDATE_DISCONNECTED)
+  else()
+    get_property(update_disconnected DIRECTORY PROPERTY EP_UPDATE_DISCONNECTED)
+  endif()
+  if(update_disconnected)
+    set(update_dep skip-update)
+  else()
+    set(update_dep update)
+  endif()
+
   ExternalProject_Add_Step(${name} configure
     COMMAND ${cmd}
     WORKING_DIRECTORY ${binary_dir}
-    DEPENDEES update patch
+    DEPENDEES ${update_dep} patch
     DEPENDS ${file_deps}
     ${log}
     )

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c0b749cf62a2e985c2b1f94ff919107dbd697b2c
commit c0b749cf62a2e985c2b1f94ff919107dbd697b2c
Author:     Daniele E. Domenichelli <daniele.domeniche...@iit.it>
AuthorDate: Wed Nov 5 00:31:32 2014 +0100
Commit:     Daniele E. Domenichelli <daniele.domeniche...@iit.it>
CommitDate: Thu Nov 6 15:09:43 2014 +0100

    ExternalProject: Always add a command to a step
    
    Some generators (i.e. Xcode) will not generate a file level target if
    no command is set, and therefore the dependencies on this target will
    be broken.
    This patch sets an empty echo command that does nothing to avoid this
    issue.

diff --git a/Modules/ExternalProject.cmake b/Modules/ExternalProject.cmake
index 8513437..bf6cd21 100644
--- a/Modules/ExternalProject.cmake
+++ b/Modules/ExternalProject.cmake
@@ -1423,6 +1423,15 @@ function(ExternalProject_Add_Step name step)
     _ep_write_log_script(${name} ${step} command)
   endif()
 
+  if("${command}" STREQUAL "")
+    # Some generators (i.e. Xcode) will not generate a file level target
+    # if no command is set, and therefore the dependencies on this
+    # target will be broken.
+    # The empty command is replaced by an echo command here in order to
+    # avoid this issue.
+    set(command ${CMAKE_COMMAND} -E echo_append)
+  endif()
+
   add_custom_command(
     OUTPUT ${stamp_file}
     COMMENT ${comment}

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

Summary of changes:
 Modules/ExternalProject.cmake                      |   64 ++++++++++++-
 Source/CMakeVersion.cmake                          |    2 +-
 Tests/ExternalProjectUpdate/CMakeLists.txt         |   12 +++
 .../ExternalProjectUpdateTest.cmake                |   96 ++++++++++++++++++++
 4 files changed, 172 insertions(+), 2 deletions(-)


hooks/post-receive
-- 
CMake
_______________________________________________
Cmake-commits mailing list
Cmake-commits@cmake.org
http://public.kitware.com/mailman/listinfo/cmake-commits

Reply via email to