mirror of
https://github.com/falcosecurity/falco.git
synced 2025-10-22 03:49:36 +00:00
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 <mark.stemm@gmail.com>
31 lines
1.2 KiB
CMake
31 lines
1.2 KiB
CMake
#
|
|
# Copyright (C) 2020 The Falco Authors.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
|
|
# the License. You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an
|
|
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
|
|
# specific language governing permissions and limitations under the License.
|
|
#
|
|
|
|
include(ExternalProject)
|
|
|
|
set(STRING_VIEW_LITE_PREFIX ${CMAKE_BINARY_DIR}/string-view-lite-prefix)
|
|
set(STRING_VIEW_LITE_INCLUDE ${STRING_VIEW_LITE_PREFIX}/include)
|
|
message(STATUS "Using bundled string-view-lite in ${STRING_VIEW_LITE_INCLUDE}")
|
|
|
|
ExternalProject_Add(
|
|
string-view-lite
|
|
PREFIX ${STRING_VIEW_LITE_PREFIX}
|
|
GIT_REPOSITORY "https://github.com/martinmoene/string-view-lite.git"
|
|
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)
|