Gentoo Archives: gentoo-commits

From: Zac Medico <zmedico@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/portage:master commit in: pym/_emerge/
Date: Mon, 04 Jun 2012 01:19:46
Message-Id: 1338772750.5b723290dfc9b643fec3c437fb5f39ee2ece1a6f.zmedico@gentoo
1 commit: 5b723290dfc9b643fec3c437fb5f39ee2ece1a6f
2 Author: Zac Medico <zmedico <AT> gentoo <DOT> org>
3 AuthorDate: Mon Jun 4 01:19:10 2012 +0000
4 Commit: Zac Medico <zmedico <AT> gentoo <DOT> org>
5 CommitDate: Mon Jun 4 01:19:10 2012 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=5b723290
7
8 Package: calc visiblity on demand
9
10 This delays visiblity calculations until after FakeVartree applies its
11 metadata tweaks, so commit 650c960be3170bade8bb63ddedcd4796c75ec374
12 will work as intended.
13
14 ---
15 pym/_emerge/Package.py | 49 +++++++++++++++++++++++++++++++++--------------
16 1 files changed, 34 insertions(+), 15 deletions(-)
17
18 diff --git a/pym/_emerge/Package.py b/pym/_emerge/Package.py
19 index c04fa1f..bdd4bc7 100644
20 --- a/pym/_emerge/Package.py
21 +++ b/pym/_emerge/Package.py
22 @@ -25,9 +25,9 @@ class Package(Task):
23 "installed", "metadata", "onlydeps", "operation",
24 "root_config", "type_name",
25 "category", "counter", "cp", "cpv_split",
26 - "inherited", "invalid", "iuse", "masks", "mtime",
27 - "pf", "root", "slot", "slot_atom", "version", "visible",) + \
28 - ("_raw_metadata", "_use",)
29 + "inherited", "iuse", "mtime",
30 + "pf", "root", "slot", "slot_atom", "version") + \
31 + ("_invalid", "_raw_metadata", "_masks", "_use", "_visible")
32
33 metadata_keys = [
34 "BUILD_TIME", "CHOST", "COUNTER", "DEPEND", "EAPI",
35 @@ -73,9 +73,6 @@ class Package(Task):
36 if self.inherited is None:
37 self.inherited = frozenset()
38
39 - self._validate_deps()
40 - self.masks = self._masks()
41 - self.visible = self._visible(self.masks)
42 if self.operation is None:
43 if self.onlydeps or self.installed:
44 self.operation = "nomerge"
45 @@ -89,6 +86,28 @@ class Package(Task):
46 type_name=self.type_name)
47 self._hash_value = hash(self._hash_key)
48
49 + # These are calculated on-demand, so that they are calculated
50 + # after FakeVartree applies its metadata tweaks.
51 + @property
52 + def invalid(self):
53 + if self._invalid is None:
54 + self._validate_deps()
55 + if self._invalid is None:
56 + self._invalid = False
57 + return self._invalid
58 +
59 + @property
60 + def masks(self):
61 + if self._masks is None:
62 + self._masks = self._eval_masks()
63 + return self._masks
64 +
65 + @property
66 + def visible(self):
67 + if self._visible is None:
68 + self._visible = self._eval_visiblity(self.masks)
69 + return self._visible
70 +
71 @classmethod
72 def _gen_hash_key(cls, cpv=None, installed=None, onlydeps=None,
73 operation=None, repo_name=None, root_config=None,
74 @@ -205,11 +224,11 @@ class Package(Task):
75 onlydeps=self.onlydeps, operation=self.operation,
76 root_config=self.root_config, type_name=self.type_name)
77
78 - def _masks(self):
79 + def _eval_masks(self):
80 masks = {}
81 settings = self.root_config.settings
82
83 - if self.invalid is not None:
84 + if self.invalid is not False:
85 masks['invalid'] = self.invalid
86
87 if not settings._accept_chost(self.cpv, self.metadata):
88 @@ -249,13 +268,13 @@ class Package(Task):
89 pass
90
91 if not masks:
92 - masks = None
93 + masks = False
94
95 return masks
96
97 - def _visible(self, masks):
98 + def _eval_visiblity(self, masks):
99
100 - if masks is not None:
101 + if masks is not False:
102
103 if 'EAPI.unsupported' in masks:
104 return False
105 @@ -338,12 +357,12 @@ class Package(Task):
106 _unicode_decode("%s: %s in '%s'") % (k, e, path))
107
108 def _invalid_metadata(self, msg_type, msg):
109 - if self.invalid is None:
110 - self.invalid = {}
111 - msgs = self.invalid.get(msg_type)
112 + if self._invalid is None:
113 + self._invalid = {}
114 + msgs = self._invalid.get(msg_type)
115 if msgs is None:
116 msgs = []
117 - self.invalid[msg_type] = msgs
118 + self._invalid[msg_type] = msgs
119 msgs.append(msg)
120
121 def __str__(self):