[Cmake-commits] CMake branch, next, updated. v3.2.2-3070-g5dba43b

Brad King brad.king at kitware.com
Fri May 22 09:31:24 EDT 2015


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  5dba43bdcf386dfdc6f1697138926f5945e78ce6 (commit)
       via  0de47b05f74bd12d41b46634f00aea3bcb6f3678 (commit)
      from  d4cac214dac01aa5dde668b592d8b800b168c246 (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=5dba43bdcf386dfdc6f1697138926f5945e78ce6
commit 5dba43bdcf386dfdc6f1697138926f5945e78ce6
Merge: d4cac21 0de47b0
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Fri May 22 09:31:23 2015 -0400
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Fri May 22 09:31:23 2015 -0400

    Merge topic 'ExternalData-no-symlinks' into next
    
    0de47b05 ExternalData: Add option to disable use of symlinks


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=0de47b05f74bd12d41b46634f00aea3bcb6f3678
commit 0de47b05f74bd12d41b46634f00aea3bcb6f3678
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Fri May 22 09:15:07 2015 -0400
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Fri May 22 09:21:47 2015 -0400

    ExternalData: Add option to disable use of symlinks
    
    Add an ExternalData_NO_SYMLINKS to enable use of copies instead of
    symlinks to populate the real data files behind a DATA{} reference.
    This will be useful on UNIX-like systems when the underlying filesystem
    does not actually support symbolic links.
    
    Suggested-by: Matt McCormick <matt.mccormick at kitware.com>

diff --git a/Help/release/dev/ExternalData-no-symlinks.rst b/Help/release/dev/ExternalData-no-symlinks.rst
new file mode 100644
index 0000000..9323cca
--- /dev/null
+++ b/Help/release/dev/ExternalData-no-symlinks.rst
@@ -0,0 +1,7 @@
+ExternalData-no-symlinks
+------------------------
+
+* The :module:`ExternalData` module learned a new
+  :variable:`ExternalData_NO_SYMLINKS` option to disable use of
+  symbolic links to populate the real data files and use copies
+  instead.
diff --git a/Modules/ExternalData.cmake b/Modules/ExternalData.cmake
index 883ab69..a3f460d 100644
--- a/Modules/ExternalData.cmake
+++ b/Modules/ExternalData.cmake
@@ -117,6 +117,13 @@ calling any of the functions provided by this module.
   data fetch rule created for the content link will use the staged
   object if it cannot be found using any URL template.
 
+.. variable:: ExternalData_NO_SYMLINKS
+
+  The real data files named by expanded ``DATA{}`` references may be made
+  available under ``ExternalData_BINARY_ROOT`` using symbolic links on
+  some platforms.  The ``ExternalData_NO_SYMLINKS`` variable may be set
+  to disable use of symbolic links and enable use of copies instead.
+
 .. variable:: ExternalData_OBJECT_STORES
 
   The ``ExternalData_OBJECT_STORES`` variable may be set to a list of local
@@ -842,7 +849,7 @@ function(_ExternalData_link_or_copy src dst)
   file(MAKE_DIRECTORY "${dst_dir}")
   _ExternalData_random(random)
   set(tmp "${dst}.tmp${random}")
-  if(UNIX)
+  if(UNIX AND NOT ExternalData_NO_SYMLINKS)
     # Create a symbolic link.
     set(tgt "${src}")
     if(relative_top)
diff --git a/Modules/ExternalData_config.cmake.in b/Modules/ExternalData_config.cmake.in
index 4434e4b..18be6b3 100644
--- a/Modules/ExternalData_config.cmake.in
+++ b/Modules/ExternalData_config.cmake.in
@@ -2,4 +2,5 @@ set(ExternalData_OBJECT_STORES "@ExternalData_OBJECT_STORES@")
 set(ExternalData_URL_TEMPLATES "@ExternalData_URL_TEMPLATES@")
 set(ExternalData_TIMEOUT_INACTIVITY "@ExternalData_TIMEOUT_INACTIVITY@")
 set(ExternalData_TIMEOUT_ABSOLUTE "@ExternalData_TIMEOUT_ABSOLUTE@")
+set(ExternalData_NO_SYMLINKS "@ExternalData_NO_SYMLINKS@")
 @_ExternalData_CONFIG_CODE@
diff --git a/Tests/Module/ExternalData/CMakeLists.txt b/Tests/Module/ExternalData/CMakeLists.txt
index b6e24d2..f07ab71 100644
--- a/Tests/Module/ExternalData/CMakeLists.txt
+++ b/Tests/Module/ExternalData/CMakeLists.txt
@@ -53,3 +53,4 @@ ExternalData_Add_Target(Data1)
 add_subdirectory(Data2)
 add_subdirectory(Data3)
 add_subdirectory(Data4)
+add_subdirectory(DataNoSymlinks)
diff --git a/Tests/Module/ExternalData/DataNoSymlinks/CMakeLists.txt b/Tests/Module/ExternalData/DataNoSymlinks/CMakeLists.txt
new file mode 100644
index 0000000..d3df7fc
--- /dev/null
+++ b/Tests/Module/ExternalData/DataNoSymlinks/CMakeLists.txt
@@ -0,0 +1,8 @@
+set(ExternalData_NO_SYMLINKS 1)
+ExternalData_Add_Test(DataNoSymlinks
+  NAME DataNoSymlinksCheck
+  COMMAND ${CMAKE_COMMAND}
+    -D Data=DATA{Data.dat}
+    -P ${CMAKE_CURRENT_SOURCE_DIR}/DataNoSymlinksCheck.cmake
+  )
+ExternalData_Add_Target(DataNoSymlinks)
diff --git a/Tests/Module/ExternalData/DataNoSymlinks/Data.dat.md5 b/Tests/Module/ExternalData/DataNoSymlinks/Data.dat.md5
new file mode 100644
index 0000000..70e39bd
--- /dev/null
+++ b/Tests/Module/ExternalData/DataNoSymlinks/Data.dat.md5
@@ -0,0 +1 @@
+8c018830e3efa5caf3c7415028335a57
diff --git a/Tests/Module/ExternalData/DataNoSymlinks/DataNoSymlinksCheck.cmake b/Tests/Module/ExternalData/DataNoSymlinks/DataNoSymlinksCheck.cmake
new file mode 100644
index 0000000..2be3571
--- /dev/null
+++ b/Tests/Module/ExternalData/DataNoSymlinks/DataNoSymlinksCheck.cmake
@@ -0,0 +1,6 @@
+if(NOT EXISTS "${Data}")
+  message(SEND_ERROR "Input file:\n  ${Data}\ndoes not exist!")
+endif()
+if(IS_SYMLINK "${Data}")
+  message(SEND_ERROR "Input file:\n  ${Data}\nis a symlink but should not be!")
+endif()

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

Summary of changes:
 Help/release/dev/ExternalData-no-symlinks.rst                 |    7 +++++++
 Modules/ExternalData.cmake                                    |    9 ++++++++-
 Modules/ExternalData_config.cmake.in                          |    1 +
 Tests/Module/ExternalData/CMakeLists.txt                      |    1 +
 Tests/Module/ExternalData/DataNoSymlinks/CMakeLists.txt       |    8 ++++++++
 Tests/Module/ExternalData/{ => DataNoSymlinks}/Data.dat.md5   |    0
 .../ExternalData/DataNoSymlinks/DataNoSymlinksCheck.cmake     |    6 ++++++
 7 files changed, 31 insertions(+), 1 deletion(-)
 create mode 100644 Help/release/dev/ExternalData-no-symlinks.rst
 create mode 100644 Tests/Module/ExternalData/DataNoSymlinks/CMakeLists.txt
 copy Tests/Module/ExternalData/{ => DataNoSymlinks}/Data.dat.md5 (100%)
 create mode 100644 Tests/Module/ExternalData/DataNoSymlinks/DataNoSymlinksCheck.cmake


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list