testHarness: adding the environment variable CDASH_SCM_INFO in order to override

the SCM information that gets appended at the end of the buildname string.

The buildname string is the string that will identify your test run when
published on the foam-extend CDash service.

When using git, this SCM information is picked up automatically from the CTest
script: -git-branch=the_git_branch_name-git-rev=the_git_revision_number.

But when using a non-git SCM (mercurial, etc), when the foam-extend source
code you are testing is not under a valid git repository, or simply when a user
needs to add more details to the standard SCM information (branch name and
revision number), then setting the environment variable CDASH_SCM_INFO to the
proper information will allow you to override the suffix we add at the end of
the buildname.

Please note that in order to keep the CMake script simple, for non-git
repositories, the fallback solution to try grabbing the information through
Mercurial has been removed. Please use the CDASH_SCM_INFO environment
varible instead.
This commit is contained in:
Martin Beaudoin 2015-08-15 14:23:15 -04:00
parent a04e8e4c27
commit 6cebda5e41
5 changed files with 143 additions and 60 deletions

View file

@ -67,7 +67,7 @@ SET(
#Grab the FOAM installation directory. #Grab the FOAM installation directory.
SET( SET(
OF_ROOT $ENV{WM_PROJECT_DIR} FOAM_ROOT $ENV{WM_PROJECT_DIR}
CACHE INTERNAL "FOAM root directory." CACHE INTERNAL "FOAM root directory."
) )
@ -79,6 +79,22 @@ SET(
CACHE STRING "Build ID" CACHE STRING "Build ID"
) )
# We allow overriding the git branch and revision information with some
# user-supplied information using the CDASH_SCM_INFO environment variable.
#
# Mercurial or other SCM users should be using this environment variable
# in order to provide branch and revision information for the buildname.
#
# Git users should use this environment variable in order to provide
# additionnal information instead of just the branch and revision number.
#
# Otherwise, the buildname will be appended with the following information:
# -git-branch=the_git_branch_name-git-rev=the_git_revision_number
SET(
BUILDNAME_SCM_INFO $ENV{CDASH_SCM_INFO}
CACHE STRING "SCM info for CDash buildname"
)
# Find out the version of the compiler being used. # Find out the version of the compiler being used.
# Add this information to the buildname # Add this information to the buildname
# This is for gcc or icc because they both support the -dumpversion option # This is for gcc or icc because they both support the -dumpversion option
@ -115,48 +131,63 @@ set (UPDATE_TYPE git)
# Using GIT as SCM # Using GIT as SCM
# #
find_package(Git) find_package(Git)
if(GIT_FOUND)
message("Git was found: ${GIT_EXECUTABLE}")
# Adding the name of the git branch to the build name if(NOT BUILDNAME_SCM_INFO STREQUAL "")
EXEC_PROGRAM(git SET(BUILDNAME "${BUILDNAME}-${BUILDNAME_SCM_INFO}")
ARGS branch --no-color 2> /dev/null | grep '*'| awk '{print $2}'
OUTPUT_VARIABLE GIT_BRANCH_NAME
)
message("Git branch: ${GIT_BRANCH_NAME}")
# We also add the git rev number to the build name elseif(GIT_FOUND)
EXEC_PROGRAM(git message("The git command was found: ${GIT_EXECUTABLE}")
ARGS rev-parse --short=12 HEAD
OUTPUT_VARIABLE GIT_REV_NUMBER # Check if the source code is under a valid git repository
execute_process(
COMMAND git status
WORKING_DIRECTORY ${FOAM_ROOT}
OUTPUT_VARIABLE GIT_STATUS
RESULT_VARIABLE GIT_ECODE
ERROR_QUIET
) )
message("Git rev: ${GIT_REV_NUMBER}")
if (GIT_BRANCH_NAME STREQUAL "") if(NOT GIT_ECODE)
message("No git-branch. Mercurial?") # We have a valid git repository. Grab the branch and revision info.
EXEC_PROGRAM(hg # Add to the build name
ARGS id exec_program(git
OUTPUT_VARIABLE GIT_BRANCH_NAME ARGS branch --no-color 2> /dev/null | grep '*'| awk '{print $2}'
) OUTPUT_VARIABLE GIT_BRANCH_NAME
string(REPLACE " " "_" GIT_BRANCH_NAME ${GIT_BRANCH_NAME}) )
string(REPLACE "+" "_modified" GIT_BRANCH_NAME ${GIT_BRANCH_NAME}) message("Git branch: ${GIT_BRANCH_NAME}")
SET(GIT_BRANCH_NAME "hg_${GIT_BRANCH_NAME}")
message("Git branch (mercurial): ${GIT_BRANCH_NAME}") execute_process(
endif() COMMAND git rev-parse --short=12 HEAD
SET(BUILDNAME "${BUILDNAME}-git-branch=${GIT_BRANCH_NAME}") OUTPUT_VARIABLE GIT_REV_NUMBER
SET(BUILDNAME "${BUILDNAME}-git-rev=${GIT_REV_NUMBER}") )
message("Git revision: ${GIT_REV_NUMBER}")
SET(BUILDNAME "${BUILDNAME}-git-branch=${GIT_BRANCH_NAME}")
SET(BUILDNAME "${BUILDNAME}-git-rev=${GIT_REV_NUMBER}")
else()
# Not a git repository: no branch nor revision information available
SET(BUILDNAME "${BUILDNAME}-git-branch=unknown")
SET(BUILDNAME "${BUILDNAME}-git-rev=unknown")
endif()
else()
# Git is not available: no branch nor revision information supplied
SET(BUILDNAME "${BUILDNAME}-git-branch=unknown")
SET(BUILDNAME "${BUILDNAME}-git-rev=unknown")
endif() endif()
# Some last minute cleanup # Some last minute cleanup
# Seems like no '/' are allowed in the BUILDNAME or in the SITE name # Seems like no '/' or ' 'are allowed in the BUILDNAME or in the SITE name
string(REPLACE "/" "_" BUILDNAME ${BUILDNAME}) string(REPLACE "/" "_" BUILDNAME ${BUILDNAME})
string(REPLACE " " "_" BUILDNAME ${BUILDNAME})
string(REPLACE "/" "_" SITE ${SITE}) string(REPLACE "/" "_" SITE ${SITE})
string(REPLACE " " "_" SITE ${SITE})
# Build section # Build section
#----------------------------------------------------------------------------- #-----------------------------------------------------------------------------
# Compile FOAM, libs and apps # Compile FOAM, libs and apps
add_custom_target (foam-extend-$ENV{WM_PROJECT_VERSION} ALL add_custom_target (foam-extend-$ENV{WM_PROJECT_VERSION} ALL
${OF_ROOT}/Allwmake ${FOAM_ROOT}/Allwmake
) )
set_property( set_property(
@ -168,7 +199,7 @@ set_property(
# This part will not be compiled and run by default. # This part will not be compiled and run by default.
# This would be a good candidate for a sub-project # This would be a good candidate for a sub-project
add_custom_target (foam-extend-$ENV{WM_PROJECT_VERSION}_unitTests add_custom_target (foam-extend-$ENV{WM_PROJECT_VERSION}_unitTests
wmake all ${OF_ROOT}/applications/test wmake all ${FOAM_ROOT}/applications/test
) )
# Test section # Test section

View file

@ -170,6 +170,13 @@
# You can override your identifier using this environment variable # You can override your identifier using this environment variable
#setenv CDASH_SUBMIT_LOCAL_HOST_ID choose_your_CDash_system_identifer #setenv CDASH_SUBMIT_LOCAL_HOST_ID choose_your_CDash_system_identifer
# Buildname suffix for the FOAM CDash test harness on foam-extend
# By default, the git branch name and git revision number will be
# appended to the CDash build name.
# Otherwise, for users not using git, or wanting to provide additionnal
# information, simply initialize the CDASH_SCM_INFO with the proper information
#setenv CDASH_SCM_INFO your_SCM_information
# Mac OS X MacPorts root directory. # Mac OS X MacPorts root directory.
# The default value is '/opt/local/etc/macports'. # The default value is '/opt/local/etc/macports'.
# In order to disable the usage of MacPorts on Mac OSX, simply initialize this # In order to disable the usage of MacPorts on Mac OSX, simply initialize this

View file

@ -180,6 +180,13 @@ export FOAM_VERBOSE=1
# You can override your identifier using this environment variable # You can override your identifier using this environment variable
#export CDASH_SUBMIT_LOCAL_HOST_ID=choose_your_CDash_system_identifer #export CDASH_SUBMIT_LOCAL_HOST_ID=choose_your_CDash_system_identifer
# Buildname suffix for the FOAM CDash test harness on foam-extend
# By default, the git branch name and git revision number will be
# appended to the CDash build name.
# Otherwise, for users not using git, or wanting to provide additionnal
# information, simply initialize the CDASH_SCM_INFO with the proper information
#export CDASH_SCM_INFO=your_SCM_information
# Mac OS X MacPorts root directory. # Mac OS X MacPorts root directory.
# The default value is '/opt/local/etc/macports'. # The default value is '/opt/local/etc/macports'.
# In order to disable the usage of MacPorts on Mac OSX, simply initialize this # In order to disable the usage of MacPorts on Mac OSX, simply initialize this

View file

@ -178,6 +178,13 @@ export PARAVIEW_BIN_DIR=$PARAVIEW_DIR/bin
# You can override your identifier using this environment variable # You can override your identifier using this environment variable
#export CDASH_SUBMIT_LOCAL_HOST_ID=choose_your_CDash_system_identifer #export CDASH_SUBMIT_LOCAL_HOST_ID=choose_your_CDash_system_identifer
# Buildname suffix for the FOAM CDash test harness on foam-extend
# By default, the git branch name and git revision number will be
# appended to the CDash build name.
# Otherwise, for users not using git, or wanting to provide additionnal
# information, simply initialize the CDASH_SCM_INFO with the proper information
#export CDASH_SCM_INFO=your_SCM_information
# Mac OS X MacPorts root directory. # Mac OS X MacPorts root directory.
# The default value is '/opt/local/etc/macports'. # The default value is '/opt/local/etc/macports'.
# In order to disable the usage of MacPorts on Mac OSX, simply initialize this # In order to disable the usage of MacPorts on Mac OSX, simply initialize this

View file

@ -67,7 +67,7 @@ SET(
#Grab the FOAM installation directory. #Grab the FOAM installation directory.
SET( SET(
OF_ROOT $ENV{WM_PROJECT_DIR} FOAM_ROOT $ENV{WM_PROJECT_DIR}
CACHE INTERNAL "FOAM root directory." CACHE INTERNAL "FOAM root directory."
) )
@ -79,6 +79,22 @@ SET(
CACHE STRING "Build ID" CACHE STRING "Build ID"
) )
# We allow overriding the git branch and revision information with some
# user-supplied information using the CDASH_SCM_INFO environment variable.
#
# Mercurial or other SCM users should be using this environment variable
# in order to provide branch and revision information for the buildname.
#
# Git users should use this environment variable in order to provide
# additionnal information instead of just the branch and revision number.
#
# Otherwise, the buildname will be appended with the following information:
# -git-branch=the_git_branch_name-git-rev=the_git_revision_number
SET(
BUILDNAME_SCM_INFO $ENV{CDASH_SCM_INFO}
CACHE STRING "SCM info for CDash buildname"
)
# Find out the version of the compiler being used. # Find out the version of the compiler being used.
# Add this information to the buildname # Add this information to the buildname
# This is for gcc or icc because they both support the -dumpversion option # This is for gcc or icc because they both support the -dumpversion option
@ -115,48 +131,63 @@ set (UPDATE_TYPE git)
# Using GIT as SCM # Using GIT as SCM
# #
find_package(Git) find_package(Git)
if(GIT_FOUND)
message("Git was found: ${GIT_EXECUTABLE}")
# Adding the name of the git branch to the build name if(NOT BUILDNAME_SCM_INFO STREQUAL "")
EXEC_PROGRAM(git SET(BUILDNAME "${BUILDNAME}-${BUILDNAME_SCM_INFO}")
ARGS branch --no-color 2> /dev/null | grep '*'| awk '{print $2}'
OUTPUT_VARIABLE GIT_BRANCH_NAME
)
message("Git branch: ${GIT_BRANCH_NAME}")
# We also add the git rev number to the build name elseif(GIT_FOUND)
EXEC_PROGRAM(git message("The git command was found: ${GIT_EXECUTABLE}")
ARGS rev-parse --short=12 HEAD
OUTPUT_VARIABLE GIT_REV_NUMBER # Check if the source code is under a valid git repository
execute_process(
COMMAND git status
WORKING_DIRECTORY ${FOAM_ROOT}
OUTPUT_VARIABLE GIT_STATUS
RESULT_VARIABLE GIT_ECODE
ERROR_QUIET
) )
message("Git rev: ${GIT_REV_NUMBER}")
if (GIT_BRANCH_NAME STREQUAL "") if(NOT GIT_ECODE)
message("No git-branch. Mercurial?") # We have a valid git repository. Grab the branch and revision info.
EXEC_PROGRAM(hg # Add to the build name
ARGS id exec_program(git
OUTPUT_VARIABLE GIT_BRANCH_NAME ARGS branch --no-color 2> /dev/null | grep '*'| awk '{print $2}'
) OUTPUT_VARIABLE GIT_BRANCH_NAME
string(REPLACE " " "_" GIT_BRANCH_NAME ${GIT_BRANCH_NAME}) )
string(REPLACE "+" "_modified" GIT_BRANCH_NAME ${GIT_BRANCH_NAME}) message("Git branch: ${GIT_BRANCH_NAME}")
SET(GIT_BRANCH_NAME "hg_${GIT_BRANCH_NAME}")
message("Git branch (mercurial): ${GIT_BRANCH_NAME}") execute_process(
endif() COMMAND git rev-parse --short=12 HEAD
SET(BUILDNAME "${BUILDNAME}-git-branch=${GIT_BRANCH_NAME}") OUTPUT_VARIABLE GIT_REV_NUMBER
SET(BUILDNAME "${BUILDNAME}-git-rev=${GIT_REV_NUMBER}") )
message("Git revision: ${GIT_REV_NUMBER}")
SET(BUILDNAME "${BUILDNAME}-git-branch=${GIT_BRANCH_NAME}")
SET(BUILDNAME "${BUILDNAME}-git-rev=${GIT_REV_NUMBER}")
else()
# Not a git repository: no branch nor revision information available
SET(BUILDNAME "${BUILDNAME}-git-branch=unknown")
SET(BUILDNAME "${BUILDNAME}-git-rev=unknown")
endif()
else()
# Git is not available: no branch nor revision information supplied
SET(BUILDNAME "${BUILDNAME}-git-branch=unknown")
SET(BUILDNAME "${BUILDNAME}-git-rev=unknown")
endif() endif()
# Some last minute cleanup # Some last minute cleanup
# Seems like no '/' are allowed in the BUILDNAME or in the SITE name # Seems like no '/' or ' 'are allowed in the BUILDNAME or in the SITE name
string(REPLACE "/" "_" BUILDNAME ${BUILDNAME}) string(REPLACE "/" "_" BUILDNAME ${BUILDNAME})
string(REPLACE " " "_" BUILDNAME ${BUILDNAME})
string(REPLACE "/" "_" SITE ${SITE}) string(REPLACE "/" "_" SITE ${SITE})
string(REPLACE " " "_" SITE ${SITE})
# Build section # Build section
#----------------------------------------------------------------------------- #-----------------------------------------------------------------------------
# Compile FOAM, libs and apps # Compile FOAM, libs and apps
add_custom_target (foam-extend-$ENV{WM_PROJECT_VERSION} ALL add_custom_target (foam-extend-$ENV{WM_PROJECT_VERSION} ALL
${OF_ROOT}/Allwmake ${FOAM_ROOT}/Allwmake
) )
set_property( set_property(
@ -168,7 +199,7 @@ set_property(
# This part will not be compiled and run by default. # This part will not be compiled and run by default.
# This would be a good candidate for a sub-project # This would be a good candidate for a sub-project
add_custom_target (foam-extend-$ENV{WM_PROJECT_VERSION}_unitTests add_custom_target (foam-extend-$ENV{WM_PROJECT_VERSION}_unitTests
wmake all ${OF_ROOT}/applications/test wmake all ${FOAM_ROOT}/applications/test
) )
# Test section # Test section