summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--etc/spack/defaults/packages.yaml8
-rw-r--r--var/spack/repos/builtin/packages/catalyst/package.py4
-rw-r--r--var/spack/repos/builtin/packages/freeglut/package.py45
-rw-r--r--var/spack/repos/builtin/packages/gl2ps/package.py34
-rw-r--r--var/spack/repos/builtin/packages/glew/package.py28
-rw-r--r--var/spack/repos/builtin/packages/glvis/package.py4
-rw-r--r--var/spack/repos/builtin/packages/glx/package.py38
-rw-r--r--var/spack/repos/builtin/packages/memsurfer/package.py9
-rw-r--r--var/spack/repos/builtin/packages/mesa-demos/osmesa-glut.patch26
-rw-r--r--var/spack/repos/builtin/packages/mesa-demos/package.py46
-rw-r--r--var/spack/repos/builtin/packages/mesa-glu/package.py32
-rw-r--r--var/spack/repos/builtin/packages/mesa/package.py76
-rw-r--r--var/spack/repos/builtin/packages/mesa18/package.py61
-rw-r--r--var/spack/repos/builtin/packages/opengl/package.py69
-rw-r--r--var/spack/repos/builtin/packages/osmesa/package.py38
-rw-r--r--var/spack/repos/builtin/packages/paraview/package.py9
-rw-r--r--var/spack/repos/builtin/packages/r-rgl/package.py6
-rw-r--r--var/spack/repos/builtin/packages/visit/package.py148
-rw-r--r--var/spack/repos/builtin/packages/visit/visit32-missing-link-libs.patch36
-rw-r--r--var/spack/repos/builtin/packages/vtk/package.py28
20 files changed, 418 insertions, 327 deletions
diff --git a/etc/spack/defaults/packages.yaml b/etc/spack/defaults/packages.yaml
index 71bac6f247..ead2d872c7 100644
--- a/etc/spack/defaults/packages.yaml
+++ b/etc/spack/defaults/packages.yaml
@@ -25,16 +25,17 @@ packages:
fftw-api: [fftw, amdfftw]
flame: [libflame, amdlibflame]
fuse: [libfuse]
- gl: [mesa+opengl, mesa18, opengl]
+ gl: [glx, osmesa]
glu: [mesa-glu, openglu]
- glx: [mesa+glx, mesa18+glx, opengl]
golang: [gcc]
iconv: [libiconv]
ipp: [intel-ipp]
java: [openjdk, jdk, ibm-java]
jpeg: [libjpeg-turbo, libjpeg]
lapack: [openblas, amdlibflame]
- libllvm: [llvm, llvm-amdgpu]
+ libglx: [mesa+glx, mesa18+glx]
+ libllvm: [llvm]
+ libosmesa: [mesa+osmesa, mesa18+osmesa]
lua-lang: [lua, lua-luajit-openresty, lua-luajit]
luajit: [lua-luajit-openresty, lua-luajit]
mariadb-client: [mariadb-c-client, mariadb]
@@ -44,7 +45,6 @@ packages:
mysql-client: [mysql, mariadb-c-client]
opencl: [pocl]
onedal: [intel-oneapi-dal]
- osmesa: [mesa+osmesa, mesa18+osmesa]
pbs: [openpbs, torque]
pil: [py-pillow]
pkgconfig: [pkgconf, pkg-config]
diff --git a/var/spack/repos/builtin/packages/catalyst/package.py b/var/spack/repos/builtin/packages/catalyst/package.py
index 6018b703f5..3f4a54f448 100644
--- a/var/spack/repos/builtin/packages/catalyst/package.py
+++ b/var/spack/repos/builtin/packages/catalyst/package.py
@@ -79,8 +79,8 @@ class Catalyst(CMakePackage):
depends_on('py-mpi4py', when='+python3', type=('build', 'run'))
depends_on('gl@3.2:', when='+rendering')
- depends_on('osmesa', when='+rendering+osmesa')
- depends_on('glx', when='+rendering~osmesa')
+ depends_on('osmesa', when='+osmesa')
+ depends_on('glx', when='~osmesa')
depends_on('cmake@3.3:', type='build')
@when('@5.5.0:5.5.2')
diff --git a/var/spack/repos/builtin/packages/freeglut/package.py b/var/spack/repos/builtin/packages/freeglut/package.py
index 41831151c1..ea80ff9ea7 100644
--- a/var/spack/repos/builtin/packages/freeglut/package.py
+++ b/var/spack/repos/builtin/packages/freeglut/package.py
@@ -17,15 +17,23 @@ class Freeglut(CMakePackage, SourceforgePackage):
version('3.2.1', sha256='d4000e02102acaf259998c870e25214739d1f16f67f99cb35e4f46841399da68')
version('3.0.0', sha256='2a43be8515b01ea82bcfa17d29ae0d40bd128342f0930cd1f375f1ff999f76a2')
- depends_on('pkgconfig', type='build')
+ variant('shared', default=True, description='Build shared libs instead of static')
+
depends_on('gl')
depends_on('glu')
- depends_on('libx11')
- depends_on('libxrandr')
- depends_on('libxi')
- depends_on('libxxf86vm')
- depends_on('xrandr')
- depends_on('inputproto')
+
+ # FreeGLUT does not support OSMesa
+ conflicts('osmesa')
+
+ # FreeGLUT only works with GLX on linux (cray is also linux)
+ with when('platform=linux'):
+ depends_on('glx')
+ depends_on('libx11')
+ depends_on('libxi')
+ with when('platform=cray'):
+ depends_on('glx')
+ depends_on('libx11')
+ depends_on('libxi')
# freeglut 3.2.1 fails to build with -fno-common (default with newer compilers)
# see https://bugs.gentoo.org/705840 and https://github.com/dcnieho/FreeGLUT/pull/76
@@ -40,12 +48,19 @@ class Freeglut(CMakePackage, SourceforgePackage):
when="@3.2.1 %aocc@2.3.0:")
def cmake_args(self):
- return [
- '-DFREEGLUT_BUILD_DEMOS=OFF',
- '-DOPENGL_gl_LIBRARY=' + self.spec['gl'].libs[0],
- '-DOPENGL_glu_LIBRARY=' + self.spec['glu'].libs[0],
- '-DX11_X11_LIB=' + self.spec['libx11'].libs[0],
- '-DX11_Xrandr_LIB=' + self.spec['libxrandr'].libs[0],
- '-DX11_Xi_LIB=' + self.spec['libxi'].libs[0],
- '-DX11_Xxf86vm_LIB=' + self.spec['libxxf86vm'].libs[0],
+ spec = self.spec
+ args = [
+ self.define('FREEGLUT_BUILD_DEMOS', False),
+ self.define('FREEGLUT_GLES', False),
+ self.define('FREEGLUT_WAYLAND', False),
+ self.define('FREEGLUT_BUILD_SHARED_LIBS', '+shared' in spec),
+ self.define('FREEGLUT_BUILD_STATIC_LIBS', '~shared' in spec),
+ self.define('OpenGL_GL_PREFERENCE', 'LEGACY'),
+ self.define('OPENGL_INCLUDE_DIR', spec['gl'].headers.directories[0]),
+ self.define('OPENGL_gl_LIBRARY', spec['gl'].libs[0]),
+ self.define('OPENGL_opengl_LIBRARY', 'IGNORE'),
+ self.define('OPENGL_glx_LIBRARY', 'IGNORE'),
+ self.define('OPENGL_egl_LIBRARY', 'IGNORE'),
]
+
+ return args
diff --git a/var/spack/repos/builtin/packages/gl2ps/package.py b/var/spack/repos/builtin/packages/gl2ps/package.py
index f11552debb..1a42a06d5f 100644
--- a/var/spack/repos/builtin/packages/gl2ps/package.py
+++ b/var/spack/repos/builtin/packages/gl2ps/package.py
@@ -22,40 +22,30 @@ class Gl2ps(CMakePackage):
variant('doc', default=False,
description='Generate documentation using pdflatex')
- depends_on('cmake@2.4:', type='build')
+ depends_on('cmake@2.8.6:', type='build')
- # X11 libraries:
- depends_on('freeglut')
depends_on('gl')
- depends_on('libice')
- depends_on('libsm')
- depends_on('libxau')
- depends_on('libxdamage')
- depends_on('libxdmcp')
- depends_on('libxext')
- depends_on('libxfixes')
- depends_on('libxi')
- depends_on('libxmu')
- depends_on('libxt')
- depends_on('libxxf86vm')
- depends_on('libxcb')
- depends_on('libdrm')
- depends_on('expat')
depends_on('libpng', when='+png')
depends_on('zlib', when='+zlib')
depends_on('texlive', type='build', when='+doc')
- def variant_to_bool(self, variant):
- return 'ON' if variant in self.spec else 'OFF'
-
def cmake_args(self):
+ spec = self.spec
options = [
+ self.define('CMAKE_DISABLE_FIND_PACKAGE_GLUT', True),
self.define_from_variant('ENABLE_PNG', 'png'),
self.define_from_variant('ENABLE_ZLIB', 'zlib'),
+ self.define('OpenGL_GL_PREFERENCE', 'LEGACY'),
+ self.define('OPENGL_INCLUDE_DIR', spec['gl'].headers.directories[0]),
+ self.define('OPENGL_gl_LIBRARY', spec['gl'].libs[0]),
+ self.define('OPENGL_opengl_LIBRARY', 'IGNORE'),
+ self.define('OPENGL_glx_LIBRARY', 'IGNORE'),
+ self.define('OPENGL_egl_LIBRARY', 'IGNORE'),
+ self.define('OPENGL_glu_LIBRARY', 'IGNORE'),
]
- if '~doc' in self.spec:
+ if '~doc' in spec:
# Make sure we don't look.
- options.append('-DCMAKE_DISABLE_FIND_PACKAGE_LATEX:BOOL=ON')
+ options.append(self.define('CMAKE_DISABLE_FIND_PACKAGE_LATEX', True))
return options
diff --git a/var/spack/repos/builtin/packages/glew/package.py b/var/spack/repos/builtin/packages/glew/package.py
index 8d47dd9eeb..c31a4e0e25 100644
--- a/var/spack/repos/builtin/packages/glew/package.py
+++ b/var/spack/repos/builtin/packages/glew/package.py
@@ -3,6 +3,7 @@
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+import sys
from spack.package import *
@@ -18,18 +19,41 @@ class Glew(CMakePackage):
version('2.1.0', sha256='04de91e7e6763039bc11940095cd9c7f880baba82196a7765f727ac05a993c95')
version('2.0.0', sha256='c572c30a4e64689c342ba1624130ac98936d7af90c3103f9ce12b8a0c5736764')
+ variant('gl',
+ default='glx' if sys.platform.startswith('linux') else 'other',
+ values=('glx', 'osmesa', 'other'), multi=False,
+ description='The OpenGL provider to use')
+ conflicts('osmesa', when='gl=glx')
+ conflicts('osmesa', when='gl=other')
+ conflicts('glx', when='gl=osmesa')
+ conflicts('glx', when='gl=other')
+
depends_on('gl')
- depends_on('glx', when='platform=linux')
+ depends_on('osmesa', when='gl=osmesa')
+ depends_on('glx', when='gl=glx')
+ depends_on('libx11', when='gl=glx')
+ depends_on('xproto', when='gl=glx')
# glu is already forcibly disabled in the CMakeLists.txt. This prevents
# it from showing up in the .pc file
patch('remove-pkgconfig-glu-dep.patch')
def cmake_args(self):
+ spec = self.spec
args = [
self.define('BUILD_UTILS', True),
self.define('GLEW_REGAL', False),
- self.define('GLEW_OSMESA', False),
+ self.define('GLEW_EGL', False),
+ self.define('OpenGL_GL_PREFERENCE', 'LEGACY'),
+ self.define('OPENGL_INCLUDE_DIR', spec['gl'].headers.directories[0]),
+ self.define('OPENGL_gl_LIBRARY', spec['gl'].libs[0]),
+ self.define('OPENGL_opengl_LIBRARY', 'IGNORE'),
+ self.define('OPENGL_glx_LIBRARY', 'IGNORE'),
+ self.define('OPENGL_egl_LIBRARY', 'IGNORE'),
+ self.define('OPENGL_glu_LIBRARY', 'IGNORE'),
+ self.define('GLEW_OSMESA', 'gl=osmesa' in spec),
+ self.define('GLEW_X11', 'gl=glx' in spec),
+ self.define('CMAKE_DISABLE_FIND_PACKAGE_X11', 'gl=glx' not in spec),
]
return args
diff --git a/var/spack/repos/builtin/packages/glvis/package.py b/var/spack/repos/builtin/packages/glvis/package.py
index fe27eddb95..da47ea1a7d 100644
--- a/var/spack/repos/builtin/packages/glvis/package.py
+++ b/var/spack/repos/builtin/packages/glvis/package.py
@@ -124,7 +124,7 @@ class Glvis(MakefilePackage):
'SDL_DIR={0}'.format(spec['sdl2'].prefix),
'GLEW_DIR={0}'.format(spec['glew'].prefix),
'FREETYPE_DIR={0}'.format(spec['freetype'].prefix),
- 'OPENGL_DIR={0}'.format(spec['gl'].prefix)]
+ 'OPENGL_DIR={0}'.format(spec['gl'].home)]
if 'screenshots=png' in spec:
args += ['GLVIS_USE_LIBPNG=YES', 'GLVIS_USE_LIBTIFF=NO']
@@ -140,7 +140,7 @@ class Glvis(MakefilePackage):
args += ['GL_OPTS=-I{0} -I{1} -I{2}'.format(
spec['libx11'].prefix.include,
- spec['gl'].prefix.include,
+ spec['gl'].home.include,
spec['glu'].prefix.include),
'GL_LIBS={0}'.format(gl_libs.ld_flags)]
diff --git a/var/spack/repos/builtin/packages/glx/package.py b/var/spack/repos/builtin/packages/glx/package.py
new file mode 100644
index 0000000000..bd145b71cb
--- /dev/null
+++ b/var/spack/repos/builtin/packages/glx/package.py
@@ -0,0 +1,38 @@
+# Copyright 2013-2022 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.package import *
+
+
+class Glx(BundlePackage):
+ """Shim package for the GLX library."""
+ homepage = 'https://www.khronos.org/registry/OpenGL/index_gl.php'
+
+ version('1.4')
+
+ depends_on('libglx')
+ provides('gl@4.5')
+
+ @property
+ def home(self):
+ return self.spec['libglx'].home
+
+ @property
+ def headers(self):
+ return self.spec['libglx'].headers
+
+ @property
+ def libs(self):
+ return self.spec['libglx'].libs
+
+ @property
+ def gl_headers(self):
+ return find_headers('GL/gl',
+ root=self.gl_home,
+ recursive=True)
+
+ @property
+ def gl_libs(self):
+ return self.spec['libglx'].libs
diff --git a/var/spack/repos/builtin/packages/memsurfer/package.py b/var/spack/repos/builtin/packages/memsurfer/package.py
index 058e122d41..b159a3445e 100644
--- a/var/spack/repos/builtin/packages/memsurfer/package.py
+++ b/var/spack/repos/builtin/packages/memsurfer/package.py
@@ -36,12 +36,9 @@ class Memsurfer(PythonPackage):
depends_on('cgal@4.13 +shared~core~demos~imageio')
# vtk needs to know whether to build with mesa or opengl
- vtk_conf = '~ffmpeg~mpi+opengl2~qt~xdmf+python'
- depends_on('vtk@8.1.2 ' + vtk_conf + ' ~osmesa', when='~osmesa')
- depends_on('vtk@8.1.2 ' + vtk_conf + ' +osmesa', when='+osmesa')
-
- # needed only to resolve the conflict between the default and netcdf's spec
- depends_on('hdf5 +hl')
+ depends_on('vtk@8.1.2 ~ffmpeg~mpi+opengl2~qt~xdmf+python')
+ depends_on('vtk ~osmesa', when='~osmesa')
+ depends_on('vtk +osmesa', when='+osmesa')
# memsurfer's setup needs path to these deps to build extension modules
def setup_build_environment(self, env):
diff --git a/var/spack/repos/builtin/packages/mesa-demos/osmesa-glut.patch b/var/spack/repos/builtin/packages/mesa-demos/osmesa-glut.patch
new file mode 100644
index 0000000000..e0f0032eb1
--- /dev/null
+++ b/var/spack/repos/builtin/packages/mesa-demos/osmesa-glut.patch
@@ -0,0 +1,26 @@
+diff --git a/src/osdemos/osdemo16.c b/src/osdemos/osdemo16.c
+index f1bfccef..4b7a765d 100644
+--- a/src/osdemos/osdemo16.c
++++ b/src/osdemos/osdemo16.c
+@@ -12,7 +12,7 @@
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include "GL/osmesa.h"
+-#include "glut_wrap.h"
++#include "GL/glu.h"
+
+
+ #define SAVE_TARGA
+diff --git a/src/osdemos/osdemo32.c b/src/osdemos/osdemo32.c
+index db01db6d..3411e34c 100644
+--- a/src/osdemos/osdemo32.c
++++ b/src/osdemos/osdemo32.c
+@@ -11,7 +11,7 @@
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include "GL/osmesa.h"
+-#include "glut_wrap.h"
++#include "GL/glu.h"
+
+
+ #define SAVE_TARGA
diff --git a/var/spack/repos/builtin/packages/mesa-demos/package.py b/var/spack/repos/builtin/packages/mesa-demos/package.py
index 6e6f2cbfc6..eaa8f4b248 100644
--- a/var/spack/repos/builtin/packages/mesa-demos/package.py
+++ b/var/spack/repos/builtin/packages/mesa-demos/package.py
@@ -11,18 +11,21 @@ class MesaDemos(AutotoolsPackage):
"""This package provides some demo applications for testing Mesa."""
homepage = "https://www.mesa3d.org"
- url = "https://github.com/freedesktop/mesa-demos/archive/mesa-demos-8.3.0.tar.gz"
+ url = "https://gitlab.freedesktop.org/mesa/demos/-/archive/mesa-demos-8.4.0/demos-mesa-demos-8.4.0.tar.gz"
+ version('8.4.0', sha256='e9d235e6dad69d6b00877bf07e6d1859e368c0873e5401ec68a6ddb43375e900')
version('8.3.0', sha256='9bc1b37f4fc7bfc3f818f2d3851ffde28e8167ef11dca87f4781e9ef6206901f')
version('8.2.0', sha256='5a9f71b815d968d0c3b77edfcc3782d0211f8520b00da9e554ccfed80c8889f6')
version('8.1.0', sha256='cc5826105355830208c90047fc38c5b09fa3ab0045366e7e859104935b00b76d')
- variant('osmesa', default=False, description="Enable the OSMesa frontend.")
-
- is_linux = sys.platform.startswith('linux')
- variant('glx', default=is_linux, description="Enable the GLX frontend.")
-
- conflicts('+osmesa', when='+glx')
+ variant('gl',
+ default='glx' if sys.platform.startswith('linux') else 'osmesa',
+ values=('glx', 'osmesa', 'other'), multi=False,
+ description='The OpenGL provider to use')
+ conflicts('osmesa', when='gl=glx')
+ conflicts('osmesa', when='gl=other')
+ conflicts('glx', when='gl=osmesa')
+ conflicts('glx', when='gl=other')
depends_on('autoconf', type='build')
depends_on('automake', type='build')
@@ -31,17 +34,19 @@ class MesaDemos(AutotoolsPackage):
depends_on('pkgconfig', type='build')
depends_on('gl')
- depends_on('glx', when='+glx')
- depends_on('libx11', when='+glx')
- depends_on('libxext', when='+glx')
- depends_on('osmesa', when='+osmesa')
-
- depends_on('glu', when='~osmesa')
- depends_on('mesa-glu+osmesa', when='+osmesa')
- depends_on('freeglut')
+ depends_on('osmesa', when='gl=osmesa')
+ depends_on('glx', when='gl=glx')
+ depends_on('libx11', when='gl=glx')
+ depends_on('libxext', when='gl=glx')
+
+ depends_on('glu')
depends_on('glew@1.5.4:')
+ # OSMesa demos don't actually use glut
+ patch('osmesa-glut.patch')
+
def configure_args(self):
+ spec = self.spec
args = [
'--disable-egl',
'--disable-gles1',
@@ -52,8 +57,15 @@ class MesaDemos(AutotoolsPackage):
'--disable-gbm',
'--disable-freetype2',
'--disable-rbug',
- self.enable_or_disable('osmesa'),
- self.enable_or_disable('x11', variant='glx'),
+ '--without-glut',
]
+ if 'gl=glx' in spec:
+ args.append('--enable-x11')
+ else:
+ args.append('--disable-x11')
+ if 'gl=osmesa' in spec:
+ args.append('--enable-osmesa')
+ else:
+ args.append('--disable-osmesa')
return args
diff --git a/var/spack/repos/builtin/packages/mesa-glu/package.py b/var/spack/repos/builtin/packages/mesa-glu/package.py
index cf51236e73..d53553c848 100644
--- a/var/spack/repos/builtin/packages/mesa-glu/package.py
+++ b/var/spack/repos/builtin/packages/mesa-glu/package.py
@@ -3,6 +3,8 @@
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+import sys
+
from spack.package import *
@@ -16,25 +18,31 @@ class MesaGlu(AutotoolsPackage):
version('9.0.1', sha256='f6f484cfcd51e489afe88031afdea1e173aa652697e4c19ddbcb8260579a10f7')
version('9.0.0', sha256='4387476a1933f36fec1531178ea204057bbeb04cc2d8396c9ea32720a1f7e264')
- variant('osmesa', default=False, description='Enable OSMesa instead of libGL')
+ variant('gl',
+ default='glx' if sys.platform.startswith('linux') else 'other',
+ values=('glx', 'osmesa', 'other'), multi=False,
+ description='The OpenGL provider to use')
+ conflicts('osmesa', when='gl=glx')
+ conflicts('osmesa', when='gl=other')
+ conflicts('glx', when='gl=osmesa')
+ conflicts('glx', when='gl=other')
depends_on('gl@3:')
- depends_on('osmesa', when='+osmesa')
+ depends_on('osmesa', when='gl=osmesa')
+ depends_on('glx', when='gl=glx')
- # Since pacakges like mesa provide both gl and osmesa this will prevent
- # consuming packages from getting a glu tied to a differnt gl library
- provides('glu@1.3', when='~osmesa')
+ provides('glu@1.3')
def configure_args(self):
- args = []
- args.extend(self.enable_or_disable('osmesa'))
+ args = ['--disable-libglvnd']
+
+ if 'gl=osmesa' in self.spec:
+ args.append('--enable-osmesa')
+ else:
+ args.append('--disable-osmesa')
return args
@property
def libs(self):
- for dir in ['lib64', 'lib']:
- libs = find_libraries('libGLU', join_path(self.prefix, dir),
- shared=True, recursive=False)
- if libs:
- return libs
+ return find_libraries('libGLU', self.prefix, recursive=True)
diff --git a/var/spack/repos/builtin/packages/mesa/package.py b/var/spack/repos/builtin/packages/mesa/package.py
index c42bfa9bb6..f0b7787732 100644
--- a/var/spack/repos/builtin/packages/mesa/package.py
+++ b/var/spack/repos/builtin/packages/mesa/package.py
@@ -18,8 +18,9 @@ class Mesa(MesonPackage):
git = "https://gitlab.freedesktop.org/mesa/mesa.git"
url = "https://archive.mesa3d.org/mesa-20.2.1.tar.xz"
- version('master', tag='master')
- version('22.0.2', sha256='df4fa560dcce6680133067cd15b0505fc424ca703244ce9ab247c74d2fab6885', preferred=True)
+ version('main', tag='main')
+ version('22.1.2', sha256='df4fa560dcce6680133067cd15b0505fc424ca703244ce9ab247c74d2fab6885', preferred=True)
+ version('22.0.2', sha256='df4fa560dcce6680133067cd15b0505fc424ca703244ce9ab247c74d2fab6885')
version('21.3.8', sha256='e70d273bdc53a4e931871bb5550ba3900e6a3deab2fff64184107c33e92d9da7')
version('21.3.7', sha256='b4fa9db7aa61bf209ef0b40bef83080999d86ad98df8b8b4fada7c128a1efc3d')
version('21.3.1', sha256='2b0dc2540cb192525741d00f706dbc4586349185dafc65729c7fda0800cc474d')
@@ -71,10 +72,12 @@ class Mesa(MesonPackage):
)
# Front ends
- variant('osmesa', default=True, description="Enable the OSMesa frontend.")
+ variant('osmesa', default=True, description="Enable the OSMesa frontend.",
+ when='+opengl')
is_linux = sys.platform.startswith('linux')
- variant('glx', default=is_linux, description="Enable the GLX frontend.")
+ variant('glx', default=is_linux, description="Enable the GLX frontend.",
+ when='+opengl')
# TODO: effectively deal with EGL. The implications of this have not been
# worked through yet
@@ -89,14 +92,16 @@ class Mesa(MesonPackage):
variant('opengles', default=False, description="Enable OpenGL ES support.")
# Provides
- provides('gl@4.5', when='+opengl')
- provides('glx@1.4', when='+glx')
+ provides('libglx', when='+glx')
+
# provides('egl@1.5', when='+egl')
- provides('osmesa', when='+osmesa')
+ provides('libosmesa', when='+osmesa')
# Variant dependencies
- depends_on('libllvm@6:', when='+llvm')
- depends_on('libllvm@:13', when='@:21 +llvm')
+ with when('+llvm'):
+ depends_on('libllvm@6:')
+ depends_on('libllvm@:11', when='@:20')
+ depends_on('libllvm@:12', when='@:21')
depends_on('libx11', when='+glx')
depends_on('libxcb', when='+glx')
depends_on('libxext', when='+glx')
@@ -119,11 +124,10 @@ class Mesa(MesonPackage):
# OpenGL ES requires OpenGL
conflicts('~opengl +opengles')
- # https://gitlab.freedesktop.org/mesa/mesa/-/issues/5455
- conflicts('llvm@13.0.0:', when='@:21.3.1 +llvm')
-
# requires native to be added to llvm_modules when using gallium swrast
- patch('https://cgit.freedesktop.org/mesa/mesa/patch/meson.build?id=054dd668a69acc70d47c73abe4646e96a1f23577', sha256='36096a178070e40217945e12d542dfe80016cb897284a01114d616656c577d73', when='@21.0.0:21.0.3')
+ patch('https://cgit.freedesktop.org/mesa/mesa/patch/meson.build?id=054dd668a69acc70d47c73abe4646e96a1f23577',
+ sha256='36096a178070e40217945e12d542dfe80016cb897284a01114d616656c577d73',
+ when='@21.0.0:21.0.3')
patch('mesa_check_llvm_version_suffix.patch', when='@21.2.3:')
@@ -260,43 +264,29 @@ class Mesa(MesonPackage):
return args
@property
- def libs(self):
- spec = self.spec
- libs_to_seek = set()
-
- if '+osmesa' in spec:
- libs_to_seek.add('libOSMesa')
-
- if '+glx' in spec:
- libs_to_seek.add('libGL')
-
- if '+opengl' in spec:
- libs_to_seek.add('libGL')
-
- if '+opengles' in spec:
- libs_to_seek.add('libGLES')
- libs_to_seek.add('libGLES2')
-
- if libs_to_seek:
- return find_libraries(list(libs_to_seek),
- root=self.spec.prefix,
- recursive=True)
- return LibraryList()
+ def libglx_headers(self):
+ return find_headers('GL/glx',
+ root=self.spec.prefix.include,
+ recursive=False)
@property
- def osmesa_libs(self):
- return find_libraries('libOSMesa',
+ def libglx_libs(self):
+ return find_libraries('libGL',
root=self.spec.prefix,
recursive=True)
@property
- def glx_libs(self):
- return find_libraries('libGL',
- root=self.spec.prefix,
- recursive=True)
+ def libosmesa_headers(self):
+ return find_headers('GL/osmesa',
+ root=self.spec.prefix.include,
+ recursive=False)
@property
- def gl_libs(self):
- return find_libraries('libGL',
+ def libosmesa_libs(self):
+ if 'platform=windows' in self.spec:
+ lib_name = 'osmesa'
+ else:
+ lib_name = 'libOSMesa'
+ return find_libraries(lib_name,
root=self.spec.prefix,
recursive=True)
diff --git a/var/spack/repos/builtin/packages/mesa18/package.py b/var/spack/repos/builtin/packages/mesa18/package.py
index 9848f9659b..aadfc6e960 100644
--- a/var/spack/repos/builtin/packages/mesa18/package.py
+++ b/var/spack/repos/builtin/packages/mesa18/package.py
@@ -64,9 +64,8 @@ class Mesa18(AutotoolsPackage):
variant('opengles', default=False, description="Enable OpenGL ES support.")
# Provides
- provides('gl@4.5')
- provides('glx@1.4', when='+glx')
- provides('osmesa', when='+osmesa')
+ provides('libglx', when='+glx')
+ provides('libosmesa', when='+osmesa')
# Variant dependencies
depends_on('libllvm@6:10', when='+llvm')
@@ -189,43 +188,49 @@ class Mesa18(AutotoolsPackage):
def libs(self):
spec = self.spec
libs_to_seek = set()
-
- if '+osmesa' in spec:
- libs_to_seek.add('libOSMesa')
-
- if '+glx' in spec:
+ if 'platform=windows' in spec:
+ libs_to_seek.add('opengl32')
+ if '+osmesa' in spec:
+ libs_to_seek.add('osmesa')
+ else:
libs_to_seek.add('libGL')
-
- libs_to_seek.add('libGL')
-
+ if '+osmesa' in spec:
+ libs_to_seek.add('libOSMesa')
+ if '+glx' in spec:
+ libs_to_seek.add('libGL')
if '+opengles' in spec:
- libs_to_seek.add('libGLES')
- libs_to_seek.add('libGLES2')
+ libs_to_seek.add('libGLESv1_CM')
+ libs_to_seek.add('libGLESv2')
- if libs_to_seek:
- return find_libraries(list(libs_to_seek),
- root=self.spec.prefix,
- shared=True,
- recursive=True)
- return LibraryList()
-
- @property
- def osmesa_libs(self):
- return find_libraries('libOSMesa',
+ return find_libraries(list(libs_to_seek),
root=self.spec.prefix,
shared=True,
recursive=True)
@property
- def glx_libs(self):
+ def libglx_headers(self):
+ return find_headers('GL/glx',
+ root=self.spec.prefix.include,
+ recursive=False)
+
+ @property
+ def libglx_libs(self):
return find_libraries('libGL',
root=self.spec.prefix,
- shared=True,
recursive=True)
@property
- def gl_libs(self):
- return find_libraries('libGL',
+ def libosmesa_headers(self):
+ return find_headers('GL/osmesa',
+ root=self.spec.prefix.include,
+ recursive=False)
+
+ @property
+ def libosmesa_libs(self):
+ if 'platform=windows' in self.spec:
+ lib_name = 'osmesa'
+ else:
+ lib_name = 'libOSMesa'
+ return find_libraries(lib_name,
root=self.spec.prefix,
- shared=True,
recursive=True)
diff --git a/var/spack/repos/builtin/packages/opengl/package.py b/var/spack/repos/builtin/packages/opengl/package.py
index 9de2e6e2dd..0efa6324d5 100644
--- a/var/spack/repos/builtin/packages/opengl/package.py
+++ b/var/spack/repos/builtin/packages/opengl/package.py
@@ -14,38 +14,24 @@ class Opengl(BundlePackage):
homepage = "https://www.opengl.org/"
- # Supported OpenGL versions:
- # 1.0 1.1 1.2 1.3 1.4 1.5
- # 2.0 2.1
- # 3.0 3.1 3.2 3.3
- # 4.0 4.1 4.2 4.3 4.4 4.5 4.6
- for ver_major in [
- (1, [0, 1, 2, 3, 4, 5]),
- (2, [0, 1]),
- (3, [0, 1, 2, 3]),
- (4, [0, 1, 2, 3, 4, 5]),
- ]:
- for ver_minor in ver_major[1]:
- ver = "{0}.{1}".format(ver_major[0], ver_minor)
- version(ver)
- provides("gl@:{0}".format(ver), when="@{0}".format(ver))
-
- # The last version needs to be open-ended
- version('4.6')
- provides("gl@:4.6", when="@4.6:")
+ version('4.5')
# This should really be when='platform=linux' but can't because of a
# current bug in when and how ArchSpecs are constructed
- if sys.platform == "linux":
- provides("glx@1.4")
-
- executables = ["^glxinfo$"]
+ if sys.platform.startswith('linux'):
+ provides('libglx')
+ executables = ['^glxinfo$']
+ else: # windows and mac
+ provides('gl@4.5')
@classmethod
def determine_version(cls, exe):
- output = Executable(exe)(output=str, error=str)
- match = re.search(r"OpenGL version string: (\S+)", output)
- return match.group(1) if match else None
+ if exe:
+ output = Executable(exe)(output=str, error=str)
+ match = re.search(r"OpenGL version string: (\S+)", output)
+ return match.group(1) if match else None
+ else:
+ return None
# Override the fetcher method to throw a useful error message;
# fixes GitHub issue (#7061) in which this package threw a
@@ -98,20 +84,27 @@ class Opengl(BundlePackage):
@property
def libs(self):
- if "platform=windows" in self.spec:
- return find_libraries("opengl32", self.prefix, shared=True, recursive=True)
- else:
- return find_libraries("libGL", self.prefix, shared=True, recursive=True)
+ return self.gl_libs
@property
- def glx_libs(self):
- return find_libraries("libGL",
- root=self.spec.prefix,
- recursive=True)
+ def gl_headers(self):
+ if 'platform=darwin':
+ header_name = 'OpenGL/gl.h'
+ else:
+ header_name = 'GL/gl.h'
+ return find_headers(header_name,
+ root=self.prefix,
+ recursive=True)
@property
def gl_libs(self):
- if "platform=windows" in self.spec:
- return find_libraries("opengl32", self.prefix, shared=True, recursive=True)
- else:
- return find_libraries("libGL", self.prefix, shared=True, recursive=True)
+ spec = self.spec
+ if 'platform=windows' in spec:
+ lib_name = 'opengl32'
+ elif 'platform=darwin' in spec:
+ lib_name = 'libOpenGL'
+ else: # linux and cray
+ lib_name = 'libGL'
+ return find_libraries(lib_name,
+ root=self.prefix,
+ recursive=True)
diff --git a/var/spack/repos/builtin/packages/osmesa/package.py b/var/spack/repos/builtin/packages/osmesa/package.py
new file mode 100644
index 0000000000..7ceecfcf86
--- /dev/null
+++ b/var/spack/repos/builtin/packages/osmesa/package.py
@@ -0,0 +1,38 @@
+# Copyright 2013-2022 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.package import *
+
+
+class Osmesa(BundlePackage):
+ """Shim package for the OSMesa OpenGL library."""
+ homepage = 'https://www.mesa3d.org'
+
+ version('11.2.0')
+
+ depends_on('libosmesa')
+ provides('gl@4.5')
+
+ @property
+ def home(self):
+ return self.spec['libosmesa'].home
+
+ @property
+ def headers(self):
+ return self.spec['libosmesa'].headers
+
+ @property
+ def libs(self):
+ return self.spec['libosmesa'].libs
+
+ @property
+ def gl_headers(self):
+ return find_headers('GL/gl',
+ root=self.gl_home,
+ recursive=True)
+
+ @property
+ def gl_libs(self):
+ return self.spec['libosmesa'].libs
diff --git a/var/spack/repos/builtin/packages/paraview/package.py b/var/spack/repos/builtin/packages/paraview/package.py
index 289a09ac49..f4e6e81734 100644
--- a/var/spack/repos/builtin/packages/paraview/package.py
+++ b/var/spack/repos/builtin/packages/paraview/package.py
@@ -150,10 +150,13 @@ class Paraview(CMakePackage, CudaPackage):
depends_on('qt~opengl', when='@5.3.0:+qt~opengl2')
depends_on('qt@:4', when='@:5.2.0+qt')
- depends_on('osmesa', when='+osmesa')
depends_on('gl@3.2:', when='+opengl2')
depends_on('gl@1.2:', when='~opengl2')
- depends_on('libxt', when='~osmesa platform=linux')
+ depends_on('glew')
+ depends_on('osmesa', when='+osmesa')
+ for p in ['linux', 'cray']:
+ depends_on('glx', when='~osmesa platform={}'.format(p))
+ depends_on('libxt', when='~osmesa platform={}'.format(p))
conflicts('+qt', when='+osmesa')
depends_on('bzip2')
@@ -388,7 +391,6 @@ class Paraview(CMakePackage, CudaPackage):
'-DPARAVIEW_ENABLE_EXAMPLES:BOOL=%s' % variant_bool(
'+examples'),
'-DVTK_MODULE_USE_EXTERNAL_ParaView_cgns=OFF',
- '-DVTK_MODULE_USE_EXTERNAL_VTK_glew=OFF',
'-DVTK_MODULE_USE_EXTERNAL_VTK_gl2ps=OFF',
'-DVTK_MODULE_USE_EXTERNAL_VTK_libharu=OFF',
'-DVTK_MODULE_USE_EXTERNAL_VTK_utf8=OFF'])
@@ -401,7 +403,6 @@ class Paraview(CMakePackage, CudaPackage):
'-DVTK_USE_SYSTEM_LIBRARIES:BOOL=ON',
'-DVTK_USE_SYSTEM_CGNS:BOOL=OFF',
'-DVTK_USE_SYSTEM_DIY2:BOOL=OFF',
- '-DVTK_USE_SYSTEM_GLEW:BOOL=OFF',
'-DVTK_USE_SYSTEM_GL2PS:BOOL=OFF',
'-DVTK_USE_SYSTEM_ICET:BOOL=OFF',
'-DVTK_USE_SYSTEM_LIBHARU:BOOL=OFF',
diff --git a/var/spack/repos/builtin/packages/r-rgl/package.py b/var/spack/repos/builtin/packages/r-rgl/package.py
index 3860fb7491..61eb55f5e2 100644
--- a/var/spack/repos/builtin/packages/r-rgl/package.py
+++ b/var/spack/repos/builtin/packages/r-rgl/package.py
@@ -52,7 +52,7 @@ class RRgl(RPackage):
def configure_args(self):
args = ['--x-includes=%s' % self.spec['libx11'].prefix.include,
'--x-libraries=%s' % self.spec['libx11'].prefix.lib,
- '--with-gl-includes=%s' % self.spec['gl'].prefix.include,
- '--with-gl-libraries=%s' % self.spec['gl'].prefix.lib,
- '--with-gl-prefix=%s' % self.spec['gl'].prefix]
+ '--with-gl-includes=%s' % self.spec['gl'].headers.directories[0],
+ '--with-gl-libraries=%s' % self.spec['gl'].libs.directories[0],
+ '--with-gl-prefix=%s' % self.spec['gl'].home]
return args
diff --git a/var/spack/repos/builtin/packages/visit/package.py b/var/spack/repos/builtin/packages/visit/package.py
index d46c1b16b3..c54b320366 100644
--- a/var/spack/repos/builtin/packages/visit/package.py
+++ b/var/spack/repos/builtin/packages/visit/package.py
@@ -10,19 +10,7 @@ from spack.package import *
class Visit(CMakePackage):
"""VisIt is an Open Source, interactive, scalable, visualization,
- animation and analysis tool. See comments in VisIt's package.py
- for tips about building VisIt with spack. Building VisIt with
- Spack is still experimental and many standard features are likely
- disabled
- LINUX-------------------------------------------------------------------
- spack install visit ^python+shared ^glib@2.56.3 ^py-setuptools@44.1.0
- LINUX-W/O-OPENGL--------------------------------------------------------
- spack install visit ^python+shared ^glib@2.56.3 ^py-setuptools@44.1.0 \\
- ^mesa+opengl
- MACOS-------------------------------------------------------------------
- spack install visit ^python+shared ^glib@2.56.3 ^py-setuptools@44.1.0 \\
- ^qt~framework
-
+ animation and analysis tool.
"""
############################
# Suggestions for building:
@@ -92,97 +80,12 @@ class Visit(CMakePackage):
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')
+
# Exactly one of 'gui' or 'osmesa' has to be enabled
conflicts('+gui', when='+osmesa')
- #############################################
- # Full List of dependencies from build_visit
- #############################################
- # cyrush note:
- # I added these here to give folks details
- # to help eventually build up to full
- # support for visit
- #############################################
- # =====================================
- # core:
- # =====================================
- # cmake (build)
- # vtk
- # qt
- # qwt
- # python
- # mpi
- #
- # =====================================
- # rendering (optional):
- # =====================================
- # icet
- # vtk-m
- # vtk-h
- # llvm
- # mesagl
- # osmesa
- # tbb
- # embree
- # ispc
- # ospray
- #
- # =====================================
- # python modules:
- # =====================================
- # numpy
- # pillow
- # mpi4py
- # seedme
- # sphinx (build, docs)
- # sphinx rtd theme (build, docs)
- # pyqt (visit support deprecated)
- # pyside (note: we want pyside 2)
- #
- # =====================================
- # testing related:
- # =====================================
- # p7zip (build, test)
- #
- # =====================================
- # io libs:
- # =====================================
- # adios
- # adios2
- # advio
- # boost
- # boxlib
- # cfitsio
- # cgns
- # conduit
- # damaris
- # fastbit
- # fastquery
- # gdal
- # h5part
- # hdf4
- # hdf5
- # mdsplus
- # mfem
- # mili
- # moab
- # mxml
- # nektarpp
- # netcdf
- # openexr
- # pidx
- # silo
- # stripack
- # szip
- # tbb
- # uintah
- # xdmf
- # xercesc
- # xsd
- # zlib
- #
- # =====================================
-
depends_on('cmake@3.14.7:', type='build')
depends_on('ninja', type='build')
@@ -197,14 +100,14 @@ class Visit(CMakePackage):
depends_on('vtk ~mpi', when='~mpi')
# Necessary VTK patches
- depends_on('vtk', patches=[patch('vtk_compiler_visibility.patch')])
+ 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')
+ when='~osmesa platform=linux ^vtk@8')
depends_on('vtk', patches=[patch('vtk_wrapping_python_x11.patch')],
- when='+python')
+ when='+python ^vtk@8')
- depends_on('glu', when='~osmesa')
- depends_on('mesa-glu+osmesa', when='+osmesa')
+ depends_on('glu')
# VisIt doesn't work with later versions of qt.
depends_on('qt+gui+opengl@5:5.14', when='+gui')
@@ -258,12 +161,18 @@ class Visit(CMakePackage):
if '+hdf5' in self.spec and '@1.10:' in self.spec['hdf5']:
flags.append('-DH5_USE_18_API')
+ elif name == 'ldlibs':
+ # Python support is missing a pthread dependency
+ if '@3 +python' in self.spec:
+ flags.append('-lpthread')
+
return (flags, None, None)
def cmake_args(self):
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]),
@@ -271,7 +180,7 @@ class Visit(CMakePackage):
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', True),
+ self.define('VISIT_INSTALL_THIRD_PARTY', False),
]
if '@3.1: platform=darwin' in spec:
@@ -305,14 +214,27 @@ class Visit(CMakePackage):
self.define('VISIT_ENGINE_ONLY', True),
])
- # No idea why this is actually needed
- if '^mesa' in spec:
- args.append(self.define('VISIT_MESAGL_DIR', spec['mesa'].prefix))
- if '+llvm' in spec['mesa']:
- args.append(self.define('VISIT_LLVM_DIR', spec['libllvm'].prefix))
+ # 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]),
+ ])
+ else:
+ args.append(self.define('OPENGL_gl_LIBRARY', spec['gl'].libs[0]))
if '+hdf5' in spec:
- args.append(self.define('VISIT_HDF5_DIR', spec['hdf5'].prefix))
+ 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))
diff --git a/var/spack/repos/builtin/packages/visit/visit32-missing-link-libs.patch b/var/spack/repos/builtin/packages/visit/visit32-missing-link-libs.patch
new file mode 100644
index 0000000000..63bb9e1ef0
--- /dev/null
+++ b/var/spack/repos/builtin/packages/visit/visit32-missing-link-libs.patch
@@ -0,0 +1,36 @@
+diff --git a/src/avt/Queries/CMakeLists.txt b/src/avt/Queries/CMakeLists.txt
+index 162ed1c439..7ddd0a7144 100644
+--- a/src/avt/Queries/CMakeLists.txt
++++ b/src/avt/Queries/CMakeLists.txt
+@@ -210,6 +210,9 @@ ENDIF(VISIT_PYTHON_FILTERS)
+ #********************************* SERIAL ************************************
+ ADD_LIBRARY(avtquery_ser ${AVTQUERY_SOURCES})
+ TARGET_LINK_LIBRARIES(avtquery_ser visitcommon avtmath avtshapelets avtexpressions_ser avtfilters_ser visit_vtk)
++IF(CMAKE_SYSTEM_NAME MATCHES Linux)
++ TARGET_LINK_LIBRARIES(avtquery_ser rt)
++ENDIF(CMAKE_SYSTEM_NAME MATCHES Linux)
+ IF(VISIT_PYTHON_FILTERS)
+ TARGET_LINK_LIBRARIES(avtquery_ser avtpythonfilters_ser)
+ ENDIF(VISIT_PYTHON_FILTERS)
+@@ -219,6 +222,9 @@ VISIT_INSTALL_TARGETS(avtquery_ser)
+ IF(VISIT_PARALLEL)
+ ADD_PARALLEL_LIBRARY(avtquery_par ${AVTQUERY_SOURCES})
+ TARGET_LINK_LIBRARIES(avtquery_par visitcommon avtmath avtshapelets avtexpressions_par avtfilters_par visit_vtk)
++ IF(CMAKE_SYSTEM_NAME MATCHES Linux)
++ TARGET_LINK_LIBRARIES(avtquery_ser rt)
++ ENDIF(CMAKE_SYSTEM_NAME MATCHES Linux)
+ IF(VISIT_PYTHON_FILTERS)
+ TARGET_LINK_LIBRARIES(avtquery_par avtpythonfilters_par)
+ ENDIF(VISIT_PYTHON_FILTERS)
+diff --git a/src/visitpy/CMakeLists.txt b/src/visitpy/CMakeLists.txt
+index 06f31ce1da..e5083d8087 100644
+--- a/src/visitpy/CMakeLists.txt
++++ b/src/visitpy/CMakeLists.txt
+@@ -385,6 +385,7 @@ avtdbatts
+ viewerrpc
+ visitcommon
+ ${PYTHON_LIBRARIES}
++${CMAKE_THREAD_LIBS}
+ )
+
+ # Create the CLI
diff --git a/var/spack/repos/builtin/packages/vtk/package.py b/var/spack/repos/builtin/packages/vtk/package.py
index 4449e344a5..00e73dfa1d 100644
--- a/var/spack/repos/builtin/packages/vtk/package.py
+++ b/var/spack/repos/builtin/packages/vtk/package.py
@@ -5,7 +5,6 @@
import os
-import sys
from spack.package import *
from spack.pkg.builtin.boost import Boost
@@ -48,12 +47,12 @@ class Vtk(CMakePackage):
patch('gcc.patch', when='@6.1.0')
# patch to fix some missing stl includes
# which lead to build errors on newer compilers
- # version range to be updated once the linked patch is released
+
patch('https://gitlab.kitware.com/vtk/vtk/-/commit/e066c3f4fbbfe7470c6207db0fc3f3952db633c.diff',
- when="@9:", sha256='0546696bd02f3a99fccb9b7c49533377bf8179df16d901cefe5abf251173716d')
+ when="@9:9.0", sha256='0546696bd02f3a99fccb9b7c49533377bf8179df16d901cefe5abf251173716d')
- # We cannot build with both osmesa and qt prior to VTK 8.1
- conflicts('+osmesa', when='@:8.0 +qt')
+ # We cannot build with both osmesa and qt in spack
+ conflicts('+osmesa', when='+qt')
extends('python', when='+python')
@@ -87,12 +86,12 @@ class Vtk(CMakePackage):
depends_on('gl@3.2:', when='+opengl2')
depends_on('gl@1.2:', when='~opengl2')
- if sys.platform != 'darwin':
- depends_on('glx', when='~osmesa')
- depends_on('libxt', when='~osmesa')
+ with when('~osmesa'):
+ depends_on('glx', when='platform=linux')
+ depends_on('glx', when='platform=cray')
+ depends_on('libxt', when='platform=linux')
+ depends_on('libxt', when='platform=cray')
- # Note: it is recommended to use mesa+llvm, if possible.
- # mesa default is software rendering, llvm makes it faster
depends_on('osmesa', when='+osmesa')
# VTK will need Qt5OpenGL, and qt needs '-opengl' for that
@@ -236,7 +235,7 @@ class Vtk(CMakePackage):
'-DVTK_USE_MPI=ON'
])
else:
- '-DVTK_USE_MPI=OFF'
+ cmake_args.append('-DVTK_USE_MPI=OFF')
if '+ffmpeg' in spec:
if spec.satisfies('@:8'):
@@ -337,9 +336,6 @@ class Vtk(CMakePackage):
cmake_args.append('-DVTK_RENDERING_BACKEND:STRING=' + opengl_ver)
- if spec.satisfies('@:8.1.0') and '+osmesa' not in spec:
- cmake_args.append('-DVTK_USE_SYSTEM_GLEW:BOOL=ON')
-
if '+osmesa' in spec:
cmake_args.extend([
'-DVTK_USE_X:BOOL=OFF',
@@ -352,12 +348,12 @@ class Vtk(CMakePackage):
# This option is gone in VTK 8.1.2
cmake_args.append('-DOpenGL_GL_PREFERENCE:STRING=LEGACY')
- if 'darwin' in spec.architecture:
+ if 'platform=darwin' in spec:
cmake_args.extend([
'-DVTK_USE_X:BOOL=OFF',
'-DVTK_USE_COCOA:BOOL=ON'])
- elif 'linux' in spec.architecture:
+ elif 'platform=linux' in spec:
cmake_args.extend([
'-DVTK_USE_X:BOOL=ON',
'-DVTK_USE_COCOA:BOOL=OFF'])