Enforce consistency of gl providers (#44307)
				
					
				
			* glew: rework dependency on gl
This simplifies the package and ensures a single gl implementation is
pulled in. Before we were adding direct dependencies, and those are
not unified through the virtual.
* mesa-demos: rework dependency on gl
This simplifies the package and ensures a single gl implementation is
pulled in. Before we were adding direct dependencies, and those are
not unified through the virtual.
* mesa-glu: rework dependency on gl
This simplifies the package and ensures a single gl implementation is
pulled in. Before we were adding direct dependencies, and those are
not unified through the virtual.
* paraview: fix dependency on glew
* mesa: group dependency on when("+glx")
* Add missing dependency on libxml2
* paraview: remove the "osmesa" and "egl" variant
Instead, enforce consistency using the "gl" virtual that allows
only one provider.
* visit: remove osmesa variant
* Disable paraview in the aws-isc stacks
* data-vis-sdk: rework constrains to enforce front-ends
* e4s-power: remove redundant paraview
* Pipelines: update osmesa variants
* trilinos-catalyst-ioss-adapter: make gl a run dependency
			
			
This commit is contained in:
		 Massimiliano Culpo
					Massimiliano Culpo
				
			
				
					committed by
					
						 GitHub
						GitHub
					
				
			
			
				
	
			
			
			 GitHub
						GitHub
					
				
			
						parent
						
							5cf98d9564
						
					
				
				
					commit
					8b7abace8b
				
			| @@ -79,7 +79,7 @@ spack: | |||||||
|     - openfoam |     - openfoam | ||||||
|     - osu-micro-benchmarks |     - osu-micro-benchmarks | ||||||
|     - parallel |     - parallel | ||||||
|     - paraview |     # - paraview | ||||||
|     - picard |     - picard | ||||||
|     - quantum-espresso |     - quantum-espresso | ||||||
|     - raja |     - raja | ||||||
|   | |||||||
| @@ -85,7 +85,7 @@ spack: | |||||||
|     - openfoam |     - openfoam | ||||||
|     - osu-micro-benchmarks |     - osu-micro-benchmarks | ||||||
|     - parallel |     - parallel | ||||||
|     - paraview |     # - paraview | ||||||
|     - picard |     - picard | ||||||
|     - quantum-espresso |     - quantum-espresso | ||||||
| # Build broken for gcc@7.3.1 x86_64_v4 (error: '_mm512_loadu_epi32' was not declared in this scope) | # Build broken for gcc@7.3.1 x86_64_v4 (error: '_mm512_loadu_epi32' was not declared in this scope) | ||||||
|   | |||||||
| @@ -25,16 +25,16 @@ spack: | |||||||
|   - paraview_specs: |   - paraview_specs: | ||||||
|     - matrix: |     - matrix: | ||||||
|       - - paraview +raytracing |       - - paraview +raytracing | ||||||
|       - - +qt~osmesa # GUI Support w/ GLX Rendering |       - - +qt ^[virtuals=gl] glx # GUI Support w/ GLX Rendering | ||||||
|         - ~qt~osmesa # GLX Rendering |         - ~qt ^[virtuals=gl] glx # GLX Rendering | ||||||
|         - ~qt+osmesa # OSMesa Rendering |         - ^[virtuals=gl] osmesa # OSMesa Rendering | ||||||
|   - visit_specs: |   - visit_specs: | ||||||
|     - matrix: |     - matrix: | ||||||
|       - - visit |       - - visit~gui | ||||||
|       - - ~gui~osmesa # GLX Rendering |       - - ^[virtuals=gl] glx # GLX Rendering | ||||||
|         - ~gui+osmesa # OSMesa Rendering |         - ^[virtuals=gl] osmesa # OSMesa Rendering | ||||||
|         # VisIt GUI does not work with Qt 5.14.2 |         # VisIt GUI does not work with Qt 5.14.2 | ||||||
|         # - +gui~osmesa # GUI Support w/ GLX Rendering |         # - +gui ^[virtuals=gl] glx # GUI Support w/ GLX Rendering | ||||||
|   - sdk_base_spec: |   - sdk_base_spec: | ||||||
|     - matrix: |     - matrix: | ||||||
|       - - ecp-data-vis-sdk +ascent +adios2 +cinema +darshan +faodel +hdf5 +pnetcdf |       - - ecp-data-vis-sdk +ascent +adios2 +cinema +darshan +faodel +hdf5 +pnetcdf | ||||||
|   | |||||||
| @@ -50,7 +50,7 @@ spack: | |||||||
|       variants: +termlib |       variants: +termlib | ||||||
|     paraview: |     paraview: | ||||||
|       # Don't build GUI support or GLX rendering for HPC/container deployments |       # Don't build GUI support or GLX rendering for HPC/container deployments | ||||||
|       require: "@5.11 ~qt+osmesa" |       require: "@5.11 ~qt ^[virtuals=gl] osmesa" | ||||||
|     python: |     python: | ||||||
|       version: [3.8.13] |       version: [3.8.13] | ||||||
|     trilinos: |     trilinos: | ||||||
|   | |||||||
| @@ -43,7 +43,7 @@ spack: | |||||||
|       variants: +termlib |       variants: +termlib | ||||||
|     paraview: |     paraview: | ||||||
|       # Don't build GUI support or GLX rendering for HPC/container deployments |       # Don't build GUI support or GLX rendering for HPC/container deployments | ||||||
|       require: "@5.11 ~qt+osmesa" |       require: "@5.11 ~qt ^[virtuals=gl] osmesa" | ||||||
|     python: |     python: | ||||||
|       version: [3.8.13] |       version: [3.8.13] | ||||||
|     trilinos: |     trilinos: | ||||||
|   | |||||||
| @@ -168,7 +168,6 @@ spack: | |||||||
|   - hdf5 |   - hdf5 | ||||||
|   - libcatalyst |   - libcatalyst | ||||||
|   - parallel-netcdf |   - parallel-netcdf | ||||||
|   - paraview |  | ||||||
|   - py-cinemasci |   - py-cinemasci | ||||||
|   - sz |   - sz | ||||||
|   - unifyfs |   - unifyfs | ||||||
|   | |||||||
| @@ -21,7 +21,7 @@ spack: | |||||||
|       variants: threads=openmp |       variants: threads=openmp | ||||||
|     paraview: |     paraview: | ||||||
|       # Don't build GUI support or GLX rendering for HPC/container deployments |       # Don't build GUI support or GLX rendering for HPC/container deployments | ||||||
|       require: "@5.11 ~qt+osmesa" |       require: "@5.11 ~qt ^[virtuals=gl] osmesa" | ||||||
|  |  | ||||||
|     # ROCm 5.4.3 |     # ROCm 5.4.3 | ||||||
|     comgr: |     comgr: | ||||||
|   | |||||||
| @@ -52,7 +52,7 @@ spack: | |||||||
|       version: [11.8.0] |       version: [11.8.0] | ||||||
|     paraview: |     paraview: | ||||||
|       # Don't build GUI support or GLX rendering for HPC/container deployments |       # Don't build GUI support or GLX rendering for HPC/container deployments | ||||||
|       require: "@5.11 ~qt+osmesa" |       require: "@5.11 ~qt ^[virtuals=gl] osmesa" | ||||||
|  |  | ||||||
|   specs: |   specs: | ||||||
|   # CPU |   # CPU | ||||||
|   | |||||||
| @@ -31,7 +31,7 @@ spack: | |||||||
|       variants: threads=openmp |       variants: threads=openmp | ||||||
|     paraview: |     paraview: | ||||||
|       # Don't build GUI support or GLX rendering for HPC/container deployments |       # Don't build GUI support or GLX rendering for HPC/container deployments | ||||||
|       require: "@5.11 ~qt+osmesa" |       require: "@5.11 ~qt ^[virtuals=gl] osmesa" | ||||||
|     trilinos: |     trilinos: | ||||||
|       require: +amesos +amesos2 +anasazi +aztec +boost +epetra +epetraext |       require: +amesos +amesos2 +anasazi +aztec +boost +epetra +epetraext | ||||||
|         +ifpack +intrepid +intrepid2 +isorropia +kokkos +ml +minitensor +muelu |         +ifpack +intrepid +intrepid2 +isorropia +kokkos +ml +minitensor +muelu | ||||||
|   | |||||||
| @@ -2,9 +2,6 @@ | |||||||
| # Spack Project Developers. See the top-level COPYRIGHT file for details. | # Spack Project Developers. See the top-level COPYRIGHT file for details. | ||||||
| # | # | ||||||
| # SPDX-License-Identifier: (Apache-2.0 OR MIT) | # SPDX-License-Identifier: (Apache-2.0 OR MIT) | ||||||
| 
 |  | ||||||
| import sys |  | ||||||
| 
 |  | ||||||
| from spack.package import * | from spack.package import * | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @@ -23,29 +20,9 @@ class Glew(CMakePackage): | |||||||
|     version("2.1.0", sha256="04de91e7e6763039bc11940095cd9c7f880baba82196a7765f727ac05a993c95") |     version("2.1.0", sha256="04de91e7e6763039bc11940095cd9c7f880baba82196a7765f727ac05a993c95") | ||||||
|     version("2.0.0", sha256="c572c30a4e64689c342ba1624130ac98936d7af90c3103f9ce12b8a0c5736764") |     version("2.0.0", sha256="c572c30a4e64689c342ba1624130ac98936d7af90c3103f9ce12b8a0c5736764") | ||||||
| 
 | 
 | ||||||
|     variant( |  | ||||||
|         "gl", |  | ||||||
|         default="glx" if sys.platform.startswith("linux") else "other", |  | ||||||
|         values=("glx", "osmesa", "egl", "other"), |  | ||||||
|         multi=False, |  | ||||||
|         description="The OpenGL provider to use", |  | ||||||
|     ) |  | ||||||
|     conflicts("^osmesa", when="gl=glx") |  | ||||||
|     conflicts("^osmesa", when="gl=egl") |  | ||||||
|     conflicts("^osmesa", when="gl=other") |  | ||||||
|     conflicts("^glx", when="gl=osmesa") |  | ||||||
|     conflicts("^glx", when="gl=other") |  | ||||||
|     conflicts("^glx", when="gl=egl") |  | ||||||
|     conflicts("^egl", when="gl=glx") |  | ||||||
|     conflicts("^egl", when="gl=osmesa") |  | ||||||
|     conflicts("^egl", when="gl=other") |  | ||||||
| 
 |  | ||||||
|     depends_on("gl") |     depends_on("gl") | ||||||
|     depends_on("osmesa", when="gl=osmesa") |     depends_on("libx11", when="^[virtuals=gl] glx") | ||||||
|     depends_on("glx", when="gl=glx") |     depends_on("xproto", when="^[virtuals=gl] glx") | ||||||
|     depends_on("libx11", when="gl=glx") |  | ||||||
|     depends_on("xproto", when="gl=glx") |  | ||||||
|     depends_on("egl", when="gl=egl") |  | ||||||
| 
 | 
 | ||||||
|     # glu is already forcibly disabled in the CMakeLists.txt.  This prevents |     # glu is already forcibly disabled in the CMakeLists.txt.  This prevents | ||||||
|     # it from showing up in the .pc file |     # it from showing up in the .pc file | ||||||
| @@ -56,15 +33,15 @@ def cmake_args(self): | |||||||
|         args = [ |         args = [ | ||||||
|             self.define("BUILD_UTILS", True), |             self.define("BUILD_UTILS", True), | ||||||
|             self.define("GLEW_REGAL", False), |             self.define("GLEW_REGAL", False), | ||||||
|             self.define("GLEW_EGL", "gl=egl" in spec), |             self.define("GLEW_EGL", spec.satisfies("^[virtuals=gl] egl")), | ||||||
|             self.define("OPENGL_INCLUDE_DIR", spec["gl"].headers.directories[0]), |             self.define("OPENGL_INCLUDE_DIR", spec["gl"].headers.directories[0]), | ||||||
|             self.define("OPENGL_gl_LIBRARY", spec["gl"].libs[0]), |             self.define("OPENGL_gl_LIBRARY", spec["gl"].libs[0]), | ||||||
|             self.define("OPENGL_opengl_LIBRARY", "IGNORE"), |             self.define("OPENGL_opengl_LIBRARY", "IGNORE"), | ||||||
|             self.define("OPENGL_glx_LIBRARY", "IGNORE"), |             self.define("OPENGL_glx_LIBRARY", "IGNORE"), | ||||||
|             self.define("OPENGL_glu_LIBRARY", "IGNORE"), |             self.define("OPENGL_glu_LIBRARY", "IGNORE"), | ||||||
|             self.define("GLEW_OSMESA", "gl=osmesa" in spec), |             self.define("GLEW_OSMESA", spec.satisfies("^[virtuals=gl] osmesa")), | ||||||
|         ] |         ] | ||||||
|         if "gl=egl" in spec: |         if spec.satisfies("^[virtuals=gl] egl"): | ||||||
|             args.append( |             args.append( | ||||||
|                 self.define("OPENGL_egl_LIBRARY", [spec["egl"].libs[0], spec["egl"].libs[1]]) |                 self.define("OPENGL_egl_LIBRARY", [spec["egl"].libs[0], spec["egl"].libs[1]]) | ||||||
|             ) |             ) | ||||||
| @@ -76,4 +53,4 @@ def cmake_args(self): | |||||||
|     def flag_handler(self, name, flags): |     def flag_handler(self, name, flags): | ||||||
|         if name == "ldflags" and self.spec.satisfies("platform=darwin ^apple-gl"): |         if name == "ldflags" and self.spec.satisfies("platform=darwin ^apple-gl"): | ||||||
|             flags.append("-framework OpenGL") |             flags.append("-framework OpenGL") | ||||||
|         return (flags, None, None) |         return flags, None, None | ||||||
|   | |||||||
| @@ -2,8 +2,6 @@ | |||||||
| # Spack Project Developers. See the top-level COPYRIGHT file for details. | # Spack Project Developers. See the top-level COPYRIGHT file for details. | ||||||
| # | # | ||||||
| # SPDX-License-Identifier: (Apache-2.0 OR MIT) | # SPDX-License-Identifier: (Apache-2.0 OR MIT) | ||||||
| import sys |  | ||||||
| 
 |  | ||||||
| from spack.package import * | from spack.package import * | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @@ -20,18 +18,6 @@ class MesaDemos(AutotoolsPackage): | |||||||
|     version("8.2.0", sha256="5a9f71b815d968d0c3b77edfcc3782d0211f8520b00da9e554ccfed80c8889f6") |     version("8.2.0", sha256="5a9f71b815d968d0c3b77edfcc3782d0211f8520b00da9e554ccfed80c8889f6") | ||||||
|     version("8.1.0", sha256="cc5826105355830208c90047fc38c5b09fa3ab0045366e7e859104935b00b76d") |     version("8.1.0", sha256="cc5826105355830208c90047fc38c5b09fa3ab0045366e7e859104935b00b76d") | ||||||
| 
 | 
 | ||||||
|     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("autoconf", type="build") | ||||||
|     depends_on("automake", type="build") |     depends_on("automake", type="build") | ||||||
|     depends_on("libtool", type="build") |     depends_on("libtool", type="build") | ||||||
| @@ -39,10 +25,8 @@ class MesaDemos(AutotoolsPackage): | |||||||
|     depends_on("pkgconfig", type="build") |     depends_on("pkgconfig", type="build") | ||||||
| 
 | 
 | ||||||
|     depends_on("gl") |     depends_on("gl") | ||||||
|     depends_on("osmesa", when="gl=osmesa") |     depends_on("libx11", when="^[virtuals=gl] glx") | ||||||
|     depends_on("glx", when="gl=glx") |     depends_on("libxext", when="^[virtuals=gl] glx") | ||||||
|     depends_on("libx11", when="gl=glx") |  | ||||||
|     depends_on("libxext", when="gl=glx") |  | ||||||
| 
 | 
 | ||||||
|     depends_on("glu") |     depends_on("glu") | ||||||
|     depends_on("glew@1.5.4:") |     depends_on("glew@1.5.4:") | ||||||
| @@ -64,11 +48,11 @@ def configure_args(self): | |||||||
|             "--disable-rbug", |             "--disable-rbug", | ||||||
|             "--without-glut", |             "--without-glut", | ||||||
|         ] |         ] | ||||||
|         if "gl=glx" in spec: |         if spec.satisfies("^[virtuals=gl] glx"): | ||||||
|             args.append("--enable-x11") |             args.append("--enable-x11") | ||||||
|         else: |         else: | ||||||
|             args.append("--disable-x11") |             args.append("--disable-x11") | ||||||
|         if "gl=osmesa" in spec: |         if spec.satisfies("^[virtuals=gl] osmesa"): | ||||||
|             args.append("--enable-osmesa") |             args.append("--enable-osmesa") | ||||||
|         else: |         else: | ||||||
|             args.append("--disable-osmesa") |             args.append("--disable-osmesa") | ||||||
|   | |||||||
| @@ -2,9 +2,6 @@ | |||||||
| # Spack Project Developers. See the top-level COPYRIGHT file for details. | # Spack Project Developers. See the top-level COPYRIGHT file for details. | ||||||
| # | # | ||||||
| # SPDX-License-Identifier: (Apache-2.0 OR MIT) | # SPDX-License-Identifier: (Apache-2.0 OR MIT) | ||||||
| 
 |  | ||||||
| import sys |  | ||||||
| 
 |  | ||||||
| from spack.package import * | from spack.package import * | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @@ -18,22 +15,7 @@ class MesaGlu(AutotoolsPackage): | |||||||
|     version("9.0.1", sha256="f6f484cfcd51e489afe88031afdea1e173aa652697e4c19ddbcb8260579a10f7") |     version("9.0.1", sha256="f6f484cfcd51e489afe88031afdea1e173aa652697e4c19ddbcb8260579a10f7") | ||||||
|     version("9.0.0", sha256="4387476a1933f36fec1531178ea204057bbeb04cc2d8396c9ea32720a1f7e264") |     version("9.0.0", sha256="4387476a1933f36fec1531178ea204057bbeb04cc2d8396c9ea32720a1f7e264") | ||||||
| 
 | 
 | ||||||
|     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("gl@3:") | ||||||
|     depends_on("osmesa", when="gl=osmesa") |  | ||||||
|     depends_on("glx", when="gl=glx") |  | ||||||
| 
 |  | ||||||
|     provides("glu@1.3") |     provides("glu@1.3") | ||||||
| 
 | 
 | ||||||
|     # When using -std=c++17, using register long will throw an error. This |     # When using -std=c++17, using register long will throw an error. This | ||||||
| @@ -43,7 +25,7 @@ class MesaGlu(AutotoolsPackage): | |||||||
|     def configure_args(self): |     def configure_args(self): | ||||||
|         args = ["--disable-libglvnd"] |         args = ["--disable-libglvnd"] | ||||||
| 
 | 
 | ||||||
