|
|
|
@ -11,18 +11,13 @@ import tokenize
|
|
|
|
|
import gclient_utils
|
|
|
|
|
|
|
|
|
|
from third_party import schema
|
|
|
|
|
from third_party import six
|
|
|
|
|
|
|
|
|
|
if sys.version_info.major == 2:
|
|
|
|
|
if six.PY2:
|
|
|
|
|
# We use cStringIO.StringIO because it is equivalent to Py3's io.StringIO.
|
|
|
|
|
from cStringIO import StringIO
|
|
|
|
|
else:
|
|
|
|
|
from io import StringIO
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# TODO(crbug.com/953884): Remove this when python3 migration is done.
|
|
|
|
|
try:
|
|
|
|
|
basestring
|
|
|
|
|
except NameError:
|
|
|
|
|
# pylint: disable=redefined-builtin
|
|
|
|
|
basestring = str
|
|
|
|
|
|
|
|
|
@ -57,7 +52,7 @@ class _NodeDict(collections.MutableMapping):
|
|
|
|
|
def MoveTokens(self, origin, delta):
|
|
|
|
|
if self.tokens:
|
|
|
|
|
new_tokens = {}
|
|
|
|
|
for pos, token in self.tokens.iteritems():
|
|
|
|
|
for pos, token in six.iteritems(self.tokens):
|
|
|
|
|
if pos[0] >= origin:
|
|
|
|
|
pos = (pos[0] + delta, pos[1])
|
|
|
|
|
token = token[:2] + (pos,) + token[3:]
|
|
|
|
@ -245,7 +240,7 @@ def _gclient_eval(node_or_string, filename='<unknown>', vars_dict=None):
|
|
|
|
|
raise KeyError(
|
|
|
|
|
'%s was used as a variable, but was not declared in the vars dict '
|
|
|
|
|
'(file %r, line %s)' % (
|
|
|
|
|
e.message, filename, getattr(node, 'lineno', '<unknown>')))
|
|
|
|
|
e.args[0], filename, getattr(node, 'lineno', '<unknown>')))
|
|
|
|
|
elif isinstance(node, ast.Num):
|
|
|
|
|
return node.n
|
|
|
|
|
elif isinstance(node, ast.Tuple):
|
|
|
|
@ -514,14 +509,14 @@ def Parse(content, validate_syntax, filename, vars_override=None,
|
|
|
|
|
|
|
|
|
|
if 'deps_os' in result:
|
|
|
|
|
deps = result.setdefault('deps', {})
|
|
|
|
|
for os_name, os_deps in result['deps_os'].iteritems():
|
|
|
|
|
for os_name, os_deps in six.iteritems(result['deps_os']):
|
|
|
|
|
os_deps = _StandardizeDeps(os_deps, vars_dict)
|
|
|
|
|
_MergeDepsOs(deps, os_deps, os_name)
|
|
|
|
|
del result['deps_os']
|
|
|
|
|
|
|
|
|
|
if 'hooks_os' in result:
|
|
|
|
|
hooks = result.setdefault('hooks', [])
|
|
|
|
|
for os_name, os_hooks in result['hooks_os'].iteritems():
|
|
|
|
|
for os_name, os_hooks in six.iteritems(result['hooks_os']):
|
|
|
|
|
for hook in os_hooks:
|
|
|
|
|
UpdateCondition(hook, 'and', 'checkout_' + os_name)
|
|
|
|
|
hooks.extend(os_hooks)
|
|
|
|
@ -569,6 +564,9 @@ def EvaluateCondition(condition, variables, referenced_variables=None):
|
|
|
|
|
# between arguments for GN to be passed verbatim, and ones to
|
|
|
|
|
# be evaluated.
|
|
|
|
|
return node.id
|
|
|
|
|
elif not sys.version_info[:2] < (3, 4) and isinstance(
|
|
|
|
|
node, ast.NameConstant): # Since Python 3.4
|
|
|
|
|
return node.value
|
|
|
|
|
elif isinstance(node, ast.BoolOp) and isinstance(node.op, ast.Or):
|
|
|
|
|
if len(node.values) != 2:
|
|
|
|
|
raise ValueError(
|
|
|
|
|