Repository navigation
Install protobuf-compiler in CI: the build script cannot find protoc - #2391
Merged
Merged
Conversation
cargo check / build / test -- the gating job -- has been failing on main
since at least 2026-10-28, and on every pull request regardless of its diff:
error: failed to run custom build command for `raft-proto v0.7.0`
Could not find `protoc` installation and this build crate cannot proceed
Confirmed on main's own head commit 27fd023 (run 40886502716, the nightly of
2026-10-29), so it is not a branch problem.
Neither job installed it -- the dependency step was clang, libclang-dev and
cmake, and protoc came from the runner image, which no longer provides it.
raft-proto's build script runs prost-build, which shells out to protoc and
panics without it.
What hid it is the cache. actions/cache restores target, so the DEBUG
build-script output came back cached and cargo check never re-ran it, while
the release build had nothing cached and had to. The job therefore failed
only on the release profile, which reads like a release-only problem rather
than a missing package. That also means the fast check job, the only job a
push to main runs, is passing on cache luck and would fail on a cold cache --
so both jobs are fixed here, not just the one that is currently red.
The package is identified by provenance rather than guessed: on a machine
where the build succeeds, `which protoc` is /usr/bin/protoc and
`dpkg -S /usr/bin/protoc` reports protobuf-compiler as its owner.
One apt line per job plus the comment explaining it. No Rust code, no
triggers, no job graph; check, build-and-test and sdk-rust are otherwise
untouched, and the file still parses and still declares all three.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
cargo check / build / test— the gating job — has been failing on main since at least2026-10-28, and it fails on every pull request, including ones whose diff cannot possibly affect it.
Confirmed on main's own head commit (27fd023, run 40886502716, nightly 2026-10-29), so this is
not a branch problem — the same job, the same panic, on main.
Why it was absent and still passed for months
Neither job installed it: the dependency step was
clang libclang-dev cmake, andprotoccame fromthe runner image, which no longer provides it.
protocis not optional —raft-proto's build script runs prost-build, which shellsout to it and panics without it.
What hid it is the cache.
actions/cacherestorestarget, so the debug build-script outputcame back from the cache and
cargo checknever re-ran it. The release build below had nothingcached and had to. The job therefore failed only on the release profile, which reads like a
release-only problem rather than a missing package.
That also means the fast
checkjob — which passes on push today, and is the only job a push tomain runs — is passing on cache luck. It would fail the moment the cache went cold. Both jobs
are fixed here for that reason, not just the one that is currently red.
The package is identified by provenance, not by guess
On a machine where the build succeeds:
So
protobuf-compileris the package that owns the binary the build script could not find.Scope
One line per job plus the comment explaining it. No Rust code, no workflow logic, no triggers, no
job graph:
check,build-and-testandsdk-rustare unchanged apart from the apt line in thefirst two. Verified the file still parses and still declares all three jobs.
This PR's own run is the test of the fix — it exercises the same release build that is failing on
main.
I found this because it blocked merging an unrelated measurement PR, and the brief I am working to
says to merge only once this check is SUCCESS. It cannot be SUCCESS for anybody until this lands.