[x265] [X265] [Fix Patch] [Master, Release 3.5 branches] Fix: avoids unnecessary lexicographic order checks on git changesets

Srikanth Kurapati srikanth.kurapati at multicorewareinc.com
Thu Dec 24 17:15:38 UTC 2020


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 <
aruna at multicorewareinc.com> wrote:

>
>
> On Thu, Dec 24, 2020 at 6:22 PM Srikanth Kurapati <
> srikanth.kurapati at 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 <
>> aruna at multicorewareinc.com> wrote:
>>
>>>
>>>
>>> On Wed, Dec 23, 2020 at 9:40 PM Srikanth Kurapati <
>>> srikanth.kurapati at multicorewareinc.com> wrote:
>>>
>>>> From 06e09d500b9453b32835a6090df873b7b5842f22 Mon Sep 17 00:00:00 2001
>>>> From: Srikanth Kurapati <srikanth.kurapati at 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 at 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 at videolan.org
>>> https://mailman.videolan.org/listinfo/x265-devel
>>>
>>
>>
>> --
>> *With Regards,*
>> *Srikanth Kurapati.*
>> _______________________________________________
>> x265-devel mailing list
>> x265-devel at 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 at videolan.org
> https://mailman.videolan.org/listinfo/x265-devel
>


-- 
*With Regards,*
*Srikanth Kurapati.*
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/x265-devel/attachments/20201224/f0f5d9b8/attachment-0001.html>


More information about the x265-devel mailing list