newsplit.append(_expand_new_virtuals(x, edebug, mydbapi,
mysettings, myroot=myroot, trees=trees, **kwargs))
continue
- if not isvalidatom(x, allow_blockers=True):
+ if portage_dep._dep_check_strict and \
+ not isvalidatom(x, allow_blockers=True):
raise portage_exception.ParseError(
"invalid atom: '%s'" % x)
mykey = dep_getkey(x)
mystrparts.append(x)
return " ".join(mystrparts)
+# This is just for use by emerge so that it can enable a backward compatibility
+# mode in order to gracefully deal with installed packages that have invalid
+# atoms or dep syntax.
+_dep_check_strict = True
+
def use_reduce(deparray, uselist=[], masklist=[], matchall=0, excludeall=[]):
"""
Takes a paren_reduce'd array and reduces the use? conditionals out
if deparray and deparray[-1] and deparray[-1][-1] == "?":
raise portage_exception.InvalidDependString("Conditional without target in \""+paren_enclose(deparray)+"\"")
+ global _dep_check_strict
+
mydeparray = deparray[:]
rlist = []
while mydeparray:
additions = use_reduce(target, uselist, masklist, matchall, excludeall)
if additions:
rlist.append(additions)
+ elif not _dep_check_strict:
+ # The old deprecated behavior.
+ rlist.append(target)
else:
raise portage_exception.InvalidDependString(
"Conditional without parenthesis: '%s?'" % head)