file(DOWNLOAD): Fix LOG with EXPECTED_HASH on download failure
When `file(DOWNLOAD <url> EXPECTED_HASH <hash> LOG <logs>)` fails to
download the requested file, the hash check will also fail and make the
command exit without actually returning the curl logs as requested
by the `LOG` argument. Report the log before checking the hash.
Issue: #24093
diff --git a/Source/cmFileCommand.cxx b/Source/cmFileCommand.cxx
index 421ff12..fe38db5 100644
--- a/Source/cmFileCommand.cxx
+++ b/Source/cmFileCommand.cxx
@@ -2090,6 +2090,13 @@
::curl_global_cleanup();
+ // Ensure requested curl logs are returned (especially in case of failure)
+ //
+ if (!logVar.empty()) {
+ chunkDebug.push_back(0);
+ status.GetMakefile().AddDefinition(logVar, chunkDebug.data());
+ }
+
// Explicitly flush/close so we can measure the md5 accurately.
//
if (!file.empty()) {
@@ -2132,11 +2139,6 @@
}
}
- if (!logVar.empty()) {
- chunkDebug.push_back(0);
- status.GetMakefile().AddDefinition(logVar, chunkDebug.data());
- }
-
return true;
#else
status.SetError("DOWNLOAD not supported by bootstrap cmake.");