@ -50,12 +50,16 @@ def ParseGNArgs(gn_args):
""" Parse gn_args as json and return config dictionary. """
""" Parse gn_args as json and return config dictionary. """
configs = json . loads ( gn_args )
configs = json . loads ( gn_args )
build_configs = { }
build_configs = { }
explicit_keys = [ ]
user = getpass . getuser ( )
user = getpass . getuser ( )
for config in configs :
for config in configs :
key = config [ " name " ]
key = config [ " name " ]
if " current " in config :
if " current " in config :
value = config [ " current " ] [ " value " ]
value = config [ " current " ] [ " value " ]
# Record configs specified in args.gn as explicit configs.
if config [ " current " ] [ " file " ] != " //.gn " :
explicit_keys . append ( key )
else :
else :
value = config [ " default " ] [ " value " ]
value = config [ " default " ] [ " value " ]
value = value . strip ( ' " ' )
value = value . strip ( ' " ' )
@ -68,7 +72,7 @@ def ParseGNArgs(gn_args):
] )
] )
build_configs [ key ] = value
build_configs [ key ] = value
return build_configs
return build_configs , explicit_keys
def GetBuildTargetFromCommandLine ( cmdline ) :
def GetBuildTargetFromCommandLine ( cmdline ) :
@ -132,15 +136,16 @@ def GetMetadata(cmdline, ninjalog, exit_code, build_duration, user):
build_dir = os . path . dirname ( ninjalog )
build_dir = os . path . dirname ( ninjalog )
build_configs = { }
build_configs = { }
explicit_keys = [ ]
try :
try :
args = [ " gn " , " args " , build_dir , " --list " , " -- short" , " -- json" ]
args = [ " gn " , " args " , build_dir , " --list " , " -- json" ]
if sys . platform == " win32 " :
if sys . platform == " win32 " :
# gn in PATH is bat file in windows environment (except cygwin).
# gn in PATH is bat file in windows environment (except cygwin).
args = [ " cmd " , " /c " ] + args
args = [ " cmd " , " /c " ] + args
gn_args = subprocess . check_output ( args )
gn_args = subprocess . check_output ( args )
build_configs = ParseGNArgs ( gn_args )
build_configs , explicit_keys = ParseGNArgs ( gn_args )
except subprocess . CalledProcessError as e :
except subprocess . CalledProcessError as e :
logging . error ( " Failed to call gn %s " , e )
logging . error ( " Failed to call gn %s " , e )
build_configs = { }
build_configs = { }
@ -156,6 +161,7 @@ def GetMetadata(cmdline, ninjalog, exit_code, build_duration, user):
" platform " : platform . system ( ) ,
" platform " : platform . system ( ) ,
" cpu_core " : multiprocessing . cpu_count ( ) ,
" cpu_core " : multiprocessing . cpu_count ( ) ,
" build_configs " : build_configs ,
" build_configs " : build_configs ,
" explicit_build_config_keys " : explicit_keys ,
" targets " : GetBuildTargetFromCommandLine ( cmdline ) ,
" targets " : GetBuildTargetFromCommandLine ( cmdline ) ,
}
}