package: support removing dependencies when deactivating
This commit is contained in:
parent
f50ddeed9f
commit
21dc31a4a1
@ -1840,10 +1840,15 @@ def ignore(filename):
|
|||||||
tree.merge(target, ignore=ignore, link=extensions_layout.link)
|
tree.merge(target, ignore=ignore, link=extensions_layout.link)
|
||||||
|
|
||||||
def do_deactivate(self, **kwargs):
|
def do_deactivate(self, **kwargs):
|
||||||
"""Called on the extension to invoke extendee's deactivate() method."""
|
"""Called on the extension to invoke extendee's deactivate() method.
|
||||||
|
|
||||||
|
`remove_dependents=True` deactivates extensions depending on this
|
||||||
|
package instead of raising an error.
|
||||||
|
"""
|
||||||
self._sanity_check_extension()
|
self._sanity_check_extension()
|
||||||
force = kwargs.get('force', False)
|
force = kwargs.get('force', False)
|
||||||
verbose = kwargs.get("verbose", True)
|
verbose = kwargs.get("verbose", True)
|
||||||
|
remove_dependents = kwargs.get("remove_dependents", False)
|
||||||
extensions_layout = kwargs.get("extensions_layout",
|
extensions_layout = kwargs.get("extensions_layout",
|
||||||
spack.store.extensions)
|
spack.store.extensions)
|
||||||
|
|
||||||
@ -1860,11 +1865,14 @@ def do_deactivate(self, **kwargs):
|
|||||||
continue
|
continue
|
||||||
for dep in aspec.traverse(deptype='run'):
|
for dep in aspec.traverse(deptype='run'):
|
||||||
if self.spec == dep:
|
if self.spec == dep:
|
||||||
msg = ("Cannot deactivate %s because %s is "
|
if remove_dependents:
|
||||||
"activated and depends on it.")
|
aspec.package.do_deactivate(**kwargs)
|
||||||
raise ActivationError(
|
else:
|
||||||
msg % (self.spec.cshort_spec,
|
msg = ("Cannot deactivate %s because %s is "
|
||||||
aspec.cshort_spec))
|
"activated and depends on it.")
|
||||||
|
raise ActivationError(
|
||||||
|
msg % (self.spec.cshort_spec,
|
||||||
|
aspec.cshort_spec))
|
||||||
|
|
||||||
self.extendee_spec.package.deactivate(
|
self.extendee_spec.package.deactivate(
|
||||||
self,
|
self,
|
||||||
|
Loading…
Reference in New Issue
Block a user