|         if "gl=osmesa" in self.spec: |         if self.spec.satisfies("^[virtuals=gl] osmesa"): | ||||||
|             args.append("--enable-osmesa") |             args.append("--enable-osmesa") | ||||||
|         else: |         else: | ||||||
|             args.append("--disable-osmesa") |             args.append("--disable-osmesa") | ||||||
|   | |||||||
| @@ -62,6 +62,7 @@ class Mesa(MesonPackage): | |||||||
|     depends_on("unwind") |     depends_on("unwind") | ||||||
|     depends_on("expat") |     depends_on("expat") | ||||||
|     depends_on("zlib-api") |     depends_on("zlib-api") | ||||||
|  |     depends_on("libxml2") | ||||||
| 
 | 
 | ||||||
|     # Internal options |     # Internal options | ||||||
|     variant("llvm", default=True, description="Enable LLVM.") |     variant("llvm", default=True, description="Enable LLVM.") | ||||||
| @@ -111,12 +112,13 @@ class Mesa(MesonPackage): | |||||||
|         depends_on("libllvm@:12", when="@:21") |         depends_on("libllvm@:12", when="@:21") | ||||||
|         depends_on("libllvm@:17", when="@:23") |         depends_on("libllvm@:17", when="@:23") | ||||||
| 
 | 
 | ||||||
