summaryrefslogtreecommitdiffstats
path: root/pym/portage/dep/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'pym/portage/dep/__init__.py')
-rw-r--r--pym/portage/dep/__init__.py21
1 files changed, 13 insertions, 8 deletions
diff --git a/pym/portage/dep/__init__.py b/pym/portage/dep/__init__.py
index 678a6271d..7d7800904 100644
--- a/pym/portage/dep/__init__.py
+++ b/pym/portage/dep/__init__.py
@@ -221,7 +221,7 @@ def paren_enclose(mylist):
return " ".join(mystrparts)
def use_reduce(depstr, uselist=[], masklist=[], matchall=False, excludeall=[], is_src_uri=False, \
- allow_src_uri_file_renames=False, opconvert=False, flat=False):
+ allow_src_uri_file_renames=False, opconvert=False, flat=False, is_valid_flag=None):
"""
Takes a dep string and reduces the use? conditionals out, leaving an array
with subarrays. All redundant brackets are removed.
@@ -263,10 +263,15 @@ def use_reduce(depstr, uselist=[], masklist=[], matchall=False, excludeall=[], i
else:
flag = conditional[:-1]
is_negated = False
-
- if not flag:
- raise portage.exception.InvalidDependString(
- _("malformed syntax: '%s'") % depstr)
+
+ if is_valid_flag:
+ if not is_valid_flag(flag):
+ raise portage.exception.InvalidDependString(
+ _("malformed syntax: '%s'") % depstr)
+ else:
+ if _valid_use_re.match(flag) is None:
+ raise portage.exception.InvalidDependString(
+ _("malformed syntax: '%s'") % depstr)
if is_negated and flag in excludeall:
return False
@@ -447,8 +452,6 @@ class _use_dep(object):
_conditionals_class = portage.cache.mappings.slot_dict_class(
("disabled", "enabled", "equal", "not_equal"), prefix="")
- _valid_use_re = re.compile(r'^[A-Za-z0-9][A-Za-z0-9+_@-]*$')
-
def __init__(self, use):
enabled_flags = []
disabled_flags = []
@@ -543,7 +546,7 @@ class _use_dep(object):
break
def _validate_flag(self, token, flag):
- if self._valid_use_re.match(flag) is None:
+ if _valid_use_re.match(flag) is None:
raise InvalidAtom(_("Invalid use dep: '%s'") % (token,))
return flag
@@ -1198,6 +1201,8 @@ _extended_pkg = r'[\w+*][\w+*-]*?'
_atom_wildcard_re = re.compile('(?P<simple>(' + _extended_cat + ')/(' + _extended_pkg + '))(:(?P<slot>' + _slot + '))?$')
+_valid_use_re = re.compile(r'^[A-Za-z0-9][A-Za-z0-9+_@-]*$')
+
def isvalidatom(atom, allow_blockers=False, allow_wildcard=False):
"""
Check to see if a depend atom is valid