summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2012-08-26 15:31:01 -0700
committerZac Medico <zmedico@gentoo.org>2012-08-26 15:31:01 -0700
commitfbf6518406ddb79a999b7d1230046ad93adc445d (patch)
tree31f4b79fa1f1399c1590616c635a66f017d1d780
parent8c8dcc663f90f36a81437a711b086ec3bc5d3eef (diff)
downloadportage-fbf6518406ddb79a999b7d1230046ad93adc445d.tar.gz
portage-fbf6518406ddb79a999b7d1230046ad93adc445d.tar.bz2
portage-fbf6518406ddb79a999b7d1230046ad93adc445d.zip
_get_eapi_attrs: handle unsupported eapi as Nonev2.2.0_alpha123
-rw-r--r--pym/portage/eapi.py11
1 files changed, 10 insertions, 1 deletions
diff --git a/pym/portage/eapi.py b/pym/portage/eapi.py
index 8b03f830e..a5ef30143 100644
--- a/pym/portage/eapi.py
+++ b/pym/portage/eapi.py
@@ -3,6 +3,8 @@
import collections
+from portage import eapi_is_supported
+
def eapi_has_iuse_defaults(eapi):
return eapi != "0"
@@ -77,11 +79,18 @@ def _get_eapi_attrs(eapi):
"""
When eapi is None then validation is not as strict, since we want the
same to work for multiple EAPIs that may have slightly different rules.
+ An unsupported eapi is handled the same as when eapi is None, which may
+ be helpful for handling of corrupt EAPI metadata in essential functions
+ such as pkgsplit.
"""
eapi_attrs = _eapi_attrs_cache.get(eapi)
if eapi_attrs is not None:
return eapi_attrs
+ orig_eapi = eapi
+ if eapi is not None and not eapi_is_supported(eapi):
+ eapi = None
+
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)),
@@ -96,5 +105,5 @@ def _get_eapi_attrs(eapi):
use_dep_defaults = (eapi is None or eapi_has_use_dep_defaults(eapi))
)
- _eapi_attrs_cache[eapi] = eapi_attrs
+ _eapi_attrs_cache[orig_eapi] = eapi_attrs
return eapi_attrs