mirror of
https://git.rwth-aachen.de/acs/public/villas/node/
synced 2025-03-09 00:00:00 +01:00
cmake: fix CI if not run in a Git repo
Signed-off-by: Steffen Vogel <steffen.vogel@opal-rt.com>
This commit is contained in:
parent
66d7643114
commit
7289cb97b7
2 changed files with 75 additions and 68 deletions
|
@ -63,15 +63,19 @@ configure_file(
|
|||
|
||||
if(TOPLEVEL_PROJECT)
|
||||
feature_summary(WHAT ALL VAR FEATURES)
|
||||
message(STATUS "Building ${CMAKE_PROJECT_DESCRIPTION}:")
|
||||
message(STATUS "${FEATURES}")
|
||||
message(STATUS "Building ${PROJECT_DESCRIPTION}:")
|
||||
message(STATUS " VERSION: ${CMAKE_PROJECT_VERSION}")
|
||||
message(STATUS " RELEASE: ${CMAKE_PROJECT_RELEASE}")
|
||||
message(STATUS " GIT_REV: ${CMAKE_PROJECT_GIT_REV}")
|
||||
message(STATUS " GIT_BRANCH: ${CMAKE_PROJECT_GIT_BRANCH}")
|
||||
message(STATUS " VARIANT: ${CMAKE_PROJECT_VARIANT}")
|
||||
message(STATUS " BUILD_ID: ${CMAKE_PROJECT_BUILD_ID}")
|
||||
message(STATUS " BUILD_DATE: ${CMAKE_PROJECT_BUILD_DATE}")
|
||||
|
||||
if(FOUND_GIT_VERSION)
|
||||
message(STATUS " VERSION: ${CMAKE_PROJECT_VERSION}")
|
||||
message(STATUS " RELEASE: ${CMAKE_PROJECT_RELEASE}")
|
||||
message(STATUS " GIT_REV: ${CMAKE_PROJECT_GIT_REV}")
|
||||
message(STATUS " GIT_BRANCH: ${CMAKE_PROJECT_GIT_BRANCH}")
|
||||
message(STATUS " VARIANT: ${CMAKE_PROJECT_VARIANT}")
|
||||
message(STATUS " BUILD_ID: ${CMAKE_PROJECT_BUILD_ID}")
|
||||
message(STATUS " BUILD_DATE: ${CMAKE_PROJECT_BUILD_DATE}")
|
||||
endif()
|
||||
|
||||
message(STATUS " ARCH: ${CMAKE_SYSTEM_PROCESSOR}")
|
||||
message(STATUS " OS: ${CMAKE_SYSTEM_NAME}")
|
||||
endif()
|
||||
|
|
|
@ -35,69 +35,72 @@ function(GetVersion DIR PREFIX)
|
|||
)
|
||||
|
||||
if(NOT RC EQUAL 0)
|
||||
message(FATAL_ERROR
|
||||
set(FOUND_GIT_VERSION OFF PARENT_SCOPE)
|
||||
message(WARNING
|
||||
"Failed to retrieve version information from Git. "
|
||||
"Make sure that the source directory is a Git repo and "
|
||||
"contains at least one valid tag like 'v0.1.0'"
|
||||
)
|
||||
else()
|
||||
set(FOUND_GIT_VERSION ON PARENT_SCOPE)
|
||||
|
||||
string(REGEX REPLACE "^v([0-9]+\\.[0-9]+\\.[0-9]+)$" "\\1" VERSION ${VERSION_STR})
|
||||
string(REGEX REPLACE "^v([0-9]+)\\.([0-9]+)\\.([0-9]+)$" "\\1" MAJOR_VERSION ${VERSION_STR})
|
||||
string(REGEX REPLACE "^v([0-9]+)\\.([0-9]+)\\.([0-9]+)$" "\\2" MINOR_VERSION ${VERSION_STR})
|
||||
string(REGEX REPLACE "^v([0-9]+)\\.([0-9]+)\\.([0-9]+)$" "\\3" PATCH_VERSION ${VERSION_STR})
|
||||
|
||||
string(TIMESTAMP BUILD_DATE "%Y%m%d")
|
||||
|
||||
if(CMAKE_BUILD_TYPE)
|
||||
string(TOLOWER "${CMAKE_BUILD_TYPE}" VARIANT)
|
||||
else()
|
||||
set(VARIANT "release")
|
||||
endif()
|
||||
|
||||
if(DEFINED ENV{CI})
|
||||
string(APPEND VARIANT "-ci")
|
||||
string(SUBSTRING $ENV{CI_COMMIT_SHA} 0 7 GIT_REV)
|
||||
set(GIT_BRANCH $ENV{CI_COMMIT_REF_NAME})
|
||||
else()
|
||||
execute_process(
|
||||
COMMAND git rev-parse --short=7 HEAD
|
||||
WORKING_DIRECTORY ${DIR}
|
||||
OUTPUT_VARIABLE GIT_REV
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
|
||||
execute_process(
|
||||
COMMAND git rev-parse --abbrev-ref HEAD
|
||||
WORKING_DIRECTORY ${DIR}
|
||||
OUTPUT_VARIABLE GIT_BRANCH
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
endif()
|
||||
|
||||
if(DEFINED ENV{CI_COMMIT_TAG})
|
||||
set(RELEASE 1)
|
||||
else()
|
||||
string(REPLACE "-" "_" GIT_BRANCH_NORM ${GIT_BRANCH})
|
||||
string(REPLACE "-" "_" VARIANT_NORM ${VARIANT})
|
||||
|
||||
set(RELEASE "1.${GIT_BRANCH_NORM}_${VARIANT_NORM}.${BUILD_DATE}git${GIT_REV}")
|
||||
endif()
|
||||
|
||||
set(BUILD_ID "v${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}-${GIT_REV}-${VARIANT}" )
|
||||
|
||||
# Return results to parent scope
|
||||
set(${PREFIX}_VERSION_STR ${VERSION_STR} PARENT_SCOPE)
|
||||
set(${PREFIX}_VERSION ${VERSION} PARENT_SCOPE)
|
||||
set(${PREFIX}_MAJOR_VERSION ${MAJOR_VERSION} PARENT_SCOPE)
|
||||
set(${PREFIX}_MINOR_VERSION ${MINOR_VERSION} PARENT_SCOPE)
|
||||
set(${PREFIX}_PATCH_VERSION ${PATCH_VERSION} PARENT_SCOPE)
|
||||
set(${PREFIX}_RELEASE ${RELEASE} PARENT_SCOPE)
|
||||
set(${PREFIX}_GIT_REV ${GIT_REV} PARENT_SCOPE)
|
||||
set(${PREFIX}_GIT_BRANCH ${GIT_BRANCH} PARENT_SCOPE)
|
||||
set(${PREFIX}_GIT_BRANCH_NORM ${GIT_BRANCH_NORM} PARENT_SCOPE)
|
||||
set(${PREFIX}_VARIANT ${VARIANT} PARENT_SCOPE)
|
||||
set(${PREFIX}_VARIANT_NORM ${VARIANT_NORM} PARENT_SCOPE)
|
||||
set(${PREFIX}_BUILD_ID ${BUILD_ID} PARENT_SCOPE)
|
||||
set(${PREFIX}_BUILD_DATE ${BUILD_DATE} PARENT_SCOPE)
|
||||
endif()
|
||||
|
||||
string(REGEX REPLACE "^v([0-9]+\\.[0-9]+\\.[0-9]+)$" "\\1" VERSION ${VERSION_STR})
|
||||
string(REGEX REPLACE "^v([0-9]+)\\.([0-9]+)\\.([0-9]+)$" "\\1" MAJOR_VERSION ${VERSION_STR})
|
||||
string(REGEX REPLACE "^v([0-9]+)\\.([0-9]+)\\.([0-9]+)$" "\\2" MINOR_VERSION ${VERSION_STR})
|
||||
string(REGEX REPLACE "^v([0-9]+)\\.([0-9]+)\\.([0-9]+)$" "\\3" PATCH_VERSION ${VERSION_STR})
|
||||
|
||||
string(TIMESTAMP BUILD_DATE "%Y%m%d")
|
||||
|
||||
if(CMAKE_BUILD_TYPE)
|
||||
string(TOLOWER "${CMAKE_BUILD_TYPE}" VARIANT)
|
||||
else()
|
||||
set(VARIANT "release")
|
||||
endif()
|
||||
|
||||
if(DEFINED ENV{CI})
|
||||
string(APPEND VARIANT "-ci")
|
||||
string(SUBSTRING $ENV{CI_COMMIT_SHA} 0 7 GIT_REV)
|
||||
set(GIT_BRANCH $ENV{CI_COMMIT_REF_NAME})
|
||||
else()
|
||||
execute_process(
|
||||
COMMAND git rev-parse --short=7 HEAD
|
||||
WORKING_DIRECTORY ${DIR}
|
||||
OUTPUT_VARIABLE GIT_REV
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
|
||||
execute_process(
|
||||
COMMAND git rev-parse --abbrev-ref HEAD
|
||||
WORKING_DIRECTORY ${DIR}
|
||||
OUTPUT_VARIABLE GIT_BRANCH
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
endif()
|
||||
|
||||
if(DEFINED ENV{CI_COMMIT_TAG})
|
||||
set(RELEASE 1)
|
||||
else()
|
||||
string(REPLACE "-" "_" GIT_BRANCH_NORM ${GIT_BRANCH})
|
||||
string(REPLACE "-" "_" VARIANT_NORM ${VARIANT})
|
||||
|
||||
set(RELEASE "1.${GIT_BRANCH_NORM}_${VARIANT_NORM}.${BUILD_DATE}git${GIT_REV}")
|
||||
endif()
|
||||
|
||||
set(BUILD_ID "v${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}-${GIT_REV}-${VARIANT}" )
|
||||
|
||||
# Return results to parent scope
|
||||
set(${PREFIX}_VERSION_STR ${VERSION_STR} PARENT_SCOPE)
|
||||
set(${PREFIX}_VERSION ${VERSION} PARENT_SCOPE)
|
||||
set(${PREFIX}_MAJOR_VERSION ${MAJOR_VERSION} PARENT_SCOPE)
|
||||
set(${PREFIX}_MINOR_VERSION ${MINOR_VERSION} PARENT_SCOPE)
|
||||
set(${PREFIX}_PATCH_VERSION ${PATCH_VERSION} PARENT_SCOPE)
|
||||
set(${PREFIX}_RELEASE ${RELEASE} PARENT_SCOPE)
|
||||
set(${PREFIX}_GIT_REV ${GIT_REV} PARENT_SCOPE)
|
||||
set(${PREFIX}_GIT_BRANCH ${GIT_BRANCH} PARENT_SCOPE)
|
||||
set(${PREFIX}_GIT_BRANCH_NORM ${GIT_BRANCH_NORM} PARENT_SCOPE)
|
||||
set(${PREFIX}_VARIANT ${VARIANT} PARENT_SCOPE)
|
||||
set(${PREFIX}_VARIANT_NORM ${VARIANT_NORM} PARENT_SCOPE)
|
||||
set(${PREFIX}_BUILD_ID ${BUILD_ID} PARENT_SCOPE)
|
||||
set(${PREFIX}_BUILD_DATE ${BUILD_DATE} PARENT_SCOPE)
|
||||
endfunction(GetVersion)
|
||||
|
|
Loading…
Add table
Reference in a new issue