|     depends_on("libx11", when="+glx") |     with when("+glx"): | ||||||
|     depends_on("libxcb", when="+glx") |         depends_on("libx11") | ||||||
|     depends_on("libxext", when="+glx") |         depends_on("libxcb") | ||||||
|     depends_on("libxt", when="+glx") |         depends_on("libxext") | ||||||
|     depends_on("xrandr", when="+glx") |         depends_on("libxt") | ||||||
|     depends_on("glproto@1.4.14:", when="+glx") |         depends_on("xrandr") | ||||||
|  |         depends_on("glproto@1.4.14:") | ||||||
| 
 | 
 | ||||||
|     # version specific issue |     # version specific issue | ||||||
|     # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96130 |     # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96130 | ||||||
|   | |||||||
| @@ -32,7 +32,11 @@ class OfCatalyst(CMakePackage): | |||||||
| 
 | 
 | ||||||
|     depends_on("openfoam@1806", when="@1806", type=("build", "link", "run")) |     depends_on("openfoam@1806", when="@1806", type=("build", "link", "run")) | ||||||
|     depends_on("openfoam@develop", when="@develop", type=("build", "link", "run")) |     depends_on("openfoam@develop", when="@develop", type=("build", "link", "run")) | ||||||
|     depends_on("paraview@5.5:+osmesa~qt", when="+full") | 
 | ||||||
