Blacklist implicit packages for modulefile generation (#2603)
Add the ability to the modules generation process to blacklist packages that were installed implicitly. One can still whitelist modules that were installed implicitly. This changes adds a `blacklist_implicts` boolean as a peer to the `whitelist` and `blacklist` arrays, e.g.: ``` modules: enable:: - lmod lmod: whitelist: - 'lua' - 'py-setuptools' blacklist: - '%gcc@4.8.3' blacklist_implicits: True ``` It adds a small helper in `spec.py` and then touches up the package filtering code in `modules.py`.
This commit is contained in:
parent
acb9281dbf
commit
5a836fd06e
@ -327,6 +327,10 @@ def blacklisted(self):
|
||||
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 @@ def blacklisted(self):
|
||||
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
|
||||
|
@ -2596,6 +2596,16 @@ def _install_status(self):
|
||||
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."""
|
||||
|
Loading…
Reference in New Issue
Block a user