Gentoo Archives: gentoo-commits

From: "Zac Medico (zmedico)" <zmedico@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] portage r9392 - in main/trunk/pym: _emerge portage
Date: Wed, 27 Feb 2008 19:43:50
Message-Id: E1JUSBu-0005MJ-VM@stork.gentoo.org
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