Gentoo Archives: gentoo-commits

From: "Zac Medico (zmedico)" <zmedico@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] portage r10229 - main/trunk/pym/_emerge
Date: Thu, 08 May 2008 09:27:28
Message-Id: E1Ju2Om-00048m-JO@stork.gentoo.org
1 Author: zmedico
2 Date: 2008-05-08 09:26:47 +0000 (Thu, 08 May 2008)
3 New Revision: 10229
4
5 Modified:
6 main/trunk/pym/_emerge/__init__.py
7 Log:
8 Fix findInstalledBlockers() to check for blockers in both directions.
9
10
11 Modified: main/trunk/pym/_emerge/__init__.py
12 ===================================================================
13 --- main/trunk/pym/_emerge/__init__.py 2008-05-08 08:41:31 UTC (rev 10228)
14 +++ main/trunk/pym/_emerge/__init__.py 2008-05-08 09:26:47 UTC (rev 10229)
15 @@ -1532,22 +1532,6 @@
16 self._installed_pkgs = None
17
18 def findInstalledBlockers(self, new_pkg):
19 - self._update_cache()
20 - blocker_parents = digraph()
21 - blocker_atoms = []
22 - for pkg in self._installed_pkgs:
23 - for blocker_atom in self._blocker_cache[pkg.cpv].atoms:
24 - blocker_atom = blocker_atom[1:]
25 - blocker_atoms.append(blocker_atom)
26 - blocker_parents.add(blocker_atom, pkg)
27 -
28 - blocker_atoms = InternalPackageSet(initial_atoms=blocker_atoms)
29 - blocking_pkgs = set()
30 - for atom in blocker_atoms.iterAtomsForPackage(new_pkg):
31 - blocking_pkgs.update(blocker_parents.parent_nodes(atom))
32 - return blocking_pkgs
33 -
34 - def _update_cache(self):
35 blocker_cache = self._blocker_cache
36 dep_keys = ["DEPEND", "RDEPEND", "PDEPEND"]
37 dep_check_trees = self._dep_check_trees
38 @@ -1596,6 +1580,46 @@
39 del blocker_cache[cpv]
40 blocker_cache.flush()
41
42 + blocker_parents = digraph()
43 + blocker_atoms = []
44 + for pkg in self._installed_pkgs:
45 + for blocker_atom in self._blocker_cache[pkg.cpv].atoms:
46 + blocker_atom = blocker_atom[1:]
47 + blocker_atoms.append(blocker_atom)
48 + blocker_parents.add(blocker_atom, pkg)
49 +
50 + blocker_atoms = InternalPackageSet(initial_atoms=blocker_atoms)
51 + blocking_pkgs = set()
52 + for atom in blocker_atoms.iterAtomsForPackage(new_pkg):
53 + blocking_pkgs.update(blocker_parents.parent_nodes(atom))
54 +
55 + # Check for blockers in the other direction.
56 + myuse = new_pkg.metadata["USE"].split()
57 + depstr = " ".join(new_pkg.metadata[k] for k in dep_keys)
58 + try:
59 + portage.dep._dep_check_strict = False
60 + success, atoms = portage.dep_check(depstr,
61 + vardb, settings, myuse=myuse,
62 + trees=dep_check_trees, myroot=new_pkg.root)
63 + finally:
64 + portage.dep._dep_check_strict = True
65 + if not success:
66 + # We should never get this far with invalid deps.
67 + show_invalid_depstring_notice(new_pkg, depstr, atoms)
68 + assert False
69 +
70 + blocker_atoms = [atom[1:] for atom in atoms \
71 + if atom.startswith("!")]
72 + blocker_atoms = InternalPackageSet(initial_atoms=blocker_atoms)
73 + for inst_pkg in self._installed_pkgs:
74 + try:
75 + blocker_atoms.iterAtomsForPackage(inst_pkg).next()
76 + except (portage.exception.InvalidDependString, StopIteration):
77 + continue
78 + blocking_pkgs.add(inst_pkg)
79 +
80 + return blocking_pkgs
81 +
82 def show_invalid_depstring_notice(parent_node, depstring, error_msg):
83
84 from formatter import AbstractFormatter, DumbWriter
85
86 --
87 gentoo-commits@l.g.o mailing list