|  |     with when("+full"): | ||||||
|  |         depends_on("paraview@5.5: ~qt") | ||||||
|  |         depends_on("gl") | ||||||
|  |         requires("^[virtuals=gl] osmesa") | ||||||
| 
 | 
 | ||||||
|     root_cmakelists_dir = "src/catalyst" |     root_cmakelists_dir = "src/catalyst" | ||||||
| 
 | 
 | ||||||
|   | |||||||
| @@ -66,8 +66,6 @@ class Paraview(CMakePackage, CudaPackage, ROCmPackage): | |||||||
|     variant("python", default=False, description="Enable Python support", when="@5.6:") |     variant("python", default=False, description="Enable Python support", when="@5.6:") | ||||||
|     variant("fortran", default=False, description="Enable Fortran support") |     variant("fortran", default=False, description="Enable Fortran support") | ||||||
|     variant("mpi", default=True, description="Enable MPI support") |     variant("mpi", default=True, description="Enable MPI support") | ||||||
|     variant("osmesa", default=False, description="Enable OSMesa support") |  | ||||||
|     variant("egl", default=False, description="Enable EGL in the OpenGL library being used") |  | ||||||
|     variant("qt", default=False, description="Enable Qt (gui) support") |     variant("qt", default=False, description="Enable Qt (gui) support") | ||||||
|     variant("opengl2", default=True, description="Enable OpenGL2 backend") |     variant("opengl2", default=True, description="Enable OpenGL2 backend") | ||||||
|     variant("examples", default=False, description="Build examples") |     variant("examples", default=False, description="Build examples") | ||||||
| @@ -187,16 +185,12 @@ class Paraview(CMakePackage, CudaPackage, ROCmPackage): | |||||||
| 
 | 
 | ||||||
