Cloned SEACAS for EXODUS library with extra build files for internal package management.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

298 lines
9.3 KiB

# @HEADER
# ************************************************************************
#
# TriBITS: Tribal Build, Integrate, and Test System
# Copyright 2013 Sandia Corporation
#
# Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
# the U.S. Government retains certain rights in this software.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# 3. Neither the name of the Corporation nor the names of the
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# ************************************************************************
# @HEADER
message(
"\n***"
"\n*** TribitsDriverDashboard.cmake"
"\n***\n"
)
# Ge the directly where this file lives in the TriBITS tree. We use this
# to figure out where everything in in the TriBITS directory tree.
get_filename_component(CMAKE_CURRENT_LIST_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
# Get the Tribits base directory
set(TRIBITS_ROOT "${CMAKE_CURRENT_LIST_DIR}/..")
get_filename_component(TRIBITS_ROOT "${TRIBITS_ROOT}" ABSOLUTE)
message("TRIBITS_ROOT = '${TRIBITS_ROOT}'")
# Get the directory containing the TriBITS CMake utilities using this
# script's location as the reference point.
set(TRIBITS_CMAKE_UTILS_DIR "${TRIBITS_ROOT}/core/utils")
message("TRIBITS_CMAKE_UTILS_DIR = '${TRIBITS_CMAKE_UTILS_DIR}'")
set( CMAKE_MODULE_PATH
"${TRIBITS_CMAKE_UTILS_DIR}"
)
#message("CMAKE_MODULE_PATH = ${CMAKE_MODULE_PATH}")
include(PrintVar)
include(SetDefaultAndFromEnv)
include(${CMAKE_CURRENT_LIST_DIR}/../ctest_driver/TribitsCTestDriverCoreHelpers.cmake)
#
# Override CTEST_SUBMIT to drive multiple submits and to detect failed
# submissions and track them as queued errors.
#
macro(tdd_ctest_submit)
# Cache the original CTEST_DROP_SITE and CTEST_DROP_LOCATION
if ("${TDD_CTEST_DROP_SITE_ORIG}" STREQUAL "")
set(TDD_CTEST_DROP_SITE_ORIG ${CTEST_DROP_SITE})
if (TRIBITS_CTEST_SUBMIT_DEBUG_DUMP)
print_var(TDD_CTEST_DROP_SITE_ORIG)
endif()
endif()
if ("${TDD_CTEST_DROP_LOCATION_ORIG}" STREQUAL "")
set(TDD_CTEST_DROP_LOCATION_ORIG ${CTEST_DROP_LOCATION})
if (TRIBITS_CTEST_SUBMIT_DEBUG_DUMP)
print_var(TDD_CTEST_DROP_LOCATION_ORIG)
endif()
endif()
# Do the first submit
set(CTEST_DROP_SITE ${TDD_CTEST_DROP_SITE_ORIG})
set(CTEST_DROP_LOCATION ${TDD_CTEST_DROP_LOCATION_ORIG})
if (TRIBITS_CTEST_SUBMIT_DEBUG_DUMP)
print_var(CTEST_DROP_SITE)
print_var(CTEST_DROP_LOCATION)
endif()
ctest_submit(${ARGN})
# Do the second submit if requested!
if (TDD_2ND_CTEST_DROP_SITE OR TDD_2ND_CTEST_DROP_LOCATION)
message("\nDoing submit to second CDash site ...\n")
if (NOT "${TDD_2ND_CTEST_DROP_SITE}" STREQUAL "")
if (TRIBITS_CTEST_SUBMIT_DEBUG_DUMP)
print_var(TDD_2ND_CTEST_DROP_SITE)
endif()
set(CTEST_DROP_SITE ${TDD_2ND_CTEST_DROP_SITE})
endif()
if (NOT "${TDD_2ND_CTEST_DROP_LOCATION}" STREQUAL "")
if (TRIBITS_CTEST_SUBMIT_DEBUG_DUMP)
print_var(TDD_2ND_CTEST_DROP_LOCATION)
endif()
set(CTEST_DROP_LOCATION ${TDD_2ND_CTEST_DROP_LOCATION})
endif()
ctest_submit(${ARGN})
endif()
endmacro()
#
# A) Set up the environment get options
#
set(CTEST_SITE "$ENV{CTEST_SITE}")
if("${CTEST_SITE}" STREQUAL "")
site_name(CTEST_SITE)
endif()
if("${CTEST_SITE}" STREQUAL "")
if(WIN32)
string(TOLOWER "$ENV{COMPUTERNAME}" CTEST_SITE)
else()
execute_process(COMMAND uname -n
OUTPUT_VARIABLE CTEST_SITE
OUTPUT_STRIP_TRAILING_WHITESPACE
)
endif()
endif()
#
# Set CTEST_BUILD_NAME from TDD_BUILD_NAME in env or set default.
#
# NOTE: CTEST_BUILD_NAME is a built-in CTest variable and therefore it
# should not be set from the environment since it will give crosstalk
# with TribitsCTestDriverCore.cmake.
#
set(CTEST_BUILD_NAME "$ENV{TDD_BUILD_NAME}")
if("${CTEST_BUILD_NAME}" STREQUAL "")
if(WIN32)
set(HOST_TYPE $ENV{OS})
else()
execute_process(COMMAND uname
OUTPUT_VARIABLE HOST_TYPE
OUTPUT_STRIP_TRAILING_WHITESPACE
)
endif()
set(CTEST_BUILD_NAME "${HOST_TYPE}-TDD-${CTEST_SITE}")
endif()
set(CTEST_CMAKE_GENERATOR "$ENV{CTEST_CMAKE_GENERATOR}")
if("${CTEST_CMAKE_GENERATOR}" STREQUAL "")
if(WIN32)
set(CTEST_CMAKE_GENERATOR "NMake Makefiles")
else()
set(CTEST_CMAKE_GENERATOR "Unix Makefiles")
endif()
endif()
# Extra directories to pull updates from
set_default_and_from_env( TDD_EXTRA_GIT_PULL_DIRS "" )
set(CTEST_TEST_TIMEOUT "$ENV{CTEST_TEST_TIMEOUT}")
if("${CTEST_TEST_TIMEOUT}" STREQUAL "")
set(CTEST_TEST_TIMEOUT 7200)
endif()
# Submit the results to the dashboard or not
set_default_and_from_env( TDD_DO_SUBMIT TRUE )
# Dashboard model : Nightly, Experimental, Continuous
set_default_and_from_env( TDD_CTEST_TEST_TYPE Experimental )
# set this to ON if you need to test something before committing.
set_default_and_from_env( TDD_IN_TESTING_MODE OFF )
#
# Allow environment variables to override default values for the
# source, update, and binary directories.
#
get_filename_component(CTEST_SOURCE_DIRECTORY
"${CTEST_SCRIPT_DIRECTORY}" ABSOLUTE)
set_default_and_from_env(CTEST_SOURCE_DIRECTORY ${CTEST_SOURCE_DIRECTORY})
get_filename_component(CTEST_UPDATE_DIRECTORY
"${CTEST_SCRIPT_DIRECTORY}/../../../.." ABSOLUTE)
set_default_and_from_env(CTEST_UPDATE_DIRECTORY ${CTEST_UPDATE_DIRECTORY})
get_filename_component(CTEST_BINARY_DIRECTORY
"${CTEST_SCRIPT_DIRECTORY}/../../../../../TDD_BUILD" ABSOLUTE)
set_default_and_from_env(CTEST_BINARY_DIRECTORY ${CTEST_BINARY_DIRECTORY})
set(CTEST_NOTES_FILES)
if(NOT "$ENV{TDD_CRON_DRIVER_LOGFILE}" STREQUAL "")
set(CTEST_NOTES_FILES ${CTEST_NOTES_FILES} "$ENV{TDD_CRON_DRIVER_LOGFILE}")
endif()
if(NOT "$ENV{TDD_CRON_DRIVER_SCRIPT}" STREQUAL "")
set(CTEST_NOTES_FILES ${CTEST_NOTES_FILES} "$ENV{TDD_CRON_DRIVER_SCRIPT}")
endif()
set(parallel_level "$ENV{TDD_PARALLEL_LEVEL}")
if("${parallel_level}" STREQUAL "")
set(parallel_level 1)
endif()
set(git_exe "$ENV{TDD_GIT_EXE}")
if("${git_exe}" STREQUAL "")
set(git_exe "git_exe-NOTFOUND")
find_program(git_exe NAMES git.cmd git)
endif()
if(git_exe)
set(CTEST_UPDATE_TYPE "git")
set(CTEST_UPDATE_COMMAND "${git_exe}")
endif()
#
# Run the outer dashboard
#
message("\nA) Empty out ${CTEST_BINARY_DIRECTORY} ...")
ctest_empty_binary_directory("${CTEST_BINARY_DIRECTORY}")
ctest_start("${TDD_CTEST_TEST_TYPE}")
message("\nB) Update ${CTEST_UPDATE_DIRECTORY} ...")
message(" CTEST_UPDATE_COMMAND='${CTEST_UPDATE_COMMAND}'")
message(" CTEST_UPDATE_TYPE='${CTEST_UPDATE_TYPE}'")
if (NOT TDD_IN_TESTING_MODE)
ctest_update(SOURCE "${CTEST_UPDATE_DIRECTORY}")
foreach(EXTRA_PULL_DIR ${TDD_EXTRA_GIT_PULL_DIRS})
set(EXTRA_PULL_DIR_ABS "${CTEST_UPDATE_DIRECTORY}/${EXTRA_PULL_DIR}")
set(PULL_OUT_FILE "${CTEST_BINARY_DIRECTORY}/${EXTRA_PULL_DIR}.pull.out")
set(CTEST_NOTES_FILES ${CTEST_NOTES_FILES} ${PULL_OUT_FILE})
message("Pull extra updates in '${EXTRA_PULL_DIR_ABS}' ...")
tribits_update_git_extrarepo("${git_exe}" "${EXTRA_PULL_DIR_ABS}")
endforeach()
else()
message("\nTesting mode: no updates of outer sources being performed!")
endif()
message("\nC) Configure ${CTEST_BINARY_DIRECTORY} ...")
ctest_configure(BUILD "${CTEST_BINARY_DIRECTORY}")
ctest_read_custom_files(BUILD "${CTEST_BINARY_DIRECTORY}")
message("\nD) Build ${CTEST_BINARY_DIRECTORY} ...")
ctest_build(BUILD "${CTEST_BINARY_DIRECTORY}" APPEND)
message("\nE) Submitting update configure notes build ...")
if (TDD_DO_SUBMIT)
if(NOT "$ENV{TDD_CTEST_DROP_SITE}" STREQUAL "")
set(CTEST_DROP_SITE "$ENV{TDD_CTEST_DROP_SITE}")
endif()
if(NOT "$ENV{TDD_CTEST_DROP_LOCATION}" STREQUAL "")
set(CTEST_DROP_LOCATION "$ENV{TDD_CTEST_DROP_LOCATION}")
endif()
tdd_ctest_submit(PARTS update configure notes build)
else()
message("\nSkipping submit on request!")
endif()
message("\nF) Run tests (which runs everything really): PARALLEL_LEVEL ${parallel_level} from ${CTEST_BINARY_DIRECTORY} ...")
ctest_test(BUILD "${CTEST_BINARY_DIRECTORY}" PARALLEL_LEVEL ${parallel_level})
message("\nG) Submitting Test ...")
if (TDD_DO_SUBMIT)
tdd_ctest_submit(PARTS Test)
else()
message("\nSkipping submit on request!")
endif()
message(
"\n*** Finished TribitsDriverDashboard.cmake ***\n"
)