From ad902091777910234a2ca2efe408e1e2690dea24 Mon Sep 17 00:00:00 2001 From: Mark Stemm Date: Wed, 16 Feb 2022 17:21:09 -0800 Subject: [PATCH] Always skip update command for git based external projects I noticed that some external projects were being reconfigured/built with every make, even though no files in the external project had been updated. With some debugging I noticed that git based external projects were re-running their "update" step every time, and that in turn caused the configure/build/install steps to re-run as well. (Generally the build step is a no-op as the Makefile/etc. in the external project is well formed and doesn't do anything, but the configure/install steps still run). It seems related to this cmake bug: https://gitlab.kitware.com/cmake/cmake/-/issues/19703. In short, the git update step for an external project does not create any "done" file that denotes that the files are still up-to-date. Without that "done" file, the update step is always run, and that in turn causes the other steps for the external project to re-run as well. The best way to fix this seems to be to skip the update step by defining an empty UPDATE_COMMAND. As long as the downloaded code for a given hash/tag/etc does not change, the update step is unnecessary. And if we *really* wanted to ensure unchanged dependencies, we would download our own copies anyway. Making this change significantly cleans up the falco build to avoid rebuilding git based external dependencies. Signed-off-by: Mark Stemm --- cmake/modules/DownloadStringViewLite.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/cmake/modules/DownloadStringViewLite.cmake b/cmake/modules/DownloadStringViewLite.cmake index 26f409fc..872da0b7 100644 --- a/cmake/modules/DownloadStringViewLite.cmake +++ b/cmake/modules/DownloadStringViewLite.cmake @@ -24,6 +24,7 @@ ExternalProject_Add( GIT_TAG "v1.4.0" CONFIGURE_COMMAND "" BUILD_COMMAND "" + UPDATE_COMMAND "" INSTALL_COMMAND ${CMAKE_COMMAND} -E copy ${STRING_VIEW_LITE_PREFIX}/src/string-view-lite/include/nonstd/string_view.hpp ${STRING_VIEW_LITE_INCLUDE}/nonstd/string_view.hpp)