summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2012-11-17 09:31:53 -0800
committerZac Medico <zmedico@gentoo.org>2012-11-17 09:31:53 -0800
commit8f23cb8f32f8499575dc0629a8a83ddcf963d3c8 (patch)
treea0396be6a6ab2a8fd2cc3b2358d5fea416006f7f
parent77a965a9890f196b0a35c8e3e6b6aeafd3554327 (diff)
downloadportage-8f23cb8f32f8499575dc0629a8a83ddcf963d3c8.tar.gz
portage-8f23cb8f32f8499575dc0629a8a83ddcf963d3c8.tar.bz2
portage-8f23cb8f32f8499575dc0629a8a83ddcf963d3c8.zip
Add Package.eapi property.
-rw-r--r--pym/_emerge/EbuildExecuter.py2
-rw-r--r--pym/_emerge/FakeVartree.py2
-rw-r--r--pym/_emerge/Package.py14
-rw-r--r--pym/_emerge/Scheduler.py2
-rw-r--r--pym/_emerge/depgraph.py40
-rw-r--r--pym/_emerge/resolver/circular_dependency.py6
-rw-r--r--pym/_emerge/resolver/output.py2
-rw-r--r--pym/portage/dep/_slot_operator.py2
-rw-r--r--pym/portage/dep/dep_check.py2
-rw-r--r--pym/portage/package/ebuild/_config/UseManager.py2
-rw-r--r--pym/portage/package/ebuild/doebuild.py4
-rw-r--r--pym/repoman/checks.py4
12 files changed, 43 insertions, 39 deletions
diff --git a/pym/_emerge/EbuildExecuter.py b/pym/_emerge/EbuildExecuter.py
index fd663a41d..cfbc90d0f 100644
--- a/pym/_emerge/EbuildExecuter.py
+++ b/pym/_emerge/EbuildExecuter.py
@@ -83,7 +83,7 @@ class EbuildExecuter(CompositeTask):
pkg = self.pkg
phases = self._phases
- eapi = pkg.metadata["EAPI"]
+ eapi = pkg.eapi
if not eapi_has_src_prepare_and_src_configure(eapi):
# skip src_prepare and src_configure
phases = phases[2:]
diff --git a/pym/_emerge/FakeVartree.py b/pym/_emerge/FakeVartree.py
index 17c95ac0c..f618b2868 100644
--- a/pym/_emerge/FakeVartree.py
+++ b/pym/_emerge/FakeVartree.py
@@ -110,7 +110,7 @@ class FakeVartree(vartree):
# We need to check the EAPI, and this also raises
# a KeyError to the caller if appropriate.
pkg_obj = self.dbapi._cpv_map[pkg]
- installed_eapi = pkg_obj.metadata['EAPI']
+ installed_eapi = pkg_obj.eapi
repo = pkg_obj.metadata['repository']
eapi_attrs = _get_eapi_attrs(installed_eapi)
built_slot_operator_atoms = None
diff --git a/pym/_emerge/Package.py b/pym/_emerge/Package.py
index 1c1840836..4c47bca4d 100644
--- a/pym/_emerge/Package.py
+++ b/pym/_emerge/Package.py
@@ -56,7 +56,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"])
+ eapi_attrs = _get_eapi_attrs(self.eapi)
self.cpv = _pkg_str(self.cpv, metadata=self.metadata,
settings=self.root_config.settings)
if hasattr(self.cpv, 'slot_invalid'):
@@ -78,7 +78,7 @@ class Package(Task):
implicit_match = self.root_config.settings._iuse_implicit_match
usealiases = self.root_config.settings._use_manager.getUseAliases(self)
self.iuse = self._iuse(self, self.metadata["IUSE"].split(), implicit_match,
- usealiases, self.metadata["EAPI"])
+ usealiases, self.eapi)
if (self.iuse.enabled or self.iuse.disabled) and \
not eapi_attrs.iuse_defaults:
@@ -101,6 +101,10 @@ class Package(Task):
type_name=self.type_name)
self._hash_value = hash(self._hash_key)
+ @property
+ def eapi(self):
+ return self.metadata["EAPI"]
+
# For consistency with _pkg_str
@property
def _metadata(self):
@@ -185,7 +189,7 @@ class Package(Task):
is expensive for ebuilds and therefore we want to avoid doing
in unnecessarily (like for masked packages).
"""
- eapi = self.metadata['EAPI']
+ eapi = self.eapi
dep_eapi = eapi
dep_valid_flag = self.iuse.is_valid_flag
if self.installed:
@@ -286,7 +290,7 @@ class Package(Task):
if not settings._accept_chost(self.cpv, self.metadata):
masks['CHOST'] = self.metadata['CHOST']
- eapi = self.metadata["EAPI"]
+ eapi = self.eapi
if not portage.eapi_is_supported(eapi):
masks['EAPI.unsupported'] = eapi
if portage._eapi_is_deprecated(eapi):
@@ -472,7 +476,7 @@ class Package(Task):
self._force = None
self._mask = None
enabled_flags = use_str.split()
- if eapi_has_use_aliases(pkg.metadata["EAPI"]):
+ if eapi_has_use_aliases(pkg.eapi):
for enabled_flag in enabled_flags:
enabled_flags.extend(pkg.iuse.alias_mapping.get(enabled_flag, []))
self.enabled = frozenset(enabled_flags)
diff --git a/pym/_emerge/Scheduler.py b/pym/_emerge/Scheduler.py
index 7c3451e69..ff2938020 100644
--- a/pym/_emerge/Scheduler.py
+++ b/pym/_emerge/Scheduler.py
@@ -783,7 +783,7 @@ class Scheduler(PollScheduler):
if x.operation == "uninstall":
continue
- if x.metadata["EAPI"] in ("0", "1", "2", "3"):
+ if x.eapi in ("0", "1", "2", "3"):
continue
if "pretend" not in x.metadata.defined_phases:
diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py
index dace4fc74..c97aa02b8 100644
--- a/pym/_emerge/depgraph.py
+++ b/pym/_emerge/depgraph.py
@@ -1232,7 +1232,7 @@ class depgraph(object):
newuse = "--newuse" in self._frozen_config.myopts
changed_use = "changed-use" == self._frozen_config.myopts.get("--reinstall")
feature_flags = _get_feature_flags(
- _get_eapi_attrs(pkg.metadata["EAPI"]))
+ _get_eapi_attrs(pkg.eapi))
if newuse or (binpkg_respect_use and not changed_use):
flags = set(orig_iuse.symmetric_difference(
@@ -1344,7 +1344,7 @@ class depgraph(object):
# The blocker applies to the root where
# the parent is or will be installed.
blocker = Blocker(atom=dep.atom,
- eapi=dep.parent.metadata["EAPI"],
+ eapi=dep.parent.eapi,
priority=dep.priority, root=dep.parent.root)
self._dynamic_config._blocker_parents.add(blocker, dep.parent)
return 1
@@ -1491,12 +1491,12 @@ class depgraph(object):
# for USE adjustment rather than have REQUIRED_USE
# affect package selection and || dep choices.
if not pkg.built and pkg.metadata.get("REQUIRED_USE") and \
- eapi_has_required_use(pkg.metadata["EAPI"]):
+ eapi_has_required_use(pkg.eapi):
required_use_is_sat = check_required_use(
pkg.metadata["REQUIRED_USE"],
self._pkg_use_enabled(pkg),
pkg.iuse.is_valid_flag,
- eapi=pkg.metadata["EAPI"])
+ eapi=pkg.eapi)
if not required_use_is_sat:
if dep.atom is not None and dep.parent is not None:
self._add_parent_atom(pkg, (dep.parent, dep.atom))
@@ -1684,7 +1684,7 @@ class depgraph(object):
myroot = pkg.root
metadata = pkg.metadata
removal_action = "remove" in self._dynamic_config.myparams
- eapi_attrs = _get_eapi_attrs(pkg.metadata["EAPI"])
+ eapi_attrs = _get_eapi_attrs(pkg.eapi)
edepend={}
for k in Package._dep_keys:
@@ -1776,7 +1776,7 @@ class depgraph(object):
uselist=self._pkg_use_enabled(pkg),
is_valid_flag=pkg.iuse.is_valid_flag,
opconvert=True, token_class=Atom,
- eapi=pkg.metadata['EAPI'])
+ eapi=pkg.eapi)
except portage.exception.InvalidDependString as e:
if not pkg.installed:
# should have been masked before it was selected
@@ -1790,7 +1790,7 @@ class depgraph(object):
dep_string = portage.dep.use_reduce(dep_string,
uselist=self._pkg_use_enabled(pkg),
opconvert=True, token_class=Atom,
- eapi=pkg.metadata['EAPI'])
+ eapi=pkg.eapi)
except portage.exception.InvalidDependString as e:
self._dynamic_config._masked_installed.add(pkg)
del e
@@ -2940,7 +2940,7 @@ class depgraph(object):
eapi = None
is_valid_flag = None
if parent is not None:
- eapi = parent.metadata['EAPI']
+ eapi = parent.eapi
if not parent.installed:
is_valid_flag = parent.iuse.is_valid_flag
depstring = portage.dep.use_reduce(depstring,
@@ -3140,7 +3140,7 @@ class depgraph(object):
try:
affecting_use.update(extract_affecting_use(
node.metadata[dep_str], target_atom,
- eapi=node.metadata["EAPI"]))
+ eapi=node.eapi))
except InvalidDependString:
if not node.installed:
raise
@@ -3233,7 +3233,7 @@ class depgraph(object):
for dep_str in dep_strings:
try:
affecting_use.update(extract_affecting_use(
- dep_str, atom, eapi=node.metadata["EAPI"]))
+ dep_str, atom, eapi=node.eapi))
except InvalidDependString:
if not node.installed:
raise
@@ -3418,12 +3418,12 @@ class depgraph(object):
if not mreasons and \
not pkg.built and \
pkg.metadata.get("REQUIRED_USE") and \
- eapi_has_required_use(pkg.metadata["EAPI"]):
+ eapi_has_required_use(pkg.eapi):
if not check_required_use(
pkg.metadata["REQUIRED_USE"],
self._pkg_use_enabled(pkg),
pkg.iuse.is_valid_flag,
- eapi=pkg.metadata["EAPI"]):
+ eapi=pkg.eapi):
required_use_unsatisfied.append(pkg)
continue
root_slot = (pkg.root, pkg.slot_atom)
@@ -3483,9 +3483,9 @@ class depgraph(object):
for flag in need_disable:
new_use.discard(flag)
if check_required_use(required_use, old_use,
- pkg.iuse.is_valid_flag, eapi=pkg.metadata["EAPI"]) \
+ pkg.iuse.is_valid_flag, eapi=pkg.eapi) \
and not check_required_use(required_use, new_use,
- pkg.iuse.is_valid_flag, eapi=pkg.metadata["EAPI"]):
+ pkg.iuse.is_valid_flag, eapi=pkg.eapi):
required_use_warning = ", this change violates use flag constraints " + \
"defined by %s: '%s'" % (pkg.cpv, human_readable_required_use(required_use))
@@ -3535,10 +3535,10 @@ class depgraph(object):
new_use.add(flag)
if check_required_use(required_use, old_use,
myparent.iuse.is_valid_flag,
- eapi=myparent.metadata["EAPI"]) and \
+ eapi=myparent.eapi) and \
not check_required_use(required_use, new_use,
myparent.iuse.is_valid_flag,
- eapi=myparent.metadata["EAPI"]):
+ eapi=myparent.eapi):
required_use_warning = ", this change violates use flag constraints " + \
"defined by %s: '%s'" % (myparent.cpv, \
human_readable_required_use(required_use))
@@ -3628,7 +3628,7 @@ class depgraph(object):
pkg.metadata["REQUIRED_USE"],
self._pkg_use_enabled(pkg),
pkg.iuse.is_valid_flag,
- eapi=pkg.metadata["EAPI"]).tounicode()
+ eapi=pkg.eapi).tounicode()
writemsg(" %s\n" % \
human_readable_required_use(reduced_noise),
noiselevel=-1)
@@ -4194,9 +4194,9 @@ class depgraph(object):
#Don't do the change if it violates REQUIRED_USE.
required_use = pkg.metadata.get("REQUIRED_USE")
if required_use and check_required_use(required_use, old_use,
- pkg.iuse.is_valid_flag, eapi=pkg.metadata["EAPI"]) and \
+ pkg.iuse.is_valid_flag, eapi=pkg.eapi) and \
not check_required_use(required_use, new_use,
- pkg.iuse.is_valid_flag, eapi=pkg.metadata["EAPI"]):
+ pkg.iuse.is_valid_flag, eapi=pkg.eapi):
return old_use
if any(x in pkg.use.mask for x in new_changes) or \
@@ -5058,7 +5058,7 @@ class depgraph(object):
try:
for atom in blocker_atoms:
blocker = Blocker(atom=atom,
- eapi=pkg.metadata["EAPI"],
+ eapi=pkg.eapi,
priority=self._priority(runtime=True),
root=myroot)
self._dynamic_config._blocker_parents.add(blocker, pkg)
diff --git a/pym/_emerge/resolver/circular_dependency.py b/pym/_emerge/resolver/circular_dependency.py
index 5192d61e9..76c7b3afb 100644
--- a/pym/_emerge/resolver/circular_dependency.py
+++ b/pym/_emerge/resolver/circular_dependency.py
@@ -127,7 +127,7 @@ class circular_dependency_handler(object):
try:
affecting_use = extract_affecting_use(dep, parent_atom,
- eapi=parent.metadata["EAPI"])
+ eapi=parent.eapi)
except InvalidDependString:
if not parent.installed:
raise
@@ -147,7 +147,7 @@ class circular_dependency_handler(object):
#other flags in REQUIRED_USE to affecting_use, to not lose any solution.
required_use_flags = get_required_use_flags(
parent.metadata.get("REQUIRED_USE", ""),
- eapi=parent.metadata["EAPI"])
+ eapi=parent.eapi)
if affecting_use.intersection(required_use_flags):
# TODO: Find out exactly which REQUIRED_USE flags are
@@ -193,7 +193,7 @@ class circular_dependency_handler(object):
if check_required_use(required_use, current_use,
parent.iuse.is_valid_flag,
- eapi=parent.metadata["EAPI"]):
+ eapi=parent.eapi):
use = self.depgraph._pkg_use_enabled(parent)
solution = set()
for flag, state in zip(affecting_use, use_state):
diff --git a/pym/_emerge/resolver/output.py b/pym/_emerge/resolver/output.py
index 130ba2d0a..85e1dd7b0 100644
--- a/pym/_emerge/resolver/output.py
+++ b/pym/_emerge/resolver/output.py
@@ -249,7 +249,7 @@ class Display(object):
use_expand = sorted(self.use_expand)
use_expand.insert(0, "USE")
- feature_flags = _get_feature_flags(_get_eapi_attrs(pkg.metadata["EAPI"]))
+ feature_flags = _get_feature_flags(_get_eapi_attrs(pkg.eapi))
for key in use_expand:
if key in self.use_expand_hidden:
diff --git a/pym/portage/dep/_slot_operator.py b/pym/portage/dep/_slot_operator.py
index ae588626c..1fdf904a1 100644
--- a/pym/portage/dep/_slot_operator.py
+++ b/pym/portage/dep/_slot_operator.py
@@ -10,7 +10,7 @@ def find_built_slot_operator_atoms(pkg):
atoms = {}
for k in Package._dep_keys:
atom_list = list(_find_built_slot_operator(use_reduce(pkg.metadata[k],
- uselist=pkg.use.enabled, eapi=pkg.metadata['EAPI'],
+ uselist=pkg.use.enabled, eapi=pkg.eapi,
token_class=Atom)))
if atom_list:
atoms[k] = atom_list
diff --git a/pym/portage/dep/dep_check.py b/pym/portage/dep/dep_check.py
index 6d1969e17..006e084df 100644
--- a/pym/portage/dep/dep_check.py
+++ b/pym/portage/dep/dep_check.py
@@ -595,7 +595,7 @@ def dep_check(depstring, mydbapi, mysettings, use="yes", mode=None, myuse=None,
# dependencies so that things like --depclean work as well as possible
# in spite of partial invalidity.
if not current_parent.installed:
- eapi = current_parent.metadata['EAPI']
+ eapi = current_parent.eapi
if isinstance(depstring, list):
mysplit = depstring
diff --git a/pym/portage/package/ebuild/_config/UseManager.py b/pym/portage/package/ebuild/_config/UseManager.py
index 93ec6209c..85380d3af 100644
--- a/pym/portage/package/ebuild/_config/UseManager.py
+++ b/pym/portage/package/ebuild/_config/UseManager.py
@@ -397,7 +397,7 @@ class UseManager(object):
return frozenset(stack_lists(useforce, incremental=True))
def getUseAliases(self, pkg):
- if not eapi_has_use_aliases(pkg.metadata["EAPI"]):
+ if not eapi_has_use_aliases(pkg.eapi):
return {}
cp = getattr(pkg, "cp", None)
diff --git a/pym/portage/package/ebuild/doebuild.py b/pym/portage/package/ebuild/doebuild.py
index be33f63ca..a1f27db9d 100644
--- a/pym/portage/package/ebuild/doebuild.py
+++ b/pym/portage/package/ebuild/doebuild.py
@@ -1335,9 +1335,9 @@ def _validate_deps(mysettings, myroot, mydo, mydbapi):
if not pkg.built and \
mydo not in ("digest", "help", "manifest") and \
pkg.metadata["REQUIRED_USE"] and \
- eapi_has_required_use(pkg.metadata["EAPI"]):
+ eapi_has_required_use(pkg.eapi):
result = check_required_use(pkg.metadata["REQUIRED_USE"],
- pkg.use.enabled, pkg.iuse.is_valid_flag, eapi=pkg.metadata["EAPI"])
+ pkg.use.enabled, pkg.iuse.is_valid_flag, eapi=pkg.eapi)
if not result:
reduced_noise = result.tounicode()
writemsg("\n %s\n" % _("The following REQUIRED_USE flag" + \
diff --git a/pym/repoman/checks.py b/pym/repoman/checks.py
index 240f2498a..8b80214ef 100644
--- a/pym/repoman/checks.py
+++ b/pym/repoman/checks.py
@@ -288,7 +288,7 @@ class EapiDefinition(LineCheck):
_eapi_re = portage._pms_eapi_re
def new(self, pkg):
- self._cached_eapi = pkg.metadata['EAPI']
+ self._cached_eapi = pkg.eapi
self._parsed_eapi = None
self._eapi_line_num = None
@@ -879,7 +879,7 @@ def run_checks(contents, pkg):
for lc in checks:
if is_comment and lc.ignore_comment:
continue
- if lc.check_eapi(pkg.metadata['EAPI']):
+ if lc.check_eapi(pkg.eapi):
ignore = lc.ignore_line
if not ignore or not ignore.match(line):
e = lc.check(num, line)