Advertisement
Guest User

improved version detection

a guest
Nov 20th, 2019
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
CMake 5.01 KB | None | 0 0
  1. diff --git a/cmake/modules/get-version.cmake b/cmake/modules/get-version.cmake
  2. index 65377c5b..59712772 100644
  3. --- a/cmake/modules/get-version.cmake
  4. +++ b/cmake/modules/get-version.cmake
  5. @@ -7,6 +7,63 @@ unset(PSI_REVISION)
  6.  unset(PSI_PLUS_REVISION)
  7.  set(VERSION_OBTAINED OFF)
  8.  
  9. +function(read_version_file VF_RESULT)
  10. +    if(EXISTS "${VER_FILE}")
  11. +        message(STATUS "Found Psi version file: ${VER_FILE}")
  12. +        file(STRINGS "${VER_FILE}" VER_LINES)
  13. +        if(VER_LINES)
  14. +            set(${VF_RESULT} ${VER_LINES} PARENT_SCOPE)
  15. +        else()
  16. +            message(FATAL_ERROR "Can't read ${VER_FILE} contents")
  17. +        endif()
  18. +    else()
  19. +        message(FATAL_ERROR "${VER_FILE} not found")
  20. +    endif()
  21. +endfunction()
  22. +
  23. +function(obtain_git_psi_version GIT_PSI_VERSION)
  24. +    find_program(GIT_BIN git DOC "Path to git utility")
  25. +    if(GIT_BIN)
  26. +        message(STATUS "Git utility found ${GIT_BIN}")
  27. +        execute_process(
  28. +            COMMAND ${GIT_BIN} describe --tags --abbrev=0
  29. +            WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
  30. +            OUTPUT_VARIABLE MAIN_VER
  31. +            OUTPUT_STRIP_TRAILING_WHITESPACE
  32. +            )
  33. +        if(MAIN_VER)
  34. +            set(APP_VERSION "${MAIN_VER}" PARENT_SCOPE)
  35. +            set(${GIT_PSI_VERSION} ${MAIN_VER} PARENT_SCOPE)
  36. +        endif()
  37. +    endif()
  38. +endfunction()
  39. +
  40. +function(obtain_git_psi_plus_version GIT_PSI_PLUS_VERSION)
  41. +    find_program(GIT_BIN git DOC "Path to git utility")
  42. +    if(GIT_BIN)
  43. +        obtain_git_psi_version(GIT_VER)
  44. +        if(GIT_VER)
  45. +            execute_process(
  46. +                COMMAND ${GIT_BIN} rev-list --count ${GIT_VER}\.\.HEAD
  47. +                WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
  48. +                OUTPUT_VARIABLE COMMITS
  49. +                OUTPUT_STRIP_TRAILING_WHITESPACE
  50. +                )
  51. +            if(COMMITS)
  52. +                execute_process(
  53. +                    COMMAND ${GIT_BIN} rev-parse --short HEAD
  54. +                    WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
  55. +                    OUTPUT_VARIABLE VER_HASH
  56. +                    OUTPUT_STRIP_TRAILING_WHITESPACE
  57. +                )
  58. +            endif()
  59. +            if(COMMITS AND VER_HASH)
  60. +                set(${GIT_PSI_PLUS_VERSION} "${GIT_VER}.${COMMITS} \(${PSI_COMPILATION_DATE}, ${VER_HASH}${PSI_VER_SUFFIX}\)" PARENT_SCOPE)
  61. +            endif()
  62. +        endif()
  63. +    endif()
  64. +endfunction()
  65. +
  66.  function(obtain_psi_version VERSION_LINES)
  67.      set(_VLINES ${VERSION_LINES})
  68.      string(REGEX MATCH "^[0-9]+\\.[0-9]+" _VER_LINE ${_VLINES})
  69. @@ -25,7 +82,7 @@ endfunction()
  70.  
  71.  function(obtain_psi_plus_version VERSION_LINES)
  72.      set(_VLINES ${VERSION_LINES})
  73. -    string(REGEX MATCHALL "^([0-9]+\\.[0-9]+\\.[0-9]+)+.+Psi:([a-fA-F0-9]+)+.+Psi\\+:([a-fA-F0-9]+)+" VER_LINE_A ${VER_LINES})
  74. +    string(REGEX MATCHALL "^([0-9]+\\.[0-9]+\\.[0-9]+)+.+Psi:([a-fA-F0-9]+)+.+Psi\\+:([a-fA-F0-9]+)+" VER_LINE_A ${_VLINES})
  75.      if(${CMAKE_MATCH_COUNT} EQUAL 3)
  76.          if(CMAKE_MATCH_1)
  77.              set(_APP_VERSION ${CMAKE_MATCH_1})
  78. @@ -57,21 +114,37 @@ function(obtain_psi_plus_version VERSION_LINES)
  79.      endif()
  80.  endfunction()
  81.  
  82. -if(NOT PSI_VERSION AND (EXISTS "${VER_FILE}"))
  83. -    message(STATUS "Found Psi version file: ${VER_FILE}")
  84. -    file(STRINGS "${VER_FILE}" VER_LINES)
  85. +if(NOT PSI_VERSION)# AND (EXISTS "${VER_FILE}"))
  86.      if(IS_PSIPLUS)
  87. -        obtain_psi_plus_version("${VER_LINES}")
  88. -        if(VERSION_OBTAINED)
  89. -            set(PSI_VERSION "${APP_VERSION} \(${PSI_COMPILATION_DATE}, Psi:${PSI_REVISION}, Psi+:${PSI_PLUS_REVISION}${PSI_VER_SUFFIX}\)")
  90. +        obtain_git_psi_plus_version(GITVER)
  91. +        if(GITVER)
  92. +            message(STATUS "Git Version ${GITVER}")
  93. +            set(PSI_VERSION "${GITVER}")
  94. +        else()
  95. +            read_version_file(VER_LINES)
  96. +            obtain_psi_plus_version("${VER_LINES}")
  97. +            if(VER_LINES)
  98. +                set(PSI_VERSION "${APP_VERSION} \(${PSI_COMPILATION_DATE}, Psi:${PSI_REVISION}, Psi+:${PSI_PLUS_REVISION}${PSI_VER_SUFFIX}\)")
  99. +            endif()
  100.          endif()
  101.      else()
  102. -        obtain_psi_version("${VER_LINES}")
  103. -        if(VERSION_OBTAINED)
  104. +        obtain_git_psi_version(GITVER)
  105. +        if(GITVER)
  106. +            message(STATUS "Git Version ${GITVER}")
  107.              if(PRODUCTION)
  108. -                set(PSI_VERSION "${APP_VERSION}")
  109. +                set(PSI_VERSION "${GITVER}")
  110.              else()
  111. -                set(PSI_VERSION "${APP_VERSION} \(${PSI_COMPILATION_DATE}${PSI_VER_SUFFIX}\)")
  112. +                set(PSI_VERSION "${GITVER} \(${PSI_COMPILATION_DATE}${PSI_VER_SUFFIX}\)")
  113. +            endif()
  114. +        else()
  115. +            read_version_file(VER_LINES)
  116. +            obtain_psi_version("${VER_LINES}")
  117. +            if(VERSION_OBTAINED)
  118. +                if(PRODUCTION)
  119. +                    set(PSI_VERSION "${APP_VERSION}")
  120. +                else()
  121. +                    set(PSI_VERSION "${APP_VERSION} \(${PSI_COMPILATION_DATE}${PSI_VER_SUFFIX}\)")
  122. +                endif()
  123.              endif()
  124.          endif()
  125.      endif()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement