VisIt: update for building with 3.2.1. (#27036)

Include several several patches to vtk 8.1 for building on a 
system with no system install X11 libraries or include files.

Specify specific versions of dependent packages that are known to work with 3.2.1.

Tested on spock.olcf.ornl.gov. The GUI came up and rendered images 
and an image was successfully saved using off screen rendering from 
data from curv2d.silo.
This commit is contained in:
Eric Brugger 2021-11-19 00:05:13 -08:00 committed by GitHub
parent 57d3b02800
commit 4cf71b2c7f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 84 additions and 15 deletions

View file

@ -56,7 +56,7 @@ class Visit(CMakePackage):
############################
homepage = "https://wci.llnl.gov/simulation/computer-codes/visit/"
git = "https://github.com/visit-dav/visit.git"
url = "https://github.com/visit-dav/visit/releases/download/v3.1.1/visit3.1.1.tar.gz"
url = "https://github.com/visit-dav/visit/releases/download/v3.2.1/visit3.2.1.tar.gz"
tags = ['radiuss']
@ -67,6 +67,7 @@ class Visit(CMakePackage):
executables = ['^visit$']
version('develop', branch='develop')
version('3.2.1', sha256='779d59564c63f31fcbfeff24b14ddd6ac941b3bb7d671d31765a770d193f02e8')
version('3.1.1', sha256='0b60ac52fd00aff3cf212a310e36e32e13ae3ca0ddd1ea3f54f75e4d9b6c6cf0')
version('3.0.1', sha256='a506d4d83b8973829e68787d8d721199523ce7ec73e7594e93333c214c2c12bd')
version('2.13.3', sha256='cf0b3d2e39e1cd102dd886d3ef6da892733445e362fc28f24d9682012cccf2e5')
@ -82,7 +83,7 @@ class Visit(CMakePackage):
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('mpi', default=False, description='Enable parallel engine')
patch('spack-changes-3.1.patch', when="@3.1.0:,develop")
patch('spack-changes-3.0.1.patch', when="@3.0.1")
@ -177,19 +178,46 @@ class Visit(CMakePackage):
#
# =====================================
depends_on('cmake@3.0:', type='build')
depends_on('cmake@3.14.7', type='build')
# https://github.com/visit-dav/visit/issues/3498
depends_on('vtk@8.1.0:8.1+opengl2~python', when='~python @3.0:3,develop')
depends_on('vtk@8.1.0:8.1+opengl2+python', when='+python @3.0:3,develop')
# The vtk_compiler_visibility patch fixes a bug where
# VTKGenerateExportHeader.cmake fails to recognize gcc versions 10.0
# or greater.
# The vtk_rendering_opengl2_x11 patch adds include directories to
# Rendering/OpenGL2/CMakeLists.txt for systems that don't have the
# system X libraries and include files installed.
# The vtk_wrapping_python_x11 patch adds include directories to
# Wrapping/Python/CMakelists.txt for systems that don't have the
# system X libraries and include files installed.
depends_on('vtk@8.1.0+opengl2+osmesa~python',
patches=[patch('vtk_compiler_visibility.patch'),
patch('vtk_rendering_opengl2_x11.patch'),
patch('vtk_wrapping_python_x11.patch'),
],
when='~python @3.2:,develop')
depends_on('vtk@8.1.0+opengl2+osmesa+python',
patches=[patch('vtk_compiler_visibility.patch'),
patch('vtk_rendering_opengl2_x11.patch'),
patch('vtk_wrapping_python_x11.patch'),
],
when='+python @3.2:,develop')
depends_on('glu', when='platform=linux')
depends_on('vtk@6.1.0~opengl2', when='@:2')
depends_on('vtk+python', when='+python @3.0:,develop')
depends_on('vtk+python', when='+python @3.2:,develop')
depends_on('vtk~mpi', when='~mpi')
depends_on('vtk+qt', when='+gui')
depends_on('qt+gui@4.8.6:4', when='+gui @:2')
depends_on('qt+gui@5.10:', when='+gui @3.0:,develop')
# VisIt doesn't work with later versions of qt.
depends_on('qt+gui@5.14.2:', when='+gui @3.2:,develop')
depends_on('qwt', when='+gui')
depends_on('python@2.6:2.8', when='+python')
# python@3.8 doesn't work with VisIt.
depends_on('python@3.7', when='+python')
# llvm@12.0.1, @11.1.0, @10.0.1 fail in build phase with gcc 6.1.0.
# llvm@9.0.1 fails in cmake phase with gcc 6.1.0.
depends_on('llvm@6:8', when='^mesa')
depends_on('mesa+glx', when='^mesa')
depends_on('mesa-glu', when='^mesa')
# VisIt doesn't build with hdf5@1.12 and hdf5@1.10 produces files that
# are incompatible with hdf5@1.8.
depends_on('hdf5@1.8', when='+hdf5')
# 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')
@ -200,13 +228,9 @@ class Visit(CMakePackage):
depends_on('mpi', when='+mpi')
depends_on('adios2', when='+adios2')
conflicts('+adios2', when='@:2')
conflicts('+hdf5', when='~gui @:2')
conflicts('+silo', when='~gui @:2')
root_cmakelists_dir = 'src'
@when('@3.0.0:3,develop')
@when('@3.0.0:,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
@ -235,6 +259,7 @@ def cmake_args(self):
'-DVISIT_USE_GLEW=OFF',
'-DCMAKE_CXX_FLAGS=' + ' '.join(cxx_flags),
'-DCMAKE_C_FLAGS=' + ' '.join(cc_flags),
'-DVISIT_CONFIG_SITE=NONE',
]
# Provide the plugin compilation environment so as to extend VisIt
@ -266,6 +291,12 @@ def cmake_args(self):
args.append('-DVISIT_SERVER_COMPONENTS_ONLY=ON')
args.append('-DVISIT_ENGINE_ONLY=ON')
if '^mesa' in spec:
args.append(
'-DVISIT_LLVM_DIR:PATH={0}'.format(spec['llvm'].prefix))
args.append(
'-DVISIT_MESAGL_DIR:PATH={0}'.format(spec['mesa'].prefix))
if '+hdf5' in spec:
args.append(
'-DVISIT_HDF5_DIR:PATH={0}'.format(spec['hdf5'].prefix))

View file

@ -0,0 +1,12 @@
diff -u ./CMake/VTKGenerateExportHeader.cmake.orig ./CMake/VTKGenerateExportHeader.cmake
--- ./CMake/VTKGenerateExportHeader.cmake.orig 2021-11-03 14:32:17.607243000 -0700
+++ ./CMake/VTKGenerateExportHeader.cmake 2021-11-03 14:35:54.896214000 -0700
@@ -174,7 +174,7 @@
execute_process(COMMAND ${CMAKE_C_COMPILER} --version
OUTPUT_VARIABLE _gcc_version_info
ERROR_VARIABLE _gcc_version_info)
- string(REGEX MATCH "[3-9]\\.[0-9]\\.[0-9]*"
+ string(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]*"
_gcc_version "${_gcc_version_info}")
# gcc on mac just reports: "gcc (GCC) 3.3 20030304 ..." without the
# patch level, handle this here:

View file

@ -0,0 +1,12 @@
diff -u ./Rendering/OpenGL2/CMakeLists.txt.orig ./Rendering/OpenGL2/CMakeLists.txt
--- ./Rendering/OpenGL2/CMakeLists.txt.orig 2021-11-03 14:33:11.582334000 -0700
+++ ./Rendering/OpenGL2/CMakeLists.txt 2021-11-03 14:36:50.263234000 -0700
@@ -194,7 +194,7 @@
if(NOT X11_Xt_FOUND)
message(FATAL_ERROR "X11_Xt_LIB could not be found. Required for VTK X lib.")
endif()
- include_directories(${X11_INCLUDE_DIR} ${X11_Xt_INCLUDE_PATH})
+ include_directories(${X11_INCLUDE_DIR} ${X11_SM_INCLUDE_PATH} ${X11_ICE_INCLUDE_PATH} ${X11_Xt_INCLUDE_PATH})
endif()
# setup factory overrides

View file

@ -0,0 +1,14 @@
diff -u ./Wrapping/Python/CMakeLists.txt.orig ./Wrapping/Python/CMakeLists.txt
--- ./Wrapping/Python/CMakeLists.txt.orig 2021-11-03 14:33:41.413950000 -0700
+++ ./Wrapping/Python/CMakeLists.txt 2021-11-03 14:37:03.634738000 -0700
@@ -23,6 +23,10 @@
get_property(VTK_PYTHON_MODULES GLOBAL PROPERTY VTK_PYTHON_WRAPPED)
+include_directories(${X11_Xlib_INCLUDE_PATH})
+include_directories(${X11_X11_INCLUDE_PATH})
+include_directories(${X11_Xt_INCLUDE_PATH})
+
# Get the include directories for the module and all its dependencies.
macro(vtk_include_recurse module)
_vtk_module_config_recurse("${module}_PYTHON" ${module})