Browse Source

cmake: Set RELEASE_CANDIDATE/BETA based on git describe

derrod 3 years ago
parent
commit
d1a1a2c060
1 changed files with 25 additions and 18 deletions
  1. 25 18
      cmake/Modules/VersionConfig.cmake

+ 25 - 18
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()