]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
cmake: Ensure git exists before executing it 54963/head
authorDominique Leuenberger <dimstar@opensuse.org>
Tue, 19 Dec 2023 12:28:29 +0000 (13:28 +0100)
committerDominique Leuenberger <dimstar@opensuse.org>
Tue, 19 Dec 2023 14:27:45 +0000 (15:27 +0100)
CMake 3.28 has turned stricter when executing string(REPLACE …) and
expects four or more commands. In case of distro package builds from
tarball, it happens that git is not present. CTags.cmake tries to
catch that by veriying the exit status of the command, but as there
is in fact git | awk, awk returns 0 even when git does not exist.

Ensure that the variable submodules has been defined before trying
to replace substrings in this variable.

Signed-off-by: Dominique Leuenberger <dimstar@opensuse.org>
cmake/modules/CTags.cmake

index c3e1b3799b02451e07ac8198c56808d442bb2814..772f647f947d79576e20271af427976bc66dd151 100644 (file)
@@ -3,13 +3,14 @@ find_program(CTAGS_EXECUTABLE ctags)
 function(add_tags name)
   cmake_parse_arguments(TAGS "" "SRC_DIR;TAG_FILE" "EXCLUDE_OPTS;EXCLUDES" ${ARGN})
   set(excludes ${TAGS_EXCLUDES})
+  find_package(Git)
   if(TAGS_EXCLUDE_OPTS)
     # always respect EXCLUDES_OPTS
     list(APPEND excludes ${TAGS_EXCLUDE_OPTS})
-  else()
+  elseif(Git_FOUND)
     # exclude the submodules under SRC_DIR by default
     execute_process(
-      COMMAND git config --file .gitmodules --get-regexp path
+      COMMAND ${GIT_EXECUTABLE} config --file .gitmodules --get-regexp path
       COMMAND awk "/${TAGS_SRC_DIR}/ { print $2 }"
       WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
       RESULT_VARIABLE result_code