cmake: Set RELEASE_CANDIDATE/BETA based on git describe

master
derrod 2022-08-21 15:58:03 +02:00 committed by Rodney
parent 9b087d15fc
commit d1a1a2c060
1 changed files with 25 additions and 18 deletions

View File

@ -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()