1 |
commit: f90df89f9053bdad96d61935d704f33239f3fed5 |
2 |
Author: Zac Medico <zmedico <AT> gentoo <DOT> org> |
3 |
AuthorDate: Fri Feb 4 17:41:30 2011 +0000 |
4 |
Commit: Zac Medico <zmedico <AT> gentoo <DOT> org> |
5 |
CommitDate: Fri Feb 4 17:41:30 2011 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=f90df89f9053bdad96d61935d704f33239f3fed5 |
7 |
|
8 |
depgraph: make downgrades trigger complete graph |
9 |
|
10 |
It's common for downgrades to break dependencies, as in bug #353613, so |
11 |
automatically trigger complete graph mode when a downgrade is found. |
12 |
|
13 |
--- |
14 |
pym/_emerge/depgraph.py | 23 +++++++++++++++++++++-- |
15 |
1 files changed, 21 insertions(+), 2 deletions(-) |
16 |
|
17 |
diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py |
18 |
index 4334a33..f131889 100644 |
19 |
--- a/pym/_emerge/depgraph.py |
20 |
+++ b/pym/_emerge/depgraph.py |
21 |
@@ -3456,8 +3456,27 @@ class depgraph(object): |
22 |
return 1 |
23 |
|
24 |
if "complete" not in self._dynamic_config.myparams: |
25 |
- # Skip this to avoid consuming enough time to disturb users. |
26 |
- return 1 |
27 |
+ # Automatically enable complete mode if there are any |
28 |
+ # downgrades, since they often break dependencies |
29 |
+ # (like in bug #353613). |
30 |
+ have_downgrade = False |
31 |
+ for node in self._dynamic_config.digraph: |
32 |
+ if not isinstance(node, Package) or \ |
33 |
+ node.operation != "merge": |
34 |
+ continue |
35 |
+ vardb = self._frozen_config.roots[ |
36 |
+ node.root].trees["vartree"].dbapi |
37 |
+ inst_pkg = vardb.match_pkgs(node.slot_atom) |
38 |
+ if inst_pkg and inst_pkg[0] > node: |
39 |
+ have_downgrade = True |
40 |
+ break |
41 |
+ |
42 |
+ if have_downgrade: |
43 |
+ self._dynamic_config.myparams["complete"] = True |
44 |
+ else: |
45 |
+ # Skip complete graph mode, in order to avoid consuming |
46 |
+ # enough time to disturb users. |
47 |
+ return 1 |
48 |
|
49 |
self._load_vdb() |