|     depends_on("gl@3.2:", when="+opengl2") |     depends_on("gl@3.2:", when="+opengl2") | ||||||
|     depends_on("gl@1.2:", when="~opengl2") |     depends_on("gl@1.2:", when="~opengl2") | ||||||
|     depends_on("glew", when="~egl") |     depends_on("glew") | ||||||
|     depends_on("glew gl=egl", when="+egl") |  | ||||||
| 
 | 
 | ||||||
|     depends_on("osmesa", when="+osmesa") |  | ||||||
|     for p in ["linux", "cray"]: |     for p in ["linux", "cray"]: | ||||||
|         depends_on("glx", when="~egl ~osmesa platform={}".format(p)) |         depends_on("libxt", when=f"platform={p} ^[virtuals=gl] glx") | ||||||
|         depends_on("libxt", when="~egl ~osmesa platform={}".format(p)) | 
 | ||||||
|     conflicts("+qt", when="+osmesa") |     requires("^[virtuals=gl] glx", when="+qt", msg="Qt support requires GLX") | ||||||
|     conflicts("+qt", when="+egl") |  | ||||||
|     conflicts("+egl", when="+osmesa") |  | ||||||
| 
 | 
 | ||||||
|     depends_on("ospray@2.1:2", when="+raytracing") |     depends_on("ospray@2.1:2", when="+raytracing") | ||||||
|     depends_on("openimagedenoise", when="+raytracing") |     depends_on("openimagedenoise", when="+raytracing") | ||||||
| @@ -376,7 +370,7 @@ def flag_handler(self, name, flags): | |||||||
|                 if self.spec["hdf5"].satisfies("@1.12:"): |                 if self.spec["hdf5"].satisfies("@1.12:"): | ||||||
|                     flags.append("-DH5_USE_110_API") |                     flags.append("-DH5_USE_110_API") | ||||||
| 
 | 
 | ||||||
|         return (flags, None, None) |         return flags, None, None | ||||||
| 
 | 
 | ||||||
|     def setup_run_environment(self, env): |     def setup_run_environment(self, env): | ||||||
|         # paraview 5.5 and later |         # paraview 5.5 and later | ||||||
| @@ -424,19 +418,17 @@ def cmake_args(self): | |||||||
| 
 | 
 | ||||||
