diff options
Diffstat (limited to 'var/spack/repos/builtin/packages/hypre-cmake/package.py')
-rw-r--r-- | var/spack/repos/builtin/packages/hypre-cmake/package.py | 139 |
1 files changed, 72 insertions, 67 deletions
diff --git a/var/spack/repos/builtin/packages/hypre-cmake/package.py b/var/spack/repos/builtin/packages/hypre-cmake/package.py index ee70c986ba..c4e3d17ce0 100644 --- a/var/spack/repos/builtin/packages/hypre-cmake/package.py +++ b/var/spack/repos/builtin/packages/hypre-cmake/package.py @@ -10,112 +10,118 @@ from spack.package import * class HypreCmake(CMakePackage, CudaPackage): """Hypre is a library of high performance preconditioners that - features parallel multigrid methods for both structured and - unstructured grid problems.""" + features parallel multigrid methods for both structured and + unstructured grid problems.""" homepage = "http://computing.llnl.gov/project/linear_solvers/software.php" - url = "https://github.com/hypre-space/hypre/archive/v2.14.0.tar.gz" - git = "https://github.com/hypre-space/hypre.git" + url = "https://github.com/hypre-space/hypre/archive/v2.14.0.tar.gz" + git = "https://github.com/hypre-space/hypre.git" - maintainers = ['ulrikeyang', 'osborn9', 'balay'] + maintainers = ["ulrikeyang", "osborn9", "balay"] test_requires_compiler = True - version('develop', branch='master') - version('2.22.0', sha256='2c786eb5d3e722d8d7b40254f138bef4565b2d4724041e56a8fa073bda5cfbb5') - - variant('shared', default=(sys.platform != 'darwin'), - description="Build shared library (disables static library)") - variant('superlu_dist', default=False, - description='Activates support for SuperLU_Dist library') - variant('int64', default=False, - description="Use 64bit integers") - variant('mixedint', default=False, - description="Use 64bit integers while reducing memory use") - variant('complex', default=False, description='Use complex values') - variant('mpi', default=True, description='Enable MPI support') - variant('openmp', default=False, description='Enable OpenMP support') - variant('debug', default=False, - description='Build debug instead of optimized version') - variant('unified_memory', default=False, description='Use unified memory') - - depends_on("mpi", when='+mpi') + version("develop", branch="master") + version("2.22.0", sha256="2c786eb5d3e722d8d7b40254f138bef4565b2d4724041e56a8fa073bda5cfbb5") + + variant( + "shared", + default=(sys.platform != "darwin"), + description="Build shared library (disables static library)", + ) + variant( + "superlu_dist", default=False, description="Activates support for SuperLU_Dist library" + ) + variant("int64", default=False, description="Use 64bit integers") + variant("mixedint", default=False, description="Use 64bit integers while reducing memory use") + variant("complex", default=False, description="Use complex values") + variant("mpi", default=True, description="Enable MPI support") + variant("openmp", default=False, description="Enable OpenMP support") + variant("debug", default=False, description="Build debug instead of optimized version") + variant("unified_memory", default=False, description="Use unified memory") + + depends_on("mpi", when="+mpi") depends_on("blas") depends_on("lapack") - depends_on('superlu-dist', when='+superlu_dist+mpi') + depends_on("superlu-dist", when="+superlu_dist+mpi") - conflicts('+cuda', when='+int64') - conflicts('+unified_memory', when='~cuda') + conflicts("+cuda", when="+int64") + conflicts("+unified_memory", when="~cuda") def url_for_version(self, version): - if version >= Version('2.12.0'): - url = 'https://github.com/hypre-space/hypre/archive/v{0}.tar.gz' + if version >= Version("2.12.0"): + url = "https://github.com/hypre-space/hypre/archive/v{0}.tar.gz" else: - url = 'http://computing.llnl.gov/project/linear_solvers/download/hypre-{0}.tar.gz' + url = "http://computing.llnl.gov/project/linear_solvers/download/hypre-{0}.tar.gz" return url.format(version) - root_cmakelists_dir = 'src' + root_cmakelists_dir = "src" def cmake_args(self): from_variant = self.define_from_variant args = [ - from_variant('HYPRE_WITH_MPI', 'mpi'), - from_variant('HYPRE_WITH_OPENMP', 'openmp'), - from_variant('HYPRE_WITH_BIGINT', 'int64'), - from_variant('HYPRE_WITH_MIXEDINT', 'mixedint'), - from_variant('HYPRE_WITH_COMPLEX', 'complex'), - from_variant('BUILD_SHARED_LIBS', 'shared'), - from_variant('HYPRE_ENABLE_SHARED', 'shared'), - from_variant('HYPRE_WITH_DSUPERLU', 'superlu_dist'), - from_variant('HYPRE_WITH_CUDA', 'cuda'), - from_variant('HYPRE_ENABLE_UNIFIED_MEMORY', 'unified_memory'), + from_variant("HYPRE_WITH_MPI", "mpi"), + from_variant("HYPRE_WITH_OPENMP", "openmp"), + from_variant("HYPRE_WITH_BIGINT", "int64"), + from_variant("HYPRE_WITH_MIXEDINT", "mixedint"), + from_variant("HYPRE_WITH_COMPLEX", "complex"), + from_variant("BUILD_SHARED_LIBS", "shared"), + from_variant("HYPRE_ENABLE_SHARED", "shared"), + from_variant("HYPRE_WITH_DSUPERLU", "superlu_dist"), + from_variant("HYPRE_WITH_CUDA", "cuda"), + from_variant("HYPRE_ENABLE_UNIFIED_MEMORY", "unified_memory"), ] return args def setup_build_environment(self, env): - if '+cuda' in self.spec: - env.set('CUDA_HOME', self.spec['cuda'].prefix) - env.set('CUDA_PATH', self.spec['cuda'].prefix) - cuda_arch = self.spec.variants['cuda_arch'].value + if "+cuda" in self.spec: + env.set("CUDA_HOME", self.spec["cuda"].prefix) + env.set("CUDA_PATH", self.spec["cuda"].prefix) + cuda_arch = self.spec.variants["cuda_arch"].value if cuda_arch: arch_sorted = list(sorted(cuda_arch, reverse=True)) - env.set('HYPRE_CUDA_SM', arch_sorted[0]) + env.set("HYPRE_CUDA_SM", arch_sorted[0]) # In CUDA builds hypre currently doesn't handle flags correctly - env.append_flags( - 'CXXFLAGS', '-O2' if '~debug' in self.spec else '-g') + env.append_flags("CXXFLAGS", "-O2" if "~debug" in self.spec else "-g") - extra_install_tests = join_path('src', 'examples') + extra_install_tests = join_path("src", "examples") - @run_after('install') + @run_after("install") def cache_test_sources(self): self.cache_extra_test_sources(self.extra_install_tests) @property def _cached_tests_work_dir(self): """The working directory for cached test sources.""" - return join_path(self.test_suite.current_test_cache_dir, - self.extra_install_tests) + return join_path(self.test_suite.current_test_cache_dir, self.extra_install_tests) def test(self): """Perform smoke test on installed HYPRE package.""" - if '+mpi' not in self.spec: - print('Skipping: HYPRE must be installed with +mpi to run tests') + if "+mpi" not in self.spec: + print("Skipping: HYPRE must be installed with +mpi to run tests") return # Build copied and cached test examples - self.run_test('make', - ['HYPRE_DIR={0}'.format(self.prefix), 'bigint'], - purpose='test: building selected examples', - work_dir=self._cached_tests_work_dir) + self.run_test( + "make", + ["HYPRE_DIR={0}".format(self.prefix), "bigint"], + purpose="test: building selected examples", + work_dir=self._cached_tests_work_dir, + ) # Run the examples built above - for exe in ['./ex5big', './ex15big']: - self.run_test(exe, [], [], installed=False, - purpose='test: ensuring {0} runs'.format(exe), - skip_missing=True, - work_dir=self._cached_tests_work_dir) + for exe in ["./ex5big", "./ex15big"]: + self.run_test( + exe, + [], + [], + installed=False, + purpose="test: ensuring {0} runs".format(exe), + skip_missing=True, + work_dir=self._cached_tests_work_dir, + ) @property def headers(self): @@ -123,7 +129,7 @@ class HypreCmake(CMakePackage, CudaPackage): in the same directory. Sample usage: spec['hypre'].headers.cpp_flags """ - hdrs = find_headers('HYPRE', self.prefix.include, recursive=False) + hdrs = find_headers("HYPRE", self.prefix.include, recursive=False) return hdrs or None @property @@ -131,7 +137,6 @@ class HypreCmake(CMakePackage, CudaPackage): """Export the hypre library. Sample usage: spec['hypre'].libs.ld_flags """ - is_shared = '+shared' in self.spec - libs = find_libraries('libHYPRE', root=self.prefix, shared=is_shared, - recursive=True) + is_shared = "+shared" in self.spec + libs = find_libraries("libHYPRE", root=self.prefix, shared=is_shared, recursive=True) return libs or None |