Conform versioning of to uniform version standards

Library version will now only have major and minor. Package
version will now include number of commits since previous
package. Both SO and package versions rely on git tags to
determine the current build and the commits since the last
release.

Change-Id: If2bda74bf342930a9e07f5c91cb1380b6b7c64ca


[ROCm/rocm_smi_lib commit: fe738eaedb]
This commit is contained in:
Chris Freehill
2019-08-11 18:59:04 -05:00
rodzic b42ed59cca
commit 76ec21c516
3 zmienionych plików z 84 dodań i 27 usunięć
+24 -20
Wyświetl plik
@@ -18,29 +18,32 @@ set(ROCM_SMI_TARGET "${ROCM_SMI}64")
# ABI breaks (update MAJOR and MINOR), and ABI/API additions (update MINOR).
# Until ABI stabilizes VERSION_MAJOR will be 0. This should be over-ridden
# by git tags (through "git describe") when they are present.
set(ROCM_SMI_LIB_VERSION_MAJOR 0)
set(ROCM_SMI_LIB_VERSION_MINOR 2)
set(PKG_VERSION_MAJOR 1)
set(PKG_VERSION_MINOR 0)
set(PKG_VERSION_PATCH 0)
set(PKG_VERSION_NUM_COMMIT 0)
################# Determine the library version #########################
## Setup the package version based on git tags.
set(LIB_SO_VERSION_STR
"${ROCM_SMI_LIB_VERSION_MAJOR}.${ROCM_SMI_LIB_VERSION_MINOR}.0")
get_version(${LIB_SO_VERSION_STR} "rsmi")
set(PKG_VERSION_GIT_TAG_PREFIX "rsmi_pkg_ver")
# VERSION_* variables should be set by get_version
set(LIB_SO_VERSION_STR ${VERSION_STRING})
set(${ROCM_SMI}_VERSION_MAJOR "${VERSION_MAJOR}")
set(${ROCM_SMI}_VERSION_MINOR "${VERSION_MINOR}")
set(${ROCM_SMI}_VERSION_PATCH "${VERSION_PATCH}")
set(${ROCM_SMI}_VERSION_BUILD "${VERSION_BUILD}")
get_current_version("1.0.0" ${PKG_VERSION_GIT_TAG_PREFIX})
num_change_since_prev_pkg(${PKG_VERSION_GIT_TAG_PREFIX})
# VERSION_* variables should be set by get_current_version
set(PKG_VERSION_STR "${VERSION_STRING}.${NUM_COMMITS}")
message("Package version: ${PKG_VERSION_STR}")
# Debian package specific variables
# Set a default value for the package version
set(VERSION_STRING "1.0.0")
get_version(${VERSION_STRING} "roc")
get_current_version("1.0.0.0" "rsmi_so_ver")
# VERSION_* variables should be set by get_version
set(BUILD_VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
# VERSION_* variables should be set by get_current_version
set(SO_VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}")
set(${ROCM_SMI}_VERSION_MAJOR "${VERSION_MAJOR}")
set(${ROCM_SMI}_VERSION_MINOR "${VERSION_MINOR}")
set(${ROCM_SMI}_VERSION_PATCH "0")
set(${ROCM_SMI}_VERSION_BUILD "0")
message("SOVERSION: ${SO_VERSION_STRING}")
project(${ROCM_SMI_TARGET})
@@ -62,7 +65,7 @@ set(CPACK_PACKAGE_DESCRIPTION_SUMMARY
"ROCm System Management Interface library")
endif()
set(CPACK_PACKAGE_FILE_NAME "rocm_smi_lib64-${BUILD_VERSION_STRING}")
set(CPACK_PACKAGE_FILE_NAME "rocm_smi_lib64-${PKG_VERSION_STR}")
## Verbose output.
set(CMAKE_VERBOSE_MAKEFILE on)
@@ -111,11 +114,12 @@ target_link_libraries(${SMI_EXAMPLE_EXE} ${ROCM_SMI_TARGET})
add_library(${ROCM_SMI_TARGET} SHARED ${SMI_SRC_LIST} ${SMI_INC_LIST})
target_link_libraries(${ROCM_SMI_TARGET} pthread rt)
## Set the VERSION and SOVERSION values
set_property(TARGET ${ROCM_SMI_TARGET}
PROPERTY VERSION "${LIB_SO_VERSION_STR}")
set_property(TARGET ${ROCM_SMI_TARGET}
PROPERTY SOVERSION "${ROCM_SMI_LIB_VERSION_MAJOR}")
set_property(TARGET ${ROCM_SMI_TARGET} PROPERTY
SOVERSION "${VERSION_MAJOR}")
set_property(TARGET ${ROCM_SMI_TARGET} PROPERTY
VERSION "${SO_VERSION_STRING}")
## If the library is a release, strip the target library
if ("${CMAKE_BUILD_TYPE}" STREQUAL Release)
@@ -73,10 +73,6 @@ function( parse_version VERSION_STRING )
set ( TEMP_VERSION_STRING "${TEMP_VERSION_STRING}.${PATCH}" )
endif ()
if ( DEFINED VERSION_BUILD )
set ( VERSION_BUILD "${VERSION_BUILD}" PARENT_SCOPE )
endif ()
set ( VERSION_STRING "${TEMP_VERSION_STRING}" PARENT_SCOPE )
endfunction ()
@@ -85,7 +81,7 @@ endfunction ()
## using versioning tags and git describe.
## Passes back a packaging version string
## and a library version string.
function(get_version DEFAULT_VERSION_STRING VERSION_PREFIX)
function(get_current_version DEFAULT_VERSION_STRING VERSION_PREFIX)
parse_version ( ${DEFAULT_VERSION_STRING} )
@@ -109,7 +105,28 @@ function(get_version DEFAULT_VERSION_STRING VERSION_PREFIX)
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 )
set( VERSION_BUILD "${VERSION_BUILD}" PARENT_SCOPE )
endfunction()
function(num_change_since_prev_pkg VERSION_PREFIX)
find_program(get_commits NAMES version_util.sh
PATHS ${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules)
if (get_commits)
execute_process( COMMAND ${get_commits} -c ${VERSION_PREFIX}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
OUTPUT_VARIABLE NUM_COMMITS
OUTPUT_STRIP_TRAILING_WHITESPACE
RESULT_VARIABLE RESULT )
set(NUM_COMMITS "${NUM_COMMITS}" PARENT_SCOPE )
if ( ${RESULT} EQUAL 0 )
message("${NUM_COMMITS} were found since previous release")
else()
message("Unable to determine number of commits since previous release")
endif()
else()
message("WARNING: Didn't find version_util.sh")
set(NUM_COMMITS "unknown" PARENT_SCOPE )
endif()
endfunction()
+36
Wyświetl plik
@@ -0,0 +1,36 @@
#!/bin/bash
# Handle commandline args
while [ "$1" != "" ]; do
case $1 in
-c ) # Commits since prevous tag
TARGET="count" ;;
* )
TARGET="count"
break ;;
esac
shift 1
done
TAG_PREFIX=$1
reg_ex="${TAG_PREFIX}*"
commits_since_last_tag() {
TAG_ARR=(`git tag --sort=committerdate -l ${reg_ex} | tail -2`)
PREVIOUS_TAG=${TAG_ARR[0]}
CURRENT_TAG=${TAG_ARR[1]}
PREV_CMT_NUM=`git rev-list --count $PREVIOUS_TAG`
CURR_CMT_NUM=`git rev-list --count $CURRENT_TAG`
# Commits since prevous tag:
let NUM_COMMITS="${CURR_CMT_NUM}-${PREV_CMT_NUM}"
echo $NUM_COMMITS
}
case $TARGET in
count) commits_since_last_tag ;;
*) die "Invalid target $target" ;;
esac
exit 0