Commit 1d38cb62 authored by Emmanuel Promayon's avatar Emmanuel Promayon
Browse files

FIXED git hash is set after each update (if there is any change)

+ error messages reformatted
parent 8a7d4412
......@@ -19,10 +19,10 @@
# Need to be defined, for the build to run.
if(NOT DEFINED CTEST_SOURCE_DIRECTORY)
message(FATAL_ERROR "Please provide the source directory of the continuous test with the CTEST_SOURCE_DIRECTORY argument")
message(FATAL_ERROR "No source directory: please provide the path to the source directory with the CTEST_SOURCE_DIRECTORY argument")
endif()
if(NOT DEFINED CTEST_BINARY_DIRECTORY)
message(FATAL_ERROR "Please provide the build directory of the continuous test with the CTEST_BINARY_DIRECTORY argument")
message(FATAL_ERROR "No build directory: please provide the path to the build directory with the CTEST_BINARY_DIRECTORY argument")
endif()
# Script configuration, depending of the build, computer running the script
......@@ -34,27 +34,14 @@ if(CAMITK_CONTINUOUS_INTEGRATION)
string(REGEX REPLACE "^.*-(.*)-.*" "\\1" ARCH "${CAMITK_CONTINUOUS_INTEGRATION}")
string(REGEX REPLACE "^.*-.*-(.*)" "\\1" BUILDTYPE "${CAMITK_CONTINUOUS_INTEGRATION}")
else()
message(FATAL_ERROR "CAMITK_CONTINUOUS_INTEGRATION value must be given as option of the ctest command calling this script.")
message(FATAL_ERROR "No CAMITK_CONTINUOUS_INTEGRATION argument: please provide a continuous integration setting with the CAMITK_CONTINUOUS_INTEGRATION argument. It should be equals to COMPILER-ARCH-BUILDTYPE.")
endif()
# Compose with those variables the CTest required ones.
site_name(CTEST_SITE)
# get the git hash
find_package(Git QUIET)
if(GIT_FOUND)
include("${CTEST_SOURCE_DIRECTORY}/sdk/cmake/modules/macros/GetGitInfo.cmake")
set(CMAKE_SOURCE_DIR ${CTEST_SOURCE_DIRECTORY})
get_git_info(${CTEST_SOURCE_DIRECTORY})
set(CURRENT_GIT_HASH ${CAMITK_GIT_ABBREVIATED_HASH})
else()
set(CURRENT_GIT_HASH "???")
endif()
# set the build name using the compiler and commit hash
set(CTEST_BUILD_NAME ${CAMITK_CONTINUOUS_INTEGRATION}-${CURRENT_GIT_HASH})
if(UNIX)
set( CTEST_CMAKE_GENERATOR "Unix Makefiles" )
set(CTEST_CMAKE_GENERATOR "Unix Makefiles" )
elseif(WIN32)
if(COMPILER MATCHES "MinGW" OR "MINGW")
set( CTEST_CMAKE_GENERATOR "MinGW Makefiles" )
......@@ -81,7 +68,7 @@ elseif(WIN32)
elseif(COMPILER MATCHES "MSVC2017" AND ARCH MATCHES "64bits")
set( CTEST_CMAKE_GENERATOR "Visual Studio 15 2017 Win64" )
else()
message(FATAL_ERROR "CTEST COMPILER ERROR : No proper compiler found, please check ctest command syntax.")
message(FATAL_ERROR "Unknow compiler: compiler \"${COMPILER}\" unkown. Please check ctest command syntax.")
endif()
endif()
......@@ -89,13 +76,19 @@ if(BUILDTYPE)
set(CTEST_BUILD_CONFIGURATION ${BUILDTYPE})
set(CTEST_CONFIGURATION_TYPE ${BUILDTYPE})
else()
message(FATAL_ERROR "NO BUILD TYPE : Please provide a build type: Debug or Release")
message(FATAL_ERROR "No build type: please provide a valid build type: Debug or Release.")
endif()
# get the git hash
find_package(Git QUIET)
if(GIT_FOUND)
include("${CTEST_SOURCE_DIRECTORY}/sdk/cmake/modules/macros/GetGitInfo.cmake")
else()
message(FATAL_ERROR "Git command not found: please install git.")
endif()
# Update source code and send reports
set( CTEST_UPDATE_COMMAND "git")
set(CTEST_GIT_COMMAND ${GIT_EXECUTABLE})
set(CTEST_UPDATE_COMMAND ${CTEST_GIT_COMMAND})
set(CTEST_UPDATE_COMMAND ${GIT_EXECUTABLE})
# CMake configuration (put here all the configure flags)
set(CTEST_CONFIGURE_COMMAND "${CMAKE_COMMAND} -Wno-dev -G \"${CTEST_CMAKE_GENERATOR}\"")
......@@ -129,43 +122,51 @@ while (${CTEST_ELAPSED_TIME} LESS ${CONTINUOUS_BUILD_DURATION})
ctest_update(SOURCE ${CTEST_SOURCE_DIRECTORY} RETURN_VALUE count)
if (count GREATER 0) # We have updated source code, thus configure and build modified files
# show update reports if there is a change in the source code
ctest_submit(PARTS Update Notes)
# Configure the whole camitk project and send configure report on the server
ctest_configure()
ctest_submit(PARTS Configure)
# Get subprojects listing (automatically created at configuration step)
include("${CTEST_BINARY_DIRECTORY}/Subprojects.cmake")
# Update CDash configuration to the server
# Project.xml file is automatically generated. If someone added an extension to CamiTK, CDash will automatically be updated according to it.
# To do this, send this file to the server
ctest_submit(FILES "${CTEST_BINARY_DIRECTORY}/Project.xml")
# Build each subprojects
foreach(subproject ${CAMITK_SUBPROJECTS})
# tag sub project, tag are used to sort projects according to tests
set_property(GLOBAL PROPERTY SubProject ${subproject})
set_property(GLOBAL PROPERTY Label ${subproject})
# build each sub project
set(CTEST_BUILD_TARGET ${subproject})
ctest_build()
ctest_submit(PARTS Build)
# Run tests
ctest_test(BUILD "${CTEST_BINARY_DIRECTORY}" INCLUDE_LABEL "${subproject}")
ctest_submit(PARTS Test)
endforeach(subproject)
# Install locally this build version of CamiTK
set(CTEST_BUILD_TARGET sdk_local_install)
ctest_build()
ctest_submit(PARTS Install)
# update revision number
get_git_info(${CTEST_SOURCE_DIRECTORY})
set(CURRENT_GIT_HASH ${CAMITK_GIT_ABBREVIATED_HASH})
# set the build name using the compiler and commit hash
set(CTEST_BUILD_NAME ${CAMITK_CONTINUOUS_INTEGRATION}-${CURRENT_GIT_HASH})
# show update reports if there is a change in the source code
ctest_submit(PARTS Update Notes)
# Configure the whole camitk project and send configure report on the server
ctest_configure()
ctest_submit(PARTS Configure)
# Get subprojects listing (automatically created at configuration step)
include("${CTEST_BINARY_DIRECTORY}/Subprojects.cmake")
# Update CDash configuration to the server
# Project.xml file is automatically generated. If someone added an extension to CamiTK, CDash will automatically be updated according to it.
# To do this, send this file to the server
ctest_submit(FILES "${CTEST_BINARY_DIRECTORY}/Project.xml")
# Build each subprojects
foreach(subproject ${CAMITK_SUBPROJECTS})
# tag sub project, tag are used to sort projects according to tests
set_property(GLOBAL PROPERTY SubProject ${subproject})
set_property(GLOBAL PROPERTY Label ${subproject})
# build each sub project
set(CTEST_BUILD_TARGET ${subproject})
ctest_build()
ctest_submit(PARTS Build)
# Run tests
ctest_test(BUILD "${CTEST_BINARY_DIRECTORY}" INCLUDE_LABEL "${subproject}")
ctest_submit(PARTS Test)
endforeach(subproject)
# Install locally this build version of CamiTK
set(CTEST_BUILD_TARGET sdk_local_install)
ctest_build()
ctest_submit(PARTS Install)
endif ()
message(STATUS "Waiting for GIT change")
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment