From 89663e0db82a1a246e4b133d64589f3f401a17ab Mon Sep 17 00:00:00 2001 From: Steveice10 <1269164+Steveice10@users.noreply.github.com> Date: Tue, 20 Jun 2023 09:44:20 -0700 Subject: [PATCH] build: Fix generating build info using unified source archive. (#6628) --- CMakeLists.txt | 5 ++++- CMakeModules/GenerateBuildInfo.cmake | 29 ++++++++++++++++++++-------- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7501fdb88..ccbe6cdd7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -120,7 +120,10 @@ function(check_submodules_present) endif() endforeach() endfunction() -check_submodules_present() +if (EXISTS "${PROJECT_SOURCE_DIR}/.git/objects") + # only check submodules when source is obtained via Git + check_submodules_present() +endif() configure_file(${PROJECT_SOURCE_DIR}/dist/compatibility_list/compatibility_list.qrc ${PROJECT_BINARY_DIR}/dist/compatibility_list/compatibility_list.qrc diff --git a/CMakeModules/GenerateBuildInfo.cmake b/CMakeModules/GenerateBuildInfo.cmake index 4ef472598..824ae1f9b 100644 --- a/CMakeModules/GenerateBuildInfo.cmake +++ b/CMakeModules/GenerateBuildInfo.cmake @@ -3,19 +3,32 @@ function(get_timestamp _var) string(TIMESTAMP timestamp UTC) set(${_var} "${timestamp}" PARENT_SCOPE) endfunction() +get_timestamp(BUILD_DATE) list(APPEND CMAKE_MODULE_PATH "${SRC_DIR}/externals/cmake-modules") -# Find the package here with the known path so that the GetGit commands can find it as well -find_package(Git QUIET PATHS "${GIT_EXECUTABLE}") +if (EXISTS "${SRC_DIR}/.git/objects") + # Find the package here with the known path so that the GetGit commands can find it as well + find_package(Git QUIET PATHS "${GIT_EXECUTABLE}") -# generate git/build information -include(GetGitRevisionDescription) -get_git_head_revision(GIT_REF_SPEC GIT_REV) + # only use Git to check revision info when source is obtained via Git + include(GetGitRevisionDescription) + get_git_head_revision(GIT_REF_SPEC GIT_REV) + git_describe(GIT_DESC --always --long --dirty) + git_branch_name(GIT_BRANCH) +elseif (EXISTS "${SRC_DIR}/GIT-COMMIT" AND EXISTS "${SRC_DIR}/GIT-TAG") + # unified source archive + file(READ "${SRC_DIR}/GIT-COMMIT" GIT_REV_RAW LIMIT 64) + string(STRIP "${GIT_REV_RAW}" GIT_REV) + string(SUBSTRING "${GIT_REV_RAW}" 0 9 GIT_DESC) + set(GIT_BRANCH "HEAD") +else() + # self-packed archive? + set(GIT_REV "UNKNOWN") + set(GIT_DESC "UNKNOWN") + set(GIT_BRANCH "UNKNOWN") +endif() string(SUBSTRING "${GIT_REV}" 0 7 GIT_SHORT_REV) -git_describe(GIT_DESC --always --long --dirty) -git_branch_name(GIT_BRANCH) -get_timestamp(BUILD_DATE) # Generate cpp with Git revision from template # Also if this is a CI build, add the build name (ie: Nightly, Canary) to the scm_rev file as well