summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2012-06-10 17:58:14 -0700
committerZac Medico <zmedico@gentoo.org>2012-06-10 17:58:14 -0700
commitb6ecc428a7e04afa3449df6a6844978eeb40d569 (patch)
tree9ea0680c35ecfbab6e41391266aadf74908f0eaa
parent0fc39028b10cf6a060c13be888d7ad1a8c488f58 (diff)
downloadportage-b6ecc428a7e04afa3449df6a6844978eeb40d569.tar.gz
portage-b6ecc428a7e04afa3449df6a6844978eeb40d569.tar.bz2
portage-b6ecc428a7e04afa3449df6a6844978eeb40d569.zip
Package: use _eapi_attrs
-rw-r--r--pym/_emerge/Package.py7
-rw-r--r--pym/portage/eapi.py5
2 files changed, 8 insertions, 4 deletions
diff --git a/pym/_emerge/Package.py b/pym/_emerge/Package.py
index bdd4bc7d9..75021b9f5 100644
--- a/pym/_emerge/Package.py
+++ b/pym/_emerge/Package.py
@@ -10,7 +10,7 @@ from portage.const import EBUILD_PHASES
from portage.dep import Atom, check_required_use, use_reduce, \
paren_enclose, _slot_re, _slot_separator, _repo_separator
from portage.versions import _pkg_str, _unknown_repo
-from portage.eapi import eapi_has_iuse_defaults, eapi_has_required_use
+from portage.eapi import _get_eapi_attrs
from portage.exception import InvalidDependString
from _emerge.Task import Task
@@ -49,6 +49,7 @@ class Package(Task):
self.metadata = _PackageMetadataWrapper(self, self._raw_metadata)
if not self.built:
self.metadata['CHOST'] = self.root_config.settings.get('CHOST', '')
+ eapi_attrs = _get_eapi_attrs(self.metadata["EAPI"])
slot = self.slot
if _slot_re.match(slot) is None:
self._invalid_metadata('SLOT.invalid',
@@ -62,7 +63,7 @@ class Package(Task):
# sync metadata with validated repo (may be UNKNOWN_REPO)
self.metadata['repository'] = self.cpv.repo
if (self.iuse.enabled or self.iuse.disabled) and \
- not eapi_has_iuse_defaults(self.metadata["EAPI"]):
+ not eapi_attrs.iuse_defaults:
if not self.installed:
self._invalid_metadata('EAPI.incompatible',
"IUSE contains defaults, but EAPI doesn't allow them")
@@ -194,7 +195,7 @@ class Package(Task):
k = 'REQUIRED_USE'
v = self.metadata.get(k)
if v:
- if not eapi_has_required_use(eapi):
+ if not _get_eapi_attrs(eapi).required_use:
self._invalid_metadata('EAPI.incompatible',
"REQUIRED_USE set, but EAPI='%s' doesn't allow it" % eapi)
else:
diff --git a/pym/portage/eapi.py b/pym/portage/eapi.py
index ca8af9c5b..e36567d16 100644
--- a/pym/portage/eapi.py
+++ b/pym/portage/eapi.py
@@ -64,7 +64,8 @@ def eapi_allows_dots_in_use_flags(eapi):
return eapi in ("4-python",)
_eapi_attrs = collections.namedtuple('_eapi_attrs',
- 'dots_in_PN dots_in_use_flags repo_deps slot_deps '
+ 'dots_in_PN dots_in_use_flags iuse_defaults '
+ 'repo_deps required_use slot_deps '
'src_uri_arrows strong_blocks use_deps use_dep_defaults')
_eapi_attrs_cache = {}
@@ -81,7 +82,9 @@ def _get_eapi_attrs(eapi):
eapi_attrs = _eapi_attrs(
dots_in_PN = (eapi is None or eapi_allows_dots_in_PN(eapi)),
dots_in_use_flags = (eapi is None or eapi_allows_dots_in_use_flags(eapi)),
+ iuse_defaults = (eapi is None or eapi_has_iuse_defaults(eapi)),
repo_deps = (eapi is None or eapi_has_repo_deps(eapi)),
+ required_use = (eapi is None or eapi_has_required_use(eapi)),
slot_deps = (eapi is None or eapi_has_slot_deps(eapi)),
src_uri_arrows = (eapi is None or eapi_has_src_uri_arrows(eapi)),
strong_blocks = (eapi is None or eapi_has_strong_blocks(eapi)),