|         def variant_bool(feature, on="ON", off="OFF"): |         def variant_bool(feature, on="ON", off="OFF"): | ||||||
|             """Ternary for spec variant to ON/OFF string""" |             """Ternary for spec variant to ON/OFF string""" | ||||||
|             if feature in spec: |             if spec.satisfies(feature): | ||||||
|                 return on |                 return on | ||||||
|             return off |             return off | ||||||
| 
 | 
 | ||||||
|         def nvariant_bool(feature): |  | ||||||
|             """Negated ternary for spec variant to OFF/ON string""" |  | ||||||
|             return variant_bool(feature, on="OFF", off="ON") |  | ||||||
| 
 |  | ||||||
|         def use_x11(): |         def use_x11(): | ||||||
|             """Return false if osmesa or egl are requested""" |             """Return false if osmesa or egl are requested""" | ||||||
|             if "+osmesa" in spec or "+egl" in spec: |             if ( | ||||||
|                 return "OFF" |                 spec.satisfies("^[virtuals=gl] osmesa") | ||||||
|             if spec.satisfies("platform=windows"): |                 or spec.satisfies("^[virtuals=gl] egl") | ||||||
|  |                 or spec.satisfies("platform=windows") | ||||||
|  |             ): | ||||||
|                 return "OFF" |                 return "OFF" | ||||||
|             return "ON" |             return "ON" | ||||||
| 
 | 
 | ||||||
| @@ -444,7 +436,7 @@ def use_x11(): | |||||||
|         includes = variant_bool("+development_files") |         includes = variant_bool("+development_files") | ||||||
| 
 | 
 | ||||||
|         cmake_args = [ |         cmake_args = [ | ||||||
|             "-DVTK_OPENGL_HAS_OSMESA:BOOL=%s" % variant_bool("+osmesa"), |             "-DVTK_OPENGL_HAS_OSMESA:BOOL=%s" % variant_bool("^[virtuals=gl] osmesa"), | ||||||
|             "-DVTK_USE_X:BOOL=%s" % use_x11(), |             "-DVTK_USE_X:BOOL=%s" % use_x11(), | ||||||
|             "-DPARAVIEW_INSTALL_DEVELOPMENT_FILES:BOOL=%s" % includes, |             "-DPARAVIEW_INSTALL_DEVELOPMENT_FILES:BOOL=%s" % includes, | ||||||
|             "-DBUILD_TESTING:BOOL=OFF", |             "-DBUILD_TESTING:BOOL=OFF", | ||||||
| @@ -453,7 +445,7 @@ def use_x11(): | |||||||
|             self.define_from_variant("VISIT_BUILD_READER_Silo", "visitbridge"), |             self.define_from_variant("VISIT_BUILD_READER_Silo", "visitbridge"), | ||||||
|         ] |         ] | ||||||
| 
 | 
 | ||||||
|         if "+egl" in spec: |         if spec.satisfies("^[virtuals=gl] egl"): | ||||||
|             cmake_args.append("-DVTK_OPENGL_HAS_EGL:BOOL=ON") |             cmake_args.append("-DVTK_OPENGL_HAS_EGL:BOOL=ON") | ||||||
| 
 | 
 | ||||||
|         if spec.satisfies("@5.12:"): |         if spec.satisfies("@5.12:"): | ||||||
| @@ -530,7 +522,7 @@ def use_x11(): | |||||||
| 
 | 
 | ||||||
|         # The assumed qt version changed to QT5 (as of paraview 5.2.1), |         # The assumed qt version changed to QT5 (as of paraview 5.2.1), | ||||||
|         # so explicitly specify which QT major version is actually being used |         # so explicitly specify which QT major version is actually being used | ||||||
|         if "+qt" in spec: |         if spec.satisfies("+qt"): | ||||||
|             cmake_args.extend(["-DPARAVIEW_QT_VERSION=%s" % spec["qt"].version[0]]) |             cmake_args.extend(["-DPARAVIEW_QT_VERSION=%s" % spec["qt"].version[0]]) | ||||||
| 
 | 
 | ||||||
|         if "+fortran" in spec: |         if "+fortran" in spec: | ||||||
|   | |||||||
| @@ -17,7 +17,9 @@ class TrilinosCatalystIossAdapter(CMakePackage): | |||||||
| 
 | 
 | ||||||
