Repository navigation
fix: include clang-tidy in siso clang toolchain subtree - #910
Conversation
siso uploads the third_party/llvm-build/Release+Asserts:headers filegroup as a precomputed subtree and skips any other input under that directory. The electron/clang-tidy rule lists third_party/llvm-build/Release+Asserts/bin/clang-tidy as an explicit input, which only reached the RBE workers because Chromium's glob included bin/clang-*. https://crrev.com/c/8471431 narrowed that glob to bin/clang-cl, bin/clang-cl.exe and bin/clang-[0-9]*, so clang-tidy is now dropped and the remote tidy steps fail with exit 127 ("clang-tidy: No such file or directory"). Add bin/clang-tidy back to the filegroup's includes. This is a no-op on older Chromium, where bin/clang-* already matches it. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01V38FjDEdZgMvFpf5Fmp65m
https://crrev.com/c/8471431 narrowed the third_party/llvm-build/Release+Asserts:headers filegroup glob from bin/clang-* to bin/clang-cl, bin/clang-cl.exe and bin/clang-[0-9]*. siso uploads that filegroup as a precomputed subtree and drops other inputs under it, so bin/clang-tidy no longer reached the RBE workers and the clang-tidy steps failed with exit 127. build-tools now adds bin/clang-tidy back to that filegroup: electron/build-tools#910 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01V38FjDEdZgMvFpf5Fmp65m
There was a problem hiding this comment.
I reviewed this PR and didn't find any bugs. Because tools/main.star falls under the repo's infra CODEOWNERS (@ electron/wg-infra @ ckerr) and changes the siso build-graph toolchain configuration, a human look would still be worthwhile.
What was reviewed: the new llvm_headers block in init() that appends bin/clang-tidy to the third_party/llvm-build/Release+Asserts:headers filegroup's includes; confirmed it copies the filegroup dict before mutating rather than mutating the shared mod.filegroups entry in place; confirmed the if llvm_headers in filegroups guard makes the change a no-op if the filegroup is absent (e.g. on Chromium versions before the upstream glob narrowing).
Extended reasoning...
The change is a small, self-contained Starlark edit to tools/main.star that appends "bin/clang-tidy" to an existing filegroup's includes list, guarded by an existence check and using a copied dict to avoid mutating the shared original, with no auth/crypto/data-exposure surface. It matches the PR description (working around Chromium's crrev.com/c/8471431 glob narrowing) and no bugs were found by the hunt. Because the file is under the repo's blanket infra CODEOWNERS (wg-infra/ckerr) and affects the remote build toolchain's input set, a human with infra context should still confirm it before merge; a previously investigated concern (future Chromium DEPS rolls reshaping this filegroup and crashing init()) was ruled out as an acceptable narrow risk rather than a blocking bug.
https://crrev.com/c/8471431 narrowed the third_party/llvm-build/Release+Asserts:headers filegroup glob from bin/clang-* to bin/clang-cl, bin/clang-cl.exe and bin/clang-[0-9]*. siso uploads that filegroup as a precomputed subtree and drops other inputs under it, so bin/clang-tidy no longer reached the RBE workers and the clang-tidy steps failed with exit 127. build-tools now adds bin/clang-tidy back to that filegroup: electron/build-tools#910 Ref: https://chromium-review.googlesource.com/c/chromium/src/+/8471431 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01V38FjDEdZgMvFpf5Fmp65m
electron/build-tools#910 squash-merged as 32e2253f7c5696d85a77fe19d54d284cf9a62322; re-pin from the PR branch commit a411ee5 so CI no longer depends on the deleted branch. Skip-Lint: build-tools pin, not a Chromium CL adaptation Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01V38FjDEdZgMvFpf5Fmp65m
* chore: bump chromium in DEPS to 157.0.8079.0 * chore: update patches * 8426044: Deduplicate notifications for find-in-page Upstream removed WebContentsDelegate::FindReply() in favor of WebContentsObserver::DidReceiveFindReply(). Moved Electron's found-in-page handling from the delegate forwarder to the observer forwarder on the NativeLifecycle peer. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/8426044 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * 8471431: siso: don't include optional LLVM tools in clang inputs https://crrev.com/c/8471431 narrowed the third_party/llvm-build/Release+Asserts:headers filegroup glob from bin/clang-* to bin/clang-cl, bin/clang-cl.exe and bin/clang-[0-9]*. siso uploads that filegroup as a precomputed subtree and drops other inputs under it, so bin/clang-tidy no longer reached the RBE workers and the clang-tidy steps failed with exit 127. build-tools now adds bin/clang-tidy back to that filegroup: electron/build-tools#910 Ref: https://chromium-review.googlesource.com/c/chromium/src/+/8471431 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01V38FjDEdZgMvFpf5Fmp65m * chore: bump chromium in DEPS to 157.0.8081.0 * 8469895: [VideoCapture] Remove unsafe lifetime assumptions in InProcessVideoCaptureDeviceLauncher Ref: https://chromium-review.googlesource.com/c/chromium/src/+/8469895 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * 8261571: dbus: Let desktop Linux end the session instead of crashing when a bus is lost Upstream landed Bus::Options::disconnected_callback and a reworked dbus_thread_linux that takes the embedder's callback via Initialize(), which supersedes both the backport patch and the downstream SetDisconnectedCallback() shim. Removed both patches and switched ElectronBrowserMainParts to dbus_thread_linux::Initialize(). Ref: https://chromium-review.googlesource.com/c/chromium/src/+/8261571 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * 8470272: [find-in-page] Fix endless frame traversal around an inner WebContents Ref: https://chromium-review.googlesource.com/c/chromium/src/+/8470272 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * chore: update patches * 8424588: [mojo] (Mostly) ban untyped `handle` use TakeHeapSnapshot now takes handle<platform>, so the browser passes the mojo::PlatformHandle directly and the renderer receives it without unwrapping. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/8424588 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * 8465643: Forward proxy auth for requests without login prompts Plumb the new do_not_prompt_for_login flag through URLLoaderNetworkObserver, SimpleURLLoaderClient and CreateLoginDelegate. Electron keeps routing these challenges to the 'login' event, which is its non-UI credential source, mirroring how Chrome still consults extensions for them. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/8465643 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * 8422739: Enforce cross-origin access control in WebUIURLLoaderFactory CreateWebUIURLLoaderFactory now requires a request initiator origin lock. Pass the frame's initiator origin that content already hands to RegisterNonNetworkSubresourceURLLoaderFactories; the lock only gates chrome-untrusted:// initiators, so component extensions keep their access to chrome://resources. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/8422739 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * chore: bump chromium in DEPS to 157.0.8083.0 * 8497008: CATransaction: Clean up old flags Ref: https://chromium-review.googlesource.com/c/chromium/src/+/8497008 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * 8499815: Ruff: reformat third_party/blink. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/8499815 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * 8455902: gin: Mark Invoker as stack allocated and drop raw_ptr for its Arguments Ref: https://chromium-review.googlesource.com/c/chromium/src/+/8455902 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * chore: update patches * 8469168: Change DataPipeGetter::Read to return result as base::expected Ref: https://chromium-review.googlesource.com/c/chromium/src/+/8469168 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * 8480632: Ignore stale UpdateDragOperation replies from non-current RWH on Android Ref: https://chromium-review.googlesource.com/c/chromium/src/+/8480632 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * chore: bump chromium in DEPS to 157.0.8085.0 * chore: update patches * 8463605: [Clear-Site-Data] Prevent cross-site fetch clearing unpartitioned data Ref: https://chromium-review.googlesource.com/c/chromium/src/+/8463605 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * 8448270: [Linux] Support XDG NetworkMonitor portal in NetworkChangeNotifierLinux The browser process now opens a private session bus for the portal, with no Bus::Options::disconnected_callback, so it aborts when the session bus is lost. That is what fails "when a D-Bus bus goes away > exits cleanly instead of crashing" on Linux. Carry the upstream fix until it rolls in. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/8448270 Ref: https://chromium-review.googlesource.com/c/chromium/src/+/8512441#nolint * 8465423: Use C++20 std::numbers::pi in blink Backport the upstream fix for Windows math constants. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/8465423 Ref: https://chromium-review.googlesource.com/c/chromium/src/+/8510323#nolint * 8489251: Exit tab fullscreen when the held-Esc timer fires under keyboard lock Ref: https://chromium-review.googlesource.com/c/chromium/src/+/8489251 * 8366647: [snapshot] Optional SHA256 code cache source hashing Ref: https://chromium-review.googlesource.com/c/v8/v8/+/8366647 * fix: disable V8 metagen feature Refs https://issues.chromium.org/issues/531344950 Skip-Lint: General feature disablement, no specific to a particular CL. * 8503816: Enable AperitifHelpers by default Disable AperitifHelpers on macOS until Electron adopts the new helpers. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/8503816 * build: pin build-tools to merged siso clang-tidy fix electron/build-tools#910 squash-merged as 32e2253f7c5696d85a77fe19d54d284cf9a62322; re-pin from the PR branch commit a411ee5 so CI no longer depends on the deleted branch. Skip-Lint: build-tools pin, not a Chromium CL adaptation Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01V38FjDEdZgMvFpf5Fmp65m --------- Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com> Co-authored-by: electron-claude[bot] <279139701+electron-claude[bot]@users.noreply.github.com> Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com> Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> Co-authored-by: deepak1556 <hop2deep@gmail.com>
Requested by Charles Kerr · Slack thread
siso uploads the
third_party/llvm-build/Release+Asserts:headersfilegroup as a precomputed subtree and skips other inputs under that directory, so the explicitbin/clang-tidyinput of theelectron/clang-tidyrule only reached RBE workers because Chromium's glob includedbin/clang-*. https://crrev.com/c/8471431 narrowed that glob tobin/clang-cl,bin/clang-cl.exeandbin/clang-[0-9]*, so the remote tidy steps now fail with exit 127 (clang-tidy: No such file or directory). This addsbin/clang-tidyback to that filegroup's includes (a no-op on older Chromium wherebin/clang-*already matches it), which unbreaks the clang-tidy jobs on electron/electron#54590. No.exevariant is needed: Windows hosts run the Linuxclang-tidystaged underRelease+Asserts_linux, which isn't in this filegroup.🤖 Generated with Claude Code
https://claude.ai/code/session_01V38FjDEdZgMvFpf5Fmp65m
Generated by Claude Code