summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--var/spack/repos/builtin/packages/sensei/package.py134
1 files changed, 134 insertions, 0 deletions
diff --git a/var/spack/repos/builtin/packages/sensei/package.py b/var/spack/repos/builtin/packages/sensei/package.py
new file mode 100644
index 0000000000..87fbacf530
--- /dev/null
+++ b/var/spack/repos/builtin/packages/sensei/package.py
@@ -0,0 +1,134 @@
+# Copyright 2013-2019 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 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
+ 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."""
+
+ homepage = "https://sensei-insitu.org"
+ url = "https://gitlab.kitware.com/sensei/sensei/-/archive/v3.1.0/sensei-v3.1.0.tar.gz"
+ git = "https://gitlab.kitware.com/sensei/sensei.git"
+ maintainers = ['sshudler']
+
+ version('master', branch='master')
+ version('3.1.0', sha256='9a3e6d0d5bb6170ee666586435434da1708b3876fd448b9d41142571ed9da939')
+ version('3.0.0', sha256='0aabbea03ade9947c88fc0aa6d3cbaf3c8267e8504e384a041445678a95e58eb')
+ version('2.1.1', sha256='8a27ebf133fef00a59e4b29433762e6560bf20214072de7808836eb668bb5687')
+ version('2.1.0', sha256='b7af21a25523cf6cd8934d797471b75ca32881166625d71f24b5c8b6d727ca99')
+ version('2.0.0', sha256='df48eab035e1acdd8edf5159955c05306f9ca48117effacc4a6b77c3fb24f62b')
+ version('1.1.0', sha256='e5a4ba691573ff6c7b0d4793665e218ee5868ebcc0198915d1f16a4b7b92a368')
+ version('1.0.0', sha256='bdcb03c56b51f2795ec5a7e85a5abb01d473d192fac50f2a8bf2608cc3564ff8')
+
+ variant('sencore', default=True, description='Enables the SENSEI core library')
+ variant('catalyst', default=True, description='Build with ParaView-Catalyst support')
+ variant('libsim', default=False, description='Build with VisIt-Libsim support')
+ variant('vtkio', default=True, description='Enable adaptors to write to VTK XML format')
+ variant('adios', default=False, description='Enable ADIOS adaptors and endpoints')
+ variant('hdf5', default=False, description='Enables HDF5 adaptors and endpoints')
+ variant('python', default=False, description='Enable Python bindings')
+ variant('miniapps', default=True, description='Enable the parallel 3D and oscillators miniapps')
+ variant('cxxstd', default='11', values=('11', '14', '17'), multi=False, description='Use the specified C++ standard when building.')
+
+ # 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+python+mpi+hdf5", when="@:2.1.1 +catalyst")
+ depends_on("paraview@5.6:+python3+mpi+hdf5", when="@3: +catalyst")
+ depends_on("visit", when="+libsim")
+ depends_on("vtk", when="+libsim")
+ depends_on("vtk", when="~libsim ~catalyst")
+ depends_on("adios", when="+adios")
+ 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'))
+ depends_on("py-numpy", when="+python", type=('build', 'run'))
+ depends_on("py-mpi4py", when="+python", type=('build', 'run'))
+ depends_on("swig", when="+python", type='build')
+ depends_on('cmake@3.6:', when="@3:", type='build')
+
+ # Can have either LibSim or Catalyst, but not both
+ conflicts('+libsim', when='+catalyst')
+ # hdf5 variant is available only for SENSEI 3
+ conflicts('+hdf5', when='@:2.1.1')
+
+ def cmake_args(self):
+ spec = self.spec
+
+ # -Ox flags are set by default in CMake based on the build type
+ args = [
+ '-DCMAKE_CXX_STANDARD={0}'.format(spec.variants['cxxstd'].value),
+ '-DCMAKE_C_STANDARD=11',
+ '-DCMAKE_POSITION_INDEPENDENT_CODE=ON',
+ '-DENABLE_SENSEI:BOOL={0}'.format(
+ 'ON' if '+sencore' in spec else 'OFF')
+ ]
+
+ vtk_dir_needed = True
+
+ if '+catalyst' in spec:
+ args.extend([
+ '-DENABLE_CATALYST:BOOL=ON',
+ '-DENABLE_CATALYST_PYTHON:BOOL=ON',
+ '-DParaView_DIR:PATH={0}'.format(spec['paraview'].prefix)
+ ])
+ vtk_dir_needed = False
+ else:
+ args.append('-DENABLE_CATALYST:BOOL=OFF')
+
+ if '+libsim' in spec:
+ args.extend([
+ '-DENABLE_LIBSIM:BOOL=ON',
+ '-DVISIT_DIR:PATH={0}'.format(spec['visit'].prefix),
+ '-DVTK_DIR:PATH={0}'.format(spec['vtk'].prefix)
+ ])
+ vtk_dir_needed = False
+ else:
+ args.append('-DENABLE_LIBSIM:BOOL=OFF')
+
+ vtkio_switch = 'ON' if '+vtkio' in spec else 'OFF'
+ args.append('-DENABLE_VTK_IO:BOOL={0}'.format(vtkio_switch))
+
+ python_switch = 'OFF'
+ if '+python' in spec:
+ python_switch = 'ON'
+ python_path = spec['python'].command.path
+ args.append('-DPYTHON_EXECUTABLE:FILEPATH={0}'.format(python_path))
+ if spec.satisfies('@3:'):
+ args.append('-DSENSEI_PYTHON_VERSION=3')
+ args.append('-DENABLE_PYTHON:BOOL={0}'.format(python_switch))
+
+ if '+adios' in spec:
+ if spec.satisfies('@3:'):
+ args.append('-DENABLE_ADIOS1:BOOL=ON')
+ else:
+ args.append('-DENABLE_ADIOS:BOOL=ON')
+ args.append('-DADIOS_DIR:PATH={0}'.format(spec['adios'].prefix))
+ else:
+ args.append('-DENABLE_ADIOS:BOOL=OFF')
+
+ if '+hdf5' in spec:
+ args.extend([
+ '-DENABLE_HDF5:BOOL=ON',
+ '-DHDF5_DIR:PATH={0}'.format(spec['hdf5'].prefix)
+ ])
+
+ if vtk_dir_needed:
+ args.append('-DVTK_DIR:PATH={0}'.format(spec['vtk'].prefix))
+
+ args.extend([
+ '-DENABLE_PARALLEL3D:BOOL={0}'.format(
+ 'ON' if '+miniapps' in spec else 'OFF'),
+ '-DENABLE_OSCILLATORS:BOOL={0}'.format(
+ 'ON' if '+miniapps' in spec else 'OFF')
+ ])
+
+ return args