summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkwryankrattiger <80296582+kwryankrattiger@users.noreply.github.com>2022-08-18 19:20:01 -0500
committerGitHub <noreply@github.com>2022-08-18 17:20:01 -0700
commitd77a8f7aa15fe24a0e8da6477947611d699f86fb (patch)
tree6270a4610d0baa39759631248f8a025d9cee4771
parent364e4e03ef25976c24dd8c5f0fe9b8f981b1c336 (diff)
downloadspack-d77a8f7aa15fe24a0e8da6477947611d699f86fb.tar.gz
spack-d77a8f7aa15fe24a0e8da6477947611d699f86fb.tar.bz2
spack-d77a8f7aa15fe24a0e8da6477947611d699f86fb.tar.xz
spack-d77a8f7aa15fe24a0e8da6477947611d699f86fb.zip
Sensei v4 (#30432)
* Sensei: Refactor package to work with v4.0.0 * Add missing MPI dependency * Patch bug in libsim adapter * Simplify conflicts with when-clauses * Conflict variants that are incompatible (catalyst/libsim/ascent) * Fix paraview version constraints to be more clear * Add version constraints for VTK * Drop unneeded visit restrictions * Specify +vtkm dependency on ParaView's VTKm * +hl is not needed for VTK, and is already specified in the VTK recipe when it is needed * Pass paths for adios2 and ascent packages * ECP-SDK: Enable sensei * CI: Add sensei to the data-vis-sdk pipeline * Sensei: Change VISIT_DIR to work on linux * Fixup: style check * Sensei: Add patch for version detection * CI: revert SDK pipeline in favor of new matrices * Sensei: Formatting fixes
-rw-r--r--var/spack/repos/builtin/packages/ecp-data-vis-sdk/package.py12
-rw-r--r--var/spack/repos/builtin/packages/sensei/libsim-add-missing-symbol-visibility-pr67.patch33
-rw-r--r--var/spack/repos/builtin/packages/sensei/package.py87
-rw-r--r--var/spack/repos/builtin/packages/sensei/sensei-find-mpi-component-cxx-pr68.patch13
-rw-r--r--var/spack/repos/builtin/packages/sensei/sensei-install-external-pugixml-pr69.patch13
-rw-r--r--var/spack/repos/builtin/packages/sensei/sensei-version-detection-pr75.patch23
6 files changed, 145 insertions, 36 deletions
diff --git a/var/spack/repos/builtin/packages/ecp-data-vis-sdk/package.py b/var/spack/repos/builtin/packages/ecp-data-vis-sdk/package.py
index 68eab92d27..a74b4ae8d2 100644
--- a/var/spack/repos/builtin/packages/ecp-data-vis-sdk/package.py
+++ b/var/spack/repos/builtin/packages/ecp-data-vis-sdk/package.py
@@ -81,15 +81,12 @@ class EcpDataVisSdk(BundlePackage, CudaPackage, ROCmPackage):
variant("ascent", default=False, description="Enable Ascent")
variant("cinema", default=False, description="Enable Cinema")
variant("paraview", default=False, description="Enable ParaView")
+ variant("sensei", default=False, description="Enable Sensei")
variant("sz", default=False, description="Enable SZ")
variant("visit", default=False, description="Enable VisIt")
variant("vtkm", default=False, description="Enable VTK-m")
variant("zfp", default=False, description="Enable ZFP")
- # Outstanding build issues
- variant("sensei", default=False, description="Enable Sensei")
- conflicts("+sensei")
-
############################################################
# Dependencies
############################################################
@@ -115,13 +112,10 @@ class EcpDataVisSdk(BundlePackage, CudaPackage, ROCmPackage):
dav_sdk_depends_on("veloc", when="+veloc")
- # Currenly only develop has necessary patches. Update this after SC21 release
- propagate_to_sensei = [(v, v) for v in ["adios2", "ascent", "hdf5", "vtkm"]]
+ propagate_to_sensei = [(v, v) for v in ["adios2", "ascent", "hdf5"]]
propagate_to_sensei.extend([("paraview", "catalyst"), ("visit", "libsim")])
dav_sdk_depends_on(
- "sensei@develop +vtkio +python ~miniapps",
- when="+sensei",
- propagate=dict(propagate_to_sensei),
+ "sensei@4: ~vtkio +python", when="+sensei", propagate=dict(propagate_to_sensei)
)
# Fortran support with ascent is problematic on some Cray platforms so the
diff --git a/var/spack/repos/builtin/packages/sensei/libsim-add-missing-symbol-visibility-pr67.patch b/var/spack/repos/builtin/packages/sensei/libsim-add-missing-symbol-visibility-pr67.patch
new file mode 100644
index 0000000000..072f91f2d5
--- /dev/null
+++ b/var/spack/repos/builtin/packages/sensei/libsim-add-missing-symbol-visibility-pr67.patch
@@ -0,0 +1,33 @@
+From 431e4b59e50bef4609b5aa5b47719302c41f4fd8 Mon Sep 17 00:00:00 2001
+From: Chuck Atkins <chuck.atkins@kitware.com>
+Date: Wed, 18 May 2022 13:02:38 -0400
+Subject: [PATCH] libsim: Add missing symbol visibility for
+ LibsimImageProperties
+
+---
+ sensei/LibsimImageProperties.h | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/sensei/LibsimImageProperties.h b/sensei/LibsimImageProperties.h
+index 6a63580..c317fd7 100644
+--- a/sensei/LibsimImageProperties.h
++++ b/sensei/LibsimImageProperties.h
+@@ -1,12 +1,14 @@
+ #ifndef sensei_LibsimImageProperties_h
+ #define sensei_LibsimImageProperties_h
+
++#include "senseiConfig.h"
++
+ #include <string>
+
+ namespace sensei
+ {
+
+-class LibsimImageProperties
++class SENSEI_EXPORT LibsimImageProperties
+ {
+ public:
+ LibsimImageProperties();
+--
+2.36.1
+
diff --git a/var/spack/repos/builtin/packages/sensei/package.py b/var/spack/repos/builtin/packages/sensei/package.py
index 3b44ed8267..ff88d767dd 100644
--- a/var/spack/repos/builtin/packages/sensei/package.py
+++ b/var/spack/repos/builtin/packages/sensei/package.py
@@ -8,7 +8,7 @@ from spack.package import *
class Sensei(CMakePackage):
"""SENSEI is a platform for scalable in-situ analysis and visualization.
- Its design motto is 'Write once, run everywhere', this means that once
+ Its design motto is "Write once, run everywhere", this means that once
the application is instrumented with SENSEI it can use existing and
future analysis backends. Existing backends include: Paraview/Catalyst,
Visit/Libsim, ADIOS, Python scripts, and so on."""
@@ -19,6 +19,7 @@ class Sensei(CMakePackage):
maintainers = ["sshudler", "kwryankrattiger"]
version("develop", branch="develop")
+ version("4.0.0", sha256="fc1538aa1051789dbdefbe18b7f251bc46e7a6ae1db3a940c123552e0318db8b")
version("3.2.2", sha256="d554b654880e899d97d572f02de87b0202faadaf899420ef871093b5bce320c0")
version("3.2.1", sha256="7438fb4b148e4d1eb888c619366d0d8639122ecbbf1767e19549d6ca0c8698ca")
version("3.2.0", sha256="fd1a69134d9f8151d85a7f84a67d6a648aef5580585b39f74a56367cff433c82")
@@ -36,8 +37,13 @@ class Sensei(CMakePackage):
variant("libsim", default=False, description="Build with VisIt-Libsim support")
variant("vtkio", default=False, description="Enable adaptors to write to VTK XML format")
variant("adios2", default=False, description="Enable ADIOS2 adaptors and endpoints")
- variant("hdf5", default=False, description="Enables HDF5 adaptors and endpoints")
- variant("vtkm", default=False, description="Enable VTKm adaptors and endpoints")
+ variant("hdf5", default=False, description="Enables HDF5 adaptors and endpoints", when="@3:")
+ variant(
+ "vtkm",
+ default=False,
+ description="Enable VTKm adaptors and endpoints",
+ when="@4: +catalyst",
+ )
variant("python", default=False, description="Enable Python bindings")
variant(
"miniapps", default=False, description="Enable the parallel 3D and oscillators miniapps"
@@ -46,21 +52,36 @@ class Sensei(CMakePackage):
# All SENSEI versions up to 2.1.1 support only Python 2, so in this case
# Paraview 6 cannot be used since it requires Python 3. Starting from
# version 3, SENSEI supports Python 3.
- depends_on("paraview@5.5.0:5.5.2+mpi+hdf5", when="@:2.1.1 +catalyst")
- depends_on("paraview@5.5.0:5.5.2+python+mpi+hdf5", when="@:2.1.1 +catalyst+python")
- depends_on("paraview@5.6:5.7+mpi+hdf5", when="@3:3.2.1 +catalyst")
- depends_on("paraview@5.6:5.7+python3+mpi+hdf5", when="@3:3.2.1 +catalyst+python")
- depends_on("paraview+mpi+hdf5", when="+catalyst")
- depends_on("paraview+python3+mpi+hdf5", when="+catalyst+python")
- depends_on("visit~gui~python", when="+libsim")
- depends_on("vtk@8.1.0:8.1.2", when="+libsim")
- depends_on("vtk", when="~libsim ~catalyst")
- depends_on("vtk+python", when="~libsim ~catalyst+python")
+ depends_on("paraview+mpi", when="+catalyst")
+ depends_on("paraview+hdf5", when="+catalyst+hdf5")
+ depends_on("paraview+python", when="@:2 +catalyst+python")
+ depends_on("paraview+python3", when="@3: +catalyst+python")
+
+ depends_on("paraview@5.5.0:5.5.2", when="@:2.1.1 +catalyst")
+ depends_on("paraview@5.6:5.7", when="@3:3.2.1 +catalyst")
+ depends_on("paraview@5.7:5.9", when="@3.2.2 +catalyst")
+ depends_on("paraview@5.7:5.10", when="@4: +catalyst")
+
+ # Visit Dep
+ depends_on("visit", when="+libsim")
+
+ # VTK Dep
+ depends_on("vtk@8:8", when="@:3 ~catalyst")
+ depends_on("vtk+python", when="@:3 ~catalyst+python")
+ depends_on("vtk@9:", when="@4: +vtkio ~catalyst")
+
+ # VTK-m
+ depends_on("paraview use_vtkm=on", when="+vtkm")
+
+ # ADIOS2
depends_on("adios2", when="+adios2")
+
+ # Ascent
depends_on("ascent", when="+ascent")
- # VTK needs +hl and currently spack cannot resolve +hl and ~hl
- depends_on("hdf5+hl", when="+hdf5")
+ # HDF5
+ depends_on("hdf5", when="+hdf5")
+
# SENSEI 3 supports Python 3, earlier versions upport only Python 2
depends_on("python@:2.7.16", when="@:2.1.1 +python", type=("build", "run"))
depends_on("python@3:", when="@3: +python", type=("build", "run"))
@@ -70,15 +91,18 @@ class Sensei(CMakePackage):
depends_on("swig", when="+python", type="build")
depends_on("cmake@3.6:", when="@3:", type="build")
depends_on("pugixml")
+ depends_on("mpi")
- # Since sensei always has a VTK dependency, either directly or indirectly,
- # VTKm will also always be available via VTK so there's no scenario to
- # have a directl dependency on VTK,
-
- # Can have either LibSim or Catalyst, but not both
+ # Can have either LibSim or Catalyst or Ascent, but not a combination
conflicts("+libsim", when="+catalyst")
- # hdf5 variant is available only for SENSEI 3
- conflicts("+hdf5", when="@:2.1.1")
+ conflicts("+ascent", when="+catalyst")
+ conflicts("+ascent", when="+libsim")
+
+ # Patches
+ patch("libsim-add-missing-symbol-visibility-pr67.patch", when="@4.0.0")
+ patch("sensei-find-mpi-component-cxx-pr68.patch", when="@4.0.0")
+ patch("sensei-install-external-pugixml-pr69.patch", when="@4.0.0")
+ patch("sensei-version-detection-pr75.patch", when="@4.0.0")
def cmake_args(self):
spec = self.spec
@@ -88,6 +112,11 @@ class Sensei(CMakePackage):
self.define_from_variant("BUILD_SHARED_LIBS", "shared"),
self.define("SENSEI_USE_EXTERNAL_pugixml", True),
self.define("ENABLE_SENSEI", True),
+ self.define("MPI_C_COMPILER", spec["mpi"].mpicc),
+ self.define("MPI_CXX_COMPILER", spec["mpi"].mpicxx),
+ # Don"t rely on MPI found in cray environment for cray systems.
+ # On non-cray systems this should be a no-op
+ self.define("ENABLE_CRAY_MPICH", False),
self.define_from_variant("ENABLE_ASCENT", "ascent"),
self.define_from_variant("ENABLE_VTKM", "vtkm"),
self.define_from_variant("ENABLE_CATALYST", "catalyst"),
@@ -100,12 +129,16 @@ class Sensei(CMakePackage):
self.define_from_variant("ENABLE_OSCILLATORS", "miniapps"),
]
+ if "+adios2" in spec:
+ args.append(self.define("ADIOS2_DIR", spec["adios2"].prefix))
+
+ if "+ascent" in spec:
+ args.append(self.define("ASCENT_DIR", spec["ascent"].prefix))
+
if "+libsim" in spec:
- args.append(
- "-DVISIT_DIR:PATH={0}/current/{1}-{2}".format(
- spec["visit"].prefix, spec.platform, spec.target.family
- )
- )
+ # This is only for linux
+ # Visit install location may be different on other platforms
+ args.append("-DVISIT_DIR:PATH={0}/current/linux-x86_64".format(spec["visit"].prefix))
if "+python" in spec:
args.append(self.define("PYTHON_EXECUTABLE", spec["python"].command.path))
diff --git a/var/spack/repos/builtin/packages/sensei/sensei-find-mpi-component-cxx-pr68.patch b/var/spack/repos/builtin/packages/sensei/sensei-find-mpi-component-cxx-pr68.patch
new file mode 100644
index 0000000000..e8b605522f
--- /dev/null
+++ b/var/spack/repos/builtin/packages/sensei/sensei-find-mpi-component-cxx-pr68.patch
@@ -0,0 +1,13 @@
+diff --git a/CMake/mpi.cmake b/CMake/mpi.cmake
+index 853a355e..0f40d7b4 100644
+--- a/CMake/mpi.cmake
++++ b/CMake/mpi.cmake
+@@ -16,7 +16,7 @@ elseif (ENABLE_CORI_GPU OR (NOT DEFINED ENABLE_CORI_GPU AND NOT ("$ENV{OPENMPI_D
+ set(MPIEXEC srun CACHE STRING "Platform MPI run equivalent")
+ set(MPI_C_FOUND CACHE BOOL ON "status of MPI config")
+ else()
+- find_package(MPI COMPONENTS C)
++ find_package(MPI COMPONENTS C CXX)
+ endif()
+
+ if (NOT MPI_C_FOUND)
diff --git a/var/spack/repos/builtin/packages/sensei/sensei-install-external-pugixml-pr69.patch b/var/spack/repos/builtin/packages/sensei/sensei-install-external-pugixml-pr69.patch
new file mode 100644
index 0000000000..662ba50d9f
--- /dev/null
+++ b/var/spack/repos/builtin/packages/sensei/sensei-install-external-pugixml-pr69.patch
@@ -0,0 +1,13 @@
+diff --git a/utils/pugixml/CMakeLists.txt b/utils/pugixml/CMakeLists.txt
+index 09896fb1..cf7b3450 100644
+--- a/utils/pugixml/CMakeLists.txt
++++ b/utils/pugixml/CMakeLists.txt
+@@ -6,7 +6,7 @@ if (SENSEI_USE_EXTERNAL_pugixml)
+ @ONLY)
+
+ install(
+- FILES "${CMAKE_BINARY_DIR}/lib/cmake/pugixml.cmake"
++ FILES "${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/cmake/pugixml.cmake"
+ DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake")
+ else ()
+ add_library(pugixml STATIC src/pugixml.cpp)
diff --git a/var/spack/repos/builtin/packages/sensei/sensei-version-detection-pr75.patch b/var/spack/repos/builtin/packages/sensei/sensei-version-detection-pr75.patch
new file mode 100644
index 0000000000..0eb79839e8
--- /dev/null
+++ b/var/spack/repos/builtin/packages/sensei/sensei-version-detection-pr75.patch
@@ -0,0 +1,23 @@
+diff --git a/CMake/version.cmake b/CMake/version.cmake
+index ea171ade..f2b85e76 100644
+--- a/CMake/version.cmake
++++ b/CMake/version.cmake
+@@ -1,12 +1,14 @@
+ set(tmp)
+ find_package(Git QUIET)
+ if(GIT_FOUND)
+- execute_process(COMMAND ${GIT_EXECUTABLE}
+- --git-dir=${CMAKE_SOURCE_DIR}/.git describe --tags
+- OUTPUT_VARIABLE tmp OUTPUT_STRIP_TRAILING_WHITESPACE)
++ execute_process(COMMAND ${GIT_EXECUTABLE}
++ --git-dir=${CMAKE_SOURCE_DIR}/.git describe --tags
++ OUTPUT_VARIABLE tmp OUTPUT_STRIP_TRAILING_WHITESPACE)
+ endif()
+ if(NOT tmp)
+- set(tmp "v0.0.0")
++ # Set this to the latest released version.
++ # This version is used when using release tarballs
++ set(tmp "v4.0.0")
+ endif()
+ set(SENSEI_VERSION ${tmp} CACHE STRING "SENSEI version" FORCE)
+