diff options
author | Zac Medico <zmedico@gentoo.org> | 2008-11-11 19:27:51 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2008-11-11 19:27:51 +0000 |
commit | 7fda15ffe221c8a4946aba3a10cc3c068616d797 (patch) | |
tree | 975a56ce4b2a732ccce865161fc9c01bd60d1347 | |
parent | 2c39fe1df5c257432f5df687dcd92fd675aa920a (diff) | |
download | portage-7fda15ffe221c8a4946aba3a10cc3c068616d797.tar.gz portage-7fda15ffe221c8a4946aba3a10cc3c068616d797.tar.bz2 portage-7fda15ffe221c8a4946aba3a10cc3c068616d797.zip |
Allow --keep-going to continue in some cases when a runtime dependency has
failed to build or install. This involves pruning off the parts of the graph
containing installed packages with unsatisfied dependencies.
svn path=/main/trunk/; revision=11858
-rw-r--r-- | pym/_emerge/__init__.py | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py index f0da0e7e2..c5084ac7b 100644 --- a/pym/_emerge/__init__.py +++ b/pym/_emerge/__init__.py @@ -12803,7 +12803,7 @@ def resume_depgraph(settings, trees, mtimedb, myopts, myparams, spinner, # dependency to become unsatisfied. for parent_node in graph.parent_nodes(pkg): if not isinstance(parent_node, Package) \ - or parent_node.operation != "merge": + or parent_node.operation not in ("merge", "nomerge"): continue unsatisfied = \ graph.child_nodes(parent_node, @@ -12822,7 +12822,14 @@ def resume_depgraph(settings, trees, mtimedb, myopts, myparams, spinner, # it's already installed, but it has unsatisfied PDEPEND. raise mergelist[:] = pruned_mergelist - dropped_tasks.update(unsatisfied_parents) + + # Exclude installed packages that have been removed from the graph due + # to failure to build/install runtime dependencies after the dependent + # package has already been installed. + dropped_tasks.update(pkg for pkg in \ + unsatisfied_parents if pkg.operation != "nomerge") + mydepgraph.break_refs(unsatisfied_parents) + del e, graph, traversed_nodes, \ unsatisfied_parents, unsatisfied_stack continue |