@ -371,6 +371,9 @@ class Dependency(gclient_utils.WorkItem, DependencySettings):
# recursedeps is a mutable value that selectively overrides the default
# 'no recursion' setting on a dep-by-dep basis. It will replace
# recursion_override.
#
# It will be a dictionary of {deps_name: {"deps_file": depfile_name}} or
# None.
self . recursedeps = None
if not self . name and self . parent :
@ -650,9 +653,14 @@ class Dependency(gclient_utils.WorkItem, DependencySettings):
self . recursion_override = local_scope . get ( ' recursion ' )
logging . warning (
' Setting %s recursion to %d . ' , self . name , self . recursion_limit )
self . recursedeps = local_scope . get ( ' recursedeps ' , None )
self . recursedeps = None
if ' recursedeps ' in local_scope :
self . recursedeps = set ( self . recursedeps )
self . recursedeps = { }
for ent in local_scope [ ' recursedeps ' ] :
if isinstance ( ent , basestring ) :
self . recursedeps [ ent ] = { " deps_file " : self . deps_file }
else : # (depname, depsfilename)
self . recursedeps [ ent [ 0 ] ] = { " deps_file " : ent [ 1 ] }
logging . warning ( ' Found recursedeps %r . ' , repr ( self . recursedeps ) )
# If present, save 'target_os' in the local_target_os property.
if ' target_os ' in local_scope :
@ -687,9 +695,9 @@ class Dependency(gclient_utils.WorkItem, DependencySettings):
# Update recursedeps if it's set.
if self . recursedeps is not None :
logging . warning ( ' Updating recursedeps by prepending %s . ' , self . name )
rel_deps = set ( )
for d in self . recursedeps :
rel_deps . add ( os . path . normpath ( os . path . join ( self . name , d ) ) )
rel_deps = { }
for d epname, options in self . recursedeps . iteritems ( ) :
rel_deps [ os . path . normpath ( os . path . join ( self . name , d epname) ) ] = options
self . recursedeps = rel_deps
if ' allowed_hosts ' in local_scope :
@ -708,9 +716,14 @@ class Dependency(gclient_utils.WorkItem, DependencySettings):
deps_to_add = [ ]
for name , url in deps . iteritems ( ) :
should_process = self . recursion_limit and self . should_process
deps_file = self . deps_file
if self . recursedeps is not None :
ent = self . recursedeps . get ( name )
if ent is not None :
deps_file = ent [ ' deps_file ' ]
deps_to_add . append ( Dependency (
self , name , url , None , None , None , self . custom_vars , None ,
self . deps_file , should_process ) )
deps_file , should_process ) )
deps_to_add . sort ( key = lambda x : x . name )
# override named sets of hooks by the custom hooks