Done. Also added validation for tag distance as part of version information syntax analysis and for optimizing further processing of file contents.
On Thu, Dec 24, 2020 at 7:06 PM Aruna Matheswaran < ar...@multicorewareinc.com> wrote: > > > On Thu, Dec 24, 2020 at 6:22 PM Srikanth Kurapati < > srikanth.kurap...@multicorewareinc.com> wrote: > >> just to make sure that the is tag information is not spurious. All valid >> tags will have a commit id associated with them. We read it to check if the >> association is complete. >> > [AM] Tag's commit info in the version file and the associated parsing is > unnecessary as we aren't using it anywhere. Please remove that . > >> >> On Thu, Dec 24, 2020 at 5:55 PM Aruna Matheswaran < >> ar...@multicorewareinc.com> wrote: >> >>> >>> >>> On Wed, Dec 23, 2020 at 9:40 PM Srikanth Kurapati < >>> srikanth.kurap...@multicorewareinc.com> wrote: >>> >>>> From 06e09d500b9453b32835a6090df873b7b5842f22 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 >>>> >>>> and correct variables used for git archive version reporting >>>> --- >>>> source/cmake/Version.cmake | 103 ++++++++++++++++--------------------- >>>> 1 file changed, 44 insertions(+), 59 deletions(-) >>>> >>>> diff --git a/source/cmake/Version.cmake b/source/cmake/Version.cmake >>>> index 37c759268..f67b77395 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,33 +106,8 @@ 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") >>>> - execute_process( >>>> - COMMAND >>>> - ${GIT_EXECUTABLE} describe --abbrev=0 --tags >>>> - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} >>>> - OUTPUT_VARIABLE X265_LATEST_TAG >>>> - ERROR_QUIET >>>> - OUTPUT_STRIP_TRAILING_WHITESPACE >>>> - ) >>>> - execute_process( >>>> - COMMAND >>>> - ${GIT_EXECUTABLE} rev-list ${X265_LATEST_TAG}.. --count >>>> --first-parent >>>> - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} >>>> - OUTPUT_VARIABLE X265_TAG_DISTANCE >>>> - ERROR_QUIET >>>> - OUTPUT_STRIP_TRAILING_WHITESPACE >>>> - ) >>>> - execute_process( >>>> - COMMAND >>>> - ${GIT_EXECUTABLE} log --pretty=format:%h -n 1 >>>> - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} >>>> - OUTPUT_VARIABLE X265_REVISION_ID >>>> - ERROR_QUIET >>>> - OUTPUT_STRIP_TRAILING_WHITESPACE >>>> - ) >>>> -elseif(GIT_ARCHETYPE STREQUAL "1") >>>> - message(STATUS "X265 GIT ARCHIVE EXTRACT VERSION INFORMATION >>>> PROCESSING") >>>> +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}") >>>> @@ -152,42 +126,53 @@ elseif(GIT_ARCHETYPE STREQUAL "1") >>>> message(WARNING "RELEASE CHANGESET INFO NOT PRESENT IN >>>> VERSION FILE") >>>> endif() >>>> if(DEFINED git_repositorychangeset) >>>> - string(SUBSTRING "${git_repositorychangeset}" 0 9 >>>> X265_REPO_ID) >>>> + string(SUBSTRING "${git_repositorychangeset}" 0 9 >>>> X265_REVISION_ID) >>>> else() >>>> - message(STATUS "X265 LATEST COMMIT TIP INFORMATION NOT >>>> AVAILABLE") >>>> + message(STATUS "X265 LATEST COMMIT TIP INFORMATION NOT >>>> AVAILABLE") >>>> endif() >>>> if(DEFINED git_releasetagdistance) >>>> - set(X265_TAG_DISTANCE ${git_releasetagdistance}) >>>> + set(X265_TAG_DISTANCE ${git_releasetagdistance}) >>>> else() >>>> - message(WARNING "COMMIT INFORMATION AFTER LATEST REVISION >>>> UNAVAILABLE") >>>> + 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 >>>> + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} >>>> + OUTPUT_VARIABLE X265_LATEST_TAG >>>> + ERROR_QUIET >>>> + OUTPUT_STRIP_TRAILING_WHITESPACE >>>> + ) >>>> + execute_process( >>>> + COMMAND >>>> + ${GIT_EXECUTABLE} rev-list ${X265_LATEST_TAG}.. --count >>>> --first-parent >>>> + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} >>>> + OUTPUT_VARIABLE X265_TAG_DISTANCE >>>> + ERROR_QUIET >>>> + OUTPUT_STRIP_TRAILING_WHITESPACE >>>> + ) >>>> + execute_process( >>>> + COMMAND >>>> + ${GIT_EXECUTABLE} log --pretty=format:%h -n 1 >>>> + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} >>>> + OUTPUT_VARIABLE X265_REVISION_ID >>>> + ERROR_QUIET >>>> + OUTPUT_STRIP_TRAILING_WHITESPACE >>>> + ) >>>> + 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}") >>>> -- >>>> 2.20.1.windows.1 >>>> >>> [AM] The need for releasetagcommitid is still not clear. Why do we need >>> that? >>> >>>> >>>> >>>> -- >>>> *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 >>> >> >> >> -- >> *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 > -- *With Regards,* *Srikanth Kurapati.*
_______________________________________________ x265-devel mailing list x265-devel@videolan.org https://mailman.videolan.org/listinfo/x265-devel