Skip to content
Snippets Groups Projects
Commit 55810fe6 authored by Christoph Pohl's avatar Christoph Pohl Committed by Christian Dreher
Browse files

Resolve "Features with multiple module dependencies are not correctly added to...

Resolve "Features with multiple module dependencies are not correctly added to the dependency graph"
parent 20459ec8
No related branches found
No related tags found
1 merge request!481Add all required modules of a feature to the dependency graph if indirectly satisfied
......@@ -41,19 +41,22 @@ class ModuleGraph(nx.DiGraph):
# Add edges by implicitly enabled features.
for _, module in self.nodes(data="module"):
module: Module
for feature_name, required_name in module.features.items():
# Check whether the module required by this feature is active.
if self.has_node(required_name):
edge = (module.name, required_name)
if not self.has_edge(*edge):
# We should respect the optional dependency even
# though the feature was not enabled explicitly.
# => Consider the feature be enabled.
dependency = Dependency(feature_name=feature_name)
module.required_modules[required_name] = dependency
self.add_edge(*edge, dependency=dependency)
assert self.has_edge(*edge)
for feature_name, required_modules in module.features.items():
required_modules = [required_modules] if isinstance(required_modules, str)\
else required_modules
# Check whether all modules required by this feature are active.
if all(self.has_node(required_module) for required_module in required_modules):
edges = [(module.name, required_module) for required_module in required_modules]
for edge in edges:
if not self.has_edge(*edge):
# We should respect the optional dependency even
# though the feature was not enabled explicitly.
# => Consider the feature be enabled.
dependency = Dependency(feature_name=feature_name)
module.required_modules[edge[1]] = dependency
self.add_edge(*edge, dependency=dependency)
assert self.has_edge(*edge)
return self
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment