|
|
|
@ -1722,6 +1722,7 @@ def CMDflatten(parser, args):
|
|
|
|
|
if code != 0:
|
|
|
|
|
return code
|
|
|
|
|
|
|
|
|
|
allowed_hosts = set()
|
|
|
|
|
deps = {}
|
|
|
|
|
deps_os = {}
|
|
|
|
|
hooks = []
|
|
|
|
@ -1731,7 +1732,7 @@ def CMDflatten(parser, args):
|
|
|
|
|
|
|
|
|
|
for solution in client.dependencies:
|
|
|
|
|
_FlattenSolution(
|
|
|
|
|
solution, deps, deps_os, hooks, hooks_os, pre_deps_hooks,
|
|
|
|
|
solution, allowed_hosts, deps, deps_os, hooks, hooks_os, pre_deps_hooks,
|
|
|
|
|
unpinned_deps)
|
|
|
|
|
|
|
|
|
|
if options.require_pinned_revisions and unpinned_deps:
|
|
|
|
@ -1743,6 +1744,7 @@ def CMDflatten(parser, args):
|
|
|
|
|
_GNSettingsToLines(
|
|
|
|
|
client.dependencies[0]._gn_args_file,
|
|
|
|
|
client.dependencies[0]._gn_args) +
|
|
|
|
|
_AllowedHostsToLines(allowed_hosts) +
|
|
|
|
|
_DepsToLines(deps) +
|
|
|
|
|
_DepsOsToLines(deps_os) +
|
|
|
|
|
_HooksToLines('hooks', hooks) +
|
|
|
|
@ -1761,13 +1763,16 @@ def CMDflatten(parser, args):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _FlattenSolution(
|
|
|
|
|
solution, deps, deps_os, hooks, hooks_os, pre_deps_hooks, unpinned_deps):
|
|
|
|
|
solution, allowed_hosts, deps, deps_os, hooks, hooks_os, pre_deps_hooks,
|
|
|
|
|
unpinned_deps):
|
|
|
|
|
"""Visits a solution in order to flatten it (see CMDflatten).
|
|
|
|
|
|
|
|
|
|
Arguments:
|
|
|
|
|
solution (Dependency): one of top-level solutions in .gclient
|
|
|
|
|
|
|
|
|
|
Out-parameters:
|
|
|
|
|
allowed_hosts (set of host names): host names from which
|
|
|
|
|
dependencies are allowed (whitelist)
|
|
|
|
|
deps (dict of name -> Dependency): will be filled with all Dependency
|
|
|
|
|
objects indexed by their name
|
|
|
|
|
deps_os (dict of os name -> dep name -> Dependency): same as above,
|
|
|
|
@ -1782,20 +1787,21 @@ def _FlattenSolution(
|
|
|
|
|
"""
|
|
|
|
|
logging.debug('_FlattenSolution(%r)', solution)
|
|
|
|
|
|
|
|
|
|
_FlattenDep(solution, deps, deps_os, hooks, hooks_os, pre_deps_hooks,
|
|
|
|
|
unpinned_deps)
|
|
|
|
|
_FlattenRecurse(solution, deps, deps_os, hooks, hooks_os, pre_deps_hooks,
|
|
|
|
|
unpinned_deps)
|
|
|
|
|
_FlattenDep(solution, allowed_hosts, deps, deps_os, hooks, hooks_os,
|
|
|
|
|
pre_deps_hooks, unpinned_deps)
|
|
|
|
|
_FlattenRecurse(solution, allowed_hosts, deps, deps_os, hooks, hooks_os,
|
|
|
|
|
pre_deps_hooks, unpinned_deps)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _FlattenDep(dep, deps, deps_os, hooks, hooks_os, pre_deps_hooks,
|
|
|
|
|
unpinned_deps):
|
|
|
|
|
def _FlattenDep(dep, allowed_hosts, deps, deps_os, hooks, hooks_os,
|
|
|
|
|
pre_deps_hooks, unpinned_deps):
|
|
|
|
|
"""Visits a dependency in order to flatten it (see CMDflatten).
|
|
|
|
|
|
|
|
|
|
Arguments:
|
|
|
|
|
dep (Dependency): dependency to process
|
|
|
|
|
|
|
|
|
|
Out-parameters:
|
|
|
|
|
allowed_hosts (set): will be filled with flattened allowed_hosts
|
|
|
|
|
deps (dict): will be filled with flattened deps
|
|
|
|
|
deps_os (dict): will be filled with flattened deps_os
|
|
|
|
|
hooks (list): will be filled with flattened hooks
|
|
|
|
@ -1805,7 +1811,7 @@ def _FlattenDep(dep, deps, deps_os, hooks, hooks_os, pre_deps_hooks,
|
|
|
|
|
"""
|
|
|
|
|
logging.debug('_FlattenDep(%r)', dep)
|
|
|
|
|
|
|
|
|
|
_AddDep(dep, deps, unpinned_deps)
|
|
|
|
|
_AddDep(dep, allowed_hosts, deps, unpinned_deps)
|
|
|
|
|
|
|
|
|
|
for dep_os, os_deps in dep.os_dependencies.iteritems():
|
|
|
|
|
for os_dep in os_deps:
|
|
|
|
@ -1814,10 +1820,9 @@ def _FlattenDep(dep, deps, deps_os, hooks, hooks_os, pre_deps_hooks,
|
|
|
|
|
deps_by_name = dict((d.name, d) for d in dep.dependencies)
|
|
|
|
|
for recurse_dep_name in (dep.recursedeps or []):
|
|
|
|
|
_FlattenRecurse(
|
|
|
|
|
deps_by_name[recurse_dep_name], deps, deps_os, hooks, hooks_os,
|
|
|
|
|
pre_deps_hooks, unpinned_deps)
|
|
|
|
|
deps_by_name[recurse_dep_name], allowed_hosts, deps, deps_os, hooks,
|
|
|
|
|
hooks_os, pre_deps_hooks, unpinned_deps)
|
|
|
|
|
|
|
|
|
|
# TODO(phajdan.jr): also handle hooks_os.
|
|
|
|
|
hooks.extend([(dep, hook) for hook in dep.orig_deps_hooks])
|
|
|
|
|
pre_deps_hooks.extend([(dep, hook) for hook in dep.pre_deps_hooks])
|
|
|
|
|
|
|
|
|
@ -1825,14 +1830,15 @@ def _FlattenDep(dep, deps, deps_os, hooks, hooks_os, pre_deps_hooks,
|
|
|
|
|
hooks_os.setdefault(hook_os, []).extend([(dep, hook) for hook in os_hooks])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _FlattenRecurse(dep, deps, deps_os, hooks, hooks_os, pre_deps_hooks,
|
|
|
|
|
unpinned_deps):
|
|
|
|
|
def _FlattenRecurse(dep, allowed_hosts, deps, deps_os, hooks, hooks_os,
|
|
|
|
|
pre_deps_hooks, unpinned_deps):
|
|
|
|
|
"""Helper for flatten that recurses into |dep|'s dependencies.
|
|
|
|
|
|
|
|
|
|
Arguments:
|
|
|
|
|
dep (Dependency): dependency to process
|
|
|
|
|
|
|
|
|
|
Out-parameters:
|
|
|
|
|
allowed_hosts (set): will be filled with flattened allowed_hosts
|
|
|
|
|
deps (dict): will be filled with flattened deps
|
|
|
|
|
deps_os (dict): will be filled with flattened deps_os
|
|
|
|
|
hooks (list): will be filled with flattened hooks
|
|
|
|
@ -1843,22 +1849,25 @@ def _FlattenRecurse(dep, deps, deps_os, hooks, hooks_os, pre_deps_hooks,
|
|
|
|
|
logging.debug('_FlattenRecurse(%r)', dep)
|
|
|
|
|
|
|
|
|
|
for sub_dep in dep.orig_dependencies:
|
|
|
|
|
_FlattenDep(sub_dep, deps, deps_os, hooks, hooks_os, pre_deps_hooks,
|
|
|
|
|
unpinned_deps)
|
|
|
|
|
_FlattenDep(sub_dep, allowed_hosts, deps, deps_os, hooks, hooks_os,
|
|
|
|
|
pre_deps_hooks, unpinned_deps)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _AddDep(dep, deps, unpinned_deps):
|
|
|
|
|
def _AddDep(dep, allowed_hosts, deps, unpinned_deps):
|
|
|
|
|
"""Helper to add a dependency to flattened lists.
|
|
|
|
|
|
|
|
|
|
Arguments:
|
|
|
|
|
dep (Dependency): dependency to process
|
|
|
|
|
|
|
|
|
|
Out-parameters:
|
|
|
|
|
allowed_hosts (set): will be filled with flattened allowed_hosts
|
|
|
|
|
deps (dict): will be filled with flattened deps
|
|
|
|
|
unpinned_deps (dict): will be filled with unpinned deps
|
|
|
|
|
"""
|
|
|
|
|
logging.debug('_AddDep(%r)', dep)
|
|
|
|
|
|
|
|
|
|
allowed_hosts.update(dep.allowed_hosts)
|
|
|
|
|
|
|
|
|
|
assert dep.name not in deps
|
|
|
|
|
deps[dep.name] = dep
|
|
|
|
|
|
|
|
|
@ -1878,6 +1887,17 @@ def _GNSettingsToLines(gn_args_file, gn_args):
|
|
|
|
|
return s
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _AllowedHostsToLines(allowed_hosts):
|
|
|
|
|
"""Converts |allowed_hosts| set to list of lines for output."""
|
|
|
|
|
if not allowed_hosts:
|
|
|
|
|
return []
|
|
|
|
|
s = ['allowed_hosts = [']
|
|
|
|
|
for h in sorted(allowed_hosts):
|
|
|
|
|
s.append(' "%s",' % h)
|
|
|
|
|
s.extend([']', ''])
|
|
|
|
|
return s
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _DepsToLines(deps):
|
|
|
|
|
"""Converts |deps| dict to list of lines for output."""
|
|
|
|
|
if not deps:
|
|
|
|
|