diff options
-rw-r--r-- | chrome/chrome.gyp | 37 | ||||
-rwxr-xr-x | tools/grit/grit_info.py | 71 |
2 files changed, 53 insertions, 55 deletions
diff --git a/chrome/chrome.gyp b/chrome/chrome.gyp index 4b62f52..e6004ec 100644 --- a/chrome/chrome.gyp +++ b/chrome/chrome.gyp @@ -345,6 +345,14 @@ 'includes': [ '../build/grit_action.gypi' ], }, { + 'action_name': 'devtools_frontend_resources', + 'variables': { + 'grit_grd_file': + 'browser/debugger/frontend/devtools_frontend_resources.grd', + }, + 'includes': [ '../build/grit_action.gypi' ] + }, + { 'action_name': 'devtools_resources', # This can't use ../build/grit_action.gypi because the grd file # is generated a build time, so the trick of using grit_info to get @@ -355,6 +363,7 @@ }, 'inputs': [ '<(grit_grd_file)', + '<!@pymod_do_main(grit_info --inputs)', ], 'outputs': [ '<(grit_out_dir)/grit/devtools_resources.h', @@ -369,34 +378,6 @@ '<@(grit_defines)' ], 'message': 'Generating resources from <(grit_grd_file)', }, - { - 'action_name': 'devtools_frontend_resources', - # This can't use ../build/grit_action.gypi because the grd file - # is generated a build time, so the trick of using grit_info to get - # the real inputs/outputs at GYP time isn't possible. - 'variables': { - 'grit_cmd': ['python', '../tools/grit/grit.py'], - 'frontend_folder': 'browser/debugger/frontend', - 'grit_grd_file': - '<(frontend_folder)/devtools_frontend_resources.grd', - }, - 'inputs': [ - '<(grit_grd_file)', - '<(frontend_folder)/devtools_frontend.html', - ], - 'outputs': [ - '<(grit_out_dir)/grit/devtools_frontend_resources.h', - '<(grit_out_dir)/devtools_frontend_resources.pak', - '<(grit_out_dir)/grit/devtools_frontend_resources_map.cc', - '<(grit_out_dir)/grit/devtools_frontend_resources_map.h', - ], - 'action': ['<@(grit_cmd)', - '-i', '<(grit_grd_file)', 'build', - '-o', '<(grit_out_dir)', - '-D', 'SHARED_INTERMEDIATE_DIR=<(SHARED_INTERMEDIATE_DIR)', - '<@(grit_defines)' ], - 'message': 'Generating resources from <(grit_grd_file)', - }, ], 'includes': [ '../build/grit_target.gypi' ], }, diff --git a/tools/grit/grit_info.py b/tools/grit/grit_info.py index 81176e1..9723aad 100755 --- a/tools/grit/grit_info.py +++ b/tools/grit/grit_info.py @@ -98,6 +98,10 @@ def relpath(path, start=os.path.curdir): ############################################################################## +class WrongNumberOfArguments(Exception): + pass + + def Outputs(filename, defines): grd = grd_reader.Parse( filename, defines=defines, tags_to_ignore=set(['messages'])) @@ -130,6 +134,16 @@ def Outputs(filename, defines): return [t.replace('\\', '/') for t in target] +def GritSourceFiles(): + files = [] + grit_root_dir = relpath(os.path.dirname(__file__), os.getcwd()) + for root, dirs, filenames in os.walk(grit_root_dir): + grit_src = [os.path.join(root, f) for f in filenames + if f.endswith('.py') or f == 'resource_ids'] + files.extend(grit_src) + return files + + def Inputs(filename, defines): grd = grd_reader.Parse( filename, debug=False, defines=defines, tags_to_ignore=set(['messages'])) @@ -147,20 +161,12 @@ def Inputs(filename, defines): if node.attrs['flattenhtml'] == 'true': files.extend(node.GetHtmlResourceFilenames()) - # Add in the grit source files. If one of these change, we want to re-run - # grit. - grit_root_dir = relpath(os.path.dirname(__file__), os.getcwd()) - for root, dirs, filenames in os.walk(grit_root_dir): - grit_src = [os.path.join(root, f) for f in filenames - if f.endswith('.py') or f == 'resource_ids'] - files.extend(grit_src) - - return [f.replace('\\', '/') for f in files] + return files def PrintUsage(): - print 'USAGE: ./grit_info.py --inputs [-D foo] <grd-files>..' - print ' ./grit_info.py --outputs [-D foo] <out-prefix> <grd-files>..' + print 'USAGE: ./grit_info.py --inputs [-D foo] <grd-file>' + print ' ./grit_info.py --outputs [-D foo] <out-prefix> <grd-file>' def DoMain(argv): @@ -175,36 +181,47 @@ def DoMain(argv): options, args = parser.parse_args(argv) - if not len(args): - return None - defines = {} for define in options.defines: defines[define] = 1 if options.inputs: - for filename in args: + if len(args) > 1: + raise WrongNumberOfArguments("Expected 0 or 1 arguments for --inputs.") + + inputs = [] + if len(args) == 1: + filename = args[0] inputs = Inputs(filename, defines) + + # Add in the grit source files. If one of these change, we want to re-run + # grit. + inputs.extend(GritSourceFiles()) + inputs = [f.replace('\\', '/') for f in inputs] + + if len(args) == 1: # Include grd file as second input (works around gyp expecting it). - inputs = [inputs[0], filename] + inputs[1:] - if options.whitelist_files: - inputs.extend(options.whitelist_files) - return '\n'.join(inputs) + inputs = [inputs[0], args[0]] + inputs[1:] + if options.whitelist_files: + inputs.extend(options.whitelist_files) + return '\n'.join(inputs) elif options.outputs: - if len(args) < 2: - return None + if len(args) != 2: + raise WrongNumberOfArguments("Expected exactly 2 arguments for --ouputs.") - for f in args[1:]: - outputs = [posixpath.join(args[0], f) for f in Outputs(f, defines)] - return '\n'.join(outputs) + prefix, filename = args + outputs = [posixpath.join(prefix, f) for f in Outputs(filename, defines)] + return '\n'.join(outputs) else: - return None + raise WrongNumberOfArguments("Expected --inputs or --outputs.") def main(argv): - result = DoMain(argv[1:]) - if result == None: + try: + result = DoMain(argv[1:]) + except WrongNumberOfArguments, e: PrintUsage() + print e return 1 print result return 0 |