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/portage/_sets/, pym/_emerge/resolver/, pym/portage/package/ebuild/, bin/, ...
Date: Tue, 27 Nov 2012 04:40:51
Message-Id: 1353991061.8fa262d62b885d5cd8251faa018695022311872a.zmedico@gentoo
1 commit: 8fa262d62b885d5cd8251faa018695022311872a
2 Author: Zac Medico <zmedico <AT> gentoo <DOT> org>
3 AuthorDate: Tue Nov 27 04:37:41 2012 +0000
4 Commit: Zac Medico <zmedico <AT> gentoo <DOT> org>
5 CommitDate: Tue Nov 27 04:37:41 2012 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=8fa262d6
7
8 Rename Package.metadata to _metadata.
9
10 The raw metadata is considered a private low-level internal. This
11 makes the Package class consistent with the _pkg_str class.
12
13 ---
14 bin/repoman | 4 +-
15 pym/_emerge/BlockerDB.py | 2 +-
16 pym/_emerge/EbuildBuild.py | 4 +-
17 pym/_emerge/Package.py | 60 +++++++++--------
18 pym/_emerge/PackageVirtualDbapi.py | 4 +-
19 pym/_emerge/Scheduler.py | 4 +-
20 pym/_emerge/actions.py | 8 +-
21 pym/_emerge/depgraph.py | 84 ++++++++++++------------
22 pym/_emerge/resolver/circular_dependency.py | 8 +-
23 pym/_emerge/resolver/output.py | 4 +-
24 pym/_emerge/resolver/slot_collision.py | 2 +-
25 pym/portage/_sets/base.py | 4 +-
26 pym/portage/dep/_slot_operator.py | 2 +-
27 pym/portage/dep/dep_check.py | 2 +-
28 pym/portage/package/ebuild/config.py | 2 +-
29 pym/portage/package/ebuild/doebuild.py | 6 +-
30 pym/portage/package/ebuild/getmaskingstatus.py | 2 +-
31 17 files changed, 103 insertions(+), 99 deletions(-)
32
33 diff --git a/bin/repoman b/bin/repoman
34 index 7ecdc6d..a38ffe1 100755
35 --- a/bin/repoman
36 +++ b/bin/repoman
37 @@ -1753,7 +1753,7 @@ for x in effective_scanlist:
38 fails[k].append("%s: %s" % (relative_path, msg))
39 continue
40
41 - myaux = pkg.metadata
42 + myaux = pkg._metadata
43 eapi = myaux["EAPI"]
44 inherited = pkg.inherited
45 live_ebuild = live_eclasses.intersection(inherited)
46 @@ -2174,7 +2174,7 @@ for x in effective_scanlist:
47 if ismasked:
48 if not have_pmasked:
49 have_pmasked = bool(dep_settings._getMaskAtom(
50 - pkg.cpv, pkg.metadata))
51 + pkg.cpv, pkg._metadata))
52 if options.ignore_masked:
53 continue
54 #we are testing deps for a masked package; give it some lee-way
55
56 diff --git a/pym/_emerge/BlockerDB.py b/pym/_emerge/BlockerDB.py
57 index ce8806d..8bb8f5f 100644
58 --- a/pym/_emerge/BlockerDB.py
59 +++ b/pym/_emerge/BlockerDB.py
60 @@ -92,7 +92,7 @@ class BlockerDB(object):
61 blocking_pkgs.update(blocker_parents.parent_nodes(atom))
62
63 # Check for blockers in the other direction.
64 - depstr = " ".join(new_pkg.metadata[k] for k in dep_keys)
65 + depstr = " ".join(new_pkg._metadata[k] for k in dep_keys)
66 success, atoms = portage.dep_check(depstr,
67 vardb, settings, myuse=new_pkg.use.enabled,
68 trees=dep_check_trees, myroot=new_pkg.root)
69
70 diff --git a/pym/_emerge/EbuildBuild.py b/pym/_emerge/EbuildBuild.py
71 index 784a3e2..2da09e7 100644
72 --- a/pym/_emerge/EbuildBuild.py
73 +++ b/pym/_emerge/EbuildBuild.py
74 @@ -260,8 +260,8 @@ class EbuildBuild(CompositeTask):
75 # to be displayed for problematic packages even though they do
76 # not set RESTRICT=fetch (bug #336499).
77
78 - if 'fetch' not in self.pkg.metadata.restrict and \
79 - 'nofetch' not in self.pkg.metadata.defined_phases:
80 + if 'fetch' not in self.pkg._metadata.restrict and \
81 + 'nofetch' not in self.pkg._metadata.defined_phases:
82 self._unlock_builddir()
83 self.wait()
84 return
85
86 diff --git a/pym/_emerge/Package.py b/pym/_emerge/Package.py
87 index f73fe82..7950ffb 100644
88 --- a/pym/_emerge/Package.py
89 +++ b/pym/_emerge/Package.py
90 @@ -3,6 +3,8 @@
91
92 import sys
93 from itertools import chain
94 +import warnings
95 +
96 import portage
97 from portage import _encodings, _unicode_decode, _unicode_encode
98 from portage.cache.mappings import slot_dict_class
99 @@ -26,12 +28,12 @@ class Package(Task):
100
101 __hash__ = Task.__hash__
102 __slots__ = ("built", "cpv", "depth",
103 - "installed", "metadata", "onlydeps", "operation",
104 + "installed", "onlydeps", "operation",
105 "root_config", "type_name",
106 "category", "counter", "cp", "cpv_split",
107 "inherited", "iuse", "mtime",
108 "pf", "root", "slot", "sub_slot", "slot_atom", "version") + \
109 - ("_invalid", "_raw_metadata", "_masks", "_use",
110 + ("_invalid", "_masks", "_metadata", "_raw_metadata", "_use",
111 "_validated_atoms", "_visible")
112
113 metadata_keys = [
114 @@ -48,20 +50,21 @@ class Package(Task):
115 UNKNOWN_REPO = _unknown_repo
116
117 def __init__(self, **kwargs):
118 + metadata = _PackageMetadataWrapperBase(kwargs.pop('metadata'))
119 Task.__init__(self, **kwargs)
120 # the SlotObject constructor assigns self.root_config from keyword args
121 # and is an instance of a '_emerge.RootConfig.RootConfig class
122 self.root = self.root_config.root
123 - self._raw_metadata = _PackageMetadataWrapperBase(self.metadata)
124 - self.metadata = _PackageMetadataWrapper(self, self._raw_metadata)
125 + self._raw_metadata = metadata
126 + self._metadata = _PackageMetadataWrapper(self, metadata)
127 if not self.built:
128 - self.metadata['CHOST'] = self.root_config.settings.get('CHOST', '')
129 + self._metadata['CHOST'] = self.root_config.settings.get('CHOST', '')
130 eapi_attrs = _get_eapi_attrs(self.eapi)
131 - self.cpv = _pkg_str(self.cpv, metadata=self.metadata,
132 + self.cpv = _pkg_str(self.cpv, metadata=self._metadata,
133 settings=self.root_config.settings)
134 if hasattr(self.cpv, 'slot_invalid'):
135 self._invalid_metadata('SLOT.invalid',
136 - "SLOT: invalid value: '%s'" % self.metadata["SLOT"])
137 + "SLOT: invalid value: '%s'" % self._metadata["SLOT"])
138 self.cpv_split = self.cpv.cpv_split
139 self.category, self.pf = portage.catsplit(self.cpv)
140 self.cp = self.cpv.cp
141 @@ -70,14 +73,14 @@ class Package(Task):
142 self.sub_slot = self.cpv.sub_slot
143 self.slot_atom = Atom("%s%s%s" % (self.cp, _slot_separator, self.slot))
144 # sync metadata with validated repo (may be UNKNOWN_REPO)
145 - self.metadata['repository'] = self.cpv.repo
146 + self._metadata['repository'] = self.cpv.repo
147
148 if eapi_attrs.iuse_effective:
149 implicit_match = self.root_config.settings._iuse_effective_match
150 else:
151 implicit_match = self.root_config.settings._iuse_implicit_match
152 usealiases = self.root_config.settings._use_manager.getUseAliases(self)
153 - self.iuse = self._iuse(self, self.metadata["IUSE"].split(), implicit_match,
154 + self.iuse = self._iuse(self, self._metadata["IUSE"].split(), implicit_match,
155 usealiases, self.eapi)
156
157 if (self.iuse.enabled or self.iuse.disabled) and \
158 @@ -103,12 +106,13 @@ class Package(Task):
159
160 @property
161 def eapi(self):
162 - return self.metadata["EAPI"]
163 + return self._metadata["EAPI"]
164
165 - # For consistency with _pkg_str
166 @property
167 - def _metadata(self):
168 - return self.metadata
169 + def metadata(self):
170 + warnings.warn("_emerge.Package.Package.metadata is deprecated",
171 + DeprecationWarning, stacklevel=3)
172 + return self._metadata
173
174 # These are calculated on-demand, so that they are calculated
175 # after FakeVartree applies its metadata tweaks.
176 @@ -202,7 +206,7 @@ class Package(Task):
177
178 validated_atoms = []
179 for k in self._dep_keys:
180 - v = self.metadata.get(k)
181 + v = self._metadata.get(k)
182 if not v:
183 continue
184 try:
185 @@ -228,7 +232,7 @@ class Package(Task):
186 validated_atoms if isinstance(atom, Atom)))
187
188 k = 'PROVIDE'
189 - v = self.metadata.get(k)
190 + v = self._metadata.get(k)
191 if v:
192 try:
193 use_reduce(v, eapi=dep_eapi, matchall=True,
194 @@ -238,7 +242,7 @@ class Package(Task):
195 _unicode_decode("%s: %s") % (k, e))
196
197 for k in self._use_conditional_misc_keys:
198 - v = self.metadata.get(k)
199 + v = self._metadata.get(k)
200 if not v:
201 continue
202 try:
203 @@ -248,7 +252,7 @@ class Package(Task):
204 self._metadata_exception(k, e)
205
206 k = 'REQUIRED_USE'
207 - v = self.metadata.get(k)
208 + v = self._metadata.get(k)
209 if v and not self.built:
210 if not _get_eapi_attrs(eapi).required_use:
211 self._invalid_metadata('EAPI.incompatible',
212 @@ -265,7 +269,7 @@ class Package(Task):
213 _unicode_decode("%s: %s") % (k, e))
214
215 k = 'SRC_URI'
216 - v = self.metadata.get(k)
217 + v = self._metadata.get(k)
218 if v:
219 try:
220 use_reduce(v, is_src_uri=True, eapi=eapi, matchall=True,
221 @@ -287,8 +291,8 @@ class Package(Task):
222 if self.invalid is not False:
223 masks['invalid'] = self.invalid
224
225 - if not settings._accept_chost(self.cpv, self.metadata):
226 - masks['CHOST'] = self.metadata['CHOST']
227 + if not settings._accept_chost(self.cpv, self._metadata):
228 + masks['CHOST'] = self._metadata['CHOST']
229
230 eapi = self.eapi
231 if not portage.eapi_is_supported(eapi):
232 @@ -297,26 +301,26 @@ class Package(Task):
233 masks['EAPI.deprecated'] = eapi
234
235 missing_keywords = settings._getMissingKeywords(
236 - self.cpv, self.metadata)
237 + self.cpv, self._metadata)
238 if missing_keywords:
239 masks['KEYWORDS'] = missing_keywords
240
241 try:
242 missing_properties = settings._getMissingProperties(
243 - self.cpv, self.metadata)
244 + self.cpv, self._metadata)
245 if missing_properties:
246 masks['PROPERTIES'] = missing_properties
247 except InvalidDependString:
248 # already recorded as 'invalid'
249 pass
250
251 - mask_atom = settings._getMaskAtom(self.cpv, self.metadata)
252 + mask_atom = settings._getMaskAtom(self.cpv, self._metadata)
253 if mask_atom is not None:
254 masks['package.mask'] = mask_atom
255
256 try:
257 missing_licenses = settings._getMissingLicenses(
258 - self.cpv, self.metadata)
259 + self.cpv, self._metadata)
260 if missing_licenses:
261 masks['LICENSE'] = missing_licenses
262 except InvalidDependString:
263 @@ -355,7 +359,7 @@ class Package(Task):
264 """returns None, 'missing', or 'unstable'."""
265
266 missing = self.root_config.settings._getRawMissingKeywords(
267 - self.cpv, self.metadata)
268 + self.cpv, self._metadata)
269
270 if not missing:
271 return None
272 @@ -376,7 +380,7 @@ class Package(Task):
273 """returns a bool if the cpv is in the list of
274 expanded pmaskdict[cp] available ebuilds"""
275 pmask = self.root_config.settings._getRawMaskAtom(
276 - self.cpv, self.metadata)
277 + self.cpv, self._metadata)
278 return pmask is not None
279
280 def _metadata_exception(self, k, e):
281 @@ -529,7 +533,7 @@ class Package(Task):
282
283 @property
284 def repo(self):
285 - return self.metadata['repository']
286 + return self._metadata['repository']
287
288 @property
289 def repo_priority(self):
290 @@ -541,7 +545,7 @@ class Package(Task):
291 @property
292 def use(self):
293 if self._use is None:
294 - self.metadata._init_use()
295 + self._metadata._init_use()
296 return self._use
297
298 def _get_pkgsettings(self):
299
300 diff --git a/pym/_emerge/PackageVirtualDbapi.py b/pym/_emerge/PackageVirtualDbapi.py
301 index 0f7be44..56a5576 100644
302 --- a/pym/_emerge/PackageVirtualDbapi.py
303 +++ b/pym/_emerge/PackageVirtualDbapi.py
304 @@ -140,10 +140,10 @@ class PackageVirtualDbapi(dbapi):
305 self._clear_cache()
306
307 def aux_get(self, cpv, wants, myrepo=None):
308 - metadata = self._cpv_map[cpv].metadata
309 + metadata = self._cpv_map[cpv]._metadata
310 return [metadata.get(x, "") for x in wants]
311
312 def aux_update(self, cpv, values):
313 - self._cpv_map[cpv].metadata.update(values)
314 + self._cpv_map[cpv]._metadata.update(values)
315 self._clear_cache()
316
317
318 diff --git a/pym/_emerge/Scheduler.py b/pym/_emerge/Scheduler.py
319 index ff29380..72f1943 100644
320 --- a/pym/_emerge/Scheduler.py
321 +++ b/pym/_emerge/Scheduler.py
322 @@ -409,7 +409,7 @@ class Scheduler(PollScheduler):
323 if not (isinstance(task, Package) and \
324 task.operation == "merge"):
325 continue
326 - if 'interactive' in task.metadata.properties:
327 + if 'interactive' in task._metadata.properties:
328 interactive_tasks.append(task)
329 return interactive_tasks
330
331 @@ -786,7 +786,7 @@ class Scheduler(PollScheduler):
332 if x.eapi in ("0", "1", "2", "3"):
333 continue
334
335 - if "pretend" not in x.metadata.defined_phases:
336 + if "pretend" not in x._metadata.defined_phases:
337 continue
338
339 out_str =">>> Running pre-merge checks for " + colorize("INFORM", x.cpv) + "\n"
340
341 diff --git a/pym/_emerge/actions.py b/pym/_emerge/actions.py
342 index cd52ddb..b64614e 100644
343 --- a/pym/_emerge/actions.py
344 +++ b/pym/_emerge/actions.py
345 @@ -706,7 +706,7 @@ def calc_depclean(settings, trees, ldpath_mtimes,
346 continue
347 except portage.exception.InvalidDependString as e:
348 show_invalid_depstring_notice(pkg,
349 - pkg.metadata["PROVIDE"], str(e))
350 + pkg._metadata["PROVIDE"], _unicode(e))
351 del e
352 protected_set.add("=" + pkg.cpv)
353 continue
354 @@ -760,7 +760,7 @@ def calc_depclean(settings, trees, ldpath_mtimes,
355 continue
356 except portage.exception.InvalidDependString as e:
357 show_invalid_depstring_notice(pkg,
358 - pkg.metadata["PROVIDE"], str(e))
359 + pkg._metadata["PROVIDE"], _unicode(e))
360 del e
361 protected_set.add("=" + pkg.cpv)
362 continue
363 @@ -778,7 +778,7 @@ def calc_depclean(settings, trees, ldpath_mtimes,
364 required_sets['__excluded__'].add("=" + pkg.cpv)
365 except portage.exception.InvalidDependString as e:
366 show_invalid_depstring_notice(pkg,
367 - pkg.metadata["PROVIDE"], str(e))
368 + pkg._metadata["PROVIDE"], _unicode(e))
369 del e
370 required_sets['__excluded__'].add("=" + pkg.cpv)
371
372 @@ -1168,7 +1168,7 @@ def calc_depclean(settings, trees, ldpath_mtimes,
373 for node in clean_set:
374 graph.add(node, None)
375 for dep_type in Package._dep_keys:
376 - depstr = node.metadata[dep_type]
377 + depstr = node._metadata[dep_type]
378 if not depstr:
379 continue
380 priority = priority_map[dep_type]
381
382 diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py
383 index df49143..702f7fe 100644
384 --- a/pym/_emerge/depgraph.py
385 +++ b/pym/_emerge/depgraph.py
386 @@ -269,7 +269,7 @@ class _rebuild_config(object):
387 return True
388 elif (parent.installed and
389 root_slot not in self.reinstall_list):
390 - inst_build_time = parent.metadata.get("BUILD_TIME")
391 + inst_build_time = parent._metadata.get("BUILD_TIME")
392 try:
393 bin_build_time, = bindb.aux_get(parent.cpv,
394 ["BUILD_TIME"])
395 @@ -593,8 +593,8 @@ class depgraph(object):
396
397 if selected_pkg.installed and \
398 selected_pkg.cpv == pkg.cpv and \
399 - selected_pkg.metadata.get('BUILD_TIME') == \
400 - pkg.metadata.get('BUILD_TIME'):
401 + selected_pkg._metadata.get('BUILD_TIME') == \
402 + pkg._metadata.get('BUILD_TIME'):
403 # We don't care about ignored binaries when an
404 # identical installed instance is selected to
405 # fill the slot.
406 @@ -1490,10 +1490,10 @@ class depgraph(object):
407 # package selection, since we want to prompt the user
408 # for USE adjustment rather than have REQUIRED_USE
409 # affect package selection and || dep choices.
410 - if not pkg.built and pkg.metadata.get("REQUIRED_USE") and \
411 + if not pkg.built and pkg._metadata.get("REQUIRED_USE") and \
412 eapi_has_required_use(pkg.eapi):
413 required_use_is_sat = check_required_use(
414 - pkg.metadata["REQUIRED_USE"],
415 + pkg._metadata["REQUIRED_USE"],
416 self._pkg_use_enabled(pkg),
417 pkg.iuse.is_valid_flag,
418 eapi=pkg.eapi)
419 @@ -1577,11 +1577,11 @@ class depgraph(object):
420 # doesn't already. Any pre-existing providers will be preferred
421 # over this one.
422 try:
423 - pkgsettings.setinst(pkg.cpv, pkg.metadata)
424 + pkgsettings.setinst(pkg.cpv, pkg._metadata)
425 # For consistency, also update the global virtuals.
426 settings = self._frozen_config.roots[pkg.root].settings
427 settings.unlock()
428 - settings.setinst(pkg.cpv, pkg.metadata)
429 + settings.setinst(pkg.cpv, pkg._metadata)
430 settings.lock()
431 except portage.exception.InvalidDependString:
432 if not pkg.installed:
433 @@ -1682,7 +1682,7 @@ class depgraph(object):
434 def _add_pkg_deps(self, pkg, allow_unsatisfied=False):
435
436 myroot = pkg.root
437 - metadata = pkg.metadata
438 + metadata = pkg._metadata
439 removal_action = "remove" in self._dynamic_config.myparams
440 eapi_attrs = _get_eapi_attrs(pkg.eapi)
441
442 @@ -2877,7 +2877,7 @@ class depgraph(object):
443 blockers = {}
444 blocker_dep_keys = Package._dep_keys
445 for pkg in greedy_pkgs + [highest_pkg]:
446 - dep_str = " ".join(pkg.metadata[k] for k in blocker_dep_keys)
447 + dep_str = " ".join(pkg._metadata[k] for k in blocker_dep_keys)
448 try:
449 selected_atoms = self._select_atoms(
450 pkg.root, dep_str, self._pkg_use_enabled(pkg),
451 @@ -3066,7 +3066,7 @@ class depgraph(object):
452 return
453 try:
454 rdepend = self._select_atoms_from_graph(
455 - pkg.root, pkg.metadata.get("RDEPEND", ""),
456 + pkg.root, pkg._metadata.get("RDEPEND", ""),
457 myuse=self._pkg_use_enabled(pkg),
458 parent=pkg, strict=False)
459 except InvalidDependString as e:
460 @@ -3094,7 +3094,7 @@ class depgraph(object):
461 """
462 try:
463 rdepend = self._select_atoms(
464 - pkg.root, pkg.metadata.get("RDEPEND", ""),
465 + pkg.root, pkg._metadata.get("RDEPEND", ""),
466 myuse=self._pkg_use_enabled(pkg),
467 parent=pkg, priority=self._priority(runtime=True))
468 except InvalidDependString as e:
469 @@ -3139,7 +3139,7 @@ class depgraph(object):
470 for dep_str in Package._dep_keys:
471 try:
472 affecting_use.update(extract_affecting_use(
473 - node.metadata[dep_str], target_atom,
474 + node._metadata[dep_str], target_atom,
475 eapi=node.eapi))
476 except InvalidDependString:
477 if not node.installed:
478 @@ -3218,16 +3218,16 @@ class depgraph(object):
479 # This edge comes from _parent_atoms and was not added to
480 # the graph, and _parent_atoms does not contain priorities.
481 for k in Package._dep_keys:
482 - dep_strings.add(node.metadata[k])
483 + dep_strings.add(node._metadata[k])
484 else:
485 for priority in priorities:
486 if priority.buildtime:
487 for k in Package._buildtime_keys:
488 - dep_strings.add(node.metadata[k])
489 + dep_strings.add(node._metadata[k])
490 if priority.runtime:
491 - dep_strings.add(node.metadata["RDEPEND"])
492 + dep_strings.add(node._metadata["RDEPEND"])
493 if priority.runtime_post:
494 - dep_strings.add(node.metadata["PDEPEND"])
495 + dep_strings.add(node._metadata["PDEPEND"])
496
497 affecting_use = set()
498 for dep_str in dep_strings:
499 @@ -3376,9 +3376,9 @@ class depgraph(object):
500 repo = metadata.get('repository')
501 pkg = self._pkg(cpv, pkg_type, root_config,
502 installed=installed, myrepo=repo)
503 - # pkg.metadata contains calculated USE for ebuilds,
504 + # pkg._metadata contains calculated USE for ebuilds,
505 # required later for getMissingLicenses.
506 - metadata = pkg.metadata
507 + metadata = pkg._metadata
508 if pkg.invalid:
509 # Avoid doing any operations with packages that
510 # have invalid metadata. It would be unsafe at
511 @@ -3417,10 +3417,10 @@ class depgraph(object):
512 raise
513 if not mreasons and \
514 not pkg.built and \
515 - pkg.metadata.get("REQUIRED_USE") and \
516 + pkg._metadata.get("REQUIRED_USE") and \
517 eapi_has_required_use(pkg.eapi):
518 if not check_required_use(
519 - pkg.metadata["REQUIRED_USE"],
520 + pkg._metadata["REQUIRED_USE"],
521 self._pkg_use_enabled(pkg),
522 pkg.iuse.is_valid_flag,
523 eapi=pkg.eapi):
524 @@ -3473,7 +3473,7 @@ class depgraph(object):
525 continue
526
527 missing_use_adjustable.add(pkg)
528 - required_use = pkg.metadata.get("REQUIRED_USE")
529 + required_use = pkg._metadata.get("REQUIRED_USE")
530 required_use_warning = ""
531 if required_use:
532 old_use = self._pkg_use_enabled(pkg)
533 @@ -3523,7 +3523,7 @@ class depgraph(object):
534 if any(x in untouchable_flags for x in involved_flags):
535 continue
536
537 - required_use = myparent.metadata.get("REQUIRED_USE")
538 + required_use = myparent._metadata.get("REQUIRED_USE")
539 required_use_warning = ""
540 if required_use:
541 old_use = self._pkg_use_enabled(myparent)
542 @@ -3625,7 +3625,7 @@ class depgraph(object):
543 writemsg("\n The following REQUIRED_USE flag constraints " + \
544 "are unsatisfied:\n", noiselevel=-1)
545 reduced_noise = check_required_use(
546 - pkg.metadata["REQUIRED_USE"],
547 + pkg._metadata["REQUIRED_USE"],
548 self._pkg_use_enabled(pkg),
549 pkg.iuse.is_valid_flag,
550 eapi=pkg.eapi).tounicode()
551 @@ -3633,7 +3633,7 @@ class depgraph(object):
552 human_readable_required_use(reduced_noise),
553 noiselevel=-1)
554 normalized_required_use = \
555 - " ".join(pkg.metadata["REQUIRED_USE"].split())
556 + " ".join(pkg._metadata["REQUIRED_USE"].split())
557 if reduced_noise != normalized_required_use:
558 writemsg("\n The above constraints " + \
559 "are a subset of the following complete expression:\n",
560 @@ -3886,7 +3886,7 @@ class depgraph(object):
561 return True
562
563 def _equiv_binary_installed(self, pkg):
564 - build_time = pkg.metadata.get('BUILD_TIME')
565 + build_time = pkg._metadata.get('BUILD_TIME')
566 if not build_time:
567 return False
568
569 @@ -3896,7 +3896,7 @@ class depgraph(object):
570 except PackageNotFound:
571 return False
572
573 - return build_time == inst_pkg.metadata.get('BUILD_TIME')
574 + return build_time == inst_pkg._metadata.get('BUILD_TIME')
575
576 class _AutounmaskLevel(object):
577 __slots__ = ("allow_use_changes", "allow_unstable_keywords", "allow_license_changes", \
578 @@ -4129,7 +4129,7 @@ class depgraph(object):
579 return False
580
581 for key in Package._dep_keys + ("LICENSE",):
582 - dep = pkg.metadata[key]
583 + dep = pkg._metadata[key]
584 old_val = set(portage.dep.use_reduce(dep, pkg.use.enabled, is_valid_flag=pkg.iuse.is_valid_flag, flat=True))
585 new_val = set(portage.dep.use_reduce(dep, new_use, is_valid_flag=pkg.iuse.is_valid_flag, flat=True))
586
587 @@ -4152,7 +4152,7 @@ class depgraph(object):
588
589 if new_changes != old_changes:
590 #Don't do the change if it violates REQUIRED_USE.
591 - required_use = pkg.metadata.get("REQUIRED_USE")
592 + required_use = pkg._metadata.get("REQUIRED_USE")
593 if required_use and check_required_use(required_use, old_use,
594 pkg.iuse.is_valid_flag, eapi=pkg.eapi) and \
595 not check_required_use(required_use, new_use,
596 @@ -4317,8 +4317,8 @@ class depgraph(object):
597 for selected_pkg in matched_packages:
598 if selected_pkg.type_name == "binary" and \
599 selected_pkg.cpv == pkg.cpv and \
600 - selected_pkg.metadata.get('BUILD_TIME') == \
601 - pkg.metadata.get('BUILD_TIME'):
602 + selected_pkg._metadata.get('BUILD_TIME') == \
603 + pkg._metadata.get('BUILD_TIME'):
604 identical_binary = True
605 break
606
607 @@ -4552,12 +4552,12 @@ class depgraph(object):
608 # bug #306659 where BUILD_TIME fields are missing
609 # in local and/or remote Packages file.
610 try:
611 - built_timestamp = int(built_pkg.metadata['BUILD_TIME'])
612 + built_timestamp = int(built_pkg._metadata['BUILD_TIME'])
613 except (KeyError, ValueError):
614 built_timestamp = 0
615
616 try:
617 - installed_timestamp = int(inst_pkg.metadata['BUILD_TIME'])
618 + installed_timestamp = int(inst_pkg._metadata['BUILD_TIME'])
619 except (KeyError, ValueError):
620 installed_timestamp = 0
621
622 @@ -5157,7 +5157,7 @@ class depgraph(object):
623 for inst_pkg, inst_task in depends_on_order:
624 uninst_task = Package(built=inst_pkg.built,
625 cpv=inst_pkg.cpv, installed=inst_pkg.installed,
626 - metadata=inst_pkg.metadata,
627 + metadata=inst_pkg._metadata,
628 operation="uninstall",
629 root_config=inst_pkg.root_config,
630 type_name=inst_pkg.type_name)
631 @@ -5475,7 +5475,7 @@ class depgraph(object):
632 if running_portage is not None:
633 try:
634 portage_rdepend = self._select_atoms_highest_available(
635 - running_root, running_portage.metadata["RDEPEND"],
636 + running_root, running_portage._metadata["RDEPEND"],
637 myuse=self._pkg_use_enabled(running_portage),
638 parent=running_portage, strict=False)
639 except portage.exception.InvalidDependString as e:
640 @@ -6030,7 +6030,7 @@ class depgraph(object):
641 inst_pkg = inst_pkg[0]
642 uninst_task = Package(built=inst_pkg.built,
643 cpv=inst_pkg.cpv, installed=inst_pkg.installed,
644 - metadata=inst_pkg.metadata,
645 + metadata=inst_pkg._metadata,
646 operation="uninstall",
647 root_config=inst_pkg.root_config,
648 type_name=inst_pkg.type_name)
649 @@ -6362,7 +6362,7 @@ class depgraph(object):
650 keyword = reason.unmask_hint.value
651
652 comment, filename = portage.getmaskingreason(
653 - pkg.cpv, metadata=pkg.metadata,
654 + pkg.cpv, metadata=pkg._metadata,
655 settings=pkgsettings,
656 portdb=pkg.root_config.trees["porttree"].dbapi,
657 return_location=True)
658 @@ -6741,7 +6741,7 @@ class depgraph(object):
659 pkgsettings = self._frozen_config.pkgsettings[pkg.root]
660 mreasons = get_masking_status(pkg, pkgsettings, root_config, use=self._pkg_use_enabled(pkg))
661 masked_packages.append((root_config, pkgsettings,
662 - pkg.cpv, pkg.repo, pkg.metadata, mreasons))
663 + pkg.cpv, pkg.repo, pkg._metadata, mreasons))
664 if masked_packages:
665 writemsg("\n" + colorize("BAD", "!!!") + \
666 " The following updates are masked by LICENSE changes:\n",
667 @@ -6756,7 +6756,7 @@ class depgraph(object):
668 pkgsettings = self._frozen_config.pkgsettings[pkg.root]
669 mreasons = get_masking_status(pkg, pkgsettings, root_config, use=self._pkg_use_enabled)
670 masked_packages.append((root_config, pkgsettings,
671 - pkg.cpv, pkg.repo, pkg.metadata, mreasons))
672 + pkg.cpv, pkg.repo, pkg._metadata, mreasons))
673 if masked_packages:
674 writemsg("\n" + colorize("BAD", "!!!") + \
675 " The following installed packages are masked:\n",
676 @@ -7253,7 +7253,7 @@ class _dep_check_composite_db(dbapi):
677 return True
678
679 def aux_get(self, cpv, wants):
680 - metadata = self._cpv_pkg_map[cpv].metadata
681 + metadata = self._cpv_pkg_map[cpv]._metadata
682 return [metadata.get(x, "") for x in wants]
683
684 def match_pkgs(self, atom):
685 @@ -7605,9 +7605,9 @@ def _get_masking_status(pkg, pkgsettings, root_config, myrepo=None, use=None):
686 portdb=root_config.trees["porttree"].dbapi, myrepo=myrepo)
687
688 if not pkg.installed:
689 - if not pkgsettings._accept_chost(pkg.cpv, pkg.metadata):
690 + if not pkgsettings._accept_chost(pkg.cpv, pkg._metadata):
691 mreasons.append(_MaskReason("CHOST", "CHOST: %s" % \
692 - pkg.metadata["CHOST"]))
693 + pkg._metadata["CHOST"]))
694
695 if pkg.invalid:
696 for msgs in pkg.invalid.values():
697 @@ -7615,7 +7615,7 @@ def _get_masking_status(pkg, pkgsettings, root_config, myrepo=None, use=None):
698 mreasons.append(
699 _MaskReason("invalid", "invalid: %s" % (msg,)))
700
701 - if not pkg.metadata["SLOT"]:
702 + if not pkg._metadata["SLOT"]:
703 mreasons.append(
704 _MaskReason("invalid", "SLOT: undefined"))
705
706
707 diff --git a/pym/_emerge/resolver/circular_dependency.py b/pym/_emerge/resolver/circular_dependency.py
708 index 76c7b3a..5256123 100644
709 --- a/pym/_emerge/resolver/circular_dependency.py
710 +++ b/pym/_emerge/resolver/circular_dependency.py
711 @@ -114,10 +114,10 @@ class circular_dependency_handler(object):
712 parent_atoms = self.all_parent_atoms.get(pkg)
713
714 if priorities[-1].buildtime:
715 - dep = " ".join(parent.metadata[k]
716 + dep = " ".join(parent._metadata[k]
717 for k in Package._buildtime_keys)
718 elif priorities[-1].runtime:
719 - dep = parent.metadata["RDEPEND"]
720 + dep = parent._metadata["RDEPEND"]
721
722 for ppkg, atom in parent_atoms:
723 if ppkg == parent:
724 @@ -146,7 +146,7 @@ class circular_dependency_handler(object):
725 #If any of the flags we're going to touch is in REQUIRED_USE, add all
726 #other flags in REQUIRED_USE to affecting_use, to not lose any solution.
727 required_use_flags = get_required_use_flags(
728 - parent.metadata.get("REQUIRED_USE", ""),
729 + parent._metadata.get("REQUIRED_USE", ""),
730 eapi=parent.eapi)
731
732 if affecting_use.intersection(required_use_flags):
733 @@ -189,7 +189,7 @@ class circular_dependency_handler(object):
734 parent_atom not in reduced_dep:
735 #We found an assignment that removes the atom from 'dep'.
736 #Make sure it doesn't conflict with REQUIRED_USE.
737 - required_use = parent.metadata.get("REQUIRED_USE", "")
738 + required_use = parent._metadata.get("REQUIRED_USE", "")
739
740 if check_required_use(required_use, current_use,
741 parent.iuse.is_valid_flag,
742
743 diff --git a/pym/_emerge/resolver/output.py b/pym/_emerge/resolver/output.py
744 index cfacab1..1fdc08d 100644
745 --- a/pym/_emerge/resolver/output.py
746 +++ b/pym/_emerge/resolver/output.py
747 @@ -651,7 +651,7 @@ class Display(object):
748 pkg_info.repo_path_real = self.portdb.getRepositoryPath(pkg.repo)
749 pkg_info.use = list(self.conf.pkg_use_enabled(pkg))
750 if not pkg.built and pkg.operation == 'merge' and \
751 - 'fetch' in pkg.metadata.restrict:
752 + 'fetch' in pkg._metadata.restrict:
753 if pkg_info.ordered:
754 self.counters.restrict_fetch += 1
755 pkg_info.attr_display.fetch_restrict = True
756 @@ -853,7 +853,7 @@ class Display(object):
757 pkg_info.oldbest = self.convert_myoldbest(pkg, pkg_info)
758 pkg_info.system, pkg_info.world = \
759 self.check_system_world(pkg)
760 - if 'interactive' in pkg.metadata.properties and \
761 + if 'interactive' in pkg._metadata.properties and \
762 pkg.operation == 'merge':
763 pkg_info.attr_display.interactive = True
764 if ordered:
765
766 diff --git a/pym/_emerge/resolver/slot_collision.py b/pym/_emerge/resolver/slot_collision.py
767 index c2b04d5..e04166b 100644
768 --- a/pym/_emerge/resolver/slot_collision.py
769 +++ b/pym/_emerge/resolver/slot_collision.py
770 @@ -872,7 +872,7 @@ class slot_conflict_handler(object):
771
772 #Make sure the changes don't violate REQUIRED_USE
773 for pkg in required_changes:
774 - required_use = pkg.metadata.get("REQUIRED_USE")
775 + required_use = pkg._metadata.get("REQUIRED_USE")
776 if not required_use:
777 continue
778
779
780 diff --git a/pym/portage/_sets/base.py b/pym/portage/_sets/base.py
781 index c8d3ae4..d368e00 100644
782 --- a/pym/portage/_sets/base.py
783 +++ b/pym/portage/_sets/base.py
784 @@ -126,7 +126,7 @@ class PackageSet(object):
785
786 if modified_use is not None and modified_use is not pkg.use.enabled:
787 pkg = pkg.copy()
788 - pkg.metadata["USE"] = " ".join(modified_use)
789 + pkg._metadata["USE"] = " ".join(modified_use)
790
791 # Atoms matched via PROVIDE must be temporarily transformed since
792 # match_from_list() only works correctly when atom.cp == pkg.cp.
793 @@ -156,7 +156,7 @@ class PackageSet(object):
794 for atom in atoms:
795 if match_from_list(atom, cpv_slot_list):
796 yield atom
797 - provides = pkg.metadata['PROVIDE']
798 + provides = pkg._metadata['PROVIDE']
799 if not provides:
800 return
801 provides = provides.split()
802
803 diff --git a/pym/portage/dep/_slot_operator.py b/pym/portage/dep/_slot_operator.py
804 index 1fdf904..2fcfb48 100644
805 --- a/pym/portage/dep/_slot_operator.py
806 +++ b/pym/portage/dep/_slot_operator.py
807 @@ -9,7 +9,7 @@ from _emerge.Package import Package
808 def find_built_slot_operator_atoms(pkg):
809 atoms = {}
810 for k in Package._dep_keys:
811 - atom_list = list(_find_built_slot_operator(use_reduce(pkg.metadata[k],
812 + atom_list = list(_find_built_slot_operator(use_reduce(pkg._metadata[k],
813 uselist=pkg.use.enabled, eapi=pkg.eapi,
814 token_class=Atom)))
815 if atom_list:
816
817 diff --git a/pym/portage/dep/dep_check.py b/pym/portage/dep/dep_check.py
818 index 006e084..b5f8d0d 100644
819 --- a/pym/portage/dep/dep_check.py
820 +++ b/pym/portage/dep/dep_check.py
821 @@ -160,7 +160,7 @@ def _expand_new_virtuals(mysplit, edebug, mydbapi, mysettings, myroot="/",
822 # According to GLEP 37, RDEPEND is the only dependency
823 # type that is valid for new-style virtuals. Repoman
824 # should enforce this.
825 - depstring = pkg.metadata['RDEPEND']
826 + depstring = pkg._metadata['RDEPEND']
827 pkg_kwargs = kwargs.copy()
828 pkg_kwargs["myuse"] = pkg_use_enabled(pkg)
829 if edebug:
830
831 diff --git a/pym/portage/package/ebuild/config.py b/pym/portage/package/ebuild/config.py
832 index 86eac8a..75fc1de 100644
833 --- a/pym/portage/package/ebuild/config.py
834 +++ b/pym/portage/package/ebuild/config.py
835 @@ -1248,7 +1248,7 @@ class config(object):
836 if not isinstance(mycpv, basestring):
837 pkg = mycpv
838 mycpv = pkg.cpv
839 - mydb = pkg.metadata
840 + mydb = pkg._metadata
841 explicit_iuse = pkg.iuse.all
842 args_hash = (mycpv, id(pkg))
843 if pkg.built:
844
845 diff --git a/pym/portage/package/ebuild/doebuild.py b/pym/portage/package/ebuild/doebuild.py
846 index a1f27db..d737e66 100644
847 --- a/pym/portage/package/ebuild/doebuild.py
848 +++ b/pym/portage/package/ebuild/doebuild.py
849 @@ -1334,9 +1334,9 @@ def _validate_deps(mysettings, myroot, mydo, mydbapi):
850
851 if not pkg.built and \
852 mydo not in ("digest", "help", "manifest") and \
853 - pkg.metadata["REQUIRED_USE"] and \
854 + pkg._metadata["REQUIRED_USE"] and \
855 eapi_has_required_use(pkg.eapi):
856 - result = check_required_use(pkg.metadata["REQUIRED_USE"],
857 + result = check_required_use(pkg._metadata["REQUIRED_USE"],
858 pkg.use.enabled, pkg.iuse.is_valid_flag, eapi=pkg.eapi)
859 if not result:
860 reduced_noise = result.tounicode()
861 @@ -1345,7 +1345,7 @@ def _validate_deps(mysettings, myroot, mydo, mydbapi):
862 writemsg(" %s\n" % reduced_noise,
863 noiselevel=-1)
864 normalized_required_use = \
865 - " ".join(pkg.metadata["REQUIRED_USE"].split())
866 + " ".join(pkg._metadata["REQUIRED_USE"].split())
867 if reduced_noise != normalized_required_use:
868 writemsg("\n %s\n" % _("The above constraints " + \
869 "are a subset of the following complete expression:"),
870
871 diff --git a/pym/portage/package/ebuild/getmaskingstatus.py b/pym/portage/package/ebuild/getmaskingstatus.py
872 index 954abce..4dbe6a9 100644
873 --- a/pym/portage/package/ebuild/getmaskingstatus.py
874 +++ b/pym/portage/package/ebuild/getmaskingstatus.py
875 @@ -48,7 +48,7 @@ def _getmaskingstatus(mycpv, settings, portdb, myrepo=None):
876 # emerge passed in a Package instance
877 pkg = mycpv
878 mycpv = pkg.cpv
879 - metadata = pkg.metadata
880 + metadata = pkg._metadata
881 installed = pkg.installed
882
883 if metadata is None: