Fix getting version information

Change-Id: I2695733307888f5ab41a1265ae4369a2ea011e09


[ROCm/amdsmi commit: 925014ddaf]
This commit is contained in:
josnarlo
2025-07-22 15:39:12 +00:00
committed by Arif, Maisam
parent 82a2c0dffc
commit 4fe4c4df23
3 changed files with 76 additions and 17 deletions
+64 -10
View File
@@ -53,7 +53,52 @@ function(parse_version VERSION_STRING)
endif()
set(VERSION_STRING "${TEMP_VERSION_STRING}" PARENT_SCOPE)
endfunction()
function(get_version_from_file REL_FILE_PATH ITEM)
set(FILE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/${REL_FILE_PATH}")
set(OUTPUT_ITEM "0")
if(EXISTS "${FILE_PATH}")
file(READ ${FILE_PATH} file_contents)
string(REGEX MATCHALL "AMDSMI_LIB_VERSION_${ITEM} *[0-9]+" OUTPUT_STR "${file_contents}")
list(LENGTH OUTPUT_STR OUTPUT_STR_LENGTH)
if(${OUTPUT_STR_LENGTH} GREATER 0)
string(REGEX MATCH "[0-9]+" OUTPUT_ITEM "${OUTPUT_STR}")
endif()
endif()
set(${ITEM} "${OUTPUT_ITEM}" PARENT_SCOPE)
endfunction()
# Parses file for a pattern and replaces the value
# associated with that pattern with a specified value
# Replaces VERSION(MAJOR.MINOR.RELEASE) with updated values
function(update_version_in_file REL_FILE_PATH DEFAULT_VERSION PAT1 PAT2 PAT3)
get_version_from_file(${REL_FILE_PATH} "MAJOR")
get_version_from_file(${REL_FILE_PATH} "MINOR")
get_version_from_file(${REL_FILE_PATH} "RELEASE")
set(FILE_VERSION "${MAJOR}.${MINOR}.${RELEASE}")
if(DEFAULT_VERSION VERSION_GREATER FILE_VERSION)
set(FILE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/${REL_FILE_PATH}")
if(EXISTS "${FILE_PATH}")
parse_version(${DEFAULT_VERSION})
file(READ ${FILE_PATH} file_contents_new)
string(REGEX REPLACE "${PAT1}MAJOR${PAT2} *[0-9]*" "${PAT1}MAJOR${PAT3}${VERSION_MAJOR}" file_contents
"${file_contents_new}")
string(REGEX REPLACE "${PAT1}MINOR${PAT2} *[0-9]*" "${PAT1}MINOR${PAT3}${VERSION_MINOR}" file_contents_new
"${file_contents}")
string(REGEX REPLACE "${PAT1}RELEASE${PAT2} *[0-9]*" "${PAT1}RELEASE${PAT3}${VERSION_PATCH}" file_contents
"${file_contents_new}")
file(WRITE ${FILE_PATH} "${file_contents}")
endif()
set(VERSION_STRING "${DEFAULT_VERSION}" PARENT_SCOPE)
else()
set(VERSION_STRING "${FILE_VERSION}" PARENT_SCOPE)
endif()
endfunction()
## Gets the current version of the repository
@@ -62,24 +107,33 @@ endfunction()
## and a library version string.
function(get_version_from_tag DEFAULT_VERSION_STRING VERSION_PREFIX GIT)
parse_version(${DEFAULT_VERSION_STRING})
set(DEFAULT_VERSION_MAJOR "${VERSION_MAJOR}")
set(DEFAULT_VERSION_MINOR "${VERSION_MINOR}")
set(DEFAULT_VERSION_PATCH "${VERSION_PATCH}")
if(GIT)
execute_process(
COMMAND git describe --tags --dirty --long --match ${VERSION_PREFIX}-[0-9.]*
COMMAND git tag --list --sort=-version:refname "${VERSION_PREFIX}*"
COMMAND head -n 1
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
OUTPUT_VARIABLE GIT_TAG_STRING
OUTPUT_STRIP_TRAILING_WHITESPACE
RESULT_VARIABLE RESULT)
if(${RESULT} EQUAL 0)
OUTPUT_STRIP_TRAILING_WHITESPACE RESULTS_VARIABLE RESULTS)
if(GIT_TAG_STRING)
parse_version(${GIT_TAG_STRING})
endif()
endif()
set(VERSION_STRING "${VERSION_STRING}" PARENT_SCOPE)
set(VERSION_MAJOR "${VERSION_MAJOR}" PARENT_SCOPE)
set(VERSION_MINOR "${VERSION_MINOR}" PARENT_SCOPE)
set(VERSION_PATCH "${VERSION_PATCH}" PARENT_SCOPE)
if(VERSION_STRING VERSION_GREATER DEFAULT_VERSION_STRING)
set(VERSION_STRING "${VERSION_STRING}" PARENT_SCOPE)
set(VERSION_MAJOR "${VERSION_MAJOR}" PARENT_SCOPE)
set(VERSION_MINOR "${VERSION_MINOR}" PARENT_SCOPE)
set(VERSION_PATCH "${VERSION_PATCH}" PARENT_SCOPE)
else()
set(VERSION_STRING "${DEFAULT_VERSION_STRING}" PARENT_SCOPE)
set(VERSION_MAJOR "${DEFAULT_VERSION_MAJOR}" PARENT_SCOPE)
set(VERSION_MINOR "${DEFAULT_VERSION_MINOR}" PARENT_SCOPE)
set(VERSION_PATCH "${DEFAULT_VERSION_PATCH}" PARENT_SCOPE)
endif()
endfunction()
function(num_change_since_prev_pkg VERSION_PREFIX)
@@ -106,7 +160,7 @@ function(num_change_since_prev_pkg VERSION_PREFIX)
endfunction()
function(get_package_version_number DEFAULT_VERSION_STRING VERSION_PREFIX GIT)
get_version_from_tag(${DEFAULT_VERSION_STRING} ${VERSION_PREFIX} GIT)
parse_version(${DEFAULT_VERSION_STRING})
num_change_since_prev_pkg(${VERSION_PREFIX})
set(PKG_VERSION_STR "${VERSION_STRING}.${NUM_COMMITS}")
if(DEFINED ENV{ROCM_BUILD_ID})