summaryrefslogtreecommitdiff
path: root/var/spack/repos/builtin/packages/visit/package.py
diff options
context:
space:
mode:
Diffstat (limited to 'var/spack/repos/builtin/packages/visit/package.py')
-rw-r--r--var/spack/repos/builtin/packages/visit/package.py313
1 files changed, 166 insertions, 147 deletions
diff --git a/var/spack/repos/builtin/packages/visit/package.py b/var/spack/repos/builtin/packages/visit/package.py
index c54b320366..18bb289ec5 100644
--- a/var/spack/repos/builtin/packages/visit/package.py
+++ b/var/spack/repos/builtin/packages/visit/package.py
@@ -10,8 +10,9 @@ from spack.package import *
class Visit(CMakePackage):
"""VisIt is an Open Source, interactive, scalable, visualization,
- animation and analysis tool.
+ animation and analysis tool.
"""
+
############################
# Suggestions for building:
############################
@@ -45,126 +46,130 @@ class Visit(CMakePackage):
#
############################
homepage = "https://wci.llnl.gov/simulation/computer-codes/visit/"
- git = "https://github.com/visit-dav/visit.git"
+ git = "https://github.com/visit-dav/visit.git"
url = "https://github.com/visit-dav/visit/releases/download/v3.2.1/visit3.2.1.tar.gz"
- tags = ['radiuss']
+ tags = ["radiuss"]
- maintainers = ['cyrush']
+ maintainers = ["cyrush"]
extendable = True
- executables = ['^visit$']
+ executables = ["^visit$"]
- version('develop', branch='develop')
- version('3.3.0', sha256='1a7485146133ac5f1e330d9029697750046ef8d9e9de23a6c2a3685c1c5f4aac', deprecated=True)
- version('3.2.2', sha256='d19ac24c622a3bc0a71bc9cd6e5c9860e43f39e3279672129278b6ebce8d0ead')
- version('3.2.1', sha256='779d59564c63f31fcbfeff24b14ddd6ac941b3bb7d671d31765a770d193f02e8')
- version('3.1.1', sha256='0b60ac52fd00aff3cf212a310e36e32e13ae3ca0ddd1ea3f54f75e4d9b6c6cf0')
- version('3.0.1', sha256='a506d4d83b8973829e68787d8d721199523ce7ec73e7594e93333c214c2c12bd')
+ version("develop", branch="develop")
+ version(
+ "3.3.0",
+ sha256="1a7485146133ac5f1e330d9029697750046ef8d9e9de23a6c2a3685c1c5f4aac",
+ deprecated=True,
+ )
+ version("3.2.2", sha256="d19ac24c622a3bc0a71bc9cd6e5c9860e43f39e3279672129278b6ebce8d0ead")
+ version("3.2.1", sha256="779d59564c63f31fcbfeff24b14ddd6ac941b3bb7d671d31765a770d193f02e8")
+ version("3.1.1", sha256="0b60ac52fd00aff3cf212a310e36e32e13ae3ca0ddd1ea3f54f75e4d9b6c6cf0")
+ version("3.0.1", sha256="a506d4d83b8973829e68787d8d721199523ce7ec73e7594e93333c214c2c12bd")
- root_cmakelists_dir = 'src'
+ root_cmakelists_dir = "src"
generator = "Ninja"
- variant('gui', default=True, description='Enable VisIt\'s GUI')
- variant('osmesa', default=False, description='Use OSMesa for off-screen CPU rendering')
- variant('adios2', default=True, description='Enable ADIOS2 file format')
- variant('hdf5', default=True, description='Enable HDF5 file format')
- variant('silo', default=True, description='Enable Silo file format')
- variant('python', default=True, description='Enable Python support')
- variant('mpi', default=True, description='Enable parallel engine')
+ variant("gui", default=True, description="Enable VisIt's GUI")
+ variant("osmesa", default=False, description="Use OSMesa for off-screen CPU rendering")
+ variant("adios2", default=True, description="Enable ADIOS2 file format")
+ variant("hdf5", default=True, description="Enable HDF5 file format")
+ variant("silo", default=True, description="Enable Silo file format")
+ variant("python", default=True, description="Enable Python support")
+ variant("mpi", default=True, description="Enable parallel engine")
- patch('spack-changes-3.1.patch', when="@3.1.0:3.2.2")
- patch('spack-changes-3.0.1.patch', when="@3.0.1")
- patch('nonframework-qwt.patch', when='^qt~framework platform=darwin')
- patch('parallel-hdf5.patch', when='@3.0.1:3.2.2+hdf5+mpi')
- patch('parallel-hdf5-3.3.patch', when='@3.3.0:+hdf5+mpi')
+ patch("spack-changes-3.1.patch", when="@3.1.0:3.2.2")
+ patch("spack-changes-3.0.1.patch", when="@3.0.1")
+ patch("nonframework-qwt.patch", when="^qt~framework platform=darwin")
+ patch("parallel-hdf5.patch", when="@3.0.1:3.2.2+hdf5+mpi")
+ patch("parallel-hdf5-3.3.patch", when="@3.3.0:+hdf5+mpi")
# Fix pthread and librt link errors
- patch('visit32-missing-link-libs.patch', when='@3.2')
+ patch("visit32-missing-link-libs.patch", when="@3.2")
# Exactly one of 'gui' or 'osmesa' has to be enabled
- conflicts('+gui', when='+osmesa')
+ conflicts("+gui", when="+osmesa")
- depends_on('cmake@3.14.7:', type='build')
- depends_on('ninja', type='build')
+ depends_on("cmake@3.14.7:", type="build")
+ depends_on("ninja", type="build")
- depends_on('mpi', when='+mpi')
+ depends_on("mpi", when="+mpi")
# VTK flavors
- depends_on('vtk@8.1:8 +opengl2')
- depends_on('vtk +osmesa', when='+osmesa')
- depends_on('vtk +qt', when='+gui')
- depends_on('vtk +python', when='+python')
- depends_on('vtk +mpi', when='+mpi')
- depends_on('vtk ~mpi', when='~mpi')
+ depends_on("vtk@8.1:8 +opengl2")
+ depends_on("vtk +osmesa", when="+osmesa")
+ depends_on("vtk +qt", when="+gui")
+ depends_on("vtk +python", when="+python")
+ depends_on("vtk +mpi", when="+mpi")
+ depends_on("vtk ~mpi", when="~mpi")
# Necessary VTK patches
- depends_on('vtk', patches=[patch('vtk_compiler_visibility.patch')],
- when='^vtk@8')
- depends_on('vtk', patches=[patch('vtk_rendering_opengl2_x11.patch')],
- when='~osmesa platform=linux ^vtk@8')
- depends_on('vtk', patches=[patch('vtk_wrapping_python_x11.patch')],
- when='+python ^vtk@8')
+ depends_on("vtk", patches=[patch("vtk_compiler_visibility.patch")], when="^vtk@8")
+ depends_on(
+ "vtk",
+ patches=[patch("vtk_rendering_opengl2_x11.patch")],
+ when="~osmesa platform=linux ^vtk@8",
+ )
+ depends_on("vtk", patches=[patch("vtk_wrapping_python_x11.patch")], when="+python ^vtk@8")
- depends_on('glu')
+ depends_on("glu")
# VisIt doesn't work with later versions of qt.
- depends_on('qt+gui+opengl@5:5.14', when='+gui')
- depends_on('qwt', when='+gui')
+ depends_on("qt+gui+opengl@5:5.14", when="+gui")
+ depends_on("qwt", when="+gui")
# python@3.8 doesn't work with VisIt.
- depends_on('python@3.2:3.7', when='+python')
- extends('python', when='+python')
+ depends_on("python@3.2:3.7", when="+python")
+ extends("python", when="+python")
# VisIt uses the hdf5 1.8 api
# set the API version later on down in setup_build_environment
- depends_on('hdf5@1.8:', when='+hdf5')
- depends_on('hdf5+mpi', when='+hdf5+mpi')
- depends_on('hdf5~mpi', when='+hdf5~mpi')
+ depends_on("hdf5@1.8:", when="+hdf5")
+ depends_on("hdf5+mpi", when="+hdf5+mpi")
+ depends_on("hdf5~mpi", when="+hdf5~mpi")
# VisIt uses Silo's 'ghost zone' data structures, which are only available
# in v4.10+ releases: https://wci.llnl.gov/simulation/computer-codes/silo/releases/release-notes-4.10
- depends_on('silo@4.10: +shared', when='+silo')
- depends_on('silo+hdf5', when='+silo+hdf5')
- depends_on('silo~hdf5', when='+silo~hdf5')
- depends_on('silo+mpi', when='+silo+mpi')
- depends_on('silo~mpi', when='+silo~mpi')
-
- depends_on('adios2@2.6:', when='+adios2')
- depends_on('adios2+hdf5', when='+adios2+hdf5')
- depends_on('adios2~hdf5', when='+adios2~hdf5')
- depends_on('adios2+mpi', when='+adios2+mpi')
- depends_on('adios2~mpi', when='+adios2~mpi')
- depends_on('adios2+python', when='+adios2+python')
- depends_on('adios2~python', when='+adios2~python')
-
- depends_on('zlib')
-
- @when('@3:,develop')
+ depends_on("silo@4.10: +shared", when="+silo")
+ depends_on("silo+hdf5", when="+silo+hdf5")
+ depends_on("silo~hdf5", when="+silo~hdf5")
+ depends_on("silo+mpi", when="+silo+mpi")
+ depends_on("silo~mpi", when="+silo~mpi")
+
+ depends_on("adios2@2.6:", when="+adios2")
+ depends_on("adios2+hdf5", when="+adios2+hdf5")
+ depends_on("adios2~hdf5", when="+adios2~hdf5")
+ depends_on("adios2+mpi", when="+adios2+mpi")
+ depends_on("adios2~mpi", when="+adios2~mpi")
+ depends_on("adios2+python", when="+adios2+python")
+ depends_on("adios2~python", when="+adios2~python")
+
+ depends_on("zlib")
+
+ @when("@3:,develop")
def patch(self):
# Some of VTK's targets don't create explicit libraries, so there is no
# 'vtktiff'. Instead, replace with the library variable defined from
# VTK's module flies (e.g. lib/cmake/vtk-8.1/Modules/vtktiff.cmake)
- for filename in find('src', 'CMakeLists.txt'):
- filter_file(r'\bvtk(tiff|jpeg|png)', r'${vtk\1_LIBRARIES}',
- filename)
+ for filename in find("src", "CMakeLists.txt"):
+ filter_file(r"\bvtk(tiff|jpeg|png)", r"${vtk\1_LIBRARIES}", filename)
def flag_handler(self, name, flags):
- if name in ('cflags', 'cxxflags'):
+ if name in ("cflags", "cxxflags"):
# NOTE: This is necessary in order to allow VisIt to compile a couple
# of lines of code with 'const char*' to/from 'char*' conversions.
- if '@3:%gcc' in self.spec:
- flags.append('-fpermissive')
+ if "@3:%gcc" in self.spec:
+ flags.append("-fpermissive")
# VisIt still uses the hdf5 1.8 api
- if '+hdf5' in self.spec and '@1.10:' in self.spec['hdf5']:
- flags.append('-DH5_USE_18_API')
+ if "+hdf5" in self.spec and "@1.10:" in self.spec["hdf5"]:
+ flags.append("-DH5_USE_18_API")
- elif name == 'ldlibs':
+ elif name == "ldlibs":
# Python support is missing a pthread dependency
- if '@3 +python' in self.spec:
- flags.append('-lpthread')
+ if "@3 +python" in self.spec:
+ flags.append("-lpthread")
return (flags, None, None)
@@ -172,82 +177,96 @@ class Visit(CMakePackage):
spec = self.spec
args = [
- self.define('CMAKE_SKIP_COMPATIBILITY_TESTS', True),
- self.define('CMAKE_POSITION_INDEPENDENT_CODE', True),
- self.define('VTK_MAJOR_VERSION', spec['vtk'].version[0]),
- self.define('VTK_MINOR_VERSION', spec['vtk'].version[1]),
- self.define('VISIT_VTK_DIR', spec['vtk'].prefix),
- self.define('VISIT_ZLIB_DIR', spec['zlib'].prefix),
- self.define('VISIT_USE_GLEW', False),
- self.define('VISIT_CONFIG_SITE', 'NONE'),
- self.define('VISIT_INSTALL_THIRD_PARTY', False),
+ self.define("CMAKE_SKIP_COMPATIBILITY_TESTS", True),
+ self.define("CMAKE_POSITION_INDEPENDENT_CODE", True),
+ self.define("VTK_MAJOR_VERSION", spec["vtk"].version[0]),
+ self.define("VTK_MINOR_VERSION", spec["vtk"].version[1]),
+ self.define("VISIT_VTK_DIR", spec["vtk"].prefix),
+ self.define("VISIT_ZLIB_DIR", spec["zlib"].prefix),
+ self.define("VISIT_USE_GLEW", False),
+ self.define("VISIT_CONFIG_SITE", "NONE"),
+ self.define("VISIT_INSTALL_THIRD_PARTY", False),
]
- if '@3.1: platform=darwin' in spec:
- args.append(self.define('FIXUP_OSX', False))
-
- if '+python' in spec:
- args.extend([
- self.define('VISIT_PYTHON_FILTERS', True),
- self.define('VISIT_PYTHON_SCRIPTING', True),
- self.define('PYTHON_DIR', spec['python'].home),
- ])
+ if "@3.1: platform=darwin" in spec:
+ args.append(self.define("FIXUP_OSX", False))
+
+ if "+python" in spec:
+ args.extend(
+ [
+ self.define("VISIT_PYTHON_FILTERS", True),
+ self.define("VISIT_PYTHON_SCRIPTING", True),
+ self.define("PYTHON_DIR", spec["python"].home),
+ ]
+ )
else:
- args.extend([
- self.define('VISIT_PYTHON_FILTERS', False),
- self.define('VISIT_PYTHON_SCRIPTING', False),
- ])
-
- if '+gui' in spec:
- qt_bin = spec['qt'].prefix.bin
- qmake_exe = os.path.join(qt_bin, 'qmake')
- args.extend([
- self.define('VISIT_SERVER_COMPONENTS_ONLY', False),
- self.define('VISIT_ENGINE_ONLY', False),
- self.define('VISIT_LOC_QMAKE_EXE', qmake_exe),
- self.define('VISIT_QT_DIR', spec['qt'].prefix),
- self.define('VISIT_QWT_DIR', spec['qwt'].prefix),
- ])
+ args.extend(
+ [
+ self.define("VISIT_PYTHON_FILTERS", False),
+ self.define("VISIT_PYTHON_SCRIPTING", False),
+ ]
+ )
+
+ if "+gui" in spec:
+ qt_bin = spec["qt"].prefix.bin
+ qmake_exe = os.path.join(qt_bin, "qmake")
+ args.extend(
+ [
+ self.define("VISIT_SERVER_COMPONENTS_ONLY", False),
+ self.define("VISIT_ENGINE_ONLY", False),
+ self.define("VISIT_LOC_QMAKE_EXE", qmake_exe),
+ self.define("VISIT_QT_DIR", spec["qt"].prefix),
+ self.define("VISIT_QWT_DIR", spec["qwt"].prefix),
+ ]
+ )
else:
- args.extend([
- self.define('VISIT_SERVER_COMPONENTS_ONLY', True),
- self.define('VISIT_ENGINE_ONLY', True),
- ])
+ args.extend(
+ [
+ self.define("VISIT_SERVER_COMPONENTS_ONLY", True),
+ self.define("VISIT_ENGINE_ONLY", True),
+ ]
+ )
# OpenGL args
- args.extend([
- self.define('VISIT_USE_X', 'glx' in spec),
- self.define('VISIT_MESAGL_DIR', 'IGNORE'),
- self.define('VISIT_OPENGL_DIR', 'IGNORE'),
- self.define('VISIT_OSMESA_DIR', 'IGNORE'),
- self.define('OpenGL_GL_PREFERENCE', 'LEGACY'),
- self.define('OPENGL_INCLUDE_DIR', spec['gl'].headers.directories[0]),
- self.define('OPENGL_glu_LIBRARY', spec['glu'].libs[0]),
- ])
- if '+osmesa' in spec:
- args.extend([
- self.define('HAVE_OSMESA', True),
- self.define('OSMESA_LIBRARIES', spec['osmesa'].libs[0]),
- self.define('OPENGL_gl_LIBRARY', spec['osmesa'].libs[0]),
- ])
+ args.extend(
+ [
+ self.define("VISIT_USE_X", "glx" in spec),
+ self.define("VISIT_MESAGL_DIR", "IGNORE"),
+ self.define("VISIT_OPENGL_DIR", "IGNORE"),
+ self.define("VISIT_OSMESA_DIR", "IGNORE"),
+ self.define("OpenGL_GL_PREFERENCE", "LEGACY"),
+ self.define("OPENGL_INCLUDE_DIR", spec["gl"].headers.directories[0]),
+ self.define("OPENGL_glu_LIBRARY", spec["glu"].libs[0]),
+ ]
+ )
+ if "+osmesa" in spec:
+ args.extend(
+ [
+ self.define("HAVE_OSMESA", True),
+ self.define("OSMESA_LIBRARIES", spec["osmesa"].libs[0]),
+ self.define("OPENGL_gl_LIBRARY", spec["osmesa"].libs[0]),
+ ]
+ )
else:
- args.append(self.define('OPENGL_gl_LIBRARY', spec['gl'].libs[0]))
-
- if '+hdf5' in spec:
- args.append(self.define('HDF5_DIR', spec['hdf5'].prefix))
- if '+mpi' in spec and '+mpi' in spec['hdf5']:
- args.append(self.define('VISIT_HDF5_MPI_DIR', spec['hdf5'].prefix))
-
- if '+silo' in spec:
- args.append(self.define('VISIT_SILO_DIR', spec['silo'].prefix))
-
- if '+mpi' in spec:
- args.extend([
- self.define('VISIT_PARALLEL', True),
- self.define('VISIT_MPI_COMPILER', spec['mpi'].mpicxx),
- ])
+ args.append(self.define("OPENGL_gl_LIBRARY", spec["gl"].libs[0]))
+
+ if "+hdf5" in spec:
+ args.append(self.define("HDF5_DIR", spec["hdf5"].prefix))
+ if "+mpi" in spec and "+mpi" in spec["hdf5"]:
+ args.append(self.define("VISIT_HDF5_MPI_DIR", spec["hdf5"].prefix))
+
+ if "+silo" in spec:
+ args.append(self.define("VISIT_SILO_DIR", spec["silo"].prefix))
+
+ if "+mpi" in spec:
+ args.extend(
+ [
+ self.define("VISIT_PARALLEL", True),
+ self.define("VISIT_MPI_COMPILER", spec["mpi"].mpicxx),
+ ]
+ )
else:
- args.append(self.define('VISIT_PARALLEL', False))
+ args.append(self.define("VISIT_PARALLEL", False))
return args
@@ -256,6 +275,6 @@ class Visit(CMakePackage):
# despite VisIt may have multiple versions
@classmethod
def determine_version(cls, exe):
- output = Executable(exe)('-version', output=str, error=str)
- match = re.search(r'\s*(\d[\d\.]+)\.', output)
+ output = Executable(exe)("-version", output=str, error=str)
+ match = re.search(r"\s*(\d[\d\.]+)\.", output)
return match.group(1) if match else None