[Cmake-commits] CMake branch, next, updated. v2.8.12.1-7253-g7699c35

Matt McCormick matt.mccormick at kitware.com
Thu Jan 23 17:39:48 EST 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  7699c35215babd00f1b41af868592a4ae0046e78 (commit)
       via  a432b93b7919d34e37e202b0c992775a029928d3 (commit)
       via  1cb9ef817334235fa9ebb57060b6df78d1a0b058 (commit)
       via  f73f0fb357eee40f794abc55a0091e77f50cc62d (commit)
       via  b5e2265fc3a1e8505c6a230b79a2bbb768e5efc5 (commit)
      from  ce5523022767b284f4189f277373f793d3f2ad22 (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=7699c35215babd00f1b41af868592a4ae0046e78
commit 7699c35215babd00f1b41af868592a4ae0046e78
Merge: ce55230 a432b93
Author:     Matt McCormick <matt.mccormick at kitware.com>
AuthorDate: Thu Jan 23 17:39:47 2014 -0500
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Thu Jan 23 17:39:47 2014 -0500

    Merge topic 'robust-ep-download-verify' into next
    
    a432b93b file DOWNLOAD: Display the curl result status when a hash mismatch occurs.
    1cb9ef81 file DOWNLOAD: Test non-zero return status.
    f73f0fb3 file DOWNLOAD: Add test for bad hash.
    b5e2265f ExternalProject: Reattempt download when verification fails.


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a432b93b7919d34e37e202b0c992775a029928d3
commit a432b93b7919d34e37e202b0c992775a029928d3
Author:     Matt McCormick <matt.mccormick at kitware.com>
AuthorDate: Wed Jan 15 20:08:44 2014 -0500
Commit:     Matt McCormick <matt.mccormick at kitware.com>
CommitDate: Wed Jan 15 20:08:44 2014 -0500

    file DOWNLOAD: Display the curl result status when a hash mismatch occurs.

diff --git a/Source/cmFileCommand.cxx b/Source/cmFileCommand.cxx
index 311763b..e79bc6c 100644
--- a/Source/cmFileCommand.cxx
+++ b/Source/cmFileCommand.cxx
@@ -2983,6 +2983,8 @@ cmFileCommand::HandleDownloadCommand(std::vector<std::string> const& args)
         << "  for file: [" << file << "]" << std::endl
         << "    expected hash: [" << expectedHash << "]" << std::endl
         << "      actual hash: [" << actualHash << "]" << std::endl
+        << "           status: [" << (int)res << ";\""
+          << ::curl_easy_strerror(res) << "\"]" << std::endl
         ;
       this->SetError(oss.str().c_str());
       return false;

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=1cb9ef817334235fa9ebb57060b6df78d1a0b058
commit 1cb9ef817334235fa9ebb57060b6df78d1a0b058
Author:     Matt McCormick <matt.mccormick at kitware.com>
AuthorDate: Wed Jan 15 19:40:28 2014 -0500
Commit:     Matt McCormick <matt.mccormick at kitware.com>
CommitDate: Wed Jan 15 19:43:25 2014 -0500

    file DOWNLOAD: Test non-zero return status.

diff --git a/Tests/CMakeTests/FileDownloadTest.cmake.in b/Tests/CMakeTests/FileDownloadTest.cmake.in
index 91086c6..83ade2b 100644
--- a/Tests/CMakeTests/FileDownloadTest.cmake.in
+++ b/Tests/CMakeTests/FileDownloadTest.cmake.in
@@ -94,3 +94,16 @@ file(DOWNLOAD
   EXPECTED_MD5 d16778650db435bda3a8c3435c3ff5d1
   )
 message(STATUS "${status}")
+
+message(STATUS "FileDownload:11")
+file(DOWNLOAD
+  badhostname.png
+  ${dir}/file11.png
+  TIMEOUT 2
+  STATUS status
+  )
+message(STATUS "${status}")
+list(GET status 0 status_code)
+if(NOT ${status_code} EQUAL 6)
+  message(SEND_ERROR "error: expected status code 6 for bad host name, got: ${status_code}")
+endif()

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f73f0fb357eee40f794abc55a0091e77f50cc62d
commit f73f0fb357eee40f794abc55a0091e77f50cc62d
Author:     Matt McCormick <matt.mccormick at kitware.com>
AuthorDate: Wed Jan 15 19:27:26 2014 -0500
Commit:     Matt McCormick <matt.mccormick at kitware.com>
CommitDate: Wed Jan 15 19:43:23 2014 -0500

    file DOWNLOAD: Add test for bad hash.

diff --git a/Tests/CMakeTests/CMakeLists.txt b/Tests/CMakeTests/CMakeLists.txt
index 41714f6..ce36830 100644
--- a/Tests/CMakeTests/CMakeLists.txt
+++ b/Tests/CMakeTests/CMakeLists.txt
@@ -38,6 +38,10 @@ AddCMakeTest(FileDownload "")
 set_property(TEST CMake.FileDownload PROPERTY
   PASS_REGULAR_EXPRESSION "file already exists with expected MD5 sum"
   )
+AddCMakeTest(FileDownloadBadHash "")
+set_property(TEST CMake.FileDownloadBadHash PROPERTY
+  WILL_FAIL TRUE
+  )
 
 AddCMakeTest(FileUpload "")
 
diff --git a/Tests/CMakeTests/FileDownloadBadHashTest.cmake.in b/Tests/CMakeTests/FileDownloadBadHashTest.cmake.in
new file mode 100644
index 0000000..4a47c06
--- /dev/null
+++ b/Tests/CMakeTests/FileDownloadBadHashTest.cmake.in
@@ -0,0 +1,10 @@
+set(url "file://@CMAKE_CURRENT_SOURCE_DIR@/FileDownloadInput.png")
+set(dir "@CMAKE_CURRENT_BINARY_DIR@/downloads")
+
+file(DOWNLOAD
+  ${url}
+  ${dir}/file3.png
+  TIMEOUT 2
+  STATUS status
+  EXPECTED_HASH SHA1=5555555555555555555555555555555555555555
+  )

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b5e2265fc3a1e8505c6a230b79a2bbb768e5efc5
commit b5e2265fc3a1e8505c6a230b79a2bbb768e5efc5
Author:     Matt McCormick <matt.mccormick at kitware.com>
AuthorDate: Wed Jan 15 16:31:23 2014 -0500
Commit:     Matt McCormick <matt.mccormick at kitware.com>
CommitDate: Wed Jan 15 16:31:23 2014 -0500

    ExternalProject: Reattempt download when verification fails.
    
    When downloading an URL with ExternalProject, reattempt the download three
    times if the file hash verification fails.
    
    The re-attempt is limited to non-local URL's.  The same download CMake script
    is re-used after removing any file that resulted from the previous download
    attempt.  Up to three re-attempts are performed.

diff --git a/Modules/ExternalProject.cmake b/Modules/ExternalProject.cmake
index 63f1180..1c1bd2f 100644
--- a/Modules/ExternalProject.cmake
+++ b/Modules/ExternalProject.cmake
@@ -585,13 +585,30 @@ message(STATUS \"downloading... done\")
 endfunction()
 
 
-function(_ep_write_verifyfile_script script_filename local hash)
+function(_ep_write_verifyfile_script script_filename local hash retries download_script)
   if("${hash}" MATCHES "${_ep_hash_regex}")
     set(algo "${CMAKE_MATCH_1}")
     string(TOLOWER "${CMAKE_MATCH_2}" expect_value)
     set(script_content "set(expect_value \"${expect_value}\")
-file(${algo} \"\${file}\" actual_value)
-if(\"\${actual_value}\" STREQUAL \"\${expect_value}\")
+set(attempt 0)
+set(succeeded 0)
+while(\${attempt} LESS ${retries} OR \${attempt} EQUAL ${retries} AND NOT \${succeeded})
+  file(${algo} \"\${file}\" actual_value)
+  if(\"\${actual_value}\" STREQUAL \"\${expect_value}\")
+    set(succeeded 1)
+  elseif(\${attempt} LESS ${retries})
+    message(STATUS \"${algo} hash of \${file}
+does not match expected value
+  expected: \${expect_value}
+    actual: \${actual_value}
+Retrying download.
+\")
+    file(REMOVE \"\${file}\")
+    execute_process(COMMAND ${CMAKE_COMMAND} -P \"${download_script}\")
+  endif()
+endwhile()
+
+if(\${succeeded})
   message(STATUS \"verifying file... done\")
 else()
   message(FATAL_ERROR \"error: ${algo} hash of
@@ -1394,6 +1411,8 @@ function(_ep_add_download_command name)
     set(repository "external project URL")
     set(module "${url}")
     set(tag "${hash}")
+    set(retries 0)
+    set(download_script "")
     configure_file(
       "${CMAKE_ROOT}/Modules/RepositoryInfo.txt.in"
       "${stamp_dir}/${name}-urlinfo.txt"
@@ -1423,16 +1442,17 @@ function(_ep_add_download_command name)
         get_property(timeout TARGET ${name} PROPERTY _EP_TIMEOUT)
         get_property(tls_verify TARGET ${name} PROPERTY _EP_TLS_VERIFY)
         get_property(tls_cainfo TARGET ${name} PROPERTY _EP_TLS_CAINFO)
-        _ep_write_downloadfile_script("${stamp_dir}/download-${name}.cmake"
-          "${url}" "${file}" "${timeout}" "${hash}" "${tls_verify}" "${tls_cainfo}")
-        set(cmd ${CMAKE_COMMAND} -P ${stamp_dir}/download-${name}.cmake
+        set(download_script "${stamp_dir}/download-${name}.cmake")
+        _ep_write_downloadfile_script("${download_script}" "${url}" "${file}" "${timeout}" "${hash}" "${tls_verify}" "${tls_cainfo}")
+        set(cmd ${CMAKE_COMMAND} -P "${download_script}"
           COMMAND)
+        set(retries 3)
         set(comment "Performing download step (download, verify and extract) for '${name}'")
       else()
         set(file "${url}")
         set(comment "Performing download step (verify and extract) for '${name}'")
       endif()
-      _ep_write_verifyfile_script("${stamp_dir}/verify-${name}.cmake" "${file}" "${hash}")
+      _ep_write_verifyfile_script("${stamp_dir}/verify-${name}.cmake" "${file}" "${hash}" "${retries}" "${download_script}")
       list(APPEND cmd ${CMAKE_COMMAND} -P ${stamp_dir}/verify-${name}.cmake
         COMMAND)
       _ep_write_extractfile_script("${stamp_dir}/extract-${name}.cmake" "${name}" "${file}" "${source_dir}")

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

Summary of changes:
 Modules/ExternalProject.cmake                     |   34 ++++++++++++++++-----
 Source/cmFileCommand.cxx                          |    2 ++
 Tests/CMakeTests/CMakeLists.txt                   |    4 +++
 Tests/CMakeTests/FileDownloadBadHashTest.cmake.in |   10 ++++++
 Tests/CMakeTests/FileDownloadTest.cmake.in        |   13 ++++++++
 5 files changed, 56 insertions(+), 7 deletions(-)
 create mode 100644 Tests/CMakeTests/FileDownloadBadHashTest.cmake.in


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list