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 }} diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c607fa8a6da..de0bebe7da2 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] @@ -217,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: @@ -228,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] @@ -273,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/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/common.yml b/.gitlab/common.yml index c9f78f7f66b..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 @@ -204,33 +205,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 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/.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) 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/CHANGELOG.md b/CHANGELOG.md index 3a56b47d14f..248f181f3c3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ - [[PR575]](https://github.com/lanl/singularity-eos/pull/575) Pin variant submodule to the same commit as the spackage ### Infrastructure (changes irrelevant to downstream codes) +- [[PR590]](https://github.com/lanl/singularity-eos/pull/590) Remove local spack-repo and use PortsOfCall::variant instead of mpark::variant - [[PR595]](https://github.com/lanl/singularity-eos/pull/595) A number of robustness fixes/cleanups. Add a warnings build to the CI. - [[PR594]](https://github.com/lanl/singularity-eos/pull/594) clean up tests in preparation for ports-of-call variant transition - [[PR588]](https://github.com/lanl/singularity-eos/pull/588) Add DensityEnergyFromPressureTemperature in unit system test 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..977adfc9763 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 @@ -670,22 +667,13 @@ https://spack.readthedocs.io Installing ``singularity-eos`` using Spack ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -. warning:: - The spack build is currently experimental. - Please report problems you havee as github issues. - The spackage is available in the main `Spack`_ -repositories, and we provide a spackage for ``singularity-eos`` witin the -the singularity-eos source repository. The distributed spackage may be -more up-to-date than the one in the main `Spack`_ repository. If you -have spack installed, simply call +repositories. If you have spack installed, simply call .. _Spack: https://spack.io/ .. code-block:: bash - git clone --recursive git@github.com:lanl/singularity-eos.git - spack repo add singularity-eos/spack-repo spack install singularity-eos to install ``singularity-eos`` into your spack instance. The spackage diff --git a/singularity-eos/eos/eos_variant.hpp b/singularity-eos/eos/eos_variant.hpp index a73ed8e5c44..232d531ec7a 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,43 @@ 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()); }, - eos_); + 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