diff options
Diffstat (limited to 'var/spack/repos/builtin/packages/catalyst/package.py')
-rw-r--r-- | var/spack/repos/builtin/packages/catalyst/package.py | 247 |
1 files changed, 126 insertions, 121 deletions
diff --git a/var/spack/repos/builtin/packages/catalyst/package.py b/var/spack/repos/builtin/packages/catalyst/package.py index 3f4a54f448..4cf688c158 100644 --- a/var/spack/repos/builtin/packages/catalyst/package.py +++ b/var/spack/repos/builtin/packages/catalyst/package.py @@ -20,36 +20,40 @@ class Catalyst(CMakePackage): """ - homepage = 'http://www.paraview.org' - url = "https://www.paraview.org/files/v5.5/ParaView-v5.5.2.tar.gz" - _urlfmt_gz = 'https://www.paraview.org/files/v{0}/ParaView-v{1}{2}.tar.gz' - _urlfmt_xz = 'https://www.paraview.org/files/v{0}/ParaView-v{1}{2}.tar.xz' - - maintainers = ['chuckatkins', 'danlipsa'] - - version('5.6.0', sha256='5b49cb96ab78eee0427e25200530ac892f9a3da7725109ce1790f8010cb5b377') - version('5.5.2', sha256='64561f34c4402b88f3cb20a956842394dde5838efd7ebb301157a837114a0e2d') - version('5.5.1', sha256='a6e67a95a7a5711a2b5f95f38ccbff4912262b3e1b1af7d6b9afe8185aa85c0d') - version('5.5.0', sha256='1b619e326ff574de808732ca9a7447e4cd14e94ae6568f55b6581896cd569dff') - version('5.4.1', sha256='390d0f5dc66bf432e202a39b1f34193af4bf8aad2355338fa5e2778ea07a80e4') - version('5.4.0', sha256='f488d84a53b1286d2ee1967e386626c8ad05a6fe4e6cbdaa8d5e042f519f94a9') - version('5.3.0', sha256='046631bbf00775edc927314a3db207509666c9c6aadc7079e5159440fd2f88a0') - version('5.2.0', sha256='894e42ef8475bb49e4e7e64f4ee2c37c714facd18bfbb1d6de7f69676b062c96') - version('5.1.2', sha256='ff02b7307a256b7c6e8ad900dee5796297494df7f9a0804fe801eb2f66e6a187') - version('5.0.1', sha256='caddec83ec284162a2cbc46877b0e5a9d2cca59fb4ab0ea35b0948d2492950bb') - version('4.4.0', sha256='c2dc334a89df24ce5233b81b74740fc9f10bc181cd604109fd13f6ad2381fc73') - - variant('python', default=False, description='Enable Python support') - variant('python3', default=False, description='Enable Python3 support') - variant('essentials', default=False, description='Enable Essentials support') - variant('extras', default=False, description='Enable Extras support. Implies Essentials.') - variant('rendering', default=True, description='Enable Rendering support. Implies Extras and Essentials.') - variant('osmesa', default=True, description='Use offscreen rendering') - conflicts('+osmesa', when='~rendering') - - conflicts('+python', when='+python3') - conflicts('+python', when='@5.6:') - conflicts('+python3', when='@:5.5') + homepage = "http://www.paraview.org" + url = "https://www.paraview.org/files/v5.5/ParaView-v5.5.2.tar.gz" + _urlfmt_gz = "https://www.paraview.org/files/v{0}/ParaView-v{1}{2}.tar.gz" + _urlfmt_xz = "https://www.paraview.org/files/v{0}/ParaView-v{1}{2}.tar.xz" + + maintainers = ["chuckatkins", "danlipsa"] + + version("5.6.0", sha256="5b49cb96ab78eee0427e25200530ac892f9a3da7725109ce1790f8010cb5b377") + version("5.5.2", sha256="64561f34c4402b88f3cb20a956842394dde5838efd7ebb301157a837114a0e2d") + version("5.5.1", sha256="a6e67a95a7a5711a2b5f95f38ccbff4912262b3e1b1af7d6b9afe8185aa85c0d") + version("5.5.0", sha256="1b619e326ff574de808732ca9a7447e4cd14e94ae6568f55b6581896cd569dff") + version("5.4.1", sha256="390d0f5dc66bf432e202a39b1f34193af4bf8aad2355338fa5e2778ea07a80e4") + version("5.4.0", sha256="f488d84a53b1286d2ee1967e386626c8ad05a6fe4e6cbdaa8d5e042f519f94a9") + version("5.3.0", sha256="046631bbf00775edc927314a3db207509666c9c6aadc7079e5159440fd2f88a0") + version("5.2.0", sha256="894e42ef8475bb49e4e7e64f4ee2c37c714facd18bfbb1d6de7f69676b062c96") + version("5.1.2", sha256="ff02b7307a256b7c6e8ad900dee5796297494df7f9a0804fe801eb2f66e6a187") + version("5.0.1", sha256="caddec83ec284162a2cbc46877b0e5a9d2cca59fb4ab0ea35b0948d2492950bb") + version("4.4.0", sha256="c2dc334a89df24ce5233b81b74740fc9f10bc181cd604109fd13f6ad2381fc73") + + variant("python", default=False, description="Enable Python support") + variant("python3", default=False, description="Enable Python3 support") + variant("essentials", default=False, description="Enable Essentials support") + variant("extras", default=False, description="Enable Extras support. Implies Essentials.") + variant( + "rendering", + default=True, + description="Enable Rendering support. Implies Extras and Essentials.", + ) + variant("osmesa", default=True, description="Use offscreen rendering") + conflicts("+osmesa", when="~rendering") + + conflicts("+python", when="+python3") + conflicts("+python", when="@5.6:") + conflicts("+python3", when="@:5.5") # Workaround for # adding the following to your packages.yaml @@ -61,73 +65,71 @@ class Catalyst(CMakePackage): # for `spack spec paraview+python` # see spack pull request #11539 # extends('python', when='+python') - extends('python', when='+python') - extends('python', when='+python3') + extends("python", when="+python") + extends("python", when="+python3") # VTK < 8.2.1 can't handle Python 3.8 # This affects Paraview <= 5.7 (VTK 8.2.0) # https://gitlab.kitware.com/vtk/vtk/-/issues/17670 - depends_on('python@3:3.7', when='@:5.7 +python3', type=('build', 'run')) - depends_on('python@3:', when='@5.8:+python3', type=('build', 'run')) - depends_on('python@2.7:2.8', when='+python', type=('build', 'link', 'run')) + depends_on("python@3:3.7", when="@:5.7 +python3", type=("build", "run")) + depends_on("python@3:", when="@5.8:+python3", type=("build", "run")) + depends_on("python@2.7:2.8", when="+python", type=("build", "link", "run")) - depends_on('git', type='build') - depends_on('mpi') + depends_on("git", type="build") + depends_on("mpi") - depends_on('py-numpy', when='+python', type=('build', 'run')) - depends_on('py-numpy', when='+python3', type=('build', 'run')) - depends_on('py-mpi4py', when='+python', type=('build', 'run')) - depends_on('py-mpi4py', when='+python3', type=('build', 'run')) + depends_on("py-numpy", when="+python", type=("build", "run")) + depends_on("py-numpy", when="+python3", type=("build", "run")) + depends_on("py-mpi4py", when="+python", type=("build", "run")) + depends_on("py-mpi4py", when="+python3", type=("build", "run")) - depends_on('gl@3.2:', when='+rendering') - depends_on('osmesa', when='+osmesa') - depends_on('glx', when='~osmesa') - depends_on('cmake@3.3:', type='build') + depends_on("gl@3.2:", when="+rendering") + depends_on("osmesa", when="+osmesa") + depends_on("glx", when="~osmesa") + depends_on("cmake@3.3:", type="build") - @when('@5.5.0:5.5.2') + @when("@5.5.0:5.5.2") def patch(self): """Apply the patch (it should be fixed in Paraview 5.6) at the package dir to the source code in root_cmakelists_dir.""" - patch_name = 'vtkm-catalyst-pv551.patch' + patch_name = "vtkm-catalyst-pv551.patch" patch = which("patch", required=True) with working_dir(self.root_cmakelists_dir): - patch('-s', '-p', '1', '-i', - join_path(self.package_dir, patch_name), - "-d", '.') + patch("-s", "-p", "1", "-i", join_path(self.package_dir, patch_name), "-d", ".") def url_for_version(self, version): """Handle ParaView version-based custom URLs.""" - if version < Version('5.1.0'): - return self._urlfmt_gz.format(version.up_to(2), version, '-source') - elif version < Version('5.6.0'): - return self._urlfmt_gz.format(version.up_to(2), version, '') + if version < Version("5.1.0"): + return self._urlfmt_gz.format(version.up_to(2), version, "-source") + elif version < Version("5.6.0"): + return self._urlfmt_gz.format(version.up_to(2), version, "") else: - return self._urlfmt_xz.format(version.up_to(2), version, '') + return self._urlfmt_xz.format(version.up_to(2), version, "") @property def paraview_subdir(self): """The paraview subdirectory name as paraview-major.minor""" - return 'paraview-{0}'.format(self.spec.version.up_to(2)) + return "paraview-{0}".format(self.spec.version.up_to(2)) @property def editions(self): """Transcribe spack variants into names of Catalyst Editions""" - selected = ['Base'] # Always required + selected = ["Base"] # Always required - if '+python' in self.spec or '+python3' in self.spec: - selected.append('Enable-Python') + if "+python" in self.spec or "+python3" in self.spec: + selected.append("Enable-Python") - if '+essentials' in self.spec: - selected.append('Essentials') + if "+essentials" in self.spec: + selected.append("Essentials") - if '+extras' in self.spec: - selected.append('Essentials') - selected.append('Extras') + if "+extras" in self.spec: + selected.append("Essentials") + selected.append("Extras") - if '+rendering' in self.spec: - selected.append('Essentials') - selected.append('Extras') - selected.append('Rendering-Base') + if "+rendering" in self.spec: + selected.append("Essentials") + selected.append("Extras") + selected.append("Rendering-Base") return selected @@ -137,31 +139,34 @@ class Catalyst(CMakePackage): super(Catalyst, self).do_stage(mirror_only) # extract the catalyst part - catalyst_script = os.path.join(self.stage.source_path, 'Catalyst', - 'catalyze.py') - editions_dir = os.path.join(self.stage.source_path, 'Catalyst', - 'Editions') + catalyst_script = os.path.join(self.stage.source_path, "Catalyst", "catalyze.py") + editions_dir = os.path.join(self.stage.source_path, "Catalyst", "Editions") catalyst_source_dir = os.path.abspath(self.root_cmakelists_dir) - python_path = (os.path.realpath( - self.spec['python'].command.path - if ('+python3' in self.spec or '+python' in self.spec) - else sys.executable)) - - command = [python_path, catalyst_script, - '-r', self.stage.source_path, - '-o', catalyst_source_dir] + python_path = os.path.realpath( + self.spec["python"].command.path + if ("+python3" in self.spec or "+python" in self.spec) + else sys.executable + ) + + command = [ + python_path, + catalyst_script, + "-r", + self.stage.source_path, + "-o", + catalyst_source_dir, + ] for edition in self.editions: - command.extend(['-i', os.path.join(editions_dir, edition)]) + command.extend(["-i", os.path.join(editions_dir, edition)]) if not os.path.isdir(catalyst_source_dir): os.mkdir(catalyst_source_dir) subprocess.check_call(command) tty.msg("Generated catalyst source in %s" % self.stage.source_path) else: - tty.msg("Already generated %s in %s" % (self.name, - self.stage.source_path)) + tty.msg("Already generated %s in %s" % (self.name, self.stage.source_path)) def setup_run_environment(self, env): # paraview 5.5 and later @@ -173,20 +178,21 @@ class Catalyst(CMakePackage): else: lib_dir = self.prefix.lib - if self.spec.version <= Version('5.4.1'): + if self.spec.version <= Version("5.4.1"): lib_dir = join_path(lib_dir, paraview_subdir) - env.set('ParaView_DIR', self.prefix) - env.prepend_path('LIBRARY_PATH', lib_dir) - env.prepend_path('LD_LIBRARY_PATH', lib_dir) + env.set("ParaView_DIR", self.prefix) + env.prepend_path("LIBRARY_PATH", lib_dir) + env.prepend_path("LD_LIBRARY_PATH", lib_dir) - if '+python' in self.spec or '+python3' in self.spec: - python_version = self.spec['python'].version.up_to(2) - env.prepend_path('PYTHONPATH', join_path(lib_dir, - 'python{0}'.format(python_version), - 'site-packages')) + if "+python" in self.spec or "+python3" in self.spec: + python_version = self.spec["python"].version.up_to(2) + env.prepend_path( + "PYTHONPATH", + join_path(lib_dir, "python{0}".format(python_version), "site-packages"), + ) def setup_dependent_build_environment(self, env, dependent_spec): - env.set('ParaView_DIR', self.prefix) + env.set("ParaView_DIR", self.prefix) @property def root_cmakelists_dir(self): @@ -197,8 +203,7 @@ class Catalyst(CMakePackage): :return: directory containing CMakeLists.txt """ - return os.path.join(self.stage.source_path, - 'Catalyst-v' + str(self.version)) + return os.path.join(self.stage.source_path, "Catalyst-v" + str(self.version)) @property def build_directory(self): @@ -206,14 +211,13 @@ class Catalyst(CMakePackage): :return: directory where to build the package """ - return join_path(os.path.abspath(self.root_cmakelists_dir), - 'spack-build') + return join_path(os.path.abspath(self.root_cmakelists_dir), "spack-build") def cmake_args(self): """Populate cmake arguments for Catalyst.""" spec = self.spec - def variant_bool(feature, on='ON', off='OFF'): + def variant_bool(feature, on="ON", off="OFF"): """Ternary for spec variant to ON/OFF string""" if feature in spec: return on @@ -221,37 +225,38 @@ class Catalyst(CMakePackage): def nvariant_bool(feature): """Negated ternary for spec variant to OFF/ON string""" - return variant_bool(feature, on='OFF', off='ON') + return variant_bool(feature, on="OFF", off="ON") cmake_args = [ - '-DPARAVIEW_GIT_DESCRIBE=v%s' % str(self.version), - '-DVTK_USE_SYSTEM_EXPAT:BOOL=ON', - '-DVTK_USE_X:BOOL=%s' % nvariant_bool('+osmesa'), - '-DVTK_USE_OFFSCREEN:BOOL=%s' % variant_bool('+osmesa'), - '-DVTK_OPENGL_HAS_OSMESA:BOOL=%s' % variant_bool('+osmesa'), + "-DPARAVIEW_GIT_DESCRIBE=v%s" % str(self.version), + "-DVTK_USE_SYSTEM_EXPAT:BOOL=ON", + "-DVTK_USE_X:BOOL=%s" % nvariant_bool("+osmesa"), + "-DVTK_USE_OFFSCREEN:BOOL=%s" % variant_bool("+osmesa"), + "-DVTK_OPENGL_HAS_OSMESA:BOOL=%s" % variant_bool("+osmesa"), ] - if '+python' in spec or '+python3' in spec: - cmake_args.extend([ - '-DPARAVIEW_ENABLE_PYTHON:BOOL=ON', - '-DPYTHON_EXECUTABLE:FILEPATH=%s' % - spec['python'].command.path, - '-DVTK_USE_SYSTEM_MPI4PY:BOOL=ON' - ]) + if "+python" in spec or "+python3" in spec: + cmake_args.extend( + [ + "-DPARAVIEW_ENABLE_PYTHON:BOOL=ON", + "-DPYTHON_EXECUTABLE:FILEPATH=%s" % spec["python"].command.path, + "-DVTK_USE_SYSTEM_MPI4PY:BOOL=ON", + ] + ) else: - cmake_args.append('-DPARAVIEW_ENABLE_PYTHON:BOOL=OFF') + cmake_args.append("-DPARAVIEW_ENABLE_PYTHON:BOOL=OFF") - if spec.platform == 'linux' and spec.target.family == 'aarch64': - cmake_args.append('-DCMAKE_CXX_FLAGS=-DPNG_ARM_NEON_OPT=0') - cmake_args.append('-DCMAKE_C_FLAGS=-DPNG_ARM_NEON_OPT=0') + if spec.platform == "linux" and spec.target.family == "aarch64": + cmake_args.append("-DCMAKE_CXX_FLAGS=-DPNG_ARM_NEON_OPT=0") + cmake_args.append("-DCMAKE_C_FLAGS=-DPNG_ARM_NEON_OPT=0") return cmake_args def cmake(self, spec, prefix): """Runs ``cmake`` in the build directory through the cmake.sh script""" - cmake_script_path = os.path.join( - os.path.abspath(self.root_cmakelists_dir), - 'cmake.sh') + cmake_script_path = os.path.join(os.path.abspath(self.root_cmakelists_dir), "cmake.sh") with working_dir(self.build_directory, create=True): - subprocess.check_call([cmake_script_path, - os.path.abspath(self.root_cmakelists_dir)] + - self.cmake_args() + self.std_cmake_args) + subprocess.check_call( + [cmake_script_path, os.path.abspath(self.root_cmakelists_dir)] + + self.cmake_args() + + self.std_cmake_args + ) |