From b70137d0cc62be7f43816a3ba33b7c3e6a2fbd4e Mon Sep 17 00:00:00 2001 From: Stijn Tintel Date: Fri, 18 Nov 2022 09:19:02 +0200 Subject: [PATCH] CMake: skip git magic if no .git dir exists The checks to fail CMake if git describe isn't working break build when building from source tarballs. Test if there is a git directory, and completely skip the git magic if not. Fixes: f42e7beec46e ("CI: add explicit clone to fetch tags") Signed-off-by: Stijn Tintel --- CMakeLists.txt | 51 +++++++++++++++++++++++++------------------------- 1 file changed, 26 insertions(+), 25 deletions(-) --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,35 +9,36 @@ set (VERSION_MAJOR 0) set (VERSION_MINOR 2) set (VERSION_PATCH 2) -execute_process(COMMAND git describe --tags --dirty - OUTPUT_VARIABLE GIT_DESCRIBE - OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET) -execute_process(COMMAND git describe --abbrev=0 - OUTPUT_VARIABLE GIT_LAST_TAG - OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET) +if (EXISTS .git/) + execute_process(COMMAND git describe --tags --dirty + OUTPUT_VARIABLE GIT_DESCRIBE + OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET) + execute_process(COMMAND git describe --abbrev=0 + OUTPUT_VARIABLE GIT_LAST_TAG + OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET) -string(LENGTH "${GIT_DESCRIBE}" GIT_DESCRIBE_LEN) -string(LENGTH "${GIT_LAST_TAG}" GIT_LAST_TAG_LEN) + string(LENGTH "${GIT_DESCRIBE}" GIT_DESCRIBE_LEN) + string(LENGTH "${GIT_LAST_TAG}" GIT_LAST_TAG_LEN) -if (GIT_DESCRIBE_LEN EQUAL 0 OR GIT_LAST_TAG_LEN EQUAL 0) - message(FATAL_ERROR "git describe output empty") -endif () + if (GIT_DESCRIBE_LEN EQUAL 0 OR GIT_LAST_TAG_LEN EQUAL 0) + message(FATAL_ERROR "git describe output empty") + endif () -string(REGEX REPLACE "^${GIT_LAST_TAG}-" "" GIT_DESCRIBE_NOTAG "${GIT_DESCRIBE}") + string(REGEX REPLACE "^${GIT_LAST_TAG}-" "" GIT_DESCRIBE_NOTAG "${GIT_DESCRIBE}") -if (NOT "${GIT_DESCRIBE}" STREQUAL "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}") - if ("${GIT_LAST_TAG}" VERSION_LESS - "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}") - string(REGEX REPLACE "^${GIT_LAST_TAG}-" - "" VERSION_TWEAK "0-pre-${GIT_DESCRIBE_NOTAG}") - else () - string(REGEX REPLACE - "^${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}-" - "" VERSION_TWEAK "${GIT_DESCRIBE}") + if (NOT "${GIT_DESCRIBE}" STREQUAL "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}") + if ("${GIT_LAST_TAG}" VERSION_LESS + "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}") + string(REGEX REPLACE "^${GIT_LAST_TAG}-" + "" VERSION_TWEAK "0-pre-${GIT_DESCRIBE_NOTAG}") + else () + string(REGEX REPLACE + "^${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}-" + "" VERSION_TWEAK "${GIT_DESCRIBE}") + endif () endif () endif () - configure_file ( "${PROJECT_SOURCE_DIR}/src/config.h.in" "${PROJECT_BINARY_DIR}/config.h"