diff options
-rw-r--r-- | lib/spack/spack/modules.py | 12 | ||||
-rw-r--r-- | lib/spack/spack/spec.py | 10 |
2 files changed, 21 insertions, 1 deletions
diff --git a/lib/spack/spack/modules.py b/lib/spack/spack/modules.py index 5e2a840e14..ba220291a0 100644 --- a/lib/spack/spack/modules.py +++ b/lib/spack/spack/modules.py @@ -327,6 +327,10 @@ class EnvModule(object): blacklist_matches = [x for x in configuration.get('blacklist', []) if self.spec.satisfies(x)] + blacklist_implicits = configuration.get('blacklist_implicits') + installed_implicitly = not self.spec._installed_explicitly() + blacklisted_as_implicit = blacklist_implicits and installed_implicitly + if whitelist_matches: message = '\tWHITELIST : %s [matches : ' % self.spec.cshort_spec for rule in whitelist_matches: @@ -341,7 +345,13 @@ class EnvModule(object): message += ' ]' tty.debug(message) - if not whitelist_matches and blacklist_matches: + if blacklisted_as_implicit: + message = '\tBLACKLISTED_AS_IMPLICIT : %s' % \ + self.spec.cshort_spec + tty.debug(message) + + is_blacklisted = blacklist_matches or blacklisted_as_implicit + if not whitelist_matches and is_blacklisted: return True return False diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 07e3221ed7..36806b757d 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -2596,6 +2596,16 @@ class Spec(object): except KeyError: return None + def _installed_explicitly(self): + """Helper for tree to print DB install status.""" + if not self.concrete: + return None + try: + record = spack.store.db.get_record(self) + return record.explicit + except KeyError: + return None + def tree(self, **kwargs): """Prints out this spec and its dependencies, tree-formatted with indentation.""" |