1 |
Author: zmedico |
2 |
Date: 2008-02-27 19:43:45 +0000 (Wed, 27 Feb 2008) |
3 |
New Revision: 9392 |
4 |
|
5 |
Modified: |
6 |
main/trunk/pym/_emerge/__init__.py |
7 |
main/trunk/pym/portage/__init__.py |
8 |
Log: |
9 |
Bug #211554 - Replace references to config["USE"] with references to |
10 |
config["PORTAGE_USE"] (which is filtered for intersection with IUSE) |
11 |
so that dependency calculations at installation time are consistent |
12 |
with those at depclean time. |
13 |
|
14 |
|
15 |
Modified: main/trunk/pym/_emerge/__init__.py |
16 |
=================================================================== |
17 |
--- main/trunk/pym/_emerge/__init__.py 2008-02-27 16:16:30 UTC (rev 9391) |
18 |
+++ main/trunk/pym/_emerge/__init__.py 2008-02-27 19:43:45 UTC (rev 9392) |
19 |
@@ -1103,7 +1103,7 @@ |
20 |
metadata = None |
21 |
if metadata and not built: |
22 |
pkgsettings.setcpv(cpv, mydb=metadata) |
23 |
- metadata["USE"] = pkgsettings.get("USE", "") |
24 |
+ metadata["USE"] = pkgsettings["PORTAGE_USE"] |
25 |
if metadata is None: |
26 |
mreasons = ["corruption"] |
27 |
else: |
28 |
@@ -2119,7 +2119,7 @@ |
29 |
metadata = dict(izip(self._mydbapi_keys, |
30 |
portdb.aux_get(mykey, self._mydbapi_keys))) |
31 |
pkgsettings.setcpv(mykey, mydb=metadata) |
32 |
- metadata["USE"] = pkgsettings["USE"] |
33 |
+ metadata["USE"] = pkgsettings["PORTAGE_USE"] |
34 |
pkg = Package(type_name="ebuild", root=myroot, |
35 |
cpv=mykey, metadata=metadata, onlydeps=onlydeps) |
36 |
args.append(PackageArg(arg=x, package=pkg, |
37 |
@@ -2427,7 +2427,7 @@ |
38 |
if not built: |
39 |
if (is_virt or "?" in metadata["LICENSE"]): |
40 |
pkgsettings.setcpv(cpv, mydb=metadata) |
41 |
- metadata["USE"] = pkgsettings["USE"] |
42 |
+ metadata["USE"] = pkgsettings["PORTAGE_USE"] |
43 |
else: |
44 |
metadata["USE"] = "" |
45 |
|
46 |
@@ -2615,7 +2615,7 @@ |
47 |
if not built: |
48 |
if "?" in metadata["LICENSE"]: |
49 |
pkgsettings.setcpv(cpv, mydb=metadata) |
50 |
- metadata["USE"] = pkgsettings.get("USE","") |
51 |
+ metadata["USE"] = pkgsettings["PORTAGE_USE"] |
52 |
else: |
53 |
metadata["USE"] = "" |
54 |
myarg = None |
55 |
@@ -2672,7 +2672,7 @@ |
56 |
pkgsettings.setcpv(myeb, mydb=mydb) |
57 |
else: |
58 |
pkgsettings.setcpv(cpv, mydb=mydb) |
59 |
- now_use = pkgsettings["USE"].split() |
60 |
+ now_use = pkgsettings["PORTAGE_USE"].split() |
61 |
forced_flags = set() |
62 |
forced_flags.update(pkgsettings.useforce) |
63 |
forced_flags.update(pkgsettings.usemask) |
64 |
@@ -2698,7 +2698,7 @@ |
65 |
old_use = vardb.aux_get(cpv, ["USE"])[0].split() |
66 |
old_iuse = set(filter_iuse_defaults( |
67 |
vardb.aux_get(cpv, ["IUSE"])[0].split())) |
68 |
- cur_use = pkgsettings["USE"].split() |
69 |
+ cur_use = pkgsettings["PORTAGE_USE"].split() |
70 |
cur_iuse = set(filter_iuse_defaults( |
71 |
metadata["IUSE"].split())) |
72 |
reinstall_for_flags = \ |
73 |
@@ -2729,7 +2729,7 @@ |
74 |
db.aux_get(cpv, self._mydbapi_keys))) |
75 |
if not built: |
76 |
pkgsettings.setcpv(cpv, mydb=metadata) |
77 |
- metadata["USE"] = pkgsettings.get("USE","") |
78 |
+ metadata["USE"] = pkgsettings["PORTAGE_USE"] |
79 |
myeb = cpv |
80 |
matched_packages.append( |
81 |
Package(type_name=pkg_type, root=root, |
82 |
@@ -3652,7 +3652,7 @@ |
83 |
repo_path_real = os.path.dirname(os.path.dirname( |
84 |
os.path.dirname(ebuild_path))) |
85 |
pkgsettings.setcpv(pkg_key, mydb=mydbapi) |
86 |
- metadata["USE"] = pkgsettings["USE"] |
87 |
+ metadata["USE"] = pkgsettings["PORTAGE_USE"] |
88 |
else: |
89 |
repo_path_real = portdb.getRepositoryPath(repo_name) |
90 |
pkg_use = metadata["USE"].split() |
91 |
@@ -4242,7 +4242,8 @@ |
92 |
if pkg_type == "ebuild": |
93 |
pkgsettings = self.pkgsettings[myroot] |
94 |
pkgsettings.setcpv(pkg_key, mydb=fakedb[myroot]) |
95 |
- fakedb[myroot].aux_update(pkg_key, {"USE":pkgsettings["USE"]}) |
96 |
+ fakedb[myroot].aux_update(pkg_key, |
97 |
+ {"USE":pkgsettings["PORTAGE_USE"]}) |
98 |
self.spinner.update() |
99 |
|
100 |
class RepoDisplay(object): |
101 |
@@ -4532,7 +4533,7 @@ |
102 |
metadata.update(izip(metadata_keys, |
103 |
mydbapi.aux_get(pkg_key, metadata_keys))) |
104 |
pkgsettings.setcpv(pkg_key, mydb=mydbapi) |
105 |
- metadata["USE"] = pkgsettings["USE"] |
106 |
+ metadata["USE"] = pkgsettings["PORTAGE_USE"] |
107 |
else: |
108 |
if pkg_type == "binary": |
109 |
mydbapi = bindb |
110 |
@@ -6282,8 +6283,8 @@ |
111 |
if portdb.cpv_exists(pkg): |
112 |
mydb = portdb |
113 |
pkgsettings.setcpv(pkg, mydb=mydb) |
114 |
- if valuesmap["IUSE"].intersection(pkgsettings["USE"].split()) != \ |
115 |
- valuesmap["USE"]: |
116 |
+ if valuesmap["IUSE"].intersection( |
117 |
+ pkgsettings["PORTAGE_USE"].split()) != valuesmap["USE"]: |
118 |
diff_values["USE"] = valuesmap["USE"] |
119 |
# If a difference was found, print the info for |
120 |
# this package. |
121 |
|
122 |
Modified: main/trunk/pym/portage/__init__.py |
123 |
=================================================================== |
124 |
--- main/trunk/pym/portage/__init__.py 2008-02-27 16:16:30 UTC (rev 9391) |
125 |
+++ main/trunk/pym/portage/__init__.py 2008-02-27 19:43:45 UTC (rev 9392) |
126 |
@@ -1292,7 +1292,7 @@ |
127 |
|
128 |
# Blacklist vars that could interfere with portage internals. |
129 |
for blacklisted in "CATEGORY", "PKGUSE", "PORTAGE_CONFIGROOT", \ |
130 |
- "ROOT": |
131 |
+ "PORTAGE_IUSE", "PORTAGE_USE", "ROOT": |
132 |
for cfg in self.lookuplist: |
133 |
cfg.pop(blacklisted, None) |
134 |
del blacklisted, cfg |
135 |
@@ -1836,6 +1836,7 @@ |
136 |
self.modifying() |
137 |
if self.mycpv == mycpv: |
138 |
return |
139 |
+ ebuild_phase = self.get("EBUILD_PHASE") |
140 |
has_changed = False |
141 |
self.mycpv = mycpv |
142 |
cp = dep_getkey(mycpv) |
143 |
@@ -1924,6 +1925,63 @@ |
144 |
if has_changed: |
145 |
self.reset(keeping_pkg=1,use_cache=use_cache) |
146 |
|
147 |
+ # Filter out USE flags that aren't part of IUSE. This has to |
148 |
+ # be done for every setcpv() call since practically every |
149 |
+ # package has different IUSE. Some flags are considered to |
150 |
+ # be implicit members of IUSE: |
151 |
+ # |
152 |
+ # * Flags derived from ARCH |
153 |
+ # * Flags derived from USE_EXPAND_HIDDEN variables |
154 |
+ # * Masked flags, such as those from {,package}use.mask |
155 |
+ # * Forced flags, such as those from {,package}use.force |
156 |
+ # * build and bootstrap flags used by bootstrap.sh |
157 |
+ |
158 |
+ usesplit = self["USE"].split() |
159 |
+ iuse_implicit = set(x.lstrip("+-") for x in iuse.split()) |
160 |
+ |
161 |
+ # Flags derived from ARCH. |
162 |
+ arch = self.configdict["defaults"].get("ARCH") |
163 |
+ if arch: |
164 |
+ iuse_implicit.add(arch) |
165 |
+ iuse_implicit.update(self.get("PORTAGE_ARCHLIST", "").split()) |
166 |
+ |
167 |
+ # Flags derived from USE_EXPAND_HIDDEN variables |
168 |
+ # such as ELIBC, KERNEL, and USERLAND. |
169 |
+ use_expand_hidden = self.get("USE_EXPAND_HIDDEN", "").split() |
170 |
+ use_expand_hidden_raw = use_expand_hidden |
171 |
+ if use_expand_hidden: |
172 |
+ use_expand_hidden = re.compile("^(%s)_.*" % \ |
173 |
+ ("|".join(x.lower() for x in use_expand_hidden))) |
174 |
+ for x in usesplit: |
175 |
+ if use_expand_hidden.match(x): |
176 |
+ iuse_implicit.add(x) |
177 |
+ |
178 |
+ # Flags that have been masked or forced. |
179 |
+ iuse_implicit.update(self.usemask) |
180 |
+ iuse_implicit.update(self.useforce) |
181 |
+ |
182 |
+ # build and bootstrap flags used by bootstrap.sh |
183 |
+ iuse_implicit.add("build") |
184 |
+ iuse_implicit.add("bootstrap") |
185 |
+ |
186 |
+ if ebuild_phase: |
187 |
+ iuse_grep = iuse_implicit.copy() |
188 |
+ if use_expand_hidden_raw: |
189 |
+ for x in use_expand_hidden_raw: |
190 |
+ iuse_grep.add(x.lower() + "_.*") |
191 |
+ if iuse_grep: |
192 |
+ iuse_grep = "^(%s)$" % "|".join(sorted(iuse_grep)) |
193 |
+ else: |
194 |
+ iuse_grep = "" |
195 |
+ self.configdict["pkg"]["PORTAGE_IUSE"] = iuse_grep |
196 |
+ |
197 |
+ # Filtered for the ebuild environment. Store this in a separate |
198 |
+ # attribute since we still want to be able to see global USE |
199 |
+ # settings for things like emerge --info. |
200 |
+ self.configdict["pkg"]["PORTAGE_USE"] = " ".join(sorted( |
201 |
+ x for x in usesplit if \ |
202 |
+ x in iuse_implicit)) |
203 |
+ |
204 |
def getMaskAtom(self, cpv, metadata): |
205 |
""" |
206 |
Take a package and return a matching package.mask atom, or None if no |
207 |
@@ -2135,7 +2193,7 @@ |
208 |
return |
209 |
if isinstance(mydbapi, portdbapi): |
210 |
self.setcpv(mycpv, mydb=mydbapi) |
211 |
- myuse = self["USE"] |
212 |
+ myuse = self["PORTAGE_USE"] |
213 |
elif isinstance(mydbapi, dict): |
214 |
myuse = mydbapi["USE"] |
215 |
else: |
216 |
@@ -2415,64 +2473,9 @@ |
217 |
if arch and arch not in usesplit: |
218 |
usesplit.append(arch) |
219 |
|
220 |
- # Filter out USE flags that aren't part of IUSE. Some |
221 |
- # flags are considered to be implicit members of IUSE: |
222 |
- # |
223 |
- # * Flags derived from ARCH |
224 |
- # * Flags derived from USE_EXPAND_HIDDEN variables |
225 |
- # * Masked flags, such as those from {,package}use.mask |
226 |
- # * Forced flags, such as those from {,package}use.force |
227 |
- # * build and bootstrap flags used by bootstrap.sh |
228 |
- |
229 |
- # Do this even when there's no package since setcpv() can |
230 |
- # optimize away regenerate() calls. |
231 |
- iuse_implicit = set(iuse) |
232 |
- |
233 |
- # Flags derived from ARCH. |
234 |
- if arch: |
235 |
- iuse_implicit.add(arch) |
236 |
- iuse_implicit.update(self.get("PORTAGE_ARCHLIST", "").split()) |
237 |
- |
238 |
- # Flags derived from USE_EXPAND_HIDDEN variables |
239 |
- # such as ELIBC, KERNEL, and USERLAND. |
240 |
- use_expand_hidden = self.get("USE_EXPAND_HIDDEN", "").split() |
241 |
- use_expand_hidden_raw = use_expand_hidden |
242 |
- if use_expand_hidden: |
243 |
- use_expand_hidden = re.compile("^(%s)_.*" % \ |
244 |
- ("|".join(x.lower() for x in use_expand_hidden))) |
245 |
- for x in usesplit: |
246 |
- if use_expand_hidden.match(x): |
247 |
- iuse_implicit.add(x) |
248 |
- |
249 |
- # Flags that have been masked or forced. |
250 |
- iuse_implicit.update(self.usemask) |
251 |
- iuse_implicit.update(self.useforce) |
252 |
- |
253 |
- # build and bootstrap flags used by bootstrap.sh |
254 |
- iuse_implicit.add("build") |
255 |
- iuse_implicit.add("bootstrap") |
256 |
- |
257 |
- iuse_grep = iuse_implicit.copy() |
258 |
- if use_expand_hidden_raw: |
259 |
- for x in use_expand_hidden_raw: |
260 |
- iuse_grep.add(x.lower() + "_.*") |
261 |
- if iuse_grep: |
262 |
- iuse_grep = "^(%s)$" % "|".join(sorted(iuse_grep)) |
263 |
- else: |
264 |
- iuse_grep = "" |
265 |
- self["PORTAGE_IUSE"] = iuse_grep |
266 |
- |
267 |
usesplit = [x for x in usesplit if \ |
268 |
x not in self.usemask] |
269 |
|
270 |
- # Filtered for the ebuild environment. Store this in a separate |
271 |
- # attribute since we still want to be able to see global USE |
272 |
- # settings for things like emerge --info. |
273 |
- self["PORTAGE_USE"] = " ".join(sorted( |
274 |
- x for x in usesplit if \ |
275 |
- x in iuse_implicit)) |
276 |
- self.backup_changes("PORTAGE_USE") |
277 |
- |
278 |
usesplit.sort() |
279 |
self.configlist[-1]["USE"]= " ".join(usesplit) |
280 |
|
281 |
@@ -2700,7 +2703,7 @@ |
282 |
def selinux_enabled(self): |
283 |
if getattr(self, "_selinux_enabled", None) is None: |
284 |
self._selinux_enabled = 0 |
285 |
- if "selinux" in self["USE"].split(): |
286 |
+ if "selinux" in self["PORTAGE_USE"].split(): |
287 |
if "selinux" in globals(): |
288 |
if selinux.is_selinux_enabled() == 1: |
289 |
self._selinux_enabled = 1 |
290 |
@@ -5393,7 +5396,7 @@ |
291 |
if use=="yes": |
292 |
if myuse is None: |
293 |
#default behavior |
294 |
- myusesplit = mysettings["USE"].split() |
295 |
+ myusesplit = mysettings["PORTAGE_USE"].split() |
296 |
else: |
297 |
myusesplit = myuse |
298 |
# We've been given useflags to use. |
299 |
@@ -5718,7 +5721,7 @@ |
300 |
return ["corruption"] |
301 |
if "?" in metadata["LICENSE"]: |
302 |
settings.setcpv(p, mydb=metadata) |
303 |
- metadata["USE"] = settings.get("USE", "") |
304 |
+ metadata["USE"] = settings["PORTAGE_USE"] |
305 |
else: |
306 |
metadata["USE"] = "" |
307 |
mycp=mysplit[0]+"/"+mysplit[1] |
308 |
|
309 |
-- |
310 |
gentoo-commits@l.g.o mailing list |