From 9d91677dc51a0f6cd34c9230bbe03b1cf7f3018f Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Thu, 16 Jul 2009 22:18:45 +0000 Subject: For unsatisfied USE dependencies, do not backtrack if only USE have to change in order to be satisfied. Thanks to Thomas Sachau fo reporting. svn path=/main/trunk/; revision=13832 --- pym/_emerge/depgraph.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py index c1b789966..22aa904ee 100644 --- a/pym/_emerge/depgraph.py +++ b/pym/_emerge/depgraph.py @@ -664,10 +664,22 @@ class depgraph(object): self._dynamic_config._runtime_pkg_mask[ dep.parent]), noiselevel=-1) else: - self._dynamic_config._runtime_pkg_mask.setdefault( - dep.parent, {})["missing dependency"] = \ - set([(dep.parent, dep.atom)]) - self._dynamic_config._need_restart = True + # Do not backtrack if only USE have to be changed in + # order to satisfy the dependency. + atom_without_use = dep.atom + if dep.atom.use: + atom_without_use = portage.dep.remove_slot(dep.atom) + if dep.atom.slot: + atom_without_use += ":" + dep.atom.slot + atom_without_use = portage.dep.Atom(atom_without_use) + dep_pkg, existing_node = \ + self._select_package(dep.root, atom_without_use, + onlydeps=dep.onlydeps) + if dep_pkg is None: + self._dynamic_config._runtime_pkg_mask.setdefault( + dep.parent, {})["missing dependency"] = \ + set([(dep.parent, dep.atom)]) + self._dynamic_config._need_restart = True return 0 # In some cases, dep_check will return deps that shouldn't -- cgit v1.2.3-1-g7c22