From d1a1a2c06001da66ae1ba2abb366650ea36f0b34 Mon Sep 17 00:00:00 2001 From: derrod Date: Sun, 21 Aug 2022 15:58:03 +0200 Subject: [PATCH] cmake: Set RELEASE_CANDIDATE/BETA based on git describe --- cmake/Modules/VersionConfig.cmake | 43 ++++++++++++++++++------------- 1 file changed, 25 insertions(+), 18 deletions(-) diff --git a/cmake/Modules/VersionConfig.cmake b/cmake/Modules/VersionConfig.cmake index 1af11c95d..616530c3f 100644 --- a/cmake/Modules/VersionConfig.cmake +++ b/cmake/Modules/VersionConfig.cmake @@ -12,6 +12,30 @@ set(_OBS_BETA "0" "0" "0" "0") # Set full and canonical OBS version from current git tag or manual override if(NOT DEFINED OBS_VERSION_OVERRIDE) + if(NOT DEFINED RELEASE_CANDIDATE + AND NOT DEFINED BETA + AND EXISTS "${CMAKE_SOURCE_DIR}/.git") + execute_process( + COMMAND git describe --always --tags --dirty=-modified + OUTPUT_VARIABLE _OBS_VERSION + WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" + RESULT_VARIABLE _OBS_VERSION_RESULT + OUTPUT_STRIP_TRAILING_WHITESPACE) + + if(_OBS_VERSION_RESULT EQUAL 0) + if(${_OBS_VERSION} MATCHES "rc[0-9]+$") + set(RELEASE_CANDIDATE ${_OBS_VERSION}) + elseif(${_OBS_VERSION} MATCHES "beta[0-9]+$") + set(BETA ${_OBS_VERSION}) + else() + string(REPLACE "-" "." _CANONICAL_SPLIT ${_OBS_VERSION}) + string(REPLACE "." ";" _CANONICAL_SPLIT ${_CANONICAL_SPLIT}) + list(GET _CANONICAL_SPLIT 0 1 2 _OBS_VERSION_CANONICAL) + string(REPLACE "." ";" _OBS_VERSION ${_OBS_VERSION}) + endif() + endif() + endif() + # Set release candidate version information Must be a string in the format of # "x.x.x-rcx" if(DEFINED RELEASE_CANDIDATE) @@ -26,24 +50,7 @@ if(NOT DEFINED OBS_VERSION_OVERRIDE) string(REPLACE "." ";" _OBS_VERSION ${BETA}) string(REPLACE "." ";" _OBS_BETA ${_OBS_BETA}) list(GET _OBS_BETA 0 1 2 _OBS_VERSION_CANONICAL) - elseif(EXISTS "${CMAKE_SOURCE_DIR}/.git") - execute_process( - COMMAND git describe --always --tags --dirty=-modified - OUTPUT_VARIABLE _OBS_VERSION - WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" - RESULT_VARIABLE _OBS_VERSION_RESULT - OUTPUT_STRIP_TRAILING_WHITESPACE) - - if(_OBS_VERSION_RESULT EQUAL 0) - string(REPLACE "-" "." _CANONICAL_SPLIT ${_OBS_VERSION}) - string(REPLACE "." ";" _CANONICAL_SPLIT ${_CANONICAL_SPLIT}) - list(GET _CANONICAL_SPLIT 0 1 2 _OBS_VERSION_CANONICAL) - string(REPLACE "." ";" _OBS_VERSION ${_OBS_VERSION}) - else() - set(_OBS_VERSION "${_OBS_DEFAULT_VERSION}") - set(_OBS_VERSION_CANONICAL ${_OBS_DEFAULT_VERSION}) - endif() - else() + elseif(NOT DEFINED _OBS_VERSION) set(_OBS_VERSION ${_OBS_DEFAULT_VERSION}) set(_OBS_VERSION_CANONICAL ${_OBS_DEFAULT_VERSION}) endif()