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

Unified Diff: third_party/WebKit/Source/platform/inspector_protocol/CodeGenerator.py

Issue 2282283002: [DevTools] Prepare inspector_protocol build to move. (Closed)
Patch Set: NOTREACHED Created 4 years, 4 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: third_party/WebKit/Source/platform/inspector_protocol/CodeGenerator.py
diff --git a/third_party/WebKit/Source/platform/inspector_protocol/CodeGenerator.py b/third_party/WebKit/Source/platform/inspector_protocol/CodeGenerator.py
index 9fd74a73481b3f762d2331e8a5f09f4f23fa9c55..48c422a5249a95d0b9f751bc04a263bac57d9ea3 100644
--- a/third_party/WebKit/Source/platform/inspector_protocol/CodeGenerator.py
+++ b/third_party/WebKit/Source/platform/inspector_protocol/CodeGenerator.py
@@ -21,34 +21,6 @@ except ImportError:
# is regenerated, which causes a race condition and breaks concurrent build,
# since some compile processes will try to read the partially written cache.
module_path, module_filename = os.path.split(os.path.realpath(__file__))
-templates_dir = module_path
-
-# In Blink, jinja2 is in chromium's third_party directory.
-# Insert at 1 so at front to override system libraries, and
-# after path[0] == invoking script dir
-blink_third_party_dir = os.path.normpath(os.path.join(
- module_path, os.pardir, os.pardir, os.pardir, os.pardir, os.pardir,
- "third_party"))
-if os.path.isdir(blink_third_party_dir):
- sys.path.insert(1, blink_third_party_dir)
-
-# In V8, it is in third_party folder
-v8_third_party_dir = os.path.normpath(os.path.join(
- module_path, os.pardir, os.pardir, "third_party"))
-
-if os.path.isdir(v8_third_party_dir):
- sys.path.insert(1, v8_third_party_dir)
-
-# In Node, it is in deps folder
-deps_dir = os.path.normpath(os.path.join(
- module_path, os.pardir, os.pardir, os.pardir, os.pardir, "third_party"))
-
-if os.path.isdir(deps_dir):
- sys.path.insert(1, os.path.join(deps_dir, "jinja2"))
- sys.path.insert(1, os.path.join(deps_dir, "markupsafe"))
-
-import jinja2
-
def read_config():
# pylint: disable=W0703
@@ -63,8 +35,12 @@ def read_config():
try:
cmdline_parser = optparse.OptionParser()
cmdline_parser.add_option("--output_base")
+ cmdline_parser.add_option("--jinja_dir")
cmdline_parser.add_option("--config")
arg_options, _ = cmdline_parser.parse_args()
+ jinja_dir = arg_options.jinja_dir
+ if not jinja_dir:
+ raise Exception("jinja directory must be specified")
output_base = arg_options.output_base
if not output_base:
raise Exception("Base output directory must be specified")
@@ -89,7 +65,7 @@ def read_config():
keys.append(optional)
values.append(False)
config_json_file.close()
- return (config_file, collections.namedtuple('X', keys)(*values))
+ return (jinja_dir, config_file, collections.namedtuple('X', keys)(*values))
except Exception:
# Work with python 2 and 3 http://docs.python.org/py3k/howto/pyporting.html
exc = sys.exc_info()[1]
@@ -109,9 +85,13 @@ def dash_to_camelcase(word):
return prefix + "".join(to_title_case(x) or "-" for x in word.split("-"))
-def initialize_jinja_env(cache_dir):
+def initialize_jinja_env(jinja_dir, cache_dir):
+ # pylint: disable=F0401
+ sys.path.insert(1, os.path.abspath(jinja_dir))
+ import jinja2
+
jinja_env = jinja2.Environment(
- loader=jinja2.FileSystemLoader(templates_dir),
+ loader=jinja2.FileSystemLoader(module_path),
# Bytecode cache is not concurrency-safe unless pre-cached:
# if pre-cached this is read-only, but writing creates a race condition.
bytecode_cache=jinja2.FileSystemBytecodeCache(cache_dir),
@@ -362,7 +342,7 @@ class Protocol(object):
def main():
- config_file, config = read_config()
+ jinja_dir, config_file, config = read_config()
protocol = Protocol()
protocol.json_api = {"domains": []}
@@ -382,7 +362,7 @@ def main():
os.mkdir(config.protocol.output)
if protocol.json_api["has_exports"] and not os.path.exists(config.exported.output):
os.mkdir(config.exported.output)
- jinja_env = initialize_jinja_env(config.protocol.output)
+ jinja_env = initialize_jinja_env(jinja_dir, config.protocol.output)
inputs = []
inputs.append(__file__)
@@ -390,15 +370,16 @@ def main():
inputs.append(config.protocol.path)
if config.imported:
inputs.append(config.imported.path)
+ templates_dir = os.path.join(module_path, "templates")
inputs.append(os.path.join(templates_dir, "TypeBuilder_h.template"))
inputs.append(os.path.join(templates_dir, "TypeBuilder_cpp.template"))
inputs.append(os.path.join(templates_dir, "Exported_h.template"))
inputs.append(os.path.join(templates_dir, "Imported_h.template"))
- h_template = jinja_env.get_template("TypeBuilder_h.template")
- cpp_template = jinja_env.get_template("TypeBuilder_cpp.template")
- exported_template = jinja_env.get_template("Exported_h.template")
- imported_template = jinja_env.get_template("Imported_h.template")
+ h_template = jinja_env.get_template("templates/TypeBuilder_h.template")
+ cpp_template = jinja_env.get_template("templates/TypeBuilder_cpp.template")
+ exported_template = jinja_env.get_template("templates/Exported_h.template")
+ imported_template = jinja_env.get_template("templates/Imported_h.template")
outputs = dict()
@@ -426,6 +407,7 @@ def main():
"config": config
}
+ lib_templates_dir = os.path.join(module_path, "lib")
# Note these should be sorted in the right order.
# TODO(dgozman): sort them programmatically based on commented includes.
lib_h_templates = [
@@ -459,8 +441,8 @@ def main():
def generate_lib_file(file_name, template_files):
parts = []
for template_file in template_files:
- inputs.append(os.path.join(templates_dir, template_file))
- template = jinja_env.get_template(template_file)
+ inputs.append(os.path.join(lib_templates_dir, template_file))
+ template = jinja_env.get_template("lib/" + template_file)
parts.append(template.render(template_context))
outputs[file_name] = "\n\n".join(parts)

Powered by Google App Engine
This is Rietveld 408576698