[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
Wed Dec 23 16:10:07 UTC 2020


>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


-- 
*With Regards,*
*Srikanth Kurapati.*
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/x265-devel/attachments/20201223/c31077a8/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-fix-avoids-unnecessary-lexicographic-order-checks-on.patch
Type: application/octet-stream
Size: 7612 bytes
Desc: not available
URL: <http://mailman.videolan.org/pipermail/x265-devel/attachments/20201223/c31077a8/attachment-0001.obj>


More information about the x265-devel mailing list