1 |
Author: zmedico |
2 |
Date: 2008-05-02 21:47:50 +0000 (Fri, 02 May 2008) |
3 |
New Revision: 10108 |
4 |
|
5 |
Modified: |
6 |
main/trunk/pym/_emerge/__init__.py |
7 |
Log: |
8 |
Move the blocker cache validation into depgraph.validate_blockers(). |
9 |
|
10 |
|
11 |
Modified: main/trunk/pym/_emerge/__init__.py |
12 |
=================================================================== |
13 |
--- main/trunk/pym/_emerge/__init__.py 2008-05-02 21:10:37 UTC (rev 10107) |
14 |
+++ main/trunk/pym/_emerge/__init__.py 2008-05-02 21:47:50 UTC (rev 10108) |
15 |
@@ -1392,26 +1392,6 @@ |
16 |
isinstance(self._cache_data, dict) and \ |
17 |
self._cache_data.get("version") == self._cache_version and \ |
18 |
isinstance(self._cache_data.get("blockers"), dict) |
19 |
- if cache_valid: |
20 |
- invalid_cache = set() |
21 |
- for cpv, value \ |
22 |
- in self._cache_data["blockers"].iteritems(): |
23 |
- if not (isinstance(value, tuple) and len(value) == 2): |
24 |
- invalid_cache.add(cpv) |
25 |
- continue |
26 |
- counter, atoms = value |
27 |
- try: |
28 |
- if counter != long(self._vardb.aux_get(cpv, ["COUNTER"])[0]): |
29 |
- invalid_cache.add(cpv) |
30 |
- continue |
31 |
- except KeyError: |
32 |
- # The package is no longer installed. |
33 |
- invalid_cache.add(cpv) |
34 |
- continue |
35 |
- for cpv in invalid_cache: |
36 |
- del self._cache_data["blockers"][cpv] |
37 |
- if not self._cache_data["blockers"]: |
38 |
- cache_valid = False |
39 |
if not cache_valid: |
40 |
self._cache_data = {"version":self._cache_version} |
41 |
self._cache_data["blockers"] = {} |
42 |
@@ -1460,6 +1440,13 @@ |
43 |
(blocker_data.counter, blocker_data.atoms) |
44 |
self._modified = True |
45 |
|
46 |
+ def __iter__(self): |
47 |
+ return iter(self._cache_data["blockers"]) |
48 |
+ |
49 |
+ def __delitem__(self, cpv): |
50 |
+ del self._cache_data["blockers"][cpv] |
51 |
+ self._modified = True |
52 |
+ |
53 |
def __getitem__(self, cpv): |
54 |
""" |
55 |
@rtype: BlockerData |
56 |
@@ -1470,9 +1457,7 @@ |
57 |
def keys(self): |
58 |
"""This needs to be implemented so that self.__repr__() doesn't raise |
59 |
an AttributeError.""" |
60 |
- if self._cache_data and "blockers" in self._cache_data: |
61 |
- return self._cache_data["blockers"].keys() |
62 |
- return [] |
63 |
+ return list(self) |
64 |
|
65 |
def show_invalid_depstring_notice(parent_node, depstring, error_msg): |
66 |
|
67 |
@@ -3135,7 +3120,9 @@ |
68 |
final_db = self.mydbapi[myroot] |
69 |
cpv_all_installed = self.trees[myroot]["vartree"].dbapi.cpv_all() |
70 |
blocker_cache = BlockerCache(myroot, vardb) |
71 |
+ stale_cache = set(blocker_cache) |
72 |
for cpv in cpv_all_installed: |
73 |
+ stale_cache.discard(cpv) |
74 |
blocker_atoms = None |
75 |
pkg = self._pkg_cache[ |
76 |
("installed", myroot, cpv, "nomerge")] |
77 |
@@ -3153,6 +3140,9 @@ |
78 |
# node for it so that they can be enforced. |
79 |
self.spinner.update() |
80 |
blocker_data = blocker_cache.get(cpv) |
81 |
+ if blocker_data is not None and \ |
82 |
+ blocker_data.counter != long(pkg.metadata["COUNTER"]): |
83 |
+ blocker_data = None |
84 |
|
85 |
# If blocker data from the graph is available, use |
86 |
# it to validate the cache and update the cache if |
87 |
@@ -3178,7 +3168,9 @@ |
88 |
blocker_atoms = blocker_data.atoms |
89 |
else: |
90 |
myuse = pkg.metadata["USE"].split() |
91 |
- depstr = " ".join(pkg.metadata[k] for k in dep_keys) |
92 |
+ # Use aux_get() to trigger FakeVartree global |
93 |
+ # updates on *DEPEND when appropriate. |
94 |
+ depstr = " ".join(vardb.aux_get(pkg.cpv, dep_keys)) |
95 |
# It is crucial to pass in final_db here in order to |
96 |
# optimize dep_check calls by eliminating atoms via |
97 |
# dep_wordreduce and dep_eval calls. |
98 |
@@ -3222,6 +3214,8 @@ |
99 |
for myatom in blocker_atoms: |
100 |
blocker = Blocker(atom=myatom[1:], root=myroot) |
101 |
self._blocker_parents.add(blocker, pkg) |
102 |
+ for cpv in stale_cache: |
103 |
+ del blocker_cache[cpv] |
104 |
blocker_cache.flush() |
105 |
del blocker_cache |
106 |
|
107 |
|
108 |
-- |
109 |
gentoo-commits@l.g.o mailing list |