Gentoo Archives: gentoo-commits

From: "Zac Medico (zmedico)" <zmedico@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] portage r10062 - main/trunk/pym/_emerge
Date: Thu, 01 May 2008 19:15:30
Message-Id: E1JreFb-0004j2-CO@stork.gentoo.org
1 Author: zmedico
2 Date: 2008-05-01 19:15:26 +0000 (Thu, 01 May 2008)
3 New Revision: 10062
4
5 Modified:
6 main/trunk/pym/_emerge/__init__.py
7 Log:
8 When adding blockers for installed packages to the graph, use cached
9 Package instances instead of constructing new ones.
10
11
12 Modified: main/trunk/pym/_emerge/__init__.py
13 ===================================================================
14 --- main/trunk/pym/_emerge/__init__.py 2008-05-01 18:11:22 UTC (rev 10061)
15 +++ main/trunk/pym/_emerge/__init__.py 2008-05-01 19:15:26 UTC (rev 10062)
16 @@ -3149,19 +3149,14 @@
17 final_db = self.mydbapi[myroot]
18 cpv_all_installed = self.trees[myroot]["vartree"].dbapi.cpv_all()
19 blocker_cache = BlockerCache(myroot, vardb)
20 - for pkg in cpv_all_installed:
21 + for cpv in cpv_all_installed:
22 blocker_atoms = None
23 - metadata = dict(izip(self._mydbapi_keys,
24 - vardb.aux_get(pkg, self._mydbapi_keys)))
25 - node = Package(cpv=pkg, built=True,
26 - installed=True, metadata=metadata,
27 - type_name="installed", root=myroot)
28 -
29 -
30 + pkg = self._pkg_cache[
31 + ("installed", myroot, cpv, "nomerge")]
32 blockers = None
33 - if self.digraph.contains(node):
34 + if self.digraph.contains(pkg):
35 try:
36 - blockers = self._blocker_parents.child_nodes(node)
37 + blockers = self._blocker_parents.child_nodes(pkg)
38 except KeyError:
39 blockers = []
40 if blockers is not None:
41 @@ -3171,7 +3166,7 @@
42 # If this node has any blockers, create a "nomerge"
43 # node for it so that they can be enforced.
44 self.spinner.update()
45 - blocker_data = blocker_cache.get(pkg)
46 + blocker_data = blocker_cache.get(cpv)
47
48 # If blocker data from the graph is available, use
49 # it to validate the cache and update the cache if
50 @@ -3196,9 +3191,8 @@
51 if blocker_data:
52 blocker_atoms = blocker_data.atoms
53 else:
54 - dep_vals = vardb.aux_get(pkg, dep_keys)
55 - myuse = vardb.aux_get(pkg, ["USE"])[0].split()
56 - depstr = " ".join(dep_vals)
57 + myuse = pkg.metadata["USE"].split()
58 + depstr = " ".join(pkg.metadata[k] for k in dep_keys)
59 # It is crucial to pass in final_db here in order to
60 # optimize dep_check calls by eliminating atoms via
61 # dep_wordreduce and dep_eval calls.
62 @@ -3216,32 +3210,30 @@
63 # matches (this can happen if an atom lacks a
64 # category).
65 show_invalid_depstring_notice(
66 - node, depstr, str(e))
67 + pkg, depstr, str(e))
68 del e
69 raise
70 finally:
71 portage.dep._dep_check_strict = True
72 if not success:
73 - slot_atom = "%s:%s" % (portage.dep_getkey(pkg),
74 - vardb.aux_get(pkg, ["SLOT"])[0])
75 - if slot_atom in modified_slots[myroot]:
76 + if pkg.slot_atom in modified_slots[myroot]:
77 # This package is being replaced anyway, so
78 # ignore invalid dependencies so as not to
79 # annoy the user too much (otherwise they'd be
80 # forced to manually unmerge it first).
81 continue
82 - show_invalid_depstring_notice(node, depstr, atoms)
83 + show_invalid_depstring_notice(pkg, depstr, atoms)
84 return False
85 blocker_atoms = [myatom for myatom in atoms \
86 if myatom.startswith("!")]
87 blocker_atoms.sort()
88 - counter = long(vardb.aux_get(pkg, ["COUNTER"])[0])
89 - blocker_cache[pkg] = \
90 + counter = long(pkg.metadata["COUNTER"])
91 + blocker_cache[cpv] = \
92 blocker_cache.BlockerData(counter, blocker_atoms)
93 if blocker_atoms:
94 for myatom in blocker_atoms:
95 blocker = Blocker(atom=myatom[1:], root=myroot)
96 - self._blocker_parents.add(blocker, node)
97 + self._blocker_parents.add(blocker, pkg)
98 blocker_cache.flush()
99 del blocker_cache
100
101
102 --
103 gentoo-commits@l.g.o mailing list