Gentoo Archives: gentoo-commits

From: "Zac Medico (zmedico)" <zmedico@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] portage r10108 - main/trunk/pym/_emerge
Date: Fri, 02 May 2008 21:47:54
Message-Id: E1Js36d-0000F9-Kw@stork.gentoo.org
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