@ -158,22 +158,6 @@ def ast2str(node, indent=0):
class GClientKeywords ( object ) :
class FromImpl ( object ) :
""" Used to implement the From() syntax. """
def __init__ ( self , module_name , sub_target_name = None ) :
""" module_name is the dep module we want to include from. It can also be
the name of a subdirectory to include from .
sub_target_name is an optional parameter if the module name in the other
DEPS file is different . E . g . , you might want to map src / net to net . """
self . module_name = module_name
self . sub_target_name = sub_target_name
def __str__ ( self ) :
return ' From( %s , %s ) ' % ( repr ( self . module_name ) ,
repr ( self . sub_target_name ) )
class VarImpl ( object ) :
def __init__ ( self , custom_vars , local_scope ) :
self . _custom_vars = custom_vars
@ -226,10 +210,10 @@ class DependencySettings(GClientKeywords):
# urls are sometime incorrectly written as proto://host/path/@rev. Replace
# it to proto://host/path@rev.
self . _url = self . _url . replace ( ' /@ ' , ' @ ' )
elif not isinstance ( self . _url , ( self . FromImpl , None . __class__ ) ) :
elif not isinstance ( self . _url , ( None . __class__ ) ) :
raise gclient_utils . Error (
( ' dependency url must be either a string, None, '
' or From() instead of %s ' ) % self . _url . __class__ . __name__ )
( ' dependency url must be either string or None, '
' instead of %s ' ) % self . _url . __class__ . __name__ )
# Make any deps_file path platform-appropriate.
for sep in [ ' / ' , ' \\ ' ] :
self . _deps_file = self . _deps_file . replace ( sep , os . sep )
@ -377,9 +361,6 @@ class Dependency(gclient_utils.WorkItem, DependencySettings):
if self . parent and self . parent . parent and not self . parent . parent . parent :
requirements | = set ( i . name for i in self . root . dependencies if i . name )
if isinstance ( self . url , self . FromImpl ) :
requirements . add ( self . url . module_name )
if self . name :
requirements | = set (
obj . name for obj in self . root . subtree ( False )
@ -449,10 +430,7 @@ class Dependency(gclient_utils.WorkItem, DependencySettings):
return True
def LateOverride ( self , url ) :
""" Resolves the parsed url from url.
Manages From ( ) keyword accordingly . Do not touch self . parsed_url nor
self . url because it may called with other urls due to From ( ) . """
""" Resolves the parsed url from url. """
assert self . parsed_url == None or not self . should_process , self . parsed_url
parsed_url = self . get_custom_deps ( self . name , url )
if parsed_url != url :
@ -461,32 +439,6 @@ class Dependency(gclient_utils.WorkItem, DependencySettings):
( self . name , url , parsed_url ) )
return parsed_url
if isinstance ( url , self . FromImpl ) :
# Requires tree traversal.
ref = [
dep for dep in self . root . subtree ( True ) if url . module_name == dep . name
]
if not ref :
raise gclient_utils . Error ( ' Failed to find one reference to %s . %s ' % (
url . module_name , ref ) )
# It may happen that len(ref) > 1 but it's no big deal.
ref = ref [ 0 ]
sub_target = url . sub_target_name or self . name
found_deps = [ d for d in ref . dependencies if d . name == sub_target ]
if len ( found_deps ) != 1 :
raise gclient_utils . Error (
' Couldn \' t find %s in %s , referenced by %s (parent: %s ) \n %s ' % (
sub_target , ref . name , self . name , self . parent . name ,
str ( self . root ) ) )
# Call LateOverride() again.
found_dep = found_deps [ 0 ]
parsed_url = found_dep . LateOverride ( found_dep . url )
logging . info (
' Dependency( %s ).LateOverride( %s ) -> %s (From) ' %
( self . name , url , parsed_url ) )
return parsed_url
if isinstance ( url , basestring ) :
parsed_url = urlparse . urlparse ( url )
if ( not parsed_url [ 0 ] and
@ -598,7 +550,6 @@ class Dependency(gclient_utils.WorkItem, DependencySettings):
}
else :
global_scope = {
' From ' : self . FromImpl ,
' Var ' : var . Lookup ,
' deps_os ' : { } ,
}