Jelajahi Sumber

ExternalProject: Fix misuse of IS_NEWER_THAN in timestamp checks

This change was originally made in 404cddb7bb (ExternalProject:
Fix misuse of IS_NEWER_THAN in timestamp checks, 2021-02-21),
but was reverted by 57d442e182 (Revert ExternalProject and
FetchContent refactoring, 2021-03-10) due to regressions from
other changes. Reapply this fix on its own, since it is still valid.

When using a file system which only has second resolution timestamps,
there is a reasonably high likelihood of timestamps being the same.
The IS_NEWER_THAN test returns true when timestamps are the same,
so don't redo downloads when they match exactly.
Craig Scott 3 tahun lalu
induk
melakukan
d73fc5dd2a
1 mengubah file dengan 4 tambahan dan 2 penghapusan
  1. 4 2
      Modules/ExternalProject.cmake

+ 4 - 2
Modules/ExternalProject.cmake

@@ -1302,7 +1302,8 @@ function(_ep_write_gitclone_script script_filename source_dir git_EXECUTABLE git
 
   file(WRITE ${script_filename}
 "
-if(NOT \"${gitclone_infofile}\" IS_NEWER_THAN \"${gitclone_stampfile}\")
+if(EXISTS \"${gitclone_stampfile}\" AND EXISTS \"${gitclone_infofile}\" AND
+  \"${gitclone_stampfile}\" IS_NEWER_THAN \"${gitclone_infofile}\")
   message(STATUS \"Avoiding repeated git clone, stamp file is up to date: '${gitclone_stampfile}'\")
   return()
 endif()
@@ -1378,7 +1379,8 @@ function(_ep_write_hgclone_script script_filename source_dir hg_EXECUTABLE hg_re
   endif()
   file(WRITE ${script_filename}
 "
-if(NOT \"${hgclone_infofile}\" IS_NEWER_THAN \"${hgclone_stampfile}\")
+if(EXISTS \"${hgclone_stampfile}\" AND EXISTS \"${hgclone_infofile}\" AND
+  \"${hgclone_stampfile}\" IS_NEWER_THAN \"${hgclone_infofile}\")
   message(STATUS \"Avoiding repeated hg clone, stamp file is up to date: '${hgclone_stampfile}'\")
   return()
 endif()