From e1e5a2824e2b6d0617003cfb3f3dd513116c36e4 Mon Sep 17 00:00:00 2001 From: Jeremy Rose Date: Thu, 22 Oct 2026 22:14:52 +0000 Subject: [PATCH 1/2] fix: run remote generators with Chromium's bundled python The mojom, Blink, grit and TypeScript/WebUI generator steps were forced to run as plain `python3` on the remote worker. That only works if the worker image has python3 installed; otherwise they fail with "python3: not found". This matched Chromium's own rules when it was added. Chromium has since switched them to the Linux python3 it ships in third_party/cpython3 (crrev.com/c/8160801) and adds that interpreter to each rule's inputs, so it was already being uploaded and then ignored. Stop overriding remote_command so it gets used. Branches from before that change are unaffected, because their rules already say `python3`. --- tools/main.star | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tools/main.star b/tools/main.star index 929c3d62..34b86375 100644 --- a/tools/main.star +++ b/tools/main.star @@ -85,6 +85,11 @@ def init(ctx): # The typescript/webui rules need their Starlark handlers (which add the # node_modules etc. inputs); Chromium only attaches them when remote is # enabled at config time, so attach them here. + # + # remote_command stays as Chromium set it. Since crrev.com/c/8160801 that + # is the Linux python3 in third_party/cpython3, which Chromium also adds to + # each rule's inputs, so the workers don't need a python3 of their own. On + # older branches it is plain "python3". remote_generators = { "mojo/mojom_bindings_generator": None, "mojo/mojom_parser": None, @@ -100,7 +105,6 @@ def init(ctx): for rule in step_config["rules"]: if rule["name"] in remote_generators: rule["remote"] = True - rule["remote_command"] = "python3" handler = remote_generators[rule["name"]] if handler: rule["handler"] = handler From 8f4e24967e95a1120e6ae6f25f535672588401b0 Mon Sep 17 00:00:00 2001 From: Jeremy Rose Date: Thu, 22 Oct 2026 22:14:56 +0000 Subject: [PATCH 2/2] fix: give the remote grit steps a timeout Chromium's two grit rules set no timeout, so siso requests a 2 hour action timeout for them. A backend with a lower limit rejects the action outright instead of running it. Default the remote generator rules to 10 minutes. The other eight rules already set 2 minutes and keep it. --- tools/main.star | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tools/main.star b/tools/main.star index 34b86375..e200293c 100644 --- a/tools/main.star +++ b/tools/main.star @@ -105,6 +105,9 @@ def init(ctx): for rule in step_config["rules"]: if rule["name"] in remote_generators: rule["remote"] = True + # The grit rules set no timeout. siso then asks for a 2 hour action + # timeout, which is more than some backends accept. + rule.setdefault("timeout", "10m") handler = remote_generators[rule["name"]] if handler: rule["handler"] = handler