Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1479)

Unified Diff: mojo/public/tools/bindings/pylib/mojom/generate/template_expander.py

Issue 1572213002: Precompile mojom bindings generator jinja templates. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: mojo/public/tools/bindings/pylib/mojom/generate/template_expander.py
diff --git a/mojo/public/tools/bindings/pylib/mojom/generate/template_expander.py b/mojo/public/tools/bindings/pylib/mojom/generate/template_expander.py
index 3801d43d9098509f579eb53867106b5df5dec925..9ea6cf8e1feb14c15b7e1de9d207178e873edb7e 100644
--- a/mojo/public/tools/bindings/pylib/mojom/generate/template_expander.py
+++ b/mojo/public/tools/bindings/pylib/mojom/generate/template_expander.py
@@ -6,7 +6,6 @@
# http://src.chromium.org/viewvc/blink/trunk/Source/build/scripts/template_expander.py
import imp
-import inspect
import os.path
import sys
@@ -30,30 +29,40 @@ except ImportError:
import jinja2
-def ApplyTemplate(mojo_generator, base_dir, path_to_template, params,
- filters=None, **kwargs):
- template_directory, template_name = os.path.split(path_to_template)
- path_to_templates = os.path.join(base_dir, template_directory)
- loader = jinja2.FileSystemLoader([path_to_templates])
+def ApplyTemplate(mojo_generator, path_to_template, params, **kwargs):
+ loader = jinja2.ModuleLoader(os.path.join(
+ mojo_generator.bytecode_path, "%s.zip" % mojo_generator.GetTemplatePrefix(
+ )))
final_kwargs = dict(mojo_generator.GetJinjaParameters())
final_kwargs.update(kwargs)
- jinja_env = jinja2.Environment(loader=loader, keep_trailing_newline=True,
+ jinja_env = jinja2.Environment(loader=loader,
+ keep_trailing_newline=True,
**final_kwargs)
jinja_env.globals.update(mojo_generator.GetGlobals())
- if filters:
- jinja_env.filters.update(filters)
- template = jinja_env.get_template(template_name)
+ jinja_env.filters.update(mojo_generator.GetFilters())
+ template = jinja_env.get_template(path_to_template)
return template.render(params)
def UseJinja(path_to_template, **kwargs):
- # Get the directory of our caller's file.
- base_dir = os.path.dirname(inspect.getfile(sys._getframe(1)))
def RealDecorator(generator):
def GeneratorInternal(*args, **kwargs2):
parameters = generator(*args, **kwargs2)
- return ApplyTemplate(args[0], base_dir, path_to_template, parameters,
- **kwargs)
+ return ApplyTemplate(args[0], path_to_template, parameters, **kwargs)
GeneratorInternal.func_name = generator.func_name
return GeneratorInternal
return RealDecorator
+
+
+def PrecompileTemplates(generator_modules, output_dir):
+ for module in generator_modules.values():
+ generator = module.Generator(None)
+ jinja_env = jinja2.Environment(loader=jinja2.FileSystemLoader([os.path.join(
+ os.path.dirname(module.__file__), generator.GetTemplatePrefix())]))
+ jinja_env.filters.update(generator.GetFilters())
+ jinja_env.compile_templates(
+ os.path.join(output_dir, "%s.zip" % generator.GetTemplatePrefix()),
+ extensions=["tmpl"],
+ zip="stored",
+ py_compile=True,
+ ignore_errors=False)
« no previous file with comments | « mojo/public/tools/bindings/pylib/mojom/generate/generator.py ('k') | third_party/mojo/mojom_bindings_generator.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698