commit: 621c460b9be22c14d42fa8ca229e60582aee8067
Author: Brian Harring <ferringb <AT> gmail <DOT> com>
AuthorDate: Mon Dec 26 00:19:43 2022 +0000
Commit: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
CommitDate: Mon Dec 26 17:27:24 2022 +0000
URL:
https://gitweb.gentoo.org/proj/pkgcore/pkgcore.git/commit/?id=621c460b
Add a constant of the latest PMS version, and add use flag validation to EAPI.
Currently no EAPI varies the use flag parsing rules, but if it ever comes up,
this will address it.
In the process, this also will be used to move some logic out of atom.py whilst
introducing the concept of 'latest PMS' as the 'latest' rules to parse under in
the absense of an explicit directive.
Signed-off-by: Brian Harring <ferringb <AT> gmail.com>
Signed-off-by: Arthur Zamarin <arthurzam <AT> gentoo.org>
src/pkgcore/ebuild/eapi.py | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/src/pkgcore/ebuild/eapi.py b/src/pkgcore/ebuild/eapi.py
index 2ec7557e0..85ba43be7 100644
--- a/src/pkgcore/ebuild/eapi.py
+++ b/src/pkgcore/ebuild/eapi.py
@@ -12,10 +12,19 @@ from snakeoil.mappings import ImmutableDict,
OrderedFrozenSet, inject_getitem_as
from snakeoil.osutils import pjoin
from snakeoil.process.spawn import bash_version
+LATEST_PMS_EAPI_VER = "8"
+
+
+def get_latest_PMS_eapi():
+ """return the latest PMS EAPI object known to this version of pkgcore"""
+ return get_eapi(LATEST_PMS_EAPI_VER)
+
+
from ..log import logger
from . import atom, const
demand_compile_regexp("_valid_EAPI_regex", r"^[A-Za-z0-9_][A-Za-z0-9+_.-]*$")
+demand_compile_regexp("_valid_use_flag", r"^[A-Za-z0-9][A-Za-z0-9+_@-]*$")
eapi_optionals = ImmutableDict(
{
@@ -461,6 +470,10 @@ class EAPI(metaclass=klass.immutable_instance):
d["EAPI"] = self._magic
return ImmutableDict(d)
+ def is_valid_use_flag(self, s: str) -> bool:
+ """returns True if the flag is parsable under this EAPI"""
+ return _valid_use_flag.match(s) is not None
+
def get_eapi(magic, suppress_unsupported=True):
"""Return EAPI object for a given identifier."""