Gentoo Archives: gentoo-commits

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