Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/packages/nemo-relay.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,4 @@ versions:
- filename: nemo_relay-0.8.4-cp311-abi3-manylinux_2_39_riscv64.whl
sha256: 37995d6fbb657e57c221d86f822df674eb2597112b8277cf0d1a8708dd6cfedc
requires-python: '>=3.11'
- version: 0.9.0
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
From 7d7539c7e835dd8fd9cabd470748296a7a8bad72 Mon Sep 17 00:00:00 2001
From: Ludovic Henry <git@ludovic.dev>
Date: Sun, 6 Sep 2026 09:43:30 +0200
Subject: [PATCH] worker-proto: fall back to prost-build's own protoc lookup on
riscv64

Upstream-Status: Inappropriate [protoc-bin-vendored ships no riscv64 binary; prost_build::Config::new() already defaults protoc_executable to its own PROTOC-env/PATH lookup, so simply not overriding it on unsupported platforms is the whole fix]

protoc_bin_vendored::protoc_bin_path() returns Err on any platform outside
its small enum of prebuilt targets (x86, x86_64, aarch64, ppc64le, s390x,
macOS, Windows), which the crate's build.rs propagated with ?, aborting
the build before prost_build ever got a chance to look for a protoc on
PATH or via $PROTOC. Only calling protoc_executable() when the vendored
lookup succeeds restores that fallback, which is documented in
prost-build's own "Sourcing protoc" section.

Signed-off-by: Ludovic Henry <git@ludovic.dev>
---
crates/worker-proto/build.rs | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/crates/worker-proto/build.rs b/crates/worker-proto/build.rs
index 5fddbc74..888ec366 100644
--- a/crates/worker-proto/build.rs
+++ b/crates/worker-proto/build.rs
@@ -7,7 +7,12 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
let proto = "proto/nemo/relay/worker/v1/plugin_worker.proto";
let include = "proto";
let mut prost = prost_build::Config::new();
- prost.protoc_executable(protoc_bin_vendored::protoc_bin_path()?);
+ // protoc-bin-vendored ships no riscv64 binary; falling through leaves
+ // prost_build's own PROTOC-env/PATH lookup in charge, which resolves to
+ // the system protoc installed alongside this crate's build on that arch.
+ if let Ok(protoc) = protoc_bin_vendored::protoc_bin_path() {
+ prost.protoc_executable(protoc);
+ }

tonic_prost_build::configure().compile_with_config(prost, &[proto], &[include])?;
Ok(())
Loading