diff --git a/.gitlab/build_and_test.sh b/.gitlab/build_and_test.sh index 25ccfd2150..e573eb11f9 100644 --- a/.gitlab/build_and_test.sh +++ b/.gitlab/build_and_test.sh @@ -15,6 +15,8 @@ SUBMIT_TO_CDASH=${SUBMIT_TO_CDASH:-false} BUILD_WITH_CTEST=${BUILD_WITH_CTEST:-${SUBMIT_TO_CDASH}} SUBMIT_ON_ERROR=${SUBMIT_ON_ERROR:-${SUBMIT_TO_CDASH}} SHOW_HELP_MESSAGE=${SHOW_HELP_MESSAGE:-true} +DEFAULT_TEST_TIMEOUT=${DEFAULT_TEST_TIMEOUT:-600} +AVAILABLE_CLUSTERS=darwin,rocinante,venado,chicoma,rzvernal,rzadams if ${SUBMIT_TO_CDASH}; then UNTIL=${UNTIL:-submit} @@ -44,12 +46,16 @@ section() { } print_usage() { - echo "usage: build_and_test [-h] [-u {spack,env,cmake,build,test,install}] system environment" + echo "usage: build_and_test [-h] [-u {spack,env,cmake,build,test,install}] [system] [environment]" echo - echo "This script allows you to active a Spack environment on a given system," + echo "This script allows you to activate a Spack environment on a given system," echo "configure your project's CMake based on its Spack variants, and then build, test and" echo "install it. Use the -u/--until option to stop the script early at a given phase." echo + echo "Not specifying an environment will list all available configurations for the given system." + echo + echo "Not specifying a system or environment will list all available systems." + echo echo "After the 'env' phase has run, you will be in an active Spack environment." echo "You can then use the 'activate_build_env' command to enter a sub-shell" echo "with the Spack build environment for your project." @@ -63,6 +69,12 @@ print_usage() { echo " - cmake_test [EXTRA_CTEST_ARGS]" echo " - cmake_install" echo + echo "To enable CDash submission, set environment variable SUBMIT_TO_CDASH=true" + echo + echo "Use the environment variable PROJECT_SPACK_ENV to select a different" + echo "upstream. If CI_SPACK_ENV is set to the same location as PROJECT_SPACK_ENV," + echo "that spack deployment will be used directly and not replicated." + echo echo "positional arguments:" echo " system name of the system" echo " environment name of the Spack environment" @@ -74,6 +86,7 @@ print_usage() { } VALID_CMD=false +SHOW_AVAILABLE=false if [ $# -eq 2 ] && [[ ! "$1" =~ ^-.* ]] && [[ ! "$2" =~ ^-.* ]]; then VALID_CMD=true elif [ $# -eq 4 ]; then @@ -84,6 +97,12 @@ elif [ $# -eq 4 ]; then shift 2 fi fi +elif [ $# -eq 1 ] && [[ "$AVAILABLE_CLUSTERS" =~ "$1" ]]; then + VALID_CMD=true + SHOW_AVAILABLE=true +elif [ $# -eq 0 ]; then + VALID_CMD=true + SHOW_AVAILABLE=true fi if ! $VALID_CMD; then @@ -95,16 +114,37 @@ fi export SYSTEM_NAME=$1 export SPACK_ENV_NAME=$2 -if [[ "$SYSTEM_NAME" == "darwin" || "$SYSTEM_NAME" == "rocinante" || "$SYSTEM_NAME" == "venado" ]]; then +if [[ "$SYSTEM_NAME" == "darwin" || "$SYSTEM_NAME" == "rocinante" || "$SYSTEM_NAME" == "venado" || "${SYSTEM_NAME}" == "chicoma" ]]; then PROJECT_SPACK_ENV=${PROJECT_SPACK_ENV:-/usr/projects/xcap/spack-env/${PROJECT_TYPE}/${PROJECT_SPACK_ENV_VERSION}} -elif [[ "$SYSTEM_NAME" == "rzadams" || "${SYSTEM_NAME}" == "rzansel" || "$SYSTEM_NAME" == "rzvernal" ]]; then +elif [[ "$SYSTEM_NAME" == "rzadams" || "${SYSTEM_NAME}" == "rzansel" || "$SYSTEM_NAME" == "rzvernal" || "$SYSTEM_NAME" == "elcapitan" ]]; then PROJECT_SPACK_ENV=${PROJECT_SPACK_ENV:-/usr/workspace/xcap/spack-env/${PROJECT_TYPE}/${PROJECT_SPACK_ENV_VERSION}} +elif $SHOW_AVAILABLE; then + echo "Available systems:" + echo + for c in ${AVAILABLE_CLUSTERS//,/ } + do + echo "${c}" + done + true + return else - echo "Unkown system '${SYSTEM_NAME}'" + echo "ERROR: Unkown system '${SYSTEM_NAME}'" false return fi +if $SHOW_AVAILABLE; then + shift 1 + if [ -f $PROJECT_SPACK_ENV/systems/$SYSTEM_NAME/activate.sh ]; then + source $PROJECT_SPACK_ENV/systems/$SYSTEM_NAME/activate.sh + true + else + echo "ERROR: command can only be executed on ${SYSTEM_NAME}" + false + fi + return +fi + if [[ "${SPACK_ENV_NAME}" == "custom-spec" ]] && [[ -z "${SPACK_ENV_SPEC}" ]]; then echo "Spack environment 'custom-spec' requires SPACK_ENV_SPEC environment variable to be set!" false @@ -155,8 +195,10 @@ pre_test_steps() { prepare_spack() { section start "prepare_spack[collapsed=true]" "Prepare Spack" umask 0007 - mkdir -p $TMPDIR - source $PROJECT_SPACK_ENV/replicate.sh $CI_SPACK_ENV + if [[ "$PROJECT_SPACK_ENV" != "$CI_SPACK_ENV" ]]; then + mkdir -p $TMPDIR + source $PROJECT_SPACK_ENV/replicate.sh $CI_SPACK_ENV + fi section end "prepare_spack" } @@ -233,7 +275,7 @@ cmake_test() { if ${BUILD_WITH_CTEST}; then ctest -V -S .gitlab/build_and_test.cmake,Test,$REPORT_ERRORS else - ctest --test-dir ${BUILD_DIR} --output-junit tests.xml $@ + ctest --timeout ${DEFAULT_TEST_TIMEOUT} --test-dir ${BUILD_DIR} --output-junit tests.xml fi ) section end "testing" @@ -275,7 +317,7 @@ activate_build_env() { ############################################################################### if ${SHOW_HELP_MESSAGE}; then echo "Running on $(hostname)" - + if [ ${CI} ]; then echo " " echo -e "${COLOR_BLUE}######################################################################${COLOR_PLAIN}" @@ -292,6 +334,9 @@ if ${SHOW_HELP_MESSAGE}; then else echo -e "${COLOR_BLUE}salloc ${SCHEDULER_PARAMETERS}${COLOR_PLAIN}" fi + if [[ "${PROJECT_SPACK_ENV_VERSION}" != "current" ]]; then + echo -e "${COLOR_BLUE}export PROJECT_SPACK_ENV_VERSION=${PROJECT_SPACK_ENV_VERSION}${COLOR_PLAIN}" + fi if [[ ! -z "${SPACK_ENV_SPEC}" ]]; then echo -e "${COLOR_BLUE}export SPACK_ENV_SPEC='${SPACK_ENV_SPEC}'${COLOR_PLAIN}" fi diff --git a/spack-repo/packages/ports-of-call/package.py b/spack-repo/packages/ports-of-call/package.py index 576ca3da22..bf1fc927ca 100644 --- a/spack-repo/packages/ports-of-call/package.py +++ b/spack-repo/packages/ports-of-call/package.py @@ -1,5 +1,4 @@ -# Copyright 2013-2023 Lawrence Livermore National Security, LLC and other -# Spack Project Developers. See the top-level COPYRIGHT file for details. +# Copyright Spack Project Developers. See COPYRIGHT file for details. # # SPDX-License-Identifier: (Apache-2.0 OR MIT) @@ -16,7 +15,6 @@ class PortsOfCall(CMakePackage): maintainers = ["rbberger"] version("main", branch="main") - version("1.7.0", sha256="99045a7c4e3fbc73f01e930ce870cdc573a39910a28d85c54d65d2135f764bfc") version("1.6.0", sha256="290da149d4ad79c15787956559aeeefa0a06403be2f08cd324562ef013306797") version("1.5.2", sha256="73d16fe9236a9475010dbb01bf751c15bef01eb2e15bf92c8d9be2c0a606329f") version("1.5.1", sha256="b1f0232cd6d2aac65385d77cc061ec5035283ea50d0f167e7003eae034effb78") diff --git a/spack-repo/packages/singularity-eos/package.py b/spack-repo/packages/singularity-eos/package.py index de60ca00c3..a5a89fd53a 100644 --- a/spack-repo/packages/singularity-eos/package.py +++ b/spack-repo/packages/singularity-eos/package.py @@ -1,5 +1,4 @@ -# Copyright 2013-2023 Lawrence Livermore National Security, LLC and other -# Spack Project Developers. See the top-level COPYRIGHT file for details. +# Copyright Spack Project Developers. See COPYRIGHT file for details. # # SPDX-License-Identifier: (Apache-2.0 OR MIT) @@ -38,6 +37,8 @@ class SingularityEos(CMakePackage, CudaPackage, ROCmPackage): # allow `main` version for development version("main", branch="main") + version("1.9.1", sha256="148889e1b2d5bdc3d59c5fd6a6b5da25bb4f4f0f4343c57b3ccaf96691c93aff") + version("1.9.0", sha256="460b36a8311df430e6d4cccf3e72a6b3afda7db8d092b4a0a4259c4363c4dbde") version("1.8.0", sha256="1f1ec496f714aa23cc7003c88a85bd10d0e53e37659ba7310541248e48a66558") version("1.7.0", sha256="ce0825db2e9d079503e98cecf1c565352be696109042b3a0941762b35f36dc49") version("1.6.2", sha256="9c85fca679139a40cc9c72fcaeeca78a407cc1ca184734785236042de364b942", deprecated=True) diff --git a/spack-repo/packages/spiner/package.py b/spack-repo/packages/spiner/package.py index e7275f17f3..4f1b4a2072 100644 --- a/spack-repo/packages/spiner/package.py +++ b/spack-repo/packages/spiner/package.py @@ -1,5 +1,4 @@ -# Copyright 2013-2023 Lawrence Livermore National Security, LLC and other -# Spack Project Developers. See the top-level COPYRIGHT file for details. +# Copyright Spack Project Developers. See COPYRIGHT file for details. # # SPDX-License-Identifier: (Apache-2.0 OR MIT) @@ -64,8 +63,8 @@ class Spiner(CMakePackage): depends_on("ports-of-call portability_strategy=Kokkos", when="@:1.5.1 +kokkos") depends_on("ports-of-call portability_strategy=None", when="@:1.5.1 ~kokkos") depends_on("kokkos@3.3.00:", when="+kokkos") - depends_on( - "kokkos ~shared+cuda_lambda+cuda_constexpr", + requires( + "^kokkos ~shared+cuda_lambda+cuda_constexpr", when="+kokkos ^kokkos+cuda", ) diff --git a/spack-repo/repo.yaml b/spack-repo/repo.yaml index d580ee9103..f3a8288758 100644 --- a/spack-repo/repo.yaml +++ b/spack-repo/repo.yaml @@ -1,6 +1,2 @@ -# ### -# repository information -# ### - repo: namespace: singularity_eos