Bug 1943654 - Generate the C++, JS and Rust metric files in parallel, r=chutten,sergesanspaille.

Differential Revision: https://phabricator.services.mozilla.com/D235470
This commit is contained in:
Florian Quèze
2025-02-07 14:31:11 +00:00
parent 4d0574d59e
commit 5ae7163fc4
2 changed files with 72 additions and 29 deletions

View File

@@ -144,8 +144,6 @@ def main(cpp_fd, *args):
def open_output(filename):
return FileAvoidWrite(os.path.join(os.path.dirname(cpp_fd.name), filename))
[js_h_path, js_cpp_path, rust_path] = args[-3:]
args = args[:-3]
all_objs, options = parse(args)
all_metric_header_files = {}
@@ -164,9 +162,6 @@ def main(cpp_fd, *args):
all_metric_header_files[filename][category_name] = {}
all_metric_header_files[filename][category_name][name] = metric
if "pings" in all_objs:
cpp.output_cpp(all_objs, cpp_fd, options)
else:
get_metric_id = generate_metric_ids(all_objs, options)
for header_name, objs in all_metric_header_files.items():
cpp.output_cpp(
@@ -179,13 +174,48 @@ def main(cpp_fd, *args):
{"header_name": header_name, "get_metric_id": get_metric_id},
)
return get_deps()
def js_metrics(js_cpp_fd, *args):
def open_output(filename):
return FileAvoidWrite(os.path.join(os.path.dirname(js_cpp_fd.name), filename))
js_h_path = args[-1]
args = args[:-1]
all_objs, options = parse(args)
with open_output(js_h_path) as js_fd:
js.output_js(all_objs, js_fd, js_cpp_fd, options)
return get_deps()
def rust_metrics(rust_fd, *args):
all_objs, options = parse(args)
# We only need this info if we're dealing with pings.
ping_names_by_app_id = {}
rust.output_rust(all_objs, rust_fd, ping_names_by_app_id, options)
return get_deps()
def pings(cpp_fd, *args):
def open_output(filename):
return FileAvoidWrite(os.path.join(os.path.dirname(cpp_fd.name), filename))
[js_h_path, js_cpp_path, rust_path] = args[-3:]
args = args[:-3]
all_objs, options = parse(args)
cpp.output_cpp(all_objs, cpp_fd, options)
with open_output(js_h_path) as js_fd:
with open_output(js_cpp_path) as js_cpp_fd:
js.output_js(all_objs, js_fd, js_cpp_fd, options)
# We only need this info if we're dealing with pings.
ping_names_by_app_id = {}
if "pings" in all_objs:
from os import path
sys.path.append(path.join(path.dirname(__file__), path.pardir, path.pardir))

View File

@@ -173,24 +173,37 @@ GeneratedFile(
GeneratedFile(
"GleanMetrics.h",
*metrics_headers,
"GleanJSMetricsLookup.h",
script="build_scripts/glean_parser_ext/run_glean_parser.py",
flags=glean_parser_flags,
inputs=["!metrics_yamls.cached"],
)
GeneratedFile(
"GleanJSMetricsLookup.cpp",
"api/src/metrics.rs",
"GleanJSMetricsLookup.h",
entry_point="js_metrics",
script="build_scripts/glean_parser_ext/run_glean_parser.py",
flags=glean_parser_flags
+ [
"GleanJSMetricsLookup.h",
"GleanJSMetricsLookup.cpp",
"api/src/metrics.rs",
],
inputs=["!metrics_yamls.cached"],
)
GeneratedFile(
"api/src/metrics.rs",
entry_point="rust_metrics",
script="build_scripts/glean_parser_ext/run_glean_parser.py",
flags=glean_parser_flags,
inputs=["!metrics_yamls.cached"],
)
GeneratedFile(
"GleanPings.h",
"GleanJSPingsLookup.h",
"GleanJSPingsLookup.cpp",
"api/src/pings.rs",
entry_point="pings",
script="build_scripts/glean_parser_ext/run_glean_parser.py",
flags=glean_parser_flags
+ [