|     depends_on("bison", type="build") |     depends_on("bison", type="build") | ||||||
|     depends_on("flex", type="build") |     depends_on("flex", type="build") | ||||||
|     depends_on("paraview+mpi+python+osmesa") |     depends_on("paraview+mpi+python") | ||||||
|  |     depends_on("gl", type="run") | ||||||
|  |     requires("^[virtuals=gl] osmesa", msg="OSMesa is required for paraview") | ||||||
|     depends_on("py-numpy", type=("build", "run")) |     depends_on("py-numpy", type=("build", "run")) | ||||||
|     # Here we avoid paraview trying to use netcdf-c~parallel-netcdf |     # Here we avoid paraview trying to use netcdf-c~parallel-netcdf | ||||||
|     # which is netcdf-c's default, even though paraview depends on 'netcdf-c' |     # which is netcdf-c's default, even though paraview depends on 'netcdf-c' | ||||||
|   | |||||||
| @@ -75,7 +75,6 @@ class Visit(CMakePackage): | |||||||
|     generator("ninja") |     generator("ninja") | ||||||
| 
 | 
 | ||||||
|     variant("gui", default=True, description="Enable VisIt's GUI") |     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("adios2", default=True, description="Enable ADIOS2 file format") | ||||||
|     variant("hdf5", default=True, description="Enable HDF5 file format") |     variant("hdf5", default=True, description="Enable HDF5 file format") | ||||||
|     variant("netcdf", default=True, description="Enable NetCDF file format") |     variant("netcdf", default=True, description="Enable NetCDF file format") | ||||||
| @@ -105,14 +104,13 @@ class Visit(CMakePackage): | |||||||
|     # Fix const-correctness in VTK interface |     # Fix const-correctness in VTK interface | ||||||
|     patch("vtk-8.2-constcorrect.patch", when="@3.3.3 ^vtk@8.2.1a") |     patch("vtk-8.2-constcorrect.patch", when="@3.3.3 ^vtk@8.2.1a") | ||||||
| 
 | 
 | ||||||
|     # Exactly one of 'gui' or 'osmesa' has to be enabled |     conflicts( | ||||||
|     conflicts("+gui", when="+osmesa") |         "+gui", when="^[virtuals=gl] osmesa", msg="GUI cannot be activated with OSMesa front-end" | ||||||
|  |     ) | ||||||
| 
 | 
 | ||||||
|     depends_on("cmake@3.14.7:", type="build") |     depends_on("cmake@3.14.7:", type="build") | ||||||
|     depends_on("mpi", when="+mpi") |     depends_on("mpi", when="+mpi") | ||||||
| 
 | 
 | ||||||
|     requires("^[virtuals=gl] osmesa", when="+osmesa") |  | ||||||
| 
 |  | ||||||
|     # VTK flavors |     # VTK flavors | ||||||
|     depends_on("vtk@8.1:8 +opengl2") |     depends_on("vtk@8.1:8 +opengl2") | ||||||
|     depends_on("vtk +qt", when="+gui") |     depends_on("vtk +qt", when="+gui") | ||||||
| @@ -125,7 +123,7 @@ class Visit(CMakePackage): | |||||||
|     depends_on( |     depends_on( | ||||||
|         "vtk", |         "vtk", | ||||||
|         patches=[patch("vtk_rendering_opengl2_x11.patch")], |         patches=[patch("vtk_rendering_opengl2_x11.patch")], | ||||||
|         when="~osmesa platform=linux ^vtk@8", |         when="platform=linux ^[virtuals=gl] glx ^vtk@8", | ||||||
|     ) |     ) | ||||||
|     depends_on("vtk", patches=[patch("vtk_wrapping_python_x11.patch")], when="+python ^vtk@8") |     depends_on("vtk", patches=[patch("vtk_wrapping_python_x11.patch")], when="+python ^vtk@8") | ||||||
| 
 | 
 | ||||||
| @@ -296,7 +294,7 @@ def cmake_args(self): | |||||||
|                 self.define("OPENGL_glu_LIBRARY", spec["glu"].libs[0]), |                 self.define("OPENGL_glu_LIBRARY", spec["glu"].libs[0]), | ||||||
|             ] |             ] | ||||||
|         ) |         ) | ||||||
|         if "+osmesa" in spec: |         if spec.satisfies("^[virtuals=gl] osmesa"): | ||||||
|             args.extend( |             args.extend( | ||||||
|                 [ |                 [ | ||||||
|                     self.define("HAVE_OSMESA", True), |                     self.define("HAVE_OSMESA", True), | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user