Gentoo Archives: gentoo-commits

From: zmedico@g.o
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/portage:master commit in: pym/_emerge/
Date: Fri, 04 Feb 2011 17:43:40
Message-Id: f90df89f9053bdad96d61935d704f33239f3fed5.zmedico@gentoo
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()