[x265] [X265] [Final Patch] fix: avoids unnecessary lexicographic order checks on git changesets
Aruna Matheswaran
aruna at multicorewareinc.com
Wed Dec 30 05:48:03 UTC 2020
Pushed to Release_3.5 and master.
On Thu, Dec 24, 2020 at 10:48 PM Srikanth Kurapati <
srikanth.kurapati at multicorewareinc.com> wrote:
> From d3eefd984eb0f2d1b9bb0ab0c0393eeb3e0cf643 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
>
> 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 at videolan.org
> https://mailman.videolan.org/listinfo/x265-devel
>
--
Regards,
*Aruna Matheswaran,*
Video Codec Engineer,
Media & AI analytics BU,
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/x265-devel/attachments/20201230/7160431e/attachment.html>
More information about the x265-devel
mailing list