From 76ec21c5163e4d09049f45ad520aa1eedbfe879a Mon Sep 17 00:00:00 2001 From: Chris Freehill Date: Sun, 11 Aug 2019 18:59:04 -0500 Subject: [PATCH] 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: fe738eaedb64e5b1ee44c914e28f62bb70e5f33d] --- projects/rocm-smi-lib/CMakeLists.txt | 44 ++++++++++--------- .../rocm-smi-lib/cmake_modules/utils.cmake | 31 ++++++++++--- .../cmake_modules/version_util.sh | 36 +++++++++++++++ 3 files changed, 84 insertions(+), 27 deletions(-) create mode 100755 projects/rocm-smi-lib/cmake_modules/version_util.sh diff --git a/projects/rocm-smi-lib/CMakeLists.txt b/projects/rocm-smi-lib/CMakeLists.txt index cccf8c135c..9c500ad913 100755 --- a/projects/rocm-smi-lib/CMakeLists.txt +++ b/projects/rocm-smi-lib/CMakeLists.txt @@ -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) diff --git a/projects/rocm-smi-lib/cmake_modules/utils.cmake b/projects/rocm-smi-lib/cmake_modules/utils.cmake index 0dca487fca..7bf5af87fd 100755 --- a/projects/rocm-smi-lib/cmake_modules/utils.cmake +++ b/projects/rocm-smi-lib/cmake_modules/utils.cmake @@ -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() diff --git a/projects/rocm-smi-lib/cmake_modules/version_util.sh b/projects/rocm-smi-lib/cmake_modules/version_util.sh new file mode 100755 index 0000000000..eb49576fcf --- /dev/null +++ b/projects/rocm-smi-lib/cmake_modules/version_util.sh @@ -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 +