[AM] Still this is misleading. --version lists build details in addition to tag info. [KS] Not at all, its similar to with other open source softwares like ffmpeg Example: "ffmpeg version N-94147-ge51cc7ed85" [AM] What is the significance of this check? Is this with the assumption that the commit hash values are in ascending order?? [KS] To check if information in tag distance information is correlating to changeset info. STRGREATER checks if the strings are lexicographically greater than AM] Release_3.5 is not a valid tag. [KS] releasetag: refers to name of the tag.
On Thu, Oct 29, 2020 at 9:39 PM Aruna Matheswaran < ar...@multicorewareinc.com> wrote: > > > On Tue, Oct 20, 2020 at 6:57 PM Srikanth Kurapati < > srikanth.kurap...@multicorewareinc.com> wrote: > >> From 07b19f58c24f5c9919f49309a9e299aae825f784 Mon Sep 17 00:00:00 2001 >> From: Srikanth Kurapati <srikanth.kurap...@multicorewareinc.com> >> Date: Tue, 13 Oct 2020 20:46:56 +0530 >> Subject: [PATCH] Fix incorrect version display issue on console for >> archived >> repositories. >> >> 1. adds a new file x265version.txt to maintain version information across >> releases. >> 2. adds functionality to process the same & updates documentation. >> --- >> doc/reST/cli.rst | 11 ++- >> source/CMakeLists.txt | 2 +- >> source/cmake/Version.cmake | 193 +++++++++++++++++++++++++++++++++++++ >> source/cmake/version.cmake | 97 ------------------- >> x265Version.txt | 5 + >> 5 files changed, 208 insertions(+), 100 deletions(-) >> create mode 100644 source/cmake/Version.cmake >> delete mode 100644 source/cmake/version.cmake >> create mode 100644 x265Version.txt >> >> diff --git a/doc/reST/cli.rst b/doc/reST/cli.rst >> index 1a1de9f50..26ff3ff7a 100755 >> --- a/doc/reST/cli.rst >> +++ b/doc/reST/cli.rst >> @@ -36,13 +36,20 @@ Executable Options >> >> .. option:: --help, -h >> >> - Display help text >> + Displays help text >> >> **CLI ONLY** >> >> .. option:: --version, -V >> >> - Display version details >> + Displays version details in the following format *[Version >> Name]+/-[Number of commits from the release changeset]-/+[repository's head >> changeset SHA-1 paraphrase identifier]* using input from >> + version control software *Git or Mercurial* for cloned repositories. In >> case of release of any specific archive of x265 generated using version >> control software the cli option displays >> + the version string using information from configuration in file >> *x265Version.txt* >> > [AM] Still this is misleading. --version lists build details in addition > to tag info. > >> + >> + .. seeAlso:: For more information on how to edit the version file >> please refer to `<https://bitbucket.org/multicoreware/x265_git/wiki/Home>`_ >> and Contribute pages for updates specific >> + release and version control management. >> + >> + **Example for git repositories:** <h1>x265 [info]: HEVC encoder version >> 3.4+26-a82c6c7a7<\h1> >> >> **CLI ONLY** >> >> diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt >> index 67e737512..95218f5dc 100755 >> --- a/source/CMakeLists.txt >> +++ b/source/CMakeLists.txt >> @@ -485,7 +485,7 @@ if(POWER) >> endif() >> endif() >> >> -include(version) # determine X265_VERSION and X265_LATEST_TAG >> +include(Version) # determine X265_VERSION and X265_LATEST_TAG >> include_directories(. common encoder "${PROJECT_BINARY_DIR}") >> >> option(ENABLE_PPA "Enable PPA profiling instrumentation" OFF) >> diff --git a/source/cmake/Version.cmake b/source/cmake/Version.cmake >> new file mode 100644 >> index 000000000..683a6c6fb >> --- /dev/null >> +++ b/source/cmake/Version.cmake >> @@ -0,0 +1,193 @@ >> + >> ################################################################################################################# >> + # >> + # Copyright (C) 2013-2020 MulticoreWare, Inc >> + # >> + # This program is free software; you can redistribute it and/or modify >> + # it under the terms of the GNU General Public License as published by >> + # the Free Software Foundation; either version 2 of the License, or >> + # (at your option) any later version. >> + # >> + # This program is distributed in the hope that it will be useful, >> + # but WITHOUT ANY WARRANTY; without even the implied warranty of >> + # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >> + # GNU General Public License for more details. >> + # >> + # You should have received a copy of the GNU General Public License >> + # along with this program; if not, write to the Free Software >> + # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111, >> USA. >> + # >> + # This program is also available under a commercial proprietary license. >> + # For more information, contact us at license @ x265.com >> + # >> + # Authors: Janani T.E <janani...@multicorewareinc.com>, Srikanth >> Kurapati <srikanthkurap...@multicorewareinc.com> >> + # >> + >> ################################################################################################################# >> + # PURPOSE: Identity version control software version display, also read >> version files to present x265 version. >> + >> ################################################################################################################# >> + #Default Settings, for user to be vigilant about x265 version being >> reported during product build. >> +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") >> + find_program(HG_EXECUTABLE hg) >> + if(EXISTS "${HG_EXECUTABLE}.bat") >> + set(HG_EXECUTABLE "${HG_EXECUTABLE}.bat") >> + endif() >> + message(STATUS "hg found at ${HG_EXECUTABLE}") >> +else() >> + find_package(Hg QUIET) >> +endif() >> +if(HG_EXECUTABLE) >> + #Set Version Control binary for source code kind >> + if(EXISTS CMAKE_CURRENT_SOURCE_DIR}/../.hg_archival.txt) >> + set(HG_ARCHETYPE "1") >> + elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/../.hg) >> + set(HG_ARCHETYPE "2") >> + 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. >> +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") >> + elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/../x265Version.txt) >> + set(GIT_ARCHETYPE "1") >> + endif() >> +endif(Git_FOUND) >> +if(HG_ARCHETYPE STREQUAL "1") >> + #Read the lines of the archive summary file to extract the version >> + message(STATUS "SOURCE CODE IS FROM x265 ARCHIVED ZIP OR TAR BALL") >> + file(READ ${CMAKE_CURRENT_SOURCE_DIR}/../.hg_archival.txt archive) >> + STRING(REGEX REPLACE "\n" ";" archive "${archive}") >> + foreach(f ${archive}) >> + string(FIND "${f}" ": " pos) >> + string(SUBSTRING "${f}" 0 ${pos} key) >> + string(SUBSTRING "${f}" ${pos} -1 value) >> + string(SUBSTRING "${value}" 2 -1 value) >> + set(hg_${key} ${value}) >> + endforeach() >> + if(DEFINED hg_tag) >> + set(X265_LATEST_TAG ${hg_tag}) >> + elseif(DEFINED hg_node) >> + set(X265_LATEST_TAG ${hg_latesttag}) >> + set(X265_TAG_DISTANCE ${hg_latesttagdistance}) >> + string(SUBSTRING "${hg_node}" 0 12 X265_REVISION_ID) >> + endif() >> + message(STATUS "HG ARCHIVAL INFORMATION PROCESSED") >> +elseif(HG_ARCHETYPE STREQUAL "2") >> + execute_process(COMMAND >> + ${HG_EXECUTABLE} log -r. --template "{latesttag}" >> + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} >> + OUTPUT_VARIABLE X265_LATEST_TAG >> + ERROR_QUIET >> + OUTPUT_STRIP_TRAILING_WHITESPACE >> + ) >> + execute_process(COMMAND >> + ${HG_EXECUTABLE} log -r. --template "{latesttagdistance}" >> + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} >> + OUTPUT_VARIABLE X265_TAG_DISTANCE >> + ERROR_QUIET >> + OUTPUT_STRIP_TRAILING_WHITESPACE >> + ) >> + execute_process( >> + COMMAND >> + ${HG_EXECUTABLE} log -r. --template "{node}" >> + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} >> + OUTPUT_VARIABLE X265_REVISION_ID >> + ERROR_QUIET >> + OUTPUT_STRIP_TRAILING_WHITESPACE >> + ) >> + string(SUBSTRING "${X265_REVISION_ID}" 0 12 X265_REVISION_ID) >> + if(X265_LATEST_TAG MATCHES "^r") >> + 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") >> + #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() >> +endif() >> + >> +# formatting based on positive or negative 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() >> +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) >> > [AM] What is the significance of this check? Is this with the assumption > that the commit hash values are in ascending order?? > >> + 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") >> +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}") >> diff --git a/source/cmake/version.cmake b/source/cmake/version.cmake >> deleted file mode 100644 >> index 35302249a..000000000 >> --- a/source/cmake/version.cmake >> +++ /dev/null >> @@ -1,97 +0,0 @@ >> -if(CMAKE_VERSION VERSION_LESS "2.8.10") >> - find_program(HG_EXECUTABLE hg) >> -else() >> - find_package(Hg QUIET) >> -endif() >> -find_package(Git QUIET) # present in 2.8.8 >> - >> -# defaults, in case everything below fails >> -set(X265_VERSION "unknown") >> -set(X265_LATEST_TAG "0.0") >> -set(X265_TAG_DISTANCE "0") >> - >> -if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/../.hg_archival.txt) >> - # read the lines of the archive summary file to extract the version >> - file(READ ${CMAKE_CURRENT_SOURCE_DIR}/../.hg_archival.txt archive) >> - STRING(REGEX REPLACE "\n" ";" archive "${archive}") >> - foreach(f ${archive}) >> - string(FIND "${f}" ": " pos) >> - string(SUBSTRING "${f}" 0 ${pos} key) >> - string(SUBSTRING "${f}" ${pos} -1 value) >> - string(SUBSTRING "${value}" 2 -1 value) >> - set(hg_${key} ${value}) >> - endforeach() >> - if(DEFINED hg_tag) >> - set(X265_LATEST_TAG ${hg_tag}) >> - elseif(DEFINED hg_node) >> - set(X265_LATEST_TAG ${hg_latesttag}) >> - set(X265_TAG_DISTANCE ${hg_latesttagdistance}) >> - string(SUBSTRING "${hg_node}" 0 12 X265_REVISION_ID) >> - endif() >> -elseif(HG_EXECUTABLE AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/../.hg) >> - if(EXISTS "${HG_EXECUTABLE}.bat") >> - # mercurial source installs on Windows require .bat extension >> - set(HG_EXECUTABLE "${HG_EXECUTABLE}.bat") >> - endif() >> - message(STATUS "hg found at ${HG_EXECUTABLE}") >> - >> - execute_process(COMMAND >> - ${HG_EXECUTABLE} log -r. --template "{latesttag}" >> - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} >> - OUTPUT_VARIABLE X265_LATEST_TAG >> - ERROR_QUIET >> - OUTPUT_STRIP_TRAILING_WHITESPACE >> - ) >> - execute_process(COMMAND >> - ${HG_EXECUTABLE} log -r. --template "{latesttagdistance}" >> - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} >> - OUTPUT_VARIABLE X265_TAG_DISTANCE >> - ERROR_QUIET >> - OUTPUT_STRIP_TRAILING_WHITESPACE >> - ) >> - execute_process( >> - COMMAND >> - ${HG_EXECUTABLE} log -r. --template "{node}" >> - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} >> - OUTPUT_VARIABLE X265_REVISION_ID >> - ERROR_QUIET >> - OUTPUT_STRIP_TRAILING_WHITESPACE >> - ) >> - string(SUBSTRING "${X265_REVISION_ID}" 0 12 X265_REVISION_ID) >> - >> - if(X265_LATEST_TAG MATCHES "^r") >> - string(SUBSTRING ${X265_LATEST_TAG} 1 -1 X265_LATEST_TAG) >> - endif() >> -elseif(GIT_EXECUTABLE AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/../.git) >> - 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 -1 --format=g%h >> - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} >> - OUTPUT_VARIABLE X265_REVISION_ID >> - ERROR_QUIET >> - OUTPUT_STRIP_TRAILING_WHITESPACE >> - ) >> -endif() >> -if(X265_TAG_DISTANCE STREQUAL "0") >> - set(X265_VERSION "${X265_LATEST_TAG}") >> -else() >> - set(X265_VERSION >> "${X265_LATEST_TAG}+${X265_TAG_DISTANCE}-${X265_REVISION_ID}") >> -endif() >> - >> -message(STATUS "x265 version ${X265_VERSION}") >> diff --git a/x265Version.txt b/x265Version.txt >> new file mode 100644 >> index 000000000..221a7a6d9 >> --- /dev/null >> +++ b/x265Version.txt >> @@ -0,0 +1,5 @@ >> +#Attribute: Values >> +repositorychangeset: a82c6c7a7 >> +releasetagcommitid: 6722fce1f >> +releasetagdistance: 28 >> +releasetag: Release_3.5 >> > [AM] Release_3.5 is not a valid tag. > Also, as I mentioned already, each branch must have different versions of > x265Version.txt. > >> -- >> 2.20.1.windows.1 >> >> >> On Tue, Oct 20, 2020 at 5:19 PM Srikanth Kurapati < >> srikanth.kurap...@multicorewareinc.com> wrote: >> >>> >>> >>> On Mon, Oct 19, 2020 at 9:09 PM Aruna Matheswaran < >>> ar...@multicorewareinc.com> wrote: >>> >>>> >>>> >>>> On Sun, Oct 18, 2020 at 5:28 PM Srikanth Kurapati < >>>> srikanth.kurap...@multicorewareinc.com> wrote: >>>> >>>>> From 89c497c96918c22aa4dd074e603ec8ce56982415 Mon Sep 17 00:00:00 2001 >>>>> From: Srikanth Kurapati <srikanth.kurap...@multicorewareinc.com> >>>>> Date: Tue, 13 Oct 2020 20:46:56 +0530 >>>>> Subject: [PATCH] fix enables git repository archival for x265 release >>>>> versions >>>>> >>>> [AM] Commit message is confusing to me. Needs to be changed to >>>> something like "Fix incorrect version display in archived git repositories" >>>> >>> [KS] simplified. >>> >>>> >>>>> --- >>>>> doc/reST/cli.rst | 8 +- >>>>> source/CMakeLists.txt | 2 +- >>>>> source/cmake/Version.cmake | 172 +++++++++++++++++++++++++++++++++++++ >>>>> source/cmake/version.cmake | 97 --------------------- >>>>> x265Version.txt | 5 ++ >>>>> 5 files changed, 184 insertions(+), 100 deletions(-) >>>>> create mode 100644 source/cmake/Version.cmake >>>>> delete mode 100644 source/cmake/version.cmake >>>>> create mode 100644 x265Version.txt >>>>> >>>>> diff --git a/doc/reST/cli.rst b/doc/reST/cli.rst >>>>> index 1a1de9f50..716b51e01 100755 >>>>> --- a/doc/reST/cli.rst >>>>> +++ b/doc/reST/cli.rst >>>>> @@ -36,13 +36,17 @@ Executable Options >>>>> >>>>> .. option:: --help, -h >>>>> >>>>> - Display help text >>>>> + Displays help text >>>>> >>>>> **CLI ONLY** >>>>> >>>>> .. option:: --version, -V >>>>> >>>>> - Display version details >>>>> + Displays version details in *[Version Name]+[commit count from >>>>> Release Tag]-[Tag SHA-1 paraphrase formatted string or substring]* format >>>>> using input from >>>>> + version control software *Git or Mercurial*. Product Archives >>>>> display the same using information from configuration in file >>>>> *x265Version.txt* >>>>> + **Example for git repositories:** <h1>x265 [info]: HEVC encoder >>>>> version 3.4+26-a82c6c7a7<\h1> >>>>> + >>>>> >>>> [AM] The help statement is misleading. --version is not just restricted >>>> to displaying tag details. It does provide other build details. >>>> >>> [re phrased] >>> >>>> + .. seeAlso:: For more information please refer to `< >>>>> https://bitbucket.org/multicoreware/x265_git/wiki/Home>`_ and >>>>> Contribute pages for updates. >>>>> >>>>> **CLI ONLY** >>>>> >>>>> diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt >>>>> index 67e737512..95218f5dc 100755 >>>>> --- a/source/CMakeLists.txt >>>>> +++ b/source/CMakeLists.txt >>>>> @@ -485,7 +485,7 @@ if(POWER) >>>>> endif() >>>>> endif() >>>>> >>>>> -include(version) # determine X265_VERSION and X265_LATEST_TAG >>>>> +include(Version) # determine X265_VERSION and X265_LATEST_TAG >>>>> include_directories(. common encoder "${PROJECT_BINARY_DIR}") >>>>> >>>>> option(ENABLE_PPA "Enable PPA profiling instrumentation" OFF) >>>>> diff --git a/source/cmake/Version.cmake b/source/cmake/Version.cmake >>>>> new file mode 100644 >>>>> index 000000000..836f482e6 >>>>> --- /dev/null >>>>> +++ b/source/cmake/Version.cmake >>>>> @@ -0,0 +1,172 @@ >>>>> + >>>>> ################################################################################################################# >>>>> + # >>>>> + # Copyright (C) 2013-2020 MulticoreWare, Inc >>>>> + # >>>>> + # This program is free software; you can redistribute it and/or >>>>> modify >>>>> + # it under the terms of the GNU General Public License as published >>>>> by >>>>> + # the Free Software Foundation; either version 2 of the License, or >>>>> + # (at your option) any later version. >>>>> + # >>>>> + # This program is distributed in the hope that it will be useful, >>>>> + # but WITHOUT ANY WARRANTY; without even the implied warranty of >>>>> + # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >>>>> + # GNU General Public License for more details. >>>>> + # >>>>> + # You should have received a copy of the GNU General Public License >>>>> + # along with this program; if not, write to the Free Software >>>>> + # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA >>>>> 02111, USA. >>>>> + # >>>>> + # This program is also available under a commercial proprietary >>>>> license. >>>>> + # For more information, contact us at license @ x265.com >>>>> + # >>>>> + # Authors: Janani T.E <janani...@multicorewareinc.com>, Srikanth >>>>> Kurapati <srikanthkurap...@multicorewareinc.com> >>>>> + # >>>>> + >>>>> ################################################################################################################# >>>>> + # PURPOSE: Identity version control software version display, also >>>>> read version files to present x265 version. >>>>> + >>>>> ################################################################################################################# >>>>> + #Default Settings, for user to be vigilant about x265 version being >>>>> reported during product build. >>>>> +set(X265_VERSION "unknown") >>>>> +set(X265_REPO_ID "unknown") >>>>> +set(X265_LATEST_TAG "0.0") >>>>> +set(X265_TAG_DISTANCE "0") >>>>> +set(IS_HG_ARCHIVE_REPO "0") >>>>> +set(IS_HG_LIVE_REPO "0") >>>>> >>>> [AM] Why is another flag IS_HG_LIVE_REPO required? Shall be handled >>>> with one flag. >>>> >>> [KS] optimized, had initially added them for keeping the cases >>> distinctly readable >>> >>>> +set(IS_GIT_ARCHIVE_REPO "0") >>>>> +set(IS_GIT_LIVE_REPO "0") >>>>> + >>>>> +#Find version control software to be used for live and extracted >>>>> repositories from compressed tarballs >>>>> +if(CMAKE_VERSION VERSION_LESS "2.8.10") >>>>> + find_program(HG_EXECUTABLE hg) >>>>> + if(EXISTS "${HG_EXECUTABLE}.bat") >>>>> + set(HG_EXECUTABLE "${HG_EXECUTABLE}.bat") >>>>> + endif() >>>>> + message(STATUS "hg found at ${HG_EXECUTABLE}") >>>>> +else() >>>>> + find_package(Hg QUIET) >>>>> +endif() >>>>> +if(HG_EXECUTABLE) >>>>> + #Set Version Control binary for source code kind >>>>> + if(EXISTS CMAKE_CURRENT_SOURCE_DIR}/../.hg_archival.txt) >>>>> + set(IS_HG_ARCHIVE_REPO "1") >>>>> + elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/../.hg) >>>>> + set(IS_HG_LIVE_REPO "1") >>>>> + 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. >>>>> +if(Git_FOUND) >>>>> + find_program(GIT_EXECUTABLE git) >>>>> + message(STATUS "GIT_EXECUTABLE ${GIT_EXECUTABLE}") >>>>> + if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/../.git) >>>>> + set(IS_GIT_LIVE_REPO "1") >>>>> + elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/../x265Version.txt) >>>>> + set(IS_GIT_ARCHIVE_REPO "1") >>>>> + endif() >>>>> +endif(Git_FOUND) >>>>> +if(IS_HG_ARCHIVE_REPO STREQUAL "1") >>>>> + #Read the lines of the archive summary file to extract the version >>>>> + message(STATUS "SOURCE CODE IS FROM x265 ARCHIVED ZIP OR TAR >>>>> BALL") >>>>> + file(READ ${CMAKE_CURRENT_SOURCE_DIR}/../.hg_archival.txt archive) >>>>> + STRING(REGEX REPLACE "\n" ";" archive "${archive}") >>>>> + foreach(f ${archive}) >>>>> + string(FIND "${f}" ": " pos) >>>>> + string(SUBSTRING "${f}" 0 ${pos} key) >>>>> + string(SUBSTRING "${f}" ${pos} -1 value) >>>>> + string(SUBSTRING "${value}" 2 -1 value) >>>>> + set(hg_${key} ${value}) >>>>> + endforeach() >>>>> + if(DEFINED hg_tag) >>>>> + set(X265_LATEST_TAG ${hg_tag}) >>>>> + elseif(DEFINED hg_node) >>>>> + set(X265_LATEST_TAG ${hg_latesttag}) >>>>> + set(X265_TAG_DISTANCE ${hg_latesttagdistance}) >>>>> + string(SUBSTRING "${hg_node}" 0 12 X265_REVISION_ID) >>>>> + endif() >>>>> + message(STATUS "HG ARCHIVAL INFORMATION PROCESSED") >>>>> +elseif(IS_HG_LIVE_REPO STREQUAL "1") >>>>> + execute_process(COMMAND >>>>> + ${HG_EXECUTABLE} log -r. --template "{latesttag}" >>>>> + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} >>>>> + OUTPUT_VARIABLE X265_LATEST_TAG >>>>> + ERROR_QUIET >>>>> + OUTPUT_STRIP_TRAILING_WHITESPACE >>>>> + ) >>>>> + execute_process(COMMAND >>>>> + ${HG_EXECUTABLE} log -r. --template "{latesttagdistance}" >>>>> + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} >>>>> + OUTPUT_VARIABLE X265_TAG_DISTANCE >>>>> + ERROR_QUIET >>>>> + OUTPUT_STRIP_TRAILING_WHITESPACE >>>>> + ) >>>>> + execute_process( >>>>> + COMMAND >>>>> + ${HG_EXECUTABLE} log -r. --template "{node}" >>>>> + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} >>>>> + OUTPUT_VARIABLE X265_REVISION_ID >>>>> + ERROR_QUIET >>>>> + OUTPUT_STRIP_TRAILING_WHITESPACE >>>>> + ) >>>>> + string(SUBSTRING "${X265_REVISION_ID}" 0 12 X265_REVISION_ID) >>>>> + if(X265_LATEST_TAG MATCHES "^r") >>>>> + string(SUBSTRING ${X265_LATEST_TAG} 1 -1 X265_LATEST_TAG) >>>>> + endif() >>>>> + message(STATUS "HG LIVE REPO STATUS CHECK DONE") >>>>> +elseif(IS_GIT_LIVE_REPO STREQUAL "1") >>>>> + 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(IS_GIT_ARCHIVE_REPO 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") >>>>> >>>> [AM] Shouldn't it throw an error message? >>>> >>> [KS] As shared with you offline before the cmake error messages will >>> abort the build whereas warnings will inform the user with stack trace and >>> proceed. Which one do you think is desirable for the functionality. I feel >>> we can inform the user with warning and carry on with the rest of the >>> build. The warning will appear when make-solutions is run and also during >>> cmake configure through gui so by then users might become aware that they >>> might have to re configure the version file correctly before archival of >>> the repository. >>> >>>> + endif() >>>>> + if(DEFINED git_repositorychangeset) >>>>> + string(SUBSTRING "${git_repositorychangeset}" 0 9 >>>>> X265_REPO_ID) >>>>> >>>> [AM] I don't see X265_REPO_ID getting used anywhere. Please clarify >>>> the need for X265_REPO_ID. >>>> >>> [KS] updated code for using the same as the archive can be created >>> at/before or after the latest tag. >>> >>>> + 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() >>>>> +endif() >>>>> +set(X265_VERSION >>>>> "${X265_LATEST_TAG}+${X265_TAG_DISTANCE}-${X265_REVISION_ID}") >>>>> +message(STATUS "x265 RELEASE VERSION ${X265_VERSION}") >>>>> diff --git a/source/cmake/version.cmake b/source/cmake/version.cmake >>>>> deleted file mode 100644 >>>>> index 35302249a..000000000 >>>>> --- a/source/cmake/version.cmake >>>>> >>>> [AM] Renaming the file makes it tough to review the changes as it >>>> replaces the file instead of modifying the code. Any reason behind the >>>> renaming? >>>> >>> [KS] Most of the files in cmake source dir follow Camel case hence >>> updated the same for uniformity also cmake is case sensitive to file names >>> in linux. >>> >>>> +++ /dev/null >>>>> @@ -1,97 +0,0 @@ >>>>> -if(CMAKE_VERSION VERSION_LESS "2.8.10") >>>>> - find_program(HG_EXECUTABLE hg) >>>>> -else() >>>>> - find_package(Hg QUIET) >>>>> -endif() >>>>> -find_package(Git QUIET) # present in 2.8.8 >>>>> - >>>>> -# defaults, in case everything below fails >>>>> -set(X265_VERSION "unknown") >>>>> -set(X265_LATEST_TAG "0.0") >>>>> -set(X265_TAG_DISTANCE "0") >>>>> - >>>>> -if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/../.hg_archival.txt) >>>>> - # read the lines of the archive summary file to extract the >>>>> version >>>>> - file(READ ${CMAKE_CURRENT_SOURCE_DIR}/../.hg_archival.txt archive) >>>>> - STRING(REGEX REPLACE "\n" ";" archive "${archive}") >>>>> - foreach(f ${archive}) >>>>> - string(FIND "${f}" ": " pos) >>>>> - string(SUBSTRING "${f}" 0 ${pos} key) >>>>> - string(SUBSTRING "${f}" ${pos} -1 value) >>>>> - string(SUBSTRING "${value}" 2 -1 value) >>>>> - set(hg_${key} ${value}) >>>>> - endforeach() >>>>> - if(DEFINED hg_tag) >>>>> - set(X265_LATEST_TAG ${hg_tag}) >>>>> - elseif(DEFINED hg_node) >>>>> - set(X265_LATEST_TAG ${hg_latesttag}) >>>>> - set(X265_TAG_DISTANCE ${hg_latesttagdistance}) >>>>> - string(SUBSTRING "${hg_node}" 0 12 X265_REVISION_ID) >>>>> - endif() >>>>> -elseif(HG_EXECUTABLE AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/../.hg) >>>>> - if(EXISTS "${HG_EXECUTABLE}.bat") >>>>> - # mercurial source installs on Windows require .bat extension >>>>> - set(HG_EXECUTABLE "${HG_EXECUTABLE}.bat") >>>>> - endif() >>>>> - message(STATUS "hg found at ${HG_EXECUTABLE}") >>>>> - >>>>> - execute_process(COMMAND >>>>> - ${HG_EXECUTABLE} log -r. --template "{latesttag}" >>>>> - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} >>>>> - OUTPUT_VARIABLE X265_LATEST_TAG >>>>> - ERROR_QUIET >>>>> - OUTPUT_STRIP_TRAILING_WHITESPACE >>>>> - ) >>>>> - execute_process(COMMAND >>>>> - ${HG_EXECUTABLE} log -r. --template "{latesttagdistance}" >>>>> - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} >>>>> - OUTPUT_VARIABLE X265_TAG_DISTANCE >>>>> - ERROR_QUIET >>>>> - OUTPUT_STRIP_TRAILING_WHITESPACE >>>>> - ) >>>>> - execute_process( >>>>> - COMMAND >>>>> - ${HG_EXECUTABLE} log -r. --template "{node}" >>>>> - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} >>>>> - OUTPUT_VARIABLE X265_REVISION_ID >>>>> - ERROR_QUIET >>>>> - OUTPUT_STRIP_TRAILING_WHITESPACE >>>>> - ) >>>>> - string(SUBSTRING "${X265_REVISION_ID}" 0 12 X265_REVISION_ID) >>>>> - >>>>> - if(X265_LATEST_TAG MATCHES "^r") >>>>> - string(SUBSTRING ${X265_LATEST_TAG} 1 -1 X265_LATEST_TAG) >>>>> - endif() >>>>> -elseif(GIT_EXECUTABLE AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/../.git) >>>>> - 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 -1 --format=g%h >>>>> - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} >>>>> - OUTPUT_VARIABLE X265_REVISION_ID >>>>> - ERROR_QUIET >>>>> - OUTPUT_STRIP_TRAILING_WHITESPACE >>>>> - ) >>>>> -endif() >>>>> -if(X265_TAG_DISTANCE STREQUAL "0") >>>>> - set(X265_VERSION "${X265_LATEST_TAG}") >>>>> >>>> [AM] Since this chunk has been removed in Version.cmake, the version >>>> info will look messy if X265_LATEST_TAG is 0. >>>> >>> Its printed as Release_3.4+0-abcedf07- simplified for readability in >>> this case but once the user has understood the version format documentation >>> and wiki updates it should not be a problem. >>> >>>> -else() >>>>> - set(X265_VERSION >>>>> "${X265_LATEST_TAG}+${X265_TAG_DISTANCE}-${X265_REVISION_ID}") >>>>> -endif() >>>>> - >>>>> -message(STATUS "x265 version ${X265_VERSION}") >>>>> diff --git a/x265Version.txt b/x265Version.txt >>>>> new file mode 100644 >>>>> index 000000000..74b23469e >>>>> --- /dev/null >>>>> +++ b/x265Version.txt >>>>> @@ -0,0 +1,5 @@ >>>>> +#Attribute: Values >>>>> +repositorychangeset: a82c6c7a7 >>>>> +releasetagcommitid: 6722fce1f >>>>> +releasetagdistance: 28 >>>>> +releasetag: 3.5 >>>>> >>>> [AM] 3.5 isn't a valid tag. >>>> >>> [KS] ok set of Release_3.5 or it can be 3.5_RC1 or 2 and so on as per >>> wiki pages. >>> >>>> Also, the commit message says the patch is applicable for master and >>>> Release_3.x. In that case, one x265Version.txt file per branch is expected. >>>> >>> [KS] No then we will have to keep adding one file per release. Instead >>> if the same patch is pushed to all branches and with the version file >>> updated for a given branch we don't need multiple copies for maintaining >>> the same information, the file can be appended from release to release as >>> the latest entries are always considered for populating the version string. >>> >>> Please get back on my answers so that I can send the patch soon. >>> >>> -- >>>>> 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 >>>> >>> >>> >>> -- >>> *With Regards,* >>> *Srikanth Kurapati.* >>> >> >> >> -- >> *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