From 10eeafb13aba21c31cc8efc577a1a51db460a072 Mon Sep 17 00:00:00 2001 From: Hoyeon Lee Date: Fri, 24 Oct 2025 12:39:44 +0900 Subject: [PATCH] cmake: make version.cmake handle shallow clones bcc's GitHub workflow has been failing for a while when building from a shallow clone (git clone --depth 1). In this case, git_describe() from CMake returns an invalid version string (128-NOTFOUND-deadbeef). Older setuptools versions used in Fedora 38 tolerated this format, but with Ubuntu 24.04's newer setuptools enforces PEP 440 compliance and treats it as an error, breaking the CI build. This updates cmake/version.cmake to detect this case and fall back to a compliant 0.0.0+ version when tags are missing. Commit hash is kept for traceability and behavior with full clone hasn't changed. Signed-off-by: Hoyeon Lee --- cmake/version.cmake | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/cmake/version.cmake b/cmake/version.cmake index 9ec23f6f54be..80072e9a5e58 100644 --- a/cmake/version.cmake +++ b/cmake/version.cmake @@ -5,14 +5,19 @@ if(NOT REVISION) string(SUBSTRING "${GIT_SHA1}" 0 8 GIT_SHA1_SHORT) git_describe(GIT_DESCRIPTION) git_describe(GIT_TAG_LAST "--abbrev=0" "--tags") - git_get_exact_tag(GIT_TAG_EXACT) - string(SUBSTRING "${GIT_TAG_LAST}+${GIT_SHA1_SHORT}" 1 -1 REVISION) - if(GIT_TAG_EXACT) - string(SUBSTRING "${GIT_TAG_EXACT}" 1 -1 REVISION) - message(STATUS "Currently on Git tag ${GIT_TAG_EXACT}") - else () - message(STATUS "Latest recognized Git tag is ${GIT_TAG_LAST}") - set(GIT_TAG_EXACT "") + if(GIT_TAG_LAST MATCHES "-128-NOTFOUND") + set(REVISION "0.0.0+${GIT_SHA1_SHORT}") + message(STATUS "Using PEP 440 compliant version for shallow clone") + else() + git_get_exact_tag(GIT_TAG_EXACT) + string(SUBSTRING "${GIT_TAG_LAST}+${GIT_SHA1_SHORT}" 1 -1 REVISION) + if(GIT_TAG_EXACT) + string(SUBSTRING "${GIT_TAG_EXACT}" 1 -1 REVISION) + message(STATUS "Currently on Git tag ${GIT_TAG_EXACT}") + else () + message(STATUS "Latest recognized Git tag is ${GIT_TAG_LAST}") + set(GIT_TAG_EXACT "") + endif() endif() message(STATUS "Git HEAD is ${GIT_SHA1}") # rpm/deb packaging uses this, only works on whole tag numbers