Mercurial > x265
changeset 12708:26a1ee003d4b draft
fix: avoids unnecessary lexicographic order checks on git changesets
also corrects variables used for git archive version reporting and mandatory fields in version file
author | Srikanth Kurapati <srikanth.kurapati@multicorewareinc.com> |
---|---|
date | Wed, 16 Dec 2020 10:52:33 +0530 |
parents | 774ccb2fe1cf |
children | 55827a4c4222 |
files | source/cmake/Version.cmake x265Version.txt |
diffstat | 2 files changed, 47 insertions(+-), 62 deletions(-) [+] |
line wrap: on
line diff
--- a/source/cmake/Version.cmake Thu Nov 26 19:13:42 2020 +0530 +++ b/source/cmake/Version.cmake Wed Dec 16 10:52:33 2020 +0530 @@ -28,8 +28,6 @@ set(X265_VERSION "unknown") set(X265_LATEST_TAG "0.0") set(X265_TAG_DISTANCE "0") -set(HG_ARCHETYPE "0") -set(GIT_ARCHETYPE "0") #Find version control software to be used for live and extracted repositories from compressed tarballs if(CMAKE_VERSION VERSION_LESS "2.8.10") @@ -43,10 +41,10 @@ else() endif() if(HG_EXECUTABLE) #Set Version Control binary for source code kind - if(EXISTS CMAKE_CURRENT_SOURCE_DIR}/../.hg_archival.txt) + if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/../.hg_archival.txt) set(HG_ARCHETYPE "1") elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/../.hg) - set(HG_ARCHETYPE "2") + set(HG_ARCHETYPE "0") endif() endif(HG_EXECUTABLE) find_package(Git QUIET) #No restrictions on Git versions used, any versions from 1.8.x to 2.2.x or later should do. @@ -54,14 +52,14 @@ if(Git_FOUND) find_program(GIT_EXECUTABLE git) message(STATUS "GIT_EXECUTABLE ${GIT_EXECUTABLE}") if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/../.git) - set(GIT_ARCHETYPE "2") + set(GIT_ARCHETYPE "0") elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/../x265Version.txt) set(GIT_ARCHETYPE "1") endif() endif(Git_FOUND) -if(HG_ARCHETYPE STREQUAL "1") +if(HG_ARCHETYPE) #Read the lines of the archive summary file to extract the version - message(STATUS "SOURCE CODE IS FROM x265 ARCHIVED ZIP OR TAR BALL") + message(STATUS "SOURCE CODE IS FROM x265 HG ARCHIVED ZIP OR TAR BALL") file(READ ${CMAKE_CURRENT_SOURCE_DIR}/../.hg_archival.txt archive) STRING(REGEX REPLACE "\n" ";" archive "${archive}") foreach(f ${archive}) @@ -79,7 +77,8 @@ if(HG_ARCHETYPE STREQUAL "1") string(SUBSTRING "${hg_node}" 0 12 X265_REVISION_ID) endif() message(STATUS "HG ARCHIVAL INFORMATION PROCESSED") -elseif(HG_ARCHETYPE STREQUAL "2") +elseif(NOT DEFINED GIT_ARCHETYPE) +# means that's its neither hg archive nor git clone/archive hence it has to be hg live repo as these are only four cases that need to processed in mutual exclusion. execute_process(COMMAND ${HG_EXECUTABLE} log -r. --template "{latesttag}" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} @@ -107,7 +106,41 @@ elseif(HG_ARCHETYPE STREQUAL "2") string(SUBSTRING ${X265_LATEST_TAG} 1 -1 X265_LATEST_TAG) endif() message(STATUS "HG LIVE REPO STATUS CHECK DONE") -elseif(GIT_ARCHETYPE STREQUAL "2") +elseif(GIT_ARCHETYPE) + message(STATUS "SOURCE CODE IS FROM x265 GIT ARCHIVED ZIP OR TAR BALL") + #Read the lines of the archive summary file to extract the version + file(READ ${CMAKE_CURRENT_SOURCE_DIR}/../x265Version.txt filebuf) + STRING(REGEX REPLACE "\n" ";" filebuf "${filebuf}") + foreach(line ${filebuf}) + string(FIND "${line}" ": " pos) + string(SUBSTRING "${line}" 0 ${pos} key) + string(SUBSTRING "${line}" ${pos} -1 value) + string(SUBSTRING "${value}" 2 -1 value) + set(git_${key} ${value}) + endforeach() + if(DEFINED git_releasetag) + set(X265_LATEST_TAG ${git_releasetag}) + if(DEFINED git_releasetagdistance) + set(X265_TAG_DISTANCE ${git_releasetagdistance}) + if(X265_TAG_DISTANCE STRGREATER_EQUAL "0") + #for x265 the repository changeset has to be a tag id or commit id after the tag + #hence mandating it's presence in version file always for valid tag distances. + if(DEFINED git_repositorychangeset) + string(SUBSTRING "${git_repositorychangeset}" 0 9 X265_REVISION_ID) + else() + message(WARNING "X265 LATEST COMMIT TIP INFORMATION NOT AVAILABLE") + endif() + else() + message(WARNING "X265 TAG DISTANCE INVALID") + endif() + else() + message(WARNING "COMMIT INFORMATION AFTER LATEST REVISION UNAVAILABLE") + endif() + else() + message(WARNING "X265 RELEASE VERSION LABEL MISSING: ${X265_LATEST_TAG}") + endif() + message(STATUS "GIT ARCHIVAL INFORMATION PROCESSED") +else() execute_process( COMMAND ${GIT_EXECUTABLE} describe --abbrev=0 --tags @@ -132,62 +165,15 @@ elseif(GIT_ARCHETYPE STREQUAL "2") ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE ) -elseif(GIT_ARCHETYPE STREQUAL "1") - message(STATUS "X265 GIT ARCHIVE EXTRACT VERSION INFORMATION PROCESSING") - #Read the lines of the archive summary file to extract the version - file(READ ${CMAKE_CURRENT_SOURCE_DIR}/../x265Version.txt filebuf) - STRING(REGEX REPLACE "\n" ";" filebuf "${filebuf}") - foreach(line ${filebuf}) - string(FIND "${line}" ": " pos) - string(SUBSTRING "${line}" 0 ${pos} key) - string(SUBSTRING "${line}" ${pos} -1 value) - string(SUBSTRING "${value}" 2 -1 value) - set(git_${key} ${value}) - endforeach() - if(DEFINED git_releasetag) - set(X265_LATEST_TAG ${git_releasetag}) - if(DEFINED git_releasetagcommitid) - string(SUBSTRING "${git_releasetagcommitid}" 0 9 X265_REVISION_ID) - else() - message(WARNING "RELEASE CHANGESET INFO NOT PRESENT IN VERSION FILE") - endif() - if(DEFINED git_repositorychangeset) - string(SUBSTRING "${git_repositorychangeset}" 0 9 X265_REPO_ID) - else() - message(STATUS "X265 LATEST COMMIT TIP INFORMATION NOT AVAILABLE") - endif() - if(DEFINED git_releasetagdistance) - set(X265_TAG_DISTANCE ${git_releasetagdistance}) - else() - message(WARNING "COMMIT INFORMATION AFTER LATEST REVISION UNAVAILABLE") - endif() - else() - message(WARNING "X265 RELEASE VERSION LABEL MISSING: ${X265_LATEST_TAG}") - endif() + message(STATUS "GIT LIVE REPO VERSION RETRIEVED") endif() -# formatting based on positive or negative distance from tag +# formatting based on distance from tag if(X265_TAG_DISTANCE STREQUAL "0") - if(X265_REVISION_ID STREQUAL X265_REPO_ID) - set(X265_VERSION "${X265_LATEST_TAG}") - else() - message(WARNING "REPO AND RELEASE CHANGESETS NOT MATCHING") - endif() + set(X265_VERSION "${X265_LATEST_TAG}") elseif(X265_TAG_DISTANCE STRGREATER "0") - if(X265_REVISION_ID STRLESS X265_REPO_ID) - set(X265_VERSION "${X265_LATEST_TAG}+${X265_TAG_DISTANCE}-${X265_REVISION_ID}") - else() - message(WARNING "ARCCHIVE TIP CHANGESET TO BE GREATER THAN REVISION ID") - endif() -elseif(X265_TAG_DISTANCE STRLESS "0") - if(X265_REVISION_ID STRGREATER X265_REPO_ID) - set(X265_VERSION "${X265_LATEST_TAG}${X265_TAG_DISTANCE}+${X265_REPO_ID}") - else() - message(WARNING "REVISION ID EXPECTED TO BE LARGER THAN ARCHIVE TIP CHANGESET") - endif() -else() - message(ERROR "Inappropriate set of version information") + set(X265_VERSION "${X265_LATEST_TAG}+${X265_TAG_DISTANCE}-${X265_REVISION_ID}") endif() #will always be printed in its entirety based on version file configuration to avail revision monitoring by repo owners -message(STATUS "x265 RELEASE VERSION ${X265_VERSION}") +message(STATUS "X265 RELEASE VERSION ${X265_VERSION}")