summaryrefslogtreecommitdiff
path: root/Tests/RunCMake/CMP0135
diff options
context:
space:
mode:
authorCraig Scott <craig.scott@crascit.com>2022-06-02 11:10:27 +1000
committerCraig Scott <craig.scott@crascit.com>2022-06-02 11:10:27 +1000
commitc2044fdf3f8bb9cd160c5629860eadba1da96b39 (patch)
tree1687e9a583b017b5846ad735ac350ee80d724544 /Tests/RunCMake/CMP0135
parentfa561c6d96e77654a12767a86ef7278cec1eff24 (diff)
downloadcmake-c2044fdf3f8bb9cd160c5629860eadba1da96b39.tar.gz
FetchContent: Respect the CMP0135 policy setting
Fixes: #23560
Diffstat (limited to 'Tests/RunCMake/CMP0135')
-rw-r--r--Tests/RunCMake/CMP0135/CMP0135-Common.cmake37
-rw-r--r--Tests/RunCMake/CMP0135/CMP0135-NEW-stdout.txt3
-rw-r--r--Tests/RunCMake/CMP0135/CMP0135-OLD-stdout.txt3
-rw-r--r--Tests/RunCMake/CMP0135/CMP0135-WARN-stderr.txt11
-rw-r--r--Tests/RunCMake/CMP0135/CMP0135-WARN-stdout.txt3
5 files changed, 49 insertions, 8 deletions
diff --git a/Tests/RunCMake/CMP0135/CMP0135-Common.cmake b/Tests/RunCMake/CMP0135/CMP0135-Common.cmake
index 4b7cce5519..ad60b7cef8 100644
--- a/Tests/RunCMake/CMP0135/CMP0135-Common.cmake
+++ b/Tests/RunCMake/CMP0135/CMP0135-Common.cmake
@@ -1,7 +1,8 @@
+#==============================================================================
+# ExternalProject
+#==============================================================================
+set(stamp_dir "${CMAKE_CURRENT_BINARY_DIR}/stamps-ep")
include(ExternalProject)
-
-set(stamp_dir "${CMAKE_CURRENT_BINARY_DIR}/stamps")
-
ExternalProject_Add(fake_ext_proj
# We don't actually do a build, so we never try to download from this URL
URL https://example.com/something.zip
@@ -12,7 +13,33 @@ ExternalProject_Add(fake_ext_proj
set(extraction_script "${stamp_dir}/extract-fake_ext_proj.cmake")
file(STRINGS "${extraction_script}" results REGEX "--touch")
if("${results}" STREQUAL "")
- message(STATUS "Using timestamps from archive")
+ message(STATUS "ExternalProject: Using timestamps from archive")
+else()
+ message(STATUS "ExternalProject: Using extraction time for the timestamps")
+endif()
+
+#==============================================================================
+# FetchContent
+#==============================================================================
+set(stamp_dir "${CMAKE_CURRENT_BINARY_DIR}/stamps-fc")
+set(archive_file ${CMAKE_CURRENT_BINARY_DIR}/test_archive.7z)
+file(ARCHIVE_CREATE
+ OUTPUT ${archive_file}
+ PATHS ${CMAKE_CURRENT_LIST_DIR}
+ FORMAT 7zip
+)
+include(FetchContent)
+FetchContent_Declare(fake_fc_proj
+ URL file://${archive_file}
+ STAMP_DIR ${stamp_dir}
+)
+FetchContent_MakeAvailable(fake_fc_proj)
+
+# Report whether the --touch option was added to the extraction script
+set(extraction_script "${stamp_dir}/extract-fake_fc_proj-populate.cmake")
+file(STRINGS "${extraction_script}" results REGEX "--touch")
+if("${results}" STREQUAL "")
+ message(STATUS "FetchContent: Using timestamps from archive")
else()
- message(STATUS "Using extraction time for the timestamps")
+ message(STATUS "FetchContent: Using extraction time for the timestamps")
endif()
diff --git a/Tests/RunCMake/CMP0135/CMP0135-NEW-stdout.txt b/Tests/RunCMake/CMP0135/CMP0135-NEW-stdout.txt
index bf53c0bdac..ceef9b855b 100644
--- a/Tests/RunCMake/CMP0135/CMP0135-NEW-stdout.txt
+++ b/Tests/RunCMake/CMP0135/CMP0135-NEW-stdout.txt
@@ -1 +1,2 @@
-Using extraction time for the timestamps
+-- ExternalProject: Using extraction time for the timestamps
+-- FetchContent: Using extraction time for the timestamps
diff --git a/Tests/RunCMake/CMP0135/CMP0135-OLD-stdout.txt b/Tests/RunCMake/CMP0135/CMP0135-OLD-stdout.txt
index ee57beb14c..1288c200dc 100644
--- a/Tests/RunCMake/CMP0135/CMP0135-OLD-stdout.txt
+++ b/Tests/RunCMake/CMP0135/CMP0135-OLD-stdout.txt
@@ -1 +1,2 @@
-Using timestamps from archive
+-- ExternalProject: Using timestamps from archive
+-- FetchContent: Using timestamps from archive
diff --git a/Tests/RunCMake/CMP0135/CMP0135-WARN-stderr.txt b/Tests/RunCMake/CMP0135/CMP0135-WARN-stderr.txt
index 8ba00274f2..6bf944e4df 100644
--- a/Tests/RunCMake/CMP0135/CMP0135-WARN-stderr.txt
+++ b/Tests/RunCMake/CMP0135/CMP0135-WARN-stderr.txt
@@ -8,3 +8,14 @@ CMake Warning \(dev\) at .*/Modules/ExternalProject.cmake:[0-9]+ \(message\):
what you want\. Update your project to the NEW behavior or specify the
DOWNLOAD_EXTRACT_TIMESTAMP option with a value of true to avoid this
robustness issue\.
+.*
+CMake Warning \(dev\) at .*/Modules/FetchContent.cmake:[0-9]+ \(message\):
+ The DOWNLOAD_EXTRACT_TIMESTAMP option was not given and policy CMP0135 is
+ not set\. The policy's OLD behavior will be used\. When using a URL
+ download, the timestamps of extracted files should preferably be that of
+ the time of extraction, otherwise code that depends on the extracted
+ contents might not be rebuilt if the URL changes\. The OLD behavior
+ preserves the timestamps from the archive instead, but this is usually not
+ what you want\. Update your project to the NEW behavior or specify the
+ DOWNLOAD_EXTRACT_TIMESTAMP option with a value of true to avoid this
+ robustness issue\.
diff --git a/Tests/RunCMake/CMP0135/CMP0135-WARN-stdout.txt b/Tests/RunCMake/CMP0135/CMP0135-WARN-stdout.txt
index ee57beb14c..1288c200dc 100644
--- a/Tests/RunCMake/CMP0135/CMP0135-WARN-stdout.txt
+++ b/Tests/RunCMake/CMP0135/CMP0135-WARN-stdout.txt
@@ -1 +1,2 @@
-Using timestamps from archive
+-- ExternalProject: Using timestamps from archive
+-- FetchContent: Using timestamps from archive