[Cmake-commits] CMake branch, next, updated. v2.8.9-624-g26c369f

Brad King brad.king at kitware.com
Wed Sep 19 11:33:21 EDT 2012


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  26c369fd9d66ddaeca9eed272c6bf9aad6ddc6b5 (commit)
       via  95a00116044ed52d92c20a467b9266476eb56632 (commit)
      from  95073f2888e5bd2dd3ac5ece74805b6cf7af2c16 (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=26c369fd9d66ddaeca9eed272c6bf9aad6ddc6b5
commit 26c369fd9d66ddaeca9eed272c6bf9aad6ddc6b5
Merge: 95073f2 95a0011
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Wed Sep 19 11:33:19 2012 -0400
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Wed Sep 19 11:33:19 2012 -0400

    Merge topic 'file-DOWNLOAD-EXPECTED_HASH' into next
    
    95a0011 file(DOWNLOAD): Change EXPECTED_HASH to take ALGO=value


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=95a00116044ed52d92c20a467b9266476eb56632
commit 95a00116044ed52d92c20a467b9266476eb56632
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Wed Sep 19 11:28:00 2012 -0400
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Wed Sep 19 11:31:36 2012 -0400

    file(DOWNLOAD): Change EXPECTED_HASH to take ALGO=value
    
    Make the EXPECTED_HASH option take only a single value instead of two to
    avoid handling sub-keyword arguments.  This is also consistent with
    URL_HASH in ExternalProject.

diff --git a/Modules/ExternalProject.cmake b/Modules/ExternalProject.cmake
index 3923685..57b8aa5 100644
--- a/Modules/ExternalProject.cmake
+++ b/Modules/ExternalProject.cmake
@@ -411,7 +411,7 @@ function(_ep_write_downloadfile_script script_filename remote local timeout hash
   endif()
 
   if("${hash}" MATCHES "${_ep_hash_regex}")
-    set(hash_args EXPECTED_HASH ${CMAKE_MATCH_1} ${CMAKE_MATCH_2})
+    set(hash_args EXPECTED_HASH ${CMAKE_MATCH_1}=${CMAKE_MATCH_2})
   else()
     set(hash_args "# no EXPECTED_HASH")
   endif()
diff --git a/Source/cmFileCommand.cxx b/Source/cmFileCommand.cxx
index 4d9eb79..1a66d82 100644
--- a/Source/cmFileCommand.cxx
+++ b/Source/cmFileCommand.cxx
@@ -2767,30 +2767,31 @@ cmFileCommand::HandleDownloadCommand(std::vector<std::string> const& args)
     else if(*i == "EXPECTED_HASH")
       {
       ++i;
-      if(i != args.end())
+      if(i == args.end())
         {
-        hash = cmsys::auto_ptr<cmCryptoHash>(cmCryptoHash::New(i->c_str()));
-        if(!hash.get())
-          {
-          std::string err = "DOWNLOAD bad SHA type: ";
-          err += *i;
-          this->SetError(err.c_str());
-          return false;
-          }
-        hashMatchMSG = *i;
-        hashMatchMSG += " hash";
-
-        ++i;
+        this->SetError("DOWNLOAD missing ALGO=value for EXPECTED_HASH.");
+        return false;
         }
-      if(i != args.end())
+      std::string::size_type pos = i->find("=");
+      if(pos == std::string::npos)
         {
-        expectedHash = cmSystemTools::LowerCase(*i);
+        std::string err =
+          "DOWNLOAD EXPECTED_HASH expects ALGO=value but got: ";
+        err += *i;
+        this->SetError(err.c_str());
+        return false;
         }
-      else
+      std::string algo = i->substr(0, pos);
+      expectedHash = cmSystemTools::LowerCase(i->substr(pos+1));
+      hash = cmsys::auto_ptr<cmCryptoHash>(cmCryptoHash::New(algo.c_str()));
+      if(!hash.get())
         {
-        this->SetError("DOWNLOAD missing time for EXPECTED_HASH.");
+        std::string err = "DOWNLOAD EXPECTED_HASH given unknown ALGO: ";
+        err += algo;
+        this->SetError(err.c_str());
         return false;
         }
+      hashMatchMSG = algo + " hash";
       }
     ++i;
     }
diff --git a/Source/cmFileCommand.h b/Source/cmFileCommand.h
index bd6f612..b4aa903 100644
--- a/Source/cmFileCommand.h
+++ b/Source/cmFileCommand.h
@@ -83,8 +83,7 @@ public:
       "  file(TO_NATIVE_PATH path result)\n"
       "  file(DOWNLOAD url file [INACTIVITY_TIMEOUT timeout]\n"
       "       [TIMEOUT timeout] [STATUS status] [LOG log] [SHOW_PROGRESS]\n"
-      "       [EXPECTED_HASH MD5|SHA1|SHA224|SHA256|SHA384|SHA512 hash]\n"
-      "       [EXPECTED_MD5 sum]\n"
+      "       [EXPECTED_HASH ALGO=value] [EXPECTED_MD5 sum]\n"
       "       [TLS_VERIFY on|off] [TLS_CAINFO file])\n"
       "  file(UPLOAD filename url [INACTIVITY_TIMEOUT timeout]\n"
       "       [TIMEOUT timeout] [STATUS status] [LOG log] [SHOW_PROGRESS])\n"
@@ -170,10 +169,11 @@ public:
       "timeout after time seconds, time should be specified as an integer. "
       "The INACTIVITY_TIMEOUT specifies an integer number of seconds of "
       "inactivity after which the operation should terminate. "
-      "If EXPECTED_HASH is specified, the operation will verify that the "
-      "downloaded file's actual hash matches the expected value. If it "
-      "does not match, the operation fails with an error. "
-      "(EXPECTED_MD5 is short-hand for EXPECTED_HASH MD5.) "
+      "If EXPECTED_HASH ALGO=value is specified, the operation will verify "
+      "that the downloaded file's actual hash matches the expected value, "
+      "where ALGO is one of MD5, SHA1, SHA224, SHA256, SHA384, or SHA512.  "
+      "If it does not match, the operation fails with an error. "
+      "(\"EXPECTED_MD5 sum\" is short-hand for \"EXPECTED_HASH MD5=sum\".) "
       "If SHOW_PROGRESS is specified, progress information will be printed "
       "as status messages until the operation is complete. "
       "For https URLs CMake must be built with OpenSSL.  "
diff --git a/Tests/CMakeTests/FileDownloadTest.cmake.in b/Tests/CMakeTests/FileDownloadTest.cmake.in
index 3f0ab50..91086c6 100644
--- a/Tests/CMakeTests/FileDownloadTest.cmake.in
+++ b/Tests/CMakeTests/FileDownloadTest.cmake.in
@@ -38,7 +38,7 @@ file(DOWNLOAD
   ${dir}/file3.png
   TIMEOUT 2
   STATUS status
-  EXPECTED_HASH SHA1 50c614fc28b39c1281d0517bb6d5858b4359c9b7
+  EXPECTED_HASH SHA1=50c614fc28b39c1281d0517bb6d5858b4359c9b7
   )
 
 message(STATUS "FileDownload:5")
@@ -47,7 +47,7 @@ file(DOWNLOAD
   ${dir}/file3.png
   TIMEOUT 2
   STATUS status
-  EXPECTED_HASH SHA224 73cd5f442b04e8320e4f907f8e1b21d4befff98b5bd77bc32526ea68
+  EXPECTED_HASH SHA224=73cd5f442b04e8320e4f907f8e1b21d4befff98b5bd77bc32526ea68
   )
 
 message(STATUS "FileDownload:6")
@@ -56,7 +56,7 @@ file(DOWNLOAD
   ${dir}/file3.png
   TIMEOUT 2
   STATUS status
-  EXPECTED_HASH SHA256 2e067f6c09cbc7cd619c8fbcc44eb64cd6b45a95e4cddb3a585eee1f731c4da9
+  EXPECTED_HASH SHA256=2e067f6c09cbc7cd619c8fbcc44eb64cd6b45a95e4cddb3a585eee1f731c4da9
   )
 
 message(STATUS "FileDownload:7")
@@ -65,7 +65,7 @@ file(DOWNLOAD
   ${dir}/file3.png
   TIMEOUT 2
   STATUS status
-  EXPECTED_HASH SHA384 398bf41902a7251c30e522b307e3e41e3fb617c765b3feaa99b2f7d063894708ad399267ccc25d877437a10e5e890d35
+  EXPECTED_HASH SHA384=398bf41902a7251c30e522b307e3e41e3fb617c765b3feaa99b2f7d063894708ad399267ccc25d877437a10e5e890d35
   )
 
 message(STATUS "FileDownload:8")
@@ -74,7 +74,7 @@ file(DOWNLOAD
   ${dir}/file3.png
   TIMEOUT 2
   STATUS status
-  EXPECTED_HASH SHA512 c51854d21052713968b849c2b4263cf54be03bc3a7e9847a6c71c6c8d1d13cd805fe1b9fa95f9ba1d0a5631513974f6fae21e34ab5b171d94bad48df5f073e48
+  EXPECTED_HASH SHA512=c51854d21052713968b849c2b4263cf54be03bc3a7e9847a6c71c6c8d1d13cd805fe1b9fa95f9ba1d0a5631513974f6fae21e34ab5b171d94bad48df5f073e48
   )
 message(STATUS "FileDownload:9")
 file(DOWNLOAD
@@ -82,7 +82,7 @@ file(DOWNLOAD
   ${dir}/file3.png
   TIMEOUT 2
   STATUS status
-  EXPECTED_HASH MD5 d16778650db435bda3a8c3435c3ff5d1
+  EXPECTED_HASH MD5=d16778650db435bda3a8c3435c3ff5d1
   )
 
 message(STATUS "FileDownload:10")

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

Summary of changes:
 Modules/ExternalProject.cmake              |    2 +-
 Source/cmFileCommand.cxx                   |   35 ++++++++++++++-------------
 Source/cmFileCommand.h                     |   12 ++++----
 Tests/CMakeTests/FileDownloadTest.cmake.in |   12 ++++----
 4 files changed, 31 insertions(+), 30 deletions(-)


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list