summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2012-06-22 22:10:14 -0700
committerZac Medico <zmedico@gentoo.org>2012-06-22 22:10:14 -0700
commit5497c9f1443f1f615f145ee645f17959ed20168c (patch)
tree34de82d2c1333fb2870542039cf34cc4ad6af4ba
parentfa68712ab045dce1d0e50d9252e02329d2d9f75b (diff)
downloadportage-5497c9f1443f1f615f145ee645f17959ed20168c.tar.gz
portage-5497c9f1443f1f615f145ee645f17959ed20168c.tar.bz2
portage-5497c9f1443f1f615f145ee645f17959ed20168c.zip
Fix success_without_autounmask logic wrt rebuilds
-rw-r--r--pym/_emerge/depgraph.py34
1 files changed, 20 insertions, 14 deletions
diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py
index 039dbdc6b..75e3500de 100644
--- a/pym/_emerge/depgraph.py
+++ b/pym/_emerge/depgraph.py
@@ -2658,20 +2658,6 @@ class depgraph(object):
"slot conflict" in self._dynamic_config._backtrack_infos):
return False, myfavorites
- digraph_nodes = self._dynamic_config.digraph.nodes
-
- if any(x in digraph_nodes for x in
- self._dynamic_config._needed_unstable_keywords) or \
- any(x in digraph_nodes for x in
- self._dynamic_config._needed_p_mask_changes) or \
- any(x in digraph_nodes for x in
- self._dynamic_config._needed_use_config_changes) or \
- any(x in digraph_nodes for x in
- self._dynamic_config._needed_license_changes) :
- #We failed if the user needs to change the configuration
- self._dynamic_config._success_without_autounmask = True
- return False, myfavorites
-
if self._rebuild.trigger_rebuilds():
backtrack_infos = self._dynamic_config._backtrack_infos
config = backtrack_infos.setdefault("config", {})
@@ -2686,6 +2672,26 @@ class depgraph(object):
self.need_restart():
return False, myfavorites
+ # Any failures except those due to autounmask *alone* should return
+ # before this point, since the success_without_autounmask flag that's
+ # set below is reserved for cases where there are *zero* other
+ # problems. For reference, see backtrack_depgraph, where it skips the
+ # get_best_run() call when success_without_autounmask is True.
+
+ digraph_nodes = self._dynamic_config.digraph.nodes
+
+ if any(x in digraph_nodes for x in
+ self._dynamic_config._needed_unstable_keywords) or \
+ any(x in digraph_nodes for x in
+ self._dynamic_config._needed_p_mask_changes) or \
+ any(x in digraph_nodes for x in
+ self._dynamic_config._needed_use_config_changes) or \
+ any(x in digraph_nodes for x in
+ self._dynamic_config._needed_license_changes) :
+ #We failed if the user needs to change the configuration
+ self._dynamic_config._success_without_autounmask = True
+ return False, myfavorites
+
# We're true here unless we are missing binaries.
return (True, myfavorites)