diff --git a/var/spack/repos/builtin/packages/petsc/package.py b/var/spack/repos/builtin/packages/petsc/package.py index c1b060bd501e6d44e3fe8a01fadd2963542722ee..f328171072e10d1c9c2c5058a8cc73e582d1a3c4 100644 --- a/var/spack/repos/builtin/packages/petsc/package.py +++ b/var/spack/repos/builtin/packages/petsc/package.py @@ -216,7 +216,7 @@ def mpi_dependent_options(self): # enabled. This generates a list of any such errors. errors = [ error_message_fmt.format(library=x) - for x in ('hdf5', 'hypre', 'parmetis', 'mumps', 'superlu-dist') + for x in ('hdf5', 'hypre', 'mumps', 'superlu-dist') if ('+' + x) in self.spec] if errors: errors = ['incompatible variants given'] + errors @@ -296,15 +296,18 @@ def install(self, spec, prefix): '--with-scalapack=0' ]) - # Activates library support if needed + # Activates library support if needed (i.e. direct dependency) for library in ('cuda', 'metis', 'hypre', 'parmetis', 'mumps', 'trilinos', 'fftw', 'valgrind'): + # Cannot check `library in spec` because of transitive deps + # Cannot check variants because parmetis keys on +metis + library_requested = library in spec.dependencies_dict() options.append( '--with-{library}={value}'.format( library=library, - value=('1' if '+' + library in spec else '0')) + value=('1' if library_requested else '0')) ) - if '+' + library in spec: + if library_requested: options.append( '--with-{library}-dir={path}'.format( library=library, path=spec[library].prefix)