From 59c64f538dd13bef5bbf2ec3509e5f1a2a934ddc Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Fri, 14 Nov 2025 12:00:49 -0700 Subject: [PATCH 01/10] github: remove robots --- .github/workflows/deps.yml | 60 -------------------------------------- 1 file changed, 60 deletions(-) delete mode 100644 .github/workflows/deps.yml diff --git a/.github/workflows/deps.yml b/.github/workflows/deps.yml deleted file mode 100644 index 324ac0e39ef..00000000000 --- a/.github/workflows/deps.yml +++ /dev/null @@ -1,60 +0,0 @@ -name: Check Spack dependencies for updates - -on: - # for manual jobs - workflow_dispatch: - # triggers at around 15:00 UTC (with some delay) - schedule: - - cron: '0 15 * * *' - -jobs: - deps: - name: - runs-on: ubuntu-latest - steps: - - name: Checkout this repo - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - name: create build - run: mkdir build - - name: Checkout ports-of-call - uses: actions/checkout@v3 - with: - repository: lanl/ports-of-call - path: build/ports-of-call - fetch-depth: 0 - - name: Checkout spiner - uses: actions/checkout@v3 - with: - repository: lanl/spiner - path: build/spiner - fetch-depth: 0 - - name: copy over spack-repo v1 packages - run: | - # assume ports-of-call may be newer than spiner - cp -R build/spiner/spack-repo/v1/packages/* spack-repo/v1/packages/ - cp -R build/ports-of-call/spack-repo/v1/packages/* spack-repo/v1/packages/ - - name: copy over spack-repo v2 packages - run: | - # assume ports-of-call may be newer than spiner - cp -R build/spiner/spack-repo/v2/spiner/packages/* spack-repo/v2/singularity_eos/packages/ - cp -R build/ports-of-call/spack-repo/v2/ports_of_call/packages/* spack-repo/v2/singularity_eos/packages/ - - name: is there a difference? - run: git diff --exit-code --compact-summary - id: no_change - - name: create branch - if: ${{ failure() && steps.no_change.conclusion == 'failure' }} - run: | - git config user.name 'github-actions[bot]' - git config user.email 'github-actions[bot]@users.noreply.github.com' - git branch -D github-bot/update_spackages || true - git checkout -b github-bot/update_spackages - git add spack-repo - git commit -m "spack updates" - git push -f --set-upstream origin github-bot/update_spackages - - name: create pull request - if: ${{ failure() && steps.no_change.conclusion == 'failure' }} - run: gh pr create -B main -H github-bot/update_spackages --title 'Update spackages' --body 'Created by Github action' - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From ad6c39675eee3d03276513e8ce4a13a649f9ab0d Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Fri, 14 Nov 2025 12:07:51 -0700 Subject: [PATCH 02/10] ci: use xcap/spackages --- .gitlab-ci.yml | 6 +- .gitlab/build_and_test.sh | 20 +- .gitlab/download_prereq.sh | 3 - .gitlab/download_prereqs.sh | 23 ++ spack-repo/packages | 1 - spack-repo/repo.yaml | 1 - .../v1/packages/mpark-variant/icpc.patch | 33 -- .../v1/packages/mpark-variant/nvcc.patch | 40 --- .../v1/packages/mpark-variant/package.py | 43 --- .../v1/packages/mpark-variant/version.patch | 11 - .../v1/packages/ports-of-call/package.py | 71 ----- .../singularity-eos/gpu_compatibility.patch | 1 - .../v1/packages/singularity-eos/package.py | 282 ----------------- spack-repo/v1/packages/spiner/package.py | 100 ------ spack-repo/v1/repo.yaml | 2 - .../packages/mpark_variant/icpc.patch | 33 -- .../packages/mpark_variant/nvcc.patch | 40 --- .../packages/mpark_variant/package.py | 48 --- .../packages/mpark_variant/version.patch | 11 - .../packages/ports_of_call/package.py | 80 ----- .../singularity_eos/gpu_compatibility.patch | 1 - .../packages/singularity_eos/package.py | 289 ------------------ .../packages/spiner/package.py | 108 ------- .../v2/spack_repo/singularity_eos/repo.yaml | 3 - 24 files changed, 40 insertions(+), 1210 deletions(-) delete mode 100755 .gitlab/download_prereq.sh create mode 100644 .gitlab/download_prereqs.sh delete mode 120000 spack-repo/packages delete mode 120000 spack-repo/repo.yaml delete mode 100644 spack-repo/v1/packages/mpark-variant/icpc.patch delete mode 100644 spack-repo/v1/packages/mpark-variant/nvcc.patch delete mode 100644 spack-repo/v1/packages/mpark-variant/package.py delete mode 100644 spack-repo/v1/packages/mpark-variant/version.patch delete mode 100644 spack-repo/v1/packages/ports-of-call/package.py delete mode 120000 spack-repo/v1/packages/singularity-eos/gpu_compatibility.patch delete mode 100644 spack-repo/v1/packages/singularity-eos/package.py delete mode 100644 spack-repo/v1/packages/spiner/package.py delete mode 100644 spack-repo/v1/repo.yaml delete mode 100644 spack-repo/v2/spack_repo/singularity_eos/packages/mpark_variant/icpc.patch delete mode 100644 spack-repo/v2/spack_repo/singularity_eos/packages/mpark_variant/nvcc.patch delete mode 100644 spack-repo/v2/spack_repo/singularity_eos/packages/mpark_variant/package.py delete mode 100644 spack-repo/v2/spack_repo/singularity_eos/packages/mpark_variant/version.patch delete mode 100644 spack-repo/v2/spack_repo/singularity_eos/packages/ports_of_call/package.py delete mode 120000 spack-repo/v2/spack_repo/singularity_eos/packages/singularity_eos/gpu_compatibility.patch delete mode 100644 spack-repo/v2/spack_repo/singularity_eos/packages/singularity_eos/package.py delete mode 100644 spack-repo/v2/spack_repo/singularity_eos/packages/spiner/package.py delete mode 100644 spack-repo/v2/spack_repo/singularity_eos/repo.yaml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c607fa8a6da..b9026e83664 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,9 +5,6 @@ variables: PROJECT_NAME: singularity-eos ENABLE_CDASH: true GIT_SUBMODULE_STRATEGY: normal - # use this variable if there is a xcap/deployment MR you want to use instead - # PROJECT_SPACK_ENV_VERSION: "mr/62/2024-10-15" - PROJECT_SPACK_ENV_VERSION: "2025-01-18" include: - .gitlab/common.yml @@ -47,10 +44,11 @@ prereq_offline_deps: variables: GIT_SUBMODULE_STRATEGY: none script: - - .gitlab/download_prereq.sh + - source .gitlab/download_prereqs.sh artifacts: paths: - goldfiles.tar.gz + - extern openmpi_gcc: extends: [.ascgit_job, .darwin_job, .darwin_regular_job, .build_and_test] diff --git a/.gitlab/build_and_test.sh b/.gitlab/build_and_test.sh index 90408b3d10f..8c8efee5774 100644 --- a/.gitlab/build_and_test.sh +++ b/.gitlab/build_and_test.sh @@ -4,6 +4,8 @@ export PROJECT_NAME=singularity-eos export PROJECT_DEFAULT_BRANCH=main export PROJECT_TYPE=oss export PROJECT_GROUP=oss +export PROJECT_SPACK_ENV_CURRENT_DEFAULT="20250118" +export PROJECT_SPACK_ENV_VERSION_DEFAULT="${PROJECT_SPACK_ENV_VERSION_DEFAULT:-${PROJECT_SPACK_ENV_CURRENT_DEFAULT}}" ############################################################################### export BUILD_DIR=${BUILD_DIR:-build} @@ -17,6 +19,7 @@ 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 +export XCAP_SPACKAGES_CHECKOUT="${XCAP_SPACKAGES_CHECKOUT:-${SOURCE_DIR}/extern/xcap_spackages}" if ${SUBMIT_TO_CDASH}; then UNTIL=${UNTIL:-submit} @@ -29,7 +32,12 @@ if ${SUBMIT_ON_ERROR}; then else REPORT_ERRORS="" fi -PROJECT_SPACK_ENV_VERSION=${PROJECT_SPACK_ENV_VERSION:-current} + +if [ -n "$PROJECT_SPACK_ENV_MR" ]; then + PROJECT_SPACK_ENV_VERSION=${PROJECT_SPACK_ENV_VERSION:-mr/${PROJECT_SPACK_ENV_MR}/${PROJECT_SPACK_ENV_VERSION_DEFAULT}} +else + PROJECT_SPACK_ENV_VERSION=${PROJECT_SPACK_ENV_VERSION:-${PROJECT_SPACK_ENV_VERSION_DEFAULT}} +fi # colors COLOR_BLUE='\033[1;34m' @@ -219,6 +227,7 @@ prepare_env() { fi source ${CI_SPACK_ENV}/systems/${SYSTEM_NAME}/activate.sh ${PROJECT_GROUP}/${PROJECT_NAME}/${SPACK_ENV_NAME} + if [ -d ${SOURCE_DIR}/spack-repo ]; then spack repo add ${SOURCE_DIR}/spack-repo fi @@ -327,15 +336,16 @@ if ${SHOW_HELP_MESSAGE}; then echo " " echo -e "${COLOR_BLUE}ssh ${CLUSTER}${COLOR_PLAIN}" echo -e "${COLOR_BLUE}cd /your/${PROJECT_NAME}/checkout${COLOR_PLAIN}" - echo -e "${COLOR_BLUE}.gitlab/download_prereq.sh${COLOR_PLAIN}" + if [ -n "${XCAP_SPACKAGES_MR}" ]; then + echo -e "${COLOR_BLUE}export XCAP_SPACKAGES_MR=${XCAP_SPACKAGES_MR}${COLOR_PLAIN}" + fi + echo -e "${COLOR_BLUE}source .gitlab/download_prereqs.sh${COLOR_PLAIN}" if [[ ! -z "${LLNL_FLUX_SCHEDULER_PARAMETERS}" ]]; then echo -e "${COLOR_BLUE}flux alloc ${LLNL_FLUX_SCHEDULER_PARAMETERS}${COLOR_PLAIN}" - elif [[ ! -z "${LLNL_LSF_SCHEDULER_PARAMETERS}" ]]; then - echo -e "${COLOR_BLUE}bsub -I ${LLNL_LSF_SCHEDULER_PARAMETERS}${COLOR_PLAIN}" else echo -e "${COLOR_BLUE}salloc ${SCHEDULER_PARAMETERS}${COLOR_PLAIN}" fi - if [[ "${PROJECT_SPACK_ENV_VERSION}" != "current" ]]; then + if [[ "${PROJECT_SPACK_ENV_VERSION}" != "${PROJECT_SPACK_ENV_CURRENT_DEFAULT}" ]]; then echo -e "${COLOR_BLUE}export PROJECT_SPACK_ENV_VERSION=${PROJECT_SPACK_ENV_VERSION}${COLOR_PLAIN}" fi if [[ ! -z "${SPACK_ENV_SPEC}" ]]; then diff --git a/.gitlab/download_prereq.sh b/.gitlab/download_prereq.sh deleted file mode 100755 index 96736b323fc..00000000000 --- a/.gitlab/download_prereq.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -SINGULARITY_GOLDFILES_VERSION="goldfiles-1.8.0" -wget https://github.com/lanl/singularity-eos/releases/download/${SINGULARITY_GOLDFILES_VERSION}/goldfiles.tar.gz diff --git a/.gitlab/download_prereqs.sh b/.gitlab/download_prereqs.sh new file mode 100644 index 00000000000..0eb7cf6b692 --- /dev/null +++ b/.gitlab/download_prereqs.sh @@ -0,0 +1,23 @@ +SINGULARITY_GOLDFILES_VERSION="goldfiles-1.8.0" +wget https://github.com/lanl/singularity-eos/releases/download/${SINGULARITY_GOLDFILES_VERSION}/goldfiles.tar.gz + +CHECKOUT_ROOT=$(git rev-parse --show-toplevel) + +export XCAP_SPACKAGES_CHECKOUT="${CHECKOUT_ROOT}/extern/xcap_spackages" + +mkdir -p $(dirname ${XCAP_SPACKAGES_CHECKOUT}) +REPO_URL=$(git remote get-url origin) + +if [ ! -d "${XCAP_SPACKAGES_CHECKOUT}" ]; then + git clone "${REPO_URL%/*/*}/spackages.git" "${XCAP_SPACKAGES_CHECKOUT}" +fi + +if [ -n "${XCAP_SPACKAGES_MR}" ]; then + git -C ${XCAP_SPACKAGES_CHECKOUT} fetch origin merge-requests/${XCAP_SPACKAGES_MR}/head:mr-${XCAP_SPACKAGES_MR} + export XCAP_SPACKAGES_REF="${XCAP_SPACKAGES_REF:-"mr-${XCAP_SPACKAGES_MR}"}" +else + export XCAP_SPACKAGES_REF="${XCAP_SPACKAGES_REF:-main}" +fi + +git -C ${XCAP_SPACKAGES_CHECKOUT} checkout ${XCAP_SPACKAGES_REF} + diff --git a/spack-repo/packages b/spack-repo/packages deleted file mode 120000 index bec7f77de55..00000000000 --- a/spack-repo/packages +++ /dev/null @@ -1 +0,0 @@ -v1/packages \ No newline at end of file diff --git a/spack-repo/repo.yaml b/spack-repo/repo.yaml deleted file mode 120000 index a67fb8fa093..00000000000 --- a/spack-repo/repo.yaml +++ /dev/null @@ -1 +0,0 @@ -v1/repo.yaml \ No newline at end of file diff --git a/spack-repo/v1/packages/mpark-variant/icpc.patch b/spack-repo/v1/packages/mpark-variant/icpc.patch deleted file mode 100644 index a155f2fa591..00000000000 --- a/spack-repo/v1/packages/mpark-variant/icpc.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 2d933fe544bd5841e9016ab7e8066521ebe33f30 Mon Sep 17 00:00:00 2001 -From: sbolding -Date: Mon, 29 Mar 2021 19:13:28 -0600 -Subject: [PATCH] Apply patch for icpc - -icpc in some way utilizes the preprocessor of the associated "developer -tools" used by the compiler. This leads to, in some cases, a -preprocessor claiming support for `__tuple_element_packs`, even though -icpc (as of version 21.1) can't actually parse such code. Just use the -MPARK_TUPLE_ELEMENT_PACK impl with __icc until icpc supports it. - -Fixes #77 ---- - include/mpark/config.hpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/include/mpark/config.hpp b/include/mpark/config.hpp -index f85ffb55c..128fa9235 100644 ---- a/include/mpark/config.hpp -+++ b/include/mpark/config.hpp -@@ -50,7 +50,7 @@ - #define MPARK_BUILTIN_UNREACHABLE - #endif - --#if __has_builtin(__type_pack_element) -+#if __has_builtin(__type_pack_element) && !(defined(__ICC)) - #define MPARK_TYPE_PACK_ELEMENT - #endif - --- -2.24.3 (Apple Git-128) - - diff --git a/spack-repo/v1/packages/mpark-variant/nvcc.patch b/spack-repo/v1/packages/mpark-variant/nvcc.patch deleted file mode 100644 index 9bd7e60d5bc..00000000000 --- a/spack-repo/v1/packages/mpark-variant/nvcc.patch +++ /dev/null @@ -1,40 +0,0 @@ -From d7fb6201cbe830c2aef35b3fd0df040f9eae6d4d Mon Sep 17 00:00:00 2001 -From: Gavin Ridley -Date: Tue, 31 Dec 2019 14:42:14 -0500 -Subject: [PATCH] now compiles in nvcc 10.2 - ---- - include/mpark/variant.hpp | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) - -diff --git a/include/mpark/variant.hpp b/include/mpark/variant.hpp -index ef496619b..f4848db88 100644 ---- a/include/mpark/variant.hpp -+++ b/include/mpark/variant.hpp -@@ -2001,20 +2001,20 @@ namespace mpark { - #ifdef MPARK_CPP14_CONSTEXPR - namespace detail { - -- inline constexpr bool all(std::initializer_list bs) { -+ inline constexpr bool any(std::initializer_list bs) { - for (bool b : bs) { -- if (!b) { -- return false; -+ if (b) { -+ return true; - } - } -- return true; -+ return false; - } - - } // namespace detail - - template - inline constexpr decltype(auto) visit(Visitor &&visitor, Vs &&... vs) { -- return (detail::all({!vs.valueless_by_exception()...}) -+ return (!detail::any({vs.valueless_by_exception()...}) - ? (void)0 - : throw_bad_variant_access()), - detail::visitation::variant::visit_value( - diff --git a/spack-repo/v1/packages/mpark-variant/package.py b/spack-repo/v1/packages/mpark-variant/package.py deleted file mode 100644 index cb081aec230..00000000000 --- a/spack-repo/v1/packages/mpark-variant/package.py +++ /dev/null @@ -1,43 +0,0 @@ -# Copyright 2013-2022 Lawrence Livermore National Security, LLC and other -# Spack Project Developers. See the top-level COPYRIGHT file for details. -# -# SPDX-License-Identifier: (Apache-2.0 OR MIT) - -from spack.package import * - - -class MparkVariant(CMakePackage): - """C++17 `std::variant` for C++11/14/17""" - - homepage = "https://github.com/mpark/variant" - url = "https://github.com/mpark/variant/archive/v1.4.0.tar.gz" - git = "https://github.com/mpark/variant.git" - maintainers = ["ax3l"] - - tags = ["e4s"] - - version("1.4.0", sha256="8f6b28ab3640b5d76d5b6664dda7257a4405ce59179220431b8fd196c79b2ecb") - version("1.3.0", sha256="d0f7e41f818fcc839797a8017e76b8b66b323651c304cff641a83a56ae9943c6") - - # Ref.: https://github.com/mpark/variant/pull/73 - patch("nvcc.patch", when="@:1.4.0") - # Ref.: https://github.com/mpark/variant/issues/60 - patch("version.patch", when="@1.4.0") - # Ref.: https://github.com/mpark/variant/pull/78 - patch("icpc.patch", when="@:1.4.0") - - cxx11_msg = ( - "MPark.Variant needs a C++11-capable compiler. " - "See https://github.com/mpark/variant#requirements" - ) - conflicts("%gcc@:4.7", msg=cxx11_msg) - conflicts("%clang@:3.5", msg=cxx11_msg) - - conflicts( - "%gcc@7.3.1", - msg="GCC 7.3.1 has a bug that prevents using MPark.Variant. " - "See https://github.com/mpark/variant/issues/43 and " - "https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84785 " - "Please use a different compiler version or another " - "compiler.", - ) diff --git a/spack-repo/v1/packages/mpark-variant/version.patch b/spack-repo/v1/packages/mpark-variant/version.patch deleted file mode 100644 index 56db93c87eb..00000000000 --- a/spack-repo/v1/packages/mpark-variant/version.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- ./CMakeLists.txt 2021-02-21 17:27:04.709115800 -0700 -+++ ./CMakeLists.txt.new 2021-02-21 17:27:35.589115800 -0700 -@@ -7,7 +7,7 @@ - - cmake_minimum_required(VERSION 3.6.3) - --project(MPark.Variant VERSION 1.3.0 LANGUAGES CXX) -+project(MPark.Variant VERSION 1.4.0 LANGUAGES CXX) - - # Option. - set(MPARK_VARIANT_INCLUDE_TESTS "" CACHE STRING diff --git a/spack-repo/v1/packages/ports-of-call/package.py b/spack-repo/v1/packages/ports-of-call/package.py deleted file mode 100644 index 6fb1a605f33..00000000000 --- a/spack-repo/v1/packages/ports-of-call/package.py +++ /dev/null @@ -1,71 +0,0 @@ -# Copyright Spack Project Developers. See COPYRIGHT file for details. -# -# SPDX-License-Identifier: (Apache-2.0 OR MIT) - -from spack.package import * - - -class PortsOfCall(CMakePackage): - """Ports of Call: Performance Portability Utilities""" - - homepage = "https://github.com/lanl/ports-of-call" - url = "https://github.com/lanl/ports-of-call/archive/refs/tags/v1.1.0.tar.gz" - git = "https://github.com/lanl/ports-of-call.git" - - maintainers = ["rbberger"] - - version("main", branch="main") - version("1.7.1", sha256="18b0b99370ef2adf3374248f653461606f826fe4076d0f19ac8c72d46035fdf5") - version("1.7.0", sha256="99045a7c4e3fbc73f01e930ce870cdc573a39910a28d85c54d65d2135f764bfc") - version("1.6.0", sha256="290da149d4ad79c15787956559aeeefa0a06403be2f08cd324562ef013306797") - version("1.5.2", sha256="73d16fe9236a9475010dbb01bf751c15bef01eb2e15bf92c8d9be2c0a606329f") - version("1.5.1", sha256="b1f0232cd6d2aac65385d77cc061ec5035283ea50d0f167e7003eae034effb78") - version("1.4.1", sha256="82d2c75fcca8bd613273fd4126749df68ccc22fbe4134ba673b4275f9972b78d") - version("1.4.0", sha256="e08ae556b7c30d14d77147d248d118cf5343a2e8c0847943385c602394bda0fa") - version("1.3.0", sha256="54b4a62539c23b1a345dd87c1eac65f4f69db4e50336cd81a15a627ce80ce7d9") - version( - "1.2.0", - sha256="b802ffa07c5f34ea9839f23841082133d8af191efe5a526cb7e53ec338ac146b", - deprecated=True, - ) - version( - "1.1.0", - sha256="c47f7e24c82176b69229a2bcb23a6adcf274dc90ec77a452a36ccae0b12e6e39", - deprecated=True, - ) - - variant( - "portability_strategy", - description="Portability strategy backend", - values=("Kokkos", "Cuda", "None"), - multi=False, - default="None", - when="@:1.2.0", - ) - variant("test", default=False, description="Build tests") - variant( - "test_portability_strategy", - description="Portability strategy used by tests", - values=("Kokkos", "Cuda", "None"), - multi=False, - default="None", - when="@1.6.1: +test", - ) - - depends_on("cmake@3.12:") - depends_on("catch2@3.0.1:", when="+test") - depends_on("kokkos", when="+test test_portability_strategy=Kokkos") - - def cmake_args(self): - args = [ - self.define_from_variant("PORTS_OF_CALL_BUILD_TESTING", "test"), - self.define_from_variant("PORTS_OF_CALL_TEST_PORTABILITY_STRATEGY", "test_portability_strategy"), - ] - if self.spec.satisfies("@:1.2.0"): - args.append(self.define_from_variant("PORTABILITY_STRATEGY", "portability_strategy")) - if self.spec.satisfies("test_portability_strategy=Kokkos ^kokkos+rocm"): - args.append(self.define("CMAKE_CXX_COMPILER", self.spec["hip"].hipcc)) - args.append(self.define("CMAKE_C_COMPILER", self.spec["hip"].hipcc)) - if self.spec.satisfies("test_portability_strategy=Kokkos ^kokkos+cuda"): - args.append(self.define("CMAKE_CXX_COMPILER", self.spec["kokkos"].kokkos_cxx)) - return args diff --git a/spack-repo/v1/packages/singularity-eos/gpu_compatibility.patch b/spack-repo/v1/packages/singularity-eos/gpu_compatibility.patch deleted file mode 120000 index 208440ce997..00000000000 --- a/spack-repo/v1/packages/singularity-eos/gpu_compatibility.patch +++ /dev/null @@ -1 +0,0 @@ -../../../../utils/gpu_compatibility.patch \ No newline at end of file diff --git a/spack-repo/v1/packages/singularity-eos/package.py b/spack-repo/v1/packages/singularity-eos/package.py deleted file mode 100644 index 6277669c54d..00000000000 --- a/spack-repo/v1/packages/singularity-eos/package.py +++ /dev/null @@ -1,282 +0,0 @@ -# Copyright Spack Project Developers. See COPYRIGHT file for details. -# -# SPDX-License-Identifier: (Apache-2.0 OR MIT) - -import os - -from spack.package import * -from spack.directives import directive - - -@directive("singularity_eos_plugins") -def singularity_eos_plugin(name, spackage, relpath): - def _execute_register(pkg): - pkg.plugins[name] = (spackage, relpath) - - return _execute_register - - -def plugin_validator(pkg_name, variant_name, values): - if values == ("none",): - return - for v in values: - if v not in SingularityEos.plugins: - raise InstallError(f"Unknown Singularity-EOS plugin '{v}'") - - -class SingularityEos(CMakePackage, CudaPackage, ROCmPackage): - """Singularity-EOS: A collection of closure models and tools useful for - multiphysics codes.""" - - homepage = "https://lanl.github.io/singularity-eos/main/index.html" - git = "https://github.com/lanl/singularity-eos.git" - url = "https://github.com/lanl/singularity-eos/archive/refs/tags/release-1.6.1.tar.gz" - - maintainers("rbberger") - - license("BSD-3-Clause") - - version("main", branch="main") - version("1.10.0", sha256="f2b5986d2e7f11b61c4cc1ac3b264adac39e16047f95fac29c60a19a2853f35b") - version("1.9.2", sha256="4a58782020ad7bff3ea1c0cf55838a3692205770dbe4be39a3df25ba6fae302d") - 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, - ) - version( - "1.6.1", - sha256="c6d92dfecf9689ffe2df615791c039f7e527e9f47799a862e26fa4e3420fe5d7", - deprecated=True, - ) - - # build with kokkos, kokkos-kernels for offloading support - variant("kokkos", default=False, description="Enable kokkos") - variant( - "kokkos-kernels", default=False, description="Enable kokkos-kernels for linear algebra" - ) - - # for compatibility with downstream projects - variant("mpi", default=False, description="Build with MPI support") - - # build converters for sesame, stellarcollapse eos's - variant( - "build_extra", - description="Build converters", - values=any_combination_of("sesame", "stellarcollapse").with_default("none"), - ) - - # build tests - variant("tests", default=False, description="Build tests") - - # build the Fortran interface - variant("fortran", default=True, description="Enable building fortran interface") - - # build the Python bindings - variant("python", default=False, description="Enable building Python bindings") - - variant("eospac", default=True, description="Enable EOSPAC for table reads") - - variant("hdf5", default=False, description="Enable HDF5 support") - - variant("spiner", default=True, description="Use Spiner") - - variant("closure", default=True, description="Build closure module") - variant("shared", default=False, description="Build shared libs") - variant("vandv", default=True, description="Enable V&V EOSs in default Singularity::Variant") - - plugins = {} - - singularity_eos_plugin("dust", "self", "example/plugin") - - variant( - "plugins", - multi=True, - default="none", - validator=plugin_validator, - description="list of plugins to build", - when="@1.9.0:", - ) - variant( - "variant", - default="default", - description="include path used for variant header", - when="@1.9.0:", - ) - - # building/testing/docs - depends_on("cmake@3.19:") - depends_on("python@3:", when="+python") - depends_on("py-pybind11@2.9.1:", when="+python") - depends_on("catch2@2.13.7", when="@:1.8.0 +tests") - depends_on("catch2@3.0.1:", when="@1.9.0: +tests") - depends_on("py-numpy", when="+python+tests") - - # Require kokkos for device/offloading support - requires("+kokkos", when="+cuda") - requires("+kokkos", when="+rocm") - - # linear algebra when using closure models. Eigen without kokkos - depends_on("eigen@3.3.8:", when="~kokkos-kernels+closure") - requires("+kokkos-kernels", when="+kokkos+closure") - - depends_on("eospac", when="+eospac") - - depends_on("ports-of-call@1.4.2,1.5.2:", when="@:1.7.0") - depends_on("ports-of-call@1.5.2:", when="@1.7.1:") - depends_on("ports-of-call@1.6.0:", when="@1.9.0:") - depends_on("ports-of-call@main", when="@main") - - depends_on("spiner +kokkos", when="+kokkos+spiner") - depends_on("spiner +hdf5", when="+hdf5+spiner") - - depends_on("spiner@:1.6.0", when="@:1.7.0 +spiner") - depends_on("spiner@1.6.1:", when="@1.7.1:1.9.0 +spiner") - depends_on("spiner@1.6.3:", when="@1.9.1: +spiner") - depends_on("spiner@main", when="@main +spiner") - - depends_on("mpark-variant") - depends_on( - "mpark-variant", - patches=patch( - "gpu_compatibility.patch", - sha256="592e64ceccd2822ec1cc7eb01ac3fcad620551940beab793003afb6b5366dad8" - ), - when="+cuda", - ) - depends_on( - "mpark-variant", - patches=patch( - "gpu_compatibility.patch", - sha256="592e64ceccd2822ec1cc7eb01ac3fcad620551940beab793003afb6b5366dad8", - ), - when="+rocm", - ) - depends_on("binutils@:2.39,2.42:+ld", when="build_type=Debug") - depends_on("binutils@:2.39,2.42:+ld", when="build_type=RelWithDebInfo") - - for _myver, _kver in zip(("@:1.6.2", "@1.7.0:"), ("@3.2:", "@3.3:")): - depends_on("kokkos" + _kver, when=_myver + "+kokkos") - depends_on("kokkos-kernels" + _kver, when=_myver + "+kokkos-kernels") - - # set up kokkos offloading dependencies - for _flag in ("~cuda", "+cuda", "~rocm", "+rocm"): - depends_on("kokkos" + _flag, when="+kokkos" + _flag) - - for _flag in ("~cuda", "+cuda"): - depends_on("kokkos-kernels" + _flag, when="+kokkos-kernels" + _flag) - - depends_on("kokkos+pic", when="+kokkos-kernels") - - depends_on("kokkos +cuda_lambda", when="+cuda+kokkos") - for _flag in list(CudaPackage.cuda_arch_values): - depends_on("kokkos cuda_arch=" + _flag, when="+cuda+kokkos cuda_arch=" + _flag) - depends_on("kokkos-kernels cuda_arch=" + _flag, when="+cuda+kokkos cuda_arch=" + _flag) - - for _flag in ROCmPackage.amdgpu_targets: - depends_on("kokkos amdgpu_target=" + _flag, when="+rocm+kokkos amdgpu_target=" + _flag) - - conflicts("cuda_arch=none", when="+cuda", msg="CUDA architecture is required") - conflicts("amdgpu_target=none", when="+rocm", msg="ROCm architecture is required") - - # these are mirrored in the cmake configuration - conflicts("+hdf5", when="~spiner") - - conflicts("+fortran", when="~closure") - - # NOTE: these are set so that dependencies in downstream projects share - # common MPI dependence - for _flag in ("~mpi", "+mpi"): - depends_on("hdf5~cxx+hl" + _flag, when="+hdf5" + _flag) - depends_on("py-h5py" + _flag, when="@:1.6.2 " + _flag) - - def cmake_args(self): - args = [ - self.define("SINGULARITY_PATCH_MPARK_VARIANT", False), - self.define_from_variant("SINGULARITY_USE_CUDA", "cuda"), - self.define_from_variant("SINGULARITY_USE_KOKKOS", "kokkos"), - self.define_from_variant("SINGULARITY_USE_KOKKOSKERNELS", "kokkos-kernels"), - self.define_from_variant("SINGULARITY_USE_FORTRAN", "fortran"), - self.define_from_variant("SINGULARITY_BUILD_CLOSURE", "closure"), - self.define_from_variant("SINGULARITY_BUILD_PYTHON", "python"), - self.define_from_variant("SINGULARITY_USE_SPINER", "spiner"), - self.define_from_variant("SINGULARITY_USE_SPINER_WITH_HDF5", "hdf5"), - self.define_from_variant("BUILD_SHARED_LIBS", "shared"), - self.define_from_variant("SINGULARITY_USE_V_AND_V_EOS", "vandv"), - self.define("SINGULARITY_BUILD_TESTS", self.run_tests), - self.define( - "SINGULARITY_BUILD_SESAME2SPINER", - "sesame" in self.spec.variants["build_extra"].value, - ), - self.define( - "SINGULARITY_TEST_SESAME", - ("sesame" in self.spec.variants["build_extra"].value and self.run_tests), - ), - self.define( - "SINGULARITY_BUILD_STELLARCOLLAPSE2SPINER", - "stellarcollapse" in self.spec.variants["build_extra"].value, - ), - self.define( - "SINGULARITY_TEST_STELLAR_COLLAPSE", - ("stellarcollapse" in self.spec.variants["build_extra"].value and self.run_tests), - ), - self.define("SINGULARITY_TEST_PYTHON", ("+python" in self.spec and self.run_tests)), - # TODO: guard for older versions, remove for new versions(1.7<) - self.define("SINGULARITY_USE_HDF5", "^hdf5" in self.spec), - self.define("SINGULARITY_USE_EOSPAC", "^eospac" in self.spec), - ] - - if self.spec.satisfies("@1.9.0:"): - if "none" not in self.spec.variants["plugins"].value: - pdirs = [] - for p in self.spec.variants["plugins"].value: - spackage, path = self.plugins[p] - if spackage == "self": - pdirs.append(join_path(self.stage.source_path, path)) - else: - pdirs.append(join_path(self.spec[spackage].prefix, path)) - args.append(self.define("SINGULARITY_PLUGINS", ";".join(pdirs))) - - variant_path = self.spec.variants["variant"].value - if variant_path != "default": - parts = os.path.normpath("variant_path").split(os.sep) - if parts[0] in self.plugins.keys(): - spackage, path = self.plugins[parts[0]] - parts[0] = self.spec[spackage].prefix - variant_path = join_path(*parts) - args.append(self.define("SINGULARITY_VARIANT", variant_path)) - - if "+rocm" in self.spec: - args.append(self.define("CMAKE_CXX_COMPILER", self.spec["hip"].hipcc)) - args.append(self.define("CMAKE_C_COMPILER", self.spec["hip"].hipcc)) - if "+kokkos+cuda" in self.spec: - args.append(self.define("CMAKE_CXX_COMPILER", self.spec["kokkos"].kokkos_cxx)) - - if "+kokkos" in self.spec: - args.append( - self.define("CMAKE_CXX_STANDARD", self.spec["kokkos"].variants["cxxstd"].value) - ) - - # goldfiles were downloaded into source folder - goldfiles = os.path.join(self.stage.source_path, "goldfiles.tar.gz") - if self.spec.satisfies("+tests build_extra=stellarcollapse") and self.run_tests and os.path.exists(goldfiles): - args.append(self.define("SINGULARITY_GOLDFILE_URL", f"file://{goldfiles}")) - - return args - - def setup_run_environment(self, env): - if os.path.isdir(self.prefix.lib64): - lib_dir = self.prefix.lib64 - else: - lib_dir = self.prefix.lib - - if "+python" in self.spec: - python_version = self.spec["python"].version.up_to(2) - python_inst_dir = join_path( - lib_dir, "python{0}".format(python_version), "site-packages" - ) - env.prepend_path("PYTHONPATH", python_inst_dir) diff --git a/spack-repo/v1/packages/spiner/package.py b/spack-repo/v1/packages/spiner/package.py deleted file mode 100644 index 057527a8e45..00000000000 --- a/spack-repo/v1/packages/spiner/package.py +++ /dev/null @@ -1,100 +0,0 @@ -# Copyright Spack Project Developers. See COPYRIGHT file for details. -# -# SPDX-License-Identifier: (Apache-2.0 OR MIT) - -from spack.package import * - - -class Spiner(CMakePackage): - """Spiner: - Performance portable routines for generic, tabulated, multi-dimensional data""" - - homepage = "https://github.com/lanl/spiner" - url = "https://github.com/lanl/spiner/archive/refs/tags/1.6.4.tar.gz" - git = "https://github.com/lanl/spiner.git" - - maintainers = ["rbberger"] - - version("main", branch="main") - version("1.6.4", sha256="a51de69e438f5e3893958736d246c41ca87fd6442ee1e0a9cc5d442861ac5404") - version("1.6.3", sha256="f78c50e0b4d7c4fd3f380432f12a528941e2bee5171d6f200e9a52bbcea940e9") - version("1.6.2", sha256="91fb403ce3b151fbdf8b6ff5aed0d8dde1177749f5633951027b100ebc7080d3") - version("1.6.1", sha256="52774322571d3b9b0dc3c6b255257de9af0e8e6170834360f2252c1ac272cbe7") - version("1.6.0", sha256="afa5526d87c78c1165ead06c09c5c2b9e4a913687443e5adff7b709ea4dd7edf") - version( - "1.5.1", - sha256="dd1cada84446443e8925438b8da53ab5a6cb9f373f1a993905ef0bf51f48223c", - deprecated=True, - ) - version( - "1.5.0", - sha256="b27ddabc0d21870b845444c24307d3a0c1b175483e72cc138139d6e0dd29b244", - deprecated=True, - ) - version( - "1.4.0", - sha256="c3801b9eab26feabec33ff8c59e4056f384287f407d23faba010d354766f3ac5", - deprecated=True, - ) - - # When overriding/overloading varaints, the last variant is always used, except for - # "when" clauses. Therefore, call the whens FIRST then the non-whens. - # https://spack.readthedocs.io/en/latest/packaging_guide.html#overriding-variants - variant( - "kokkos", - default=False, - description="Enable kokkos", - ) - - variant("hdf5", default=False, description="Enable hdf5") - variant("mpi", default=False, description="Support parallel hdf5") - - variant("python", default=False, description="Python, Numpy & Matplotlib Support") - - variant("test", default=False, description="Build tests") - - depends_on("cmake@3.12:", when="@:1.5.1") - depends_on("cmake@3.19:", when="@1.6.0:") - depends_on("catch2@3.7.1:", when="@1.6.3: +test") - depends_on("catch2@2.13.4:2.13.9", when="@:1.6.2 +test") - depends_on("ports-of-call@1.2.0:", when="@:1.5.1") - depends_on("ports-of-call@1.5.1:", when="@1.6.0:") - depends_on("ports-of-call@main", when="@main") - - # Currently the raw cuda backend of ports-of-call is not supported. - 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") - requires("^kokkos+cuda_lambda+cuda_constexpr", when="+kokkos ^kokkos+cuda") - - depends_on("hdf5+hl~mpi", when="+hdf5~mpi") - depends_on("hdf5+hl+mpi", when="+hdf5+mpi") - - depends_on("python", when="+python") - depends_on("py-numpy", when="+python") - depends_on("py-matplotlib", when="+python") - - conflicts("+mpi", when="~hdf5") - - def cmake_args(self): - if self.spec.satisfies("@1.6.0:"): - use_kokkos_option = "SPINER_TEST_USE_KOKKOS" - else: - use_kokkos_option = "SPINER_USE_KOKKOS" - - args = [ - self.define("BUILD_TESTING", self.run_tests), - self.define("SPINER_BUILD_TESTS", self.run_tests), - self.define("SPINER_TEST_USE_KOKKOS", self.run_tests and self.spec.satisfies("+kokkos")), - self.define_from_variant(use_kokkos_option, "kokkos"), - self.define_from_variant("SPINER_USE_HDF", "hdf5"), - ] - if self.spec.satisfies("^kokkos+cuda"): - args.append( - self.define("CMAKE_CUDA_ARCHITECTURES", self.spec["kokkos"].variants["cuda_arch"].value) - ) - if self.spec.satisfies("^kokkos+rocm"): - args.append(self.define("CMAKE_CXX_COMPILER", self.spec["hip"].hipcc)) - if self.spec.satisfies("^kokkos+cuda"): - args.append(self.define("CMAKE_CXX_COMPILER", self.spec["kokkos"].kokkos_cxx)) - return args diff --git a/spack-repo/v1/repo.yaml b/spack-repo/v1/repo.yaml deleted file mode 100644 index f3a82887583..00000000000 --- a/spack-repo/v1/repo.yaml +++ /dev/null @@ -1,2 +0,0 @@ -repo: - namespace: singularity_eos diff --git a/spack-repo/v2/spack_repo/singularity_eos/packages/mpark_variant/icpc.patch b/spack-repo/v2/spack_repo/singularity_eos/packages/mpark_variant/icpc.patch deleted file mode 100644 index a155f2fa591..00000000000 --- a/spack-repo/v2/spack_repo/singularity_eos/packages/mpark_variant/icpc.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 2d933fe544bd5841e9016ab7e8066521ebe33f30 Mon Sep 17 00:00:00 2001 -From: sbolding -Date: Mon, 29 Mar 2021 19:13:28 -0600 -Subject: [PATCH] Apply patch for icpc - -icpc in some way utilizes the preprocessor of the associated "developer -tools" used by the compiler. This leads to, in some cases, a -preprocessor claiming support for `__tuple_element_packs`, even though -icpc (as of version 21.1) can't actually parse such code. Just use the -MPARK_TUPLE_ELEMENT_PACK impl with __icc until icpc supports it. - -Fixes #77 ---- - include/mpark/config.hpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/include/mpark/config.hpp b/include/mpark/config.hpp -index f85ffb55c..128fa9235 100644 ---- a/include/mpark/config.hpp -+++ b/include/mpark/config.hpp -@@ -50,7 +50,7 @@ - #define MPARK_BUILTIN_UNREACHABLE - #endif - --#if __has_builtin(__type_pack_element) -+#if __has_builtin(__type_pack_element) && !(defined(__ICC)) - #define MPARK_TYPE_PACK_ELEMENT - #endif - --- -2.24.3 (Apple Git-128) - - diff --git a/spack-repo/v2/spack_repo/singularity_eos/packages/mpark_variant/nvcc.patch b/spack-repo/v2/spack_repo/singularity_eos/packages/mpark_variant/nvcc.patch deleted file mode 100644 index 9bd7e60d5bc..00000000000 --- a/spack-repo/v2/spack_repo/singularity_eos/packages/mpark_variant/nvcc.patch +++ /dev/null @@ -1,40 +0,0 @@ -From d7fb6201cbe830c2aef35b3fd0df040f9eae6d4d Mon Sep 17 00:00:00 2001 -From: Gavin Ridley -Date: Tue, 31 Dec 2019 14:42:14 -0500 -Subject: [PATCH] now compiles in nvcc 10.2 - ---- - include/mpark/variant.hpp | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) - -diff --git a/include/mpark/variant.hpp b/include/mpark/variant.hpp -index ef496619b..f4848db88 100644 ---- a/include/mpark/variant.hpp -+++ b/include/mpark/variant.hpp -@@ -2001,20 +2001,20 @@ namespace mpark { - #ifdef MPARK_CPP14_CONSTEXPR - namespace detail { - -- inline constexpr bool all(std::initializer_list bs) { -+ inline constexpr bool any(std::initializer_list bs) { - for (bool b : bs) { -- if (!b) { -- return false; -+ if (b) { -+ return true; - } - } -- return true; -+ return false; - } - - } // namespace detail - - template - inline constexpr decltype(auto) visit(Visitor &&visitor, Vs &&... vs) { -- return (detail::all({!vs.valueless_by_exception()...}) -+ return (!detail::any({vs.valueless_by_exception()...}) - ? (void)0 - : throw_bad_variant_access()), - detail::visitation::variant::visit_value( - diff --git a/spack-repo/v2/spack_repo/singularity_eos/packages/mpark_variant/package.py b/spack-repo/v2/spack_repo/singularity_eos/packages/mpark_variant/package.py deleted file mode 100644 index 64c0c64b065..00000000000 --- a/spack-repo/v2/spack_repo/singularity_eos/packages/mpark_variant/package.py +++ /dev/null @@ -1,48 +0,0 @@ -# Copyright Spack Project Developers. See COPYRIGHT file for details. -# -# SPDX-License-Identifier: (Apache-2.0 OR MIT) - -from spack_repo.builtin.build_systems.cmake import CMakePackage - -from spack.package import * - - -class MparkVariant(CMakePackage): - """C++17 `std::variant` for C++11/14/17""" - - homepage = "https://github.com/mpark/variant" - url = "https://github.com/mpark/variant/archive/v1.4.0.tar.gz" - git = "https://github.com/mpark/variant.git" - maintainers("ax3l") - - tags = ["e4s"] - - license("BSL-1.0") - - version("1.4.0", sha256="8f6b28ab3640b5d76d5b6664dda7257a4405ce59179220431b8fd196c79b2ecb") - version("1.3.0", sha256="d0f7e41f818fcc839797a8017e76b8b66b323651c304cff641a83a56ae9943c6") - - depends_on("cxx", type="build") # generated - - # Ref.: https://github.com/mpark/variant/pull/73 - patch("nvcc.patch", when="@:1.4.0") - # Ref.: https://github.com/mpark/variant/issues/60 - patch("version.patch", when="@1.4.0") - # Ref.: https://github.com/mpark/variant/pull/78 - patch("icpc.patch", when="@:1.4.0") - - cxx11_msg = ( - "MPark.Variant needs a C++11-capable compiler. " - "See https://github.com/mpark/variant#requirements" - ) - conflicts("%gcc@:4.7", msg=cxx11_msg) - conflicts("%clang@:3.5", msg=cxx11_msg) - - conflicts( - "%gcc@7.3.1", - msg="GCC 7.3.1 has a bug that prevents using MPark.Variant. " - "See https://github.com/mpark/variant/issues/43 and " - "https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84785 " - "Please use a different compiler version or another " - "compiler.", - ) diff --git a/spack-repo/v2/spack_repo/singularity_eos/packages/mpark_variant/version.patch b/spack-repo/v2/spack_repo/singularity_eos/packages/mpark_variant/version.patch deleted file mode 100644 index 56db93c87eb..00000000000 --- a/spack-repo/v2/spack_repo/singularity_eos/packages/mpark_variant/version.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- ./CMakeLists.txt 2021-02-21 17:27:04.709115800 -0700 -+++ ./CMakeLists.txt.new 2021-02-21 17:27:35.589115800 -0700 -@@ -7,7 +7,7 @@ - - cmake_minimum_required(VERSION 3.6.3) - --project(MPark.Variant VERSION 1.3.0 LANGUAGES CXX) -+project(MPark.Variant VERSION 1.4.0 LANGUAGES CXX) - - # Option. - set(MPARK_VARIANT_INCLUDE_TESTS "" CACHE STRING diff --git a/spack-repo/v2/spack_repo/singularity_eos/packages/ports_of_call/package.py b/spack-repo/v2/spack_repo/singularity_eos/packages/ports_of_call/package.py deleted file mode 100644 index 85826f8ec31..00000000000 --- a/spack-repo/v2/spack_repo/singularity_eos/packages/ports_of_call/package.py +++ /dev/null @@ -1,80 +0,0 @@ -# Copyright Spack Project Developers. See COPYRIGHT file for details. -# -# SPDX-License-Identifier: (Apache-2.0 OR MIT) - -from spack_repo.builtin.build_systems.cmake import CMakePackage - -from spack.package import * - - -class PortsOfCall(CMakePackage): - """Ports of Call: Performance Portability Utilities""" - - homepage = "https://github.com/lanl/ports-of-call" - url = "https://github.com/lanl/ports-of-call/archive/refs/tags/v1.1.0.tar.gz" - git = "https://github.com/lanl/ports-of-call.git" - - maintainers("rbberger") - - license("BSD-3-Clause") - - version("main", branch="main") - version("1.7.1", sha256="18b0b99370ef2adf3374248f653461606f826fe4076d0f19ac8c72d46035fdf5") - version("1.7.0", sha256="99045a7c4e3fbc73f01e930ce870cdc573a39910a28d85c54d65d2135f764bfc") - version("1.6.0", sha256="290da149d4ad79c15787956559aeeefa0a06403be2f08cd324562ef013306797") - version("1.5.2", sha256="73d16fe9236a9475010dbb01bf751c15bef01eb2e15bf92c8d9be2c0a606329f") - version("1.5.1", sha256="b1f0232cd6d2aac65385d77cc061ec5035283ea50d0f167e7003eae034effb78") - version("1.4.1", sha256="82d2c75fcca8bd613273fd4126749df68ccc22fbe4134ba673b4275f9972b78d") - version("1.4.0", sha256="e08ae556b7c30d14d77147d248d118cf5343a2e8c0847943385c602394bda0fa") - version("1.3.0", sha256="54b4a62539c23b1a345dd87c1eac65f4f69db4e50336cd81a15a627ce80ce7d9") - version( - "1.2.0", - sha256="b802ffa07c5f34ea9839f23841082133d8af191efe5a526cb7e53ec338ac146b", - deprecated=True, - ) - version( - "1.1.0", - sha256="c47f7e24c82176b69229a2bcb23a6adcf274dc90ec77a452a36ccae0b12e6e39", - deprecated=True, - ) - - variant( - "portability_strategy", - description="Portability strategy backend", - values=("Kokkos", "Cuda", "None"), - multi=False, - default="None", - when="@:1.2.0", - ) - variant("test", default=False, description="Build tests") - variant( - "test_portability_strategy", - description="Portability strategy used by tests", - values=("Kokkos", "Cuda", "None"), - multi=False, - default="None", - when="@1.7.0: +test", - ) - - depends_on("c", type="build", when="@:1.7.1") - depends_on("cxx", type="build") - - depends_on("cmake@3.12:") - depends_on("catch2@3.0.1:", when="+test") - depends_on("kokkos", when="+test test_portability_strategy=Kokkos") - - def cmake_args(self): - args = [ - self.define_from_variant("PORTS_OF_CALL_BUILD_TESTING", "test"), - self.define_from_variant( - "PORTS_OF_CALL_TEST_PORTABILITY_STRATEGY", "test_portability_strategy" - ), - ] - if self.spec.satisfies("@:1.2.0"): - args.append(self.define_from_variant("PORTABILITY_STRATEGY", "portability_strategy")) - if self.spec.satisfies("test_portability_strategy=Kokkos ^kokkos+rocm"): - args.append(self.define("CMAKE_CXX_COMPILER", self.spec["hip"].hipcc)) - args.append(self.define("CMAKE_C_COMPILER", self.spec["hip"].hipcc)) - if self.spec.satisfies("test_portability_strategy=Kokkos ^kokkos+cuda"): - args.append(self.define("CMAKE_CXX_COMPILER", self["kokkos"].kokkos_cxx)) - return args diff --git a/spack-repo/v2/spack_repo/singularity_eos/packages/singularity_eos/gpu_compatibility.patch b/spack-repo/v2/spack_repo/singularity_eos/packages/singularity_eos/gpu_compatibility.patch deleted file mode 120000 index 1718b543e3e..00000000000 --- a/spack-repo/v2/spack_repo/singularity_eos/packages/singularity_eos/gpu_compatibility.patch +++ /dev/null @@ -1 +0,0 @@ -../../../../../../utils/gpu_compatibility.patch \ No newline at end of file diff --git a/spack-repo/v2/spack_repo/singularity_eos/packages/singularity_eos/package.py b/spack-repo/v2/spack_repo/singularity_eos/packages/singularity_eos/package.py deleted file mode 100644 index 542af89aed6..00000000000 --- a/spack-repo/v2/spack_repo/singularity_eos/packages/singularity_eos/package.py +++ /dev/null @@ -1,289 +0,0 @@ -# Copyright Spack Project Developers. See COPYRIGHT file for details. -# -# SPDX-License-Identifier: (Apache-2.0 OR MIT) - -import os - -from spack_repo.builtin.build_systems.cmake import CMakePackage -from spack_repo.builtin.build_systems.cuda import CudaPackage -from spack_repo.builtin.build_systems.rocm import ROCmPackage -from spack.package import * -from spack.directives import directive - - -@directive("singularity_eos_plugins") -def singularity_eos_plugin(name, spackage, relpath): - def _execute_register(pkg): - pkg.plugins[name] = (spackage, relpath) - - return _execute_register - - -def plugin_validator(pkg_name, variant_name, values): - if values == ("none",): - return - for v in values: - if v not in SingularityEos.plugins: - raise InstallError(f"Unknown Singularity-EOS plugin '{v}'") - - -class SingularityEos(CMakePackage, CudaPackage, ROCmPackage): - """Singularity-EOS: A collection of closure models and tools useful for - multiphysics codes.""" - - homepage = "https://lanl.github.io/singularity-eos/main/index.html" - git = "https://github.com/lanl/singularity-eos.git" - url = "https://github.com/lanl/singularity-eos/archive/refs/tags/release-1.6.1.tar.gz" - - maintainers("rbberger") - - license("BSD-3-Clause") - - version("main", branch="main") - version("1.10.0", sha256="f2b5986d2e7f11b61c4cc1ac3b264adac39e16047f95fac29c60a19a2853f35b") - version("1.9.2", sha256="4a58782020ad7bff3ea1c0cf55838a3692205770dbe4be39a3df25ba6fae302d") - 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, - ) - version( - "1.6.1", - sha256="c6d92dfecf9689ffe2df615791c039f7e527e9f47799a862e26fa4e3420fe5d7", - deprecated=True, - ) - - # build with kokkos, kokkos-kernels for offloading support - variant("kokkos", default=False, description="Enable kokkos") - variant( - "kokkos-kernels", default=False, description="Enable kokkos-kernels for linear algebra" - ) - - # for compatibility with downstream projects - variant("mpi", default=False, description="Build with MPI support") - - # build converters for sesame, stellarcollapse eos's - variant( - "build_extra", - description="Build converters", - values=any_combination_of("sesame", "stellarcollapse").with_default("none"), - ) - - # build tests - variant("tests", default=False, description="Build tests") - - # build the Fortran interface - variant("fortran", default=True, description="Enable building fortran interface") - - # build the Python bindings - variant("python", default=False, description="Enable building Python bindings") - - variant("eospac", default=True, description="Enable EOSPAC for table reads") - - variant("hdf5", default=False, description="Enable HDF5 support") - - variant("spiner", default=True, description="Use Spiner") - - variant("closure", default=True, description="Build closure module") - variant("shared", default=False, description="Build shared libs") - variant("vandv", default=True, description="Enable V&V EOSs in default Singularity::Variant") - - plugins = {} - - depends_on("c", type="build") - depends_on("cxx", type="build") - depends_on("fortran", type="build", when="+fortran") - - singularity_eos_plugin("dust", "self", "example/plugin") - - variant( - "plugins", - multi=True, - default="none", - validator=plugin_validator, - description="list of plugins to build", - when="@1.9.0:", - ) - variant( - "variant", - default="default", - description="include path used for variant header", - when="@1.9.0:", - ) - - # building/testing/docs - depends_on("cmake@3.19:") - depends_on("python@3:", when="+python") - depends_on("py-pybind11@2.9.1:", when="+python") - depends_on("catch2@2.13.7", when="@:1.8.0 +tests") - depends_on("catch2@3.0.1:", when="@1.9.0: +tests") - depends_on("py-numpy", when="+python+tests") - - # Require kokkos for device/offloading support - requires("+kokkos", when="+cuda") - requires("+kokkos", when="+rocm") - - # linear algebra when using closure models. Eigen without kokkos - depends_on("eigen@3.3.8:", when="~kokkos-kernels+closure") - requires("+kokkos-kernels", when="+kokkos+closure") - - depends_on("eospac", when="+eospac") - - depends_on("ports-of-call@1.4.2,1.5.2:", when="@:1.7.0") - depends_on("ports-of-call@1.5.2:", when="@1.7.1:") - depends_on("ports-of-call@1.6.0:", when="@1.9.0:") - depends_on("ports-of-call@main", when="@main") - - depends_on("spiner +kokkos", when="+kokkos+spiner") - depends_on("spiner +hdf5", when="+hdf5+spiner") - - depends_on("spiner@:1.6.0", when="@:1.7.0 +spiner") - depends_on("spiner@1.6.1:", when="@1.7.1:1.9.0 +spiner") - depends_on("spiner@1.6.3:", when="@1.9.1: +spiner") - depends_on("spiner@main", when="@main +spiner") - - depends_on("mpark-variant") - depends_on( - "mpark-variant", - patches=patch( - "gpu_compatibility.patch", - sha256="592e64ceccd2822ec1cc7eb01ac3fcad620551940beab793003afb6b5366dad8" - ), - when="+cuda", - ) - depends_on( - "mpark-variant", - patches=patch( - "gpu_compatibility.patch", - sha256="592e64ceccd2822ec1cc7eb01ac3fcad620551940beab793003afb6b5366dad8", - ), - when="+rocm", - ) - depends_on("binutils@:2.39,2.42:+ld", when="build_type=Debug") - depends_on("binutils@:2.39,2.42:+ld", when="build_type=RelWithDebInfo") - - for _myver, _kver in zip(("@:1.6.2", "@1.7.0:"), ("@3.2:", "@3.3:")): - depends_on("kokkos" + _kver, when=_myver + "+kokkos") - depends_on("kokkos-kernels" + _kver, when=_myver + "+kokkos-kernels") - - # set up kokkos offloading dependencies - for _flag in ("~cuda", "+cuda", "~rocm", "+rocm"): - depends_on("kokkos" + _flag, when="+kokkos" + _flag) - - for _flag in ("~cuda", "+cuda"): - depends_on("kokkos-kernels" + _flag, when="+kokkos-kernels" + _flag) - - depends_on("kokkos+pic", when="+kokkos-kernels") - depends_on("kokkos+cuda_lambda", when="+cuda+kokkos") - - for _flag in list(CudaPackage.cuda_arch_values): - depends_on("kokkos cuda_arch=" + _flag, when="+cuda+kokkos cuda_arch=" + _flag) - depends_on("kokkos-kernels cuda_arch=" + _flag, when="+cuda+kokkos cuda_arch=" + _flag) - - for _flag in ROCmPackage.amdgpu_targets: - depends_on("kokkos amdgpu_target=" + _flag, when="+rocm+kokkos amdgpu_target=" + _flag) - - conflicts("cuda_arch=none", when="+cuda", msg="CUDA architecture is required") - conflicts("amdgpu_target=none", when="+rocm", msg="ROCm architecture is required") - - # these are mirrored in the cmake configuration - conflicts("+hdf5", when="~spiner") - - conflicts("+fortran", when="~closure") - - # NOTE: these are set so that dependencies in downstream projects share - # common MPI dependence - for _flag in ("~mpi", "+mpi"): - depends_on("hdf5~cxx+hl" + _flag, when="+hdf5" + _flag) - depends_on("py-h5py" + _flag, when="@:1.6.2 " + _flag) - - def cmake_args(self): - args = [ - self.define("SINGULARITY_PATCH_MPARK_VARIANT", False), - self.define_from_variant("SINGULARITY_USE_CUDA", "cuda"), - self.define_from_variant("SINGULARITY_USE_KOKKOS", "kokkos"), - self.define_from_variant("SINGULARITY_USE_KOKKOSKERNELS", "kokkos-kernels"), - self.define_from_variant("SINGULARITY_USE_FORTRAN", "fortran"), - self.define_from_variant("SINGULARITY_BUILD_CLOSURE", "closure"), - self.define_from_variant("SINGULARITY_BUILD_PYTHON", "python"), - self.define_from_variant("SINGULARITY_USE_SPINER", "spiner"), - self.define_from_variant("SINGULARITY_USE_SPINER_WITH_HDF5", "hdf5"), - self.define_from_variant("BUILD_SHARED_LIBS", "shared"), - self.define_from_variant("SINGULARITY_USE_V_AND_V_EOS", "vandv"), - self.define("SINGULARITY_BUILD_TESTS", self.run_tests), - self.define( - "SINGULARITY_BUILD_SESAME2SPINER", - "sesame" in self.spec.variants["build_extra"].value, - ), - self.define( - "SINGULARITY_TEST_SESAME", - ("sesame" in self.spec.variants["build_extra"].value and self.run_tests), - ), - self.define( - "SINGULARITY_BUILD_STELLARCOLLAPSE2SPINER", - "stellarcollapse" in self.spec.variants["build_extra"].value, - ), - self.define( - "SINGULARITY_TEST_STELLAR_COLLAPSE", - ("stellarcollapse" in self.spec.variants["build_extra"].value and self.run_tests), - ), - self.define("SINGULARITY_TEST_PYTHON", ("+python" in self.spec and self.run_tests)), - # TODO: guard for older versions, remove for new versions(1.7<) - self.define("SINGULARITY_USE_HDF5", "^hdf5" in self.spec), - self.define("SINGULARITY_USE_EOSPAC", "^eospac" in self.spec), - ] - - if self.spec.satisfies("@1.9.0:"): - if "none" not in self.spec.variants["plugins"].value: - pdirs = [] - for p in self.spec.variants["plugins"].value: - spackage, path = self.plugins[p] - if spackage == "self": - pdirs.append(join_path(self.stage.source_path, path)) - else: - pdirs.append(join_path(self.spec[spackage].prefix, path)) - args.append(self.define("SINGULARITY_PLUGINS", ";".join(pdirs))) - - variant_path = self.spec.variants["variant"].value - if variant_path != "default": - parts = os.path.normpath("variant_path").split(os.sep) - if parts[0] in self.plugins.keys(): - spackage, path = self.plugins[parts[0]] - parts[0] = self.spec[spackage].prefix - variant_path = join_path(*parts) - args.append(self.define("SINGULARITY_VARIANT", variant_path)) - - if "+rocm" in self.spec: - args.append(self.define("CMAKE_CXX_COMPILER", self.spec["hip"].hipcc)) - args.append(self.define("CMAKE_C_COMPILER", self.spec["hip"].hipcc)) - if "+kokkos+cuda" in self.spec: - args.append(self.define("CMAKE_CXX_COMPILER", self["kokkos"].kokkos_cxx)) - - if "+kokkos" in self.spec: - args.append( - self.define("CMAKE_CXX_STANDARD", self.spec["kokkos"].variants["cxxstd"].value) - ) - - # goldfiles were downloaded into source folder - goldfiles = os.path.join(self.stage.source_path, "goldfiles.tar.gz") - if self.spec.satisfies("+tests build_extra=stellarcollapse") and self.run_tests and os.path.exists(goldfiles): - args.append(self.define("SINGULARITY_GOLDFILE_URL", f"file://{goldfiles}")) - - return args - - def setup_run_environment(self, env: EnvironmentModifications) -> None: - if os.path.isdir(self.prefix.lib64): - lib_dir = self.prefix.lib64 - else: - lib_dir = self.prefix.lib - - if "+python" in self.spec: - python_version = self.spec["python"].version.up_to(2) - python_inst_dir = join_path( - lib_dir, "python{0}".format(python_version), "site-packages" - ) - env.prepend_path("PYTHONPATH", python_inst_dir) diff --git a/spack-repo/v2/spack_repo/singularity_eos/packages/spiner/package.py b/spack-repo/v2/spack_repo/singularity_eos/packages/spiner/package.py deleted file mode 100644 index 1f133c8b133..00000000000 --- a/spack-repo/v2/spack_repo/singularity_eos/packages/spiner/package.py +++ /dev/null @@ -1,108 +0,0 @@ -# Copyright Spack Project Developers. See COPYRIGHT file for details. -# -# SPDX-License-Identifier: (Apache-2.0 OR MIT) - -from spack_repo.builtin.build_systems.cmake import CMakePackage - -from spack.package import * - - -class Spiner(CMakePackage): - """Spiner: - Performance portable routines for generic, tabulated, multi-dimensional data""" - - homepage = "https://github.com/lanl/spiner" - url = "https://github.com/lanl/spiner/archive/refs/tags/1.6.4.tar.gz" - git = "https://github.com/lanl/spiner.git" - - maintainers("rbberger") - - license("BSD-3-Clause") - - version("main", branch="main") - version("1.6.4", sha256="a51de69e438f5e3893958736d246c41ca87fd6442ee1e0a9cc5d442861ac5404") - version("1.6.3", sha256="f78c50e0b4d7c4fd3f380432f12a528941e2bee5171d6f200e9a52bbcea940e9") - version("1.6.2", sha256="91fb403ce3b151fbdf8b6ff5aed0d8dde1177749f5633951027b100ebc7080d3") - version("1.6.1", sha256="52774322571d3b9b0dc3c6b255257de9af0e8e6170834360f2252c1ac272cbe7") - version("1.6.0", sha256="afa5526d87c78c1165ead06c09c5c2b9e4a913687443e5adff7b709ea4dd7edf") - version( - "1.5.1", - sha256="dd1cada84446443e8925438b8da53ab5a6cb9f373f1a993905ef0bf51f48223c", - deprecated=True, - ) - version( - "1.5.0", - sha256="b27ddabc0d21870b845444c24307d3a0c1b175483e72cc138139d6e0dd29b244", - deprecated=True, - ) - version( - "1.4.0", - sha256="c3801b9eab26feabec33ff8c59e4056f384287f407d23faba010d354766f3ac5", - deprecated=True, - ) - - # When overriding/overloading varaints, the last variant is always used, except for - # "when" clauses. Therefore, call the whens FIRST then the non-whens. - # https://spack.readthedocs.io/en/latest/packaging_guide.html#overriding-variants - variant("kokkos", default=False, description="Enable kokkos") - - variant("hdf5", default=False, description="Enable hdf5") - variant("mpi", default=False, description="Support parallel hdf5") - - variant("python", default=False, description="Python, Numpy & Matplotlib Support") - - variant("test", default=False, description="Build tests") - - depends_on("c", type="build") - depends_on("cxx", type="build") - - depends_on("cmake@3.12:", when="@:1.5.1") - depends_on("cmake@3.19:", when="@1.6.0:") - depends_on("catch2@3.7.1:", when="@1.6.3: +test") - depends_on("catch2@2.13.4:2.13.9", when="@:1.6.2 +test") - depends_on("ports-of-call@1.2.0:", when="@:1.5.1") - depends_on("ports-of-call@1.5.1:", when="@1.6.0:") - depends_on("ports-of-call@main", when="@main") - - # Currently the raw cuda backend of ports-of-call is not supported. - 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") - requires("^kokkos+cuda_lambda+cuda_constexpr", when="+kokkos ^kokkos+cuda") - - depends_on("hdf5+hl~mpi", when="+hdf5~mpi") - depends_on("hdf5+hl+mpi", when="+hdf5+mpi") - - depends_on("python", when="+python") - depends_on("py-numpy", when="+python") - depends_on("py-matplotlib", when="+python") - - conflicts("+mpi", when="~hdf5") - - def cmake_args(self): - if self.spec.satisfies("@1.6.0:"): - use_kokkos_option = "SPINER_TEST_USE_KOKKOS" - else: - use_kokkos_option = "SPINER_USE_KOKKOS" - - args = [ - self.define("BUILD_TESTING", self.run_tests), - self.define("SPINER_BUILD_TESTS", self.run_tests), - self.define( - "SPINER_TEST_USE_KOKKOS", self.run_tests and self.spec.satisfies("+kokkos") - ), - self.define_from_variant(use_kokkos_option, "kokkos"), - self.define_from_variant("SPINER_USE_HDF", "hdf5"), - ] - if self.spec.satisfies("^kokkos+cuda"): - args.append( - self.define( - "CMAKE_CUDA_ARCHITECTURES", self.spec["kokkos"].variants["cuda_arch"].value - ) - ) - if self.spec.satisfies("^kokkos+rocm"): - args.append(self.define("CMAKE_CXX_COMPILER", self.spec["hip"].hipcc)) - args.append(self.define("CMAKE_C_COMPILER", self.spec["hip"].hipcc)) - if self.spec.satisfies("^kokkos+cuda"): - args.append(self.define("CMAKE_CXX_COMPILER", self["kokkos"].kokkos_cxx)) - return args diff --git a/spack-repo/v2/spack_repo/singularity_eos/repo.yaml b/spack-repo/v2/spack_repo/singularity_eos/repo.yaml deleted file mode 100644 index 6fc96d57348..00000000000 --- a/spack-repo/v2/spack_repo/singularity_eos/repo.yaml +++ /dev/null @@ -1,3 +0,0 @@ -repo: - namespace: singularity_eos - api: v2.2 From 73c6d0fcc8b1e57640930215c9626231841bb860 Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Fri, 14 Nov 2025 12:13:23 -0700 Subject: [PATCH 03/10] ci: remove rzansel jobs and post directly to cdash from RZ --- .gitlab-ci.yml | 95 +++++----------------------------------------- .gitlab/common.yml | 30 --------------- 2 files changed, 10 insertions(+), 115 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b9026e83664..de0bebe7da2 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -215,7 +215,7 @@ rocinante_craympich_gcc: SPACK_ENV_NAME: craympich-gcc SUBMIT_TO_CDASH: false BUILD_WITH_CTEST: "${ENABLE_CDASH}" - SUBMIT_ON_ERROR: false # Venado nodes don't have network access, don't try to send from compute node + SUBMIT_ON_ERROR: false # Compute nodes don't have network access, don't try to send from compute node SUBMIT_AFTER: "${ENABLE_CDASH}" # after_script runs on a network connected system rocinante_craympich_fortran_gcc: @@ -226,44 +226,19 @@ rocinante_craympich_fortran_gcc: SPACK_ENV_NAME: craympich-fortran-gcc SUBMIT_TO_CDASH: false BUILD_WITH_CTEST: "${ENABLE_CDASH}" - SUBMIT_ON_ERROR: false # Venado nodes don't have network access, don't try to send from compute node + SUBMIT_ON_ERROR: false # Compute nodes don't have network access, don't try to send from compute node SUBMIT_AFTER: "${ENABLE_CDASH}" # after_script runs on a network connected system -rzansel_spectrummpi_cuda_volta_gcc: - extends: [.ascgit_job, .rzansel_job, .rzansel_regular_job, .build_and_test] - needs: - - prereq_offline_deps - variables: - SPACK_ENV_NAME: spectrummpi-cuda-volta-gcc - SUBMIT_TO_CDASH: false # disable CDash submission, since LLNL systems can't reach them - BUILD_WITH_CTEST: "${ENABLE_CDASH}" # but do build with CTest to create the necessary files - SUBMIT_ON_ERROR: false # no network access, don't try to send from compute node - SUBMIT_AFTER: false # submit host also doesn't have access to CDash server - CREATE_SUBMIT_ARTIFACT: "${ENABLE_CDASH}" # archive results - -rzansel_spectrummpi_cuda_volta_xl: - extends: [.ascgit_job, .rzansel_job, .rzansel_regular_job, .build_and_test] - needs: - - prereq_offline_deps - variables: - SPACK_ENV_NAME: spectrummpi-cuda-volta-xl - SUBMIT_TO_CDASH: false # disable CDash submission, since LLNL systems can't reach them - BUILD_WITH_CTEST: "${ENABLE_CDASH}" # but do build with CTest to create the necessary files - SUBMIT_ON_ERROR: false # no network access, don't try to send from compute node - SUBMIT_AFTER: false # submit host also doesn't have access to CDash server - CREATE_SUBMIT_ARTIFACT: "${ENABLE_CDASH}" # archive results - rzvernal_craympich_rocm_mi250_cce: extends: [.ascgit_job, .rzvernal_job, .rzvernal_regular_job, .build_and_test] needs: - prereq_offline_deps variables: SPACK_ENV_NAME: craympich-rocm-gfx90a-cce - SUBMIT_TO_CDASH: false # disable CDash submission, since LLNL systems can't reach them - BUILD_WITH_CTEST: "${ENABLE_CDASH}" # but do build with CTest to create the necessary files - SUBMIT_ON_ERROR: false # no network access, don't try to send from compute node - SUBMIT_AFTER: false # submit host also doesn't have access to CDash server - CREATE_SUBMIT_ARTIFACT: "${ENABLE_CDASH}" # archive results + SUBMIT_TO_CDASH: false + BUILD_WITH_CTEST: "${ENABLE_CDASH}" + SUBMIT_ON_ERROR: false # Compute nodes don't have network access, don't try to send from compute node + SUBMIT_AFTER: "${ENABLE_CDASH}" # after_script runs on a network connected system rzadams_craympich_rocm_mi300_cce: extends: [.ascgit_job, .rzadams_job, .rzadams_regular_job, .build_and_test] @@ -271,57 +246,7 @@ rzadams_craympich_rocm_mi300_cce: - prereq_offline_deps variables: SPACK_ENV_NAME: craympich-rocm-gfx942-cce - SUBMIT_TO_CDASH: false # disable CDash submission, since LLNL systems can't reach them - BUILD_WITH_CTEST: "${ENABLE_CDASH}" # but do build with CTest to create the necessary files - SUBMIT_ON_ERROR: false # no network access, don't try to send from compute node - SUBMIT_AFTER: false # submit host also doesn't have access to CDash server - CREATE_SUBMIT_ARTIFACT: "${ENABLE_CDASH}" # archive results - -# collect job results from RZansel and submit them to CDash -post_rzansel_results_to_cdash: - extends: [.post_results_to_cdash, .darwin_job] - allow_failure: true - rules: - - if: $ENABLE_CDASH == "true" && $ENABLED_CLUSTERS =~ /rzansel/ && $GITLAB_USER_LOGIN =~ $RZANSEL_USERS && $CI_PIPELINE_SOURCE == "merge_request_event" - when: always - - if: $ENABLE_CDASH == "true" && $ENABLED_CLUSTERS =~ /rzansel/ && $GITLAB_USER_LOGIN =~ $RZANSEL_USERS && $CI_PIPELINE_SOURCE == "schedule" - when: always - - if: $ENABLE_CDASH == "true" && $ENABLED_CLUSTERS =~ /rzansel/ && $GITLAB_USER_LOGIN =~ $RZANSEL_USERS && $CI_PIPELINE_SOURCE == "web" - when: always - - if: $ENABLE_CDASH == "true" && $ENABLED_CLUSTERS =~ /rzansel/ && $GITLAB_USER_LOGIN =~ $RZANSEL_USERS && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH - when: always - needs: - - rzansel_spectrummpi_cuda_volta_gcc - - rzansel_spectrummpi_cuda_volta_xl - -# collect job results from RZvernal and submit them to CDash -post_rzvernal_results_to_cdash: - extends: [.post_results_to_cdash, .darwin_job] - allow_failure: true - rules: - - if: $ENABLE_CDASH == "true" && $ENABLED_CLUSTERS =~ /rzvernal/ && $GITLAB_USER_LOGIN =~ $RZVERNAL_USERS && $CI_PIPELINE_SOURCE == "merge_request_event" - when: always - - if: $ENABLE_CDASH == "true" && $ENABLED_CLUSTERS =~ /rzvernal/ && $GITLAB_USER_LOGIN =~ $RZVERNAL_USERS && $CI_PIPELINE_SOURCE == "schedule" - when: always - - if: $ENABLE_CDASH == "true" && $ENABLED_CLUSTERS =~ /rzvernal/ && $GITLAB_USER_LOGIN =~ $RZVERNAL_USERS && $CI_PIPELINE_SOURCE == "web" - when: always - - if: $ENABLE_CDASH == "true" && $ENABLED_CLUSTERS =~ /rzvernal/ && $GITLAB_USER_LOGIN =~ $RZVERNAL_USERS && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH - when: always - needs: - - rzvernal_craympich_rocm_mi250_cce - -# collect job results from RZadams and submit them to CDash -post_rzadams_results_to_cdash: - extends: [.post_results_to_cdash, .darwin_job] - allow_failure: true - rules: - - if: $ENABLE_CDASH == "true" && $ENABLED_CLUSTERS =~ /rzadams/ && $GITLAB_USER_LOGIN =~ $RZADAMS_USERS && $CI_PIPELINE_SOURCE == "merge_request_event" - when: always - - if: $ENABLE_CDASH == "true" && $ENABLED_CLUSTERS =~ /rzadams/ && $GITLAB_USER_LOGIN =~ $RZADAMS_USERS && $CI_PIPELINE_SOURCE == "schedule" - when: always - - if: $ENABLE_CDASH == "true" && $ENABLED_CLUSTERS =~ /rzadams/ && $GITLAB_USER_LOGIN =~ $RZADAMS_USERS && $CI_PIPELINE_SOURCE == "web" - when: always - - if: $ENABLE_CDASH == "true" && $ENABLED_CLUSTERS =~ /rzadams/ && $GITLAB_USER_LOGIN =~ $RZADAMS_USERS && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH - when: always - needs: - - rzadams_craympich_rocm_mi300_cce + SUBMIT_TO_CDASH: false + BUILD_WITH_CTEST: "${ENABLE_CDASH}" + SUBMIT_ON_ERROR: false # Compute nodes don't have network access, don't try to send from compute node + SUBMIT_AFTER: "${ENABLE_CDASH}" # after_script runs on a network connected system diff --git a/.gitlab/common.yml b/.gitlab/common.yml index c9f78f7f66b..a360d866b57 100644 --- a/.gitlab/common.yml +++ b/.gitlab/common.yml @@ -204,33 +204,3 @@ default: GIT_SUBMODULE_STRATEGY: none script: - source .gitlab/check_format.sh ${CLUSTER} - -.post_results_to_cdash: - stage: build_n_test - id_tokens: - SITE_ID_TOKEN: - aud: https://asc-git.lanl.gov - variables: - GIT_SUBMODULE_STRATEGY: none - script: - - module load cmake - - cmake --version - - ls *.tar.gz - - export SOURCE_DIR=$PWD - - export BUILD_DIR=build - - | - for t in $(ls *.tar.gz); do - export SYSTEM_NAME=$(echo $t | cut -d - -f 1) - export CTEST_MODE=$(echo $t | cut -d - -f 2) - FULL_NAME=${t%%.*} - export SPACK_ENV_NAME=${FULL_NAME/${SYSTEM_NAME}-${CTEST_MODE}-/} - mkdir -p ${BUILD_DIR} - cd ${BUILD_DIR} - echo "#############################################################################" - echo "Submitting result for ${CTEST_MODE} with ${SPACK_ENV_NAME} on ${SYSTEM_NAME}" - echo "#############################################################################" - tar xvzf ../$t - cd ${CI_PROJECT_DIR} - ctest -V -S .gitlab/build_and_test.cmake,Submit - rm -rf ${BUILD_DIR} - done From 26fdbacc99752df402ac6ea6d0365647c9e6c0a7 Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Fri, 14 Nov 2025 12:14:10 -0700 Subject: [PATCH 04/10] ci: replace env vars with mr description hooks The following lines in a merge request description now have special meaning: Deployment Version: YYYY-MM-DD Requires: https://re-git.lanl.gov/xcap/deployment/-/merge_requests/### Requires: https://re-git.lanl.gov/xcap/spackages/-/merge_requests/### Deployment version changes the default deployment version that should be used. Requires A xcap/deployment MR URL will change the CI to use the MR deployment with the same MR ID, together with either the default deployment version or another if specified via "Deployment Version". This replaces the "mr/###/YYYY-MM-DD" value that was set as PROJECT_SPACK_ENV_VERSION previously. A xcap/spackages MR URL will change the checkout of xcap/spackages to that particular MR to facilitate testing of Spack package changes. Explicitly setting PROJECT_SPACK_ENV_VERSION or XCAP_SPACKAGES_REF can be used to override these detections. --- .gitlab/common.yml | 1 + .gitlab/mr.sh | 3 +++ 2 files changed, 4 insertions(+) create mode 100644 .gitlab/mr.sh diff --git a/.gitlab/common.yml b/.gitlab/common.yml index a360d866b57..a7d00865a2f 100644 --- a/.gitlab/common.yml +++ b/.gitlab/common.yml @@ -1,6 +1,7 @@ default: interruptible: true before_script: + - source .gitlab/mr.sh - unset CI_MERGE_REQUEST_DESCRIPTION - unset CI_MERGE_REQUEST_TITLE diff --git a/.gitlab/mr.sh b/.gitlab/mr.sh new file mode 100644 index 00000000000..e7345ece7aa --- /dev/null +++ b/.gitlab/mr.sh @@ -0,0 +1,3 @@ +export PROJECT_SPACK_ENV_VERSION_DEFAULT=$(printf '%s\n' "${CI_MERGE_REQUEST_DESCRIPTION}" | grep "^Deployment Version:" | cut -d: -f2) +export PROJECT_SPACK_ENV_MR=$(printf '%s\n' "${CI_MERGE_REQUEST_DESCRIPTION}" | grep "^Requires:" | cut -d: -f2- | grep "xcap/deployment/-/merge_requests" | xargs basename 2>/dev/null) +export XCAP_SPACKAGES_MR=$(printf '%s\n' "${CI_MERGE_REQUEST_DESCRIPTION}" | grep "^Requires:" | cut -d: -f2- | grep "xcap/spackages/-/merge_requests" | xargs basename 2>/dev/null) From e4cb77e0be4c9d1dd92133af3954683717c3f2ae Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Fri, 14 Nov 2025 14:08:35 -0700 Subject: [PATCH 05/10] use PortsOfCall::variant --- .gitmodules | 3 - CMakeLists.txt | 9 - cmake/singularity-eos/mpark_variant.cmake | 25 --- config/singularity-eosConfig.cmake.in | 1 - doc/sphinx/src/building.rst | 3 - singularity-eos/eos/eos_variant.hpp | 178 +++++++-------- utils/gpu_compatibility.patch | 261 ---------------------- utils/ports-of-call | 2 +- utils/variant | 1 - 9 files changed, 90 insertions(+), 393 deletions(-) delete mode 100644 cmake/singularity-eos/mpark_variant.cmake delete mode 100644 utils/gpu_compatibility.patch delete mode 160000 utils/variant diff --git a/.gitmodules b/.gitmodules index 4a002e8eb3e..b851cbc2f66 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,9 +4,6 @@ [submodule "utils/spiner"] path = utils/spiner url = https://github.com/lanl/spiner -[submodule "utils/variant"] - path = utils/variant - url = https://github.com/mpark/variant.git [submodule "utils/kokkos"] path = utils/kokkos url = https://github.com/kokkos/kokkos.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 4c96614cd5d..71e5bbe6b00 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -145,11 +145,6 @@ option(SINGULARITY_FORCE_SUBMODULE_MODE "Submodule mode" OFF) # to it in a later PR. something like # cmake_dependent_option(SINGULARITY_SUBMODULE_MODE_INSTALL ...) -# TODO This should depend on using offloading (`SINGULARITY_USE_CUDA` &t) Also, -# patching in the source tree is messy, this should be done in the build dir -option(SINGULARITY_PATCH_MPARK_VARIANT - "Apply GPU patch to mpark-variant submodule" ON) - # Plugins set(SINGULARITY_PLUGINS "" CACHE STRING "List of paths to plugin directories") set(SINGULARITY_VARIANT "singularity-eos/eos/default_variant.hpp" CACHE STRING @@ -179,7 +174,6 @@ endif() # singularity-eos Library # ------------------------------------------------------------------------------# -include(singularity-eos/mpark_variant) include(singularity-eos/Eigen3) include(singularity-eos/eospac) include(singularity-eos/hdf5) @@ -397,7 +391,6 @@ endif() if(SINGULARITY_SUBMODULE_MODE) # add all submodules message(STATUS "singularity-eos configuring in submodule mode.") - singularity_import_mpark_variant() singularity_import_ports_of_call() if(SINGULARITY_USE_SPINER) singularity_import_spiner() @@ -414,7 +407,6 @@ if(SINGULARITY_SUBMODULE_MODE) endif() else() # use system packages - singularity_find_mpark_variant() singularity_find_ports_of_call() if(SINGULARITY_USE_SPINER) singularity_find_spiner() @@ -432,7 +424,6 @@ else() endif() -singularity_enable_mpark_variant(singularity-eos_Interface) singularity_enable_ports_of_call(singularity-eos_Interface) if(SINGULARITY_USE_SPINER) diff --git a/cmake/singularity-eos/mpark_variant.cmake b/cmake/singularity-eos/mpark_variant.cmake deleted file mode 100644 index d753a1405d2..00000000000 --- a/cmake/singularity-eos/mpark_variant.cmake +++ /dev/null @@ -1,25 +0,0 @@ -macro(singularity_import_mpark_variant) - # Patches variant to be compatible with cuda Assumes "patch" is present on - # system - if(SINGULARITY_PATCH_MPARK_VARIANT) - message(STATUS "Patching variant") - execute_process( - COMMAND - patch -N -s -V never - ${CMAKE_CURRENT_SOURCE_DIR}/utils/variant/include/mpark/variant.hpp - ${CMAKE_CURRENT_SOURCE_DIR}/utils/gpu_compatibility.patch) - endif() - if(NOT TARGET mpark_variant) - add_subdirectory(utils/variant) - endif() -endmacro() - -macro(singularity_find_mpark_variant) - find_package(mpark_variant REQUIRED) - # TODO Check that imported `mpark_variant` has been correctly patched This may - # require some additions upstream -endmacro() - -macro(singularity_enable_mpark_variant target) - target_link_libraries(${target} INTERFACE mpark_variant) -endmacro() diff --git a/config/singularity-eosConfig.cmake.in b/config/singularity-eosConfig.cmake.in index 057288e1eb6..05dfb5b7912 100644 --- a/config/singularity-eosConfig.cmake.in +++ b/config/singularity-eosConfig.cmake.in @@ -63,7 +63,6 @@ include(CMakeFindDependencyMacro) # header-only dependencies if("Interface" IN_LIST ${CMAKE_FIND_PACKAGE_NAME}_comps) find_dependency(ports-of-call) - find_dependency(mpark_variant) endif() if(@SINGULARITY_USE_SPINER@) diff --git a/doc/sphinx/src/building.rst b/doc/sphinx/src/building.rst index 29a7b2709d8..3162b635e02 100644 --- a/doc/sphinx/src/building.rst +++ b/doc/sphinx/src/building.rst @@ -54,7 +54,6 @@ Dependencies Package Name Distribution Comment ====================================== =============================== =========================================== `ports-of-call`_ submodule / external Required - `mpark_variant`_ submodule / external Required `spiner`_ submodule [*]_ / external [*]_ Optional; enhanced backend for EOS tables `hdf5`_ external only Optional; used for table I/O `eospac`_ external only Optional; used for sesame tables. @@ -72,8 +71,6 @@ Dependencies .. _ports-of-call: https://github.com/lanl/spiner -.. _mpark_variant: https://github.com/mpark/variant - .. _hdf5: https://www.hdfgroup.org/solutions/hdf5/ .. _eospac: https://laws.lanl.gov/projects/data/eos/eospacReleases.php diff --git a/singularity-eos/eos/eos_variant.hpp b/singularity-eos/eos/eos_variant.hpp index a73ed8e5c44..c5bb8dc8cc7 100644 --- a/singularity-eos/eos/eos_variant.hpp +++ b/singularity-eos/eos/eos_variant.hpp @@ -21,9 +21,9 @@ #include #include -#include #include #include +#include #include #include #include @@ -33,7 +33,7 @@ using Real = double; namespace singularity { template -using eos_variant = mpark::variant; +using eos_variant = PortsOfCall::variant; // Provide default functionality when lambda isn't passed to vector functions struct NullIndexer { @@ -72,41 +72,41 @@ class Variant { !std::is_same::type>::value, bool>::type = true> PORTABLE_INLINE_FUNCTION EOSChoice get() const { - return mpark::get(eos_); + return PortsOfCall::get(eos_); } Variant GetOnDevice() { - return mpark::visit([](auto &eos) { return eos_variant(eos.GetOnDevice()); }, + return PortsOfCall::visit([](auto &eos) { return eos_variant(eos.GetOnDevice()); }, eos_); } // Place member functions here PORTABLE_INLINE_FUNCTION void CheckParams() const { - return mpark::visit([](auto &eos) { return eos.CheckParams(); }, eos_); + return PortsOfCall::visit([](auto &eos) { return eos.CheckParams(); }, eos_); } template PORTABLE_INLINE_FUNCTION void EvaluateDevice(const Functor_t f) const { - return mpark::visit([&f](const auto &eos) { return eos.EvaluateDevice(f); }, eos_); + return PortsOfCall::visit([&f](const auto &eos) { return eos.EvaluateDevice(f); }, eos_); } template void EvaluateHost(Functor_t &f) const { - return mpark::visit([&f](const auto &eos) { return eos.EvaluateHost(f); }, eos_); + return PortsOfCall::visit([&f](const auto &eos) { return eos.EvaluateHost(f); }, eos_); } // EOS modifier object-oriented API template