Pushed to Release_3.5 and master. On Thu, Dec 24, 2020 at 10:48 PM Srikanth Kurapati < srikanth.kurap...@multicorewareinc.com> wrote:
> From d3eefd984eb0f2d1b9bb0ab0c0393eeb3e0cf643 Mon Sep 17 00:00:00 2001 > From: Srikanth Kurapati <srikanth.kurap...@multicorewareinc.com> > Date: Wed, 16 Dec 2020 10:52:33 +0530 > Subject: [PATCH] fix: avoids unnecessary lexicographic order checks on git > changesets > > also corrects variables used for git archive version reporting and > mandatory fields in version file > --- > source/cmake/Version.cmake | 108 ++++++++++++++++--------------------- > x265Version.txt | 1 - > 2 files changed, 47 insertions(+), 62 deletions(-) > > diff --git a/source/cmake/Version.cmake b/source/cmake/Version.cmake > index 37c759268..a3988d39f 100644 > --- a/source/cmake/Version.cmake > +++ b/source/cmake/Version.cmake > @@ -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}") > diff --git a/x265Version.txt b/x265Version.txt > index ac225ec4d..33950f9a0 100644 > --- a/x265Version.txt > +++ b/x265Version.txt > @@ -1,5 +1,4 @@ > #Attribute: Values > repositorychangeset: 5163c32d7 > -releasetagcommitid: a4f320054 > releasetagdistance: 28 > releasetag: 3.4 > -- > 2.20.1.windows.1 > > > -- > *With Regards,* > *Srikanth Kurapati.* > _______________________________________________ > x265-devel mailing list > x265-devel@videolan.org > https://mailman.videolan.org/listinfo/x265-devel > -- Regards, *Aruna Matheswaran,* Video Codec Engineer, Media & AI analytics BU,
_______________________________________________ x265-devel mailing list x265-devel@videolan.org https://mailman.videolan.org/listinfo/x265-devel