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 |