From 1fdb9cb40385b9e0eef6fd0fcd329ccf5074575c Mon Sep 17 00:00:00 2001 From: "riseproject-dev[bot]" <330740410+riseproject-dev[bot]@users.noreply.github.com> Date: Thu, 22 Oct 2026 12:05:23 +0000 Subject: [PATCH 1/7] nemo-relay: Add versions 0.9.4, 0.10.0, 0.10.1, 0.10.2, 0.10.3, 0.10.4 Signed-off-by: riseproject-dev[bot] <330740410+riseproject-dev[bot]@users.noreply.github.com> --- docs/packages/nemo-relay.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/packages/nemo-relay.yaml b/docs/packages/nemo-relay.yaml index 0c0595350888..6162a067f6e2 100644 --- a/docs/packages/nemo-relay.yaml +++ b/docs/packages/nemo-relay.yaml @@ -37,3 +37,9 @@ versions: - filename: nemo_relay-0.9.3-cp311-abi3-manylinux_2_39_riscv64.whl sha256: aa052d9c32f2a32410d920b30e388b7373c372ee765852a939ddc52e0ba1c05a requires-python: '>=3.11' +- version: 0.9.4 +- version: 0.10.0 +- version: 0.10.1 +- version: 0.10.2 +- version: 0.10.3 +- version: 0.10.4 From 6cf744d57a0dc3a927d30aa2bb15f73df331f66c Mon Sep 17 00:00:00 2001 From: Ludovic Henry Date: Fri, 23 Oct 2026 06:28:06 +0800 Subject: [PATCH 2/7] nemo-relay: Carry patches over to versions 0.9.4, 0.10.0, 0.10.1, 0.10.2, 0.10.3, 0.10.4 The worker-proto protoc fallback patch applies unchanged to 0.9.4. For 0.10.x it is rebased onto crates/worker-proto/build.rs, which gained a prost.boxed() line below the protoc_executable() call; the file is identical across 0.10.0 to 0.10.4, so one rebased patch serves them all. --- ...l-back-to-prost-build-s-own-protoc-l.patch | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 patches/nemo-relay/0.9.4/0001-worker-proto-fall-back-to-prost-build-s-own-protoc-l.patch diff --git a/patches/nemo-relay/0.9.4/0001-worker-proto-fall-back-to-prost-build-s-own-protoc-l.patch b/patches/nemo-relay/0.9.4/0001-worker-proto-fall-back-to-prost-build-s-own-protoc-l.patch new file mode 100644 index 000000000000..572c153985f8 --- /dev/null +++ b/patches/nemo-relay/0.9.4/0001-worker-proto-fall-back-to-prost-build-s-own-protoc-l.patch @@ -0,0 +1,42 @@ +From 7d7539c7e835dd8fd9cabd470748296a7a8bad72 Mon Sep 17 00:00:00 2001 +From: Ludovic Henry +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 +--- + 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> { + 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(()) +-- +2.50.1 (Apple Git-155) + From fa99e9f49051e8c63d0ea1cbba23d23bb3e0f8dc Mon Sep 17 00:00:00 2001 From: Ludovic Henry Date: Fri, 23 Oct 2026 06:28:59 +0800 Subject: [PATCH 3/7] nemo-relay: Carry patches over to versions 0.10.0, 0.10.1, 0.10.2, 0.10.3, 0.10.4 The worker-proto protoc fallback patch is rebased onto crates/worker-proto/build.rs, which gained a prost.boxed() line below the protoc_executable() call. The file is identical across 0.10.0 to 0.10.4, so one rebased patch serves them all. Also restore the 0.9.4 copy to be byte-identical to 0.9.3. --- ...l-back-to-prost-build-s-own-protoc-l.patch | 39 +++++++++++++++++++ ...l-back-to-prost-build-s-own-protoc-l.patch | 39 +++++++++++++++++++ ...l-back-to-prost-build-s-own-protoc-l.patch | 39 +++++++++++++++++++ ...l-back-to-prost-build-s-own-protoc-l.patch | 39 +++++++++++++++++++ ...l-back-to-prost-build-s-own-protoc-l.patch | 39 +++++++++++++++++++ ...l-back-to-prost-build-s-own-protoc-l.patch | 3 -- 6 files changed, 195 insertions(+), 3 deletions(-) create mode 100644 patches/nemo-relay/0.10.0/0001-worker-proto-fall-back-to-prost-build-s-own-protoc-l.patch create mode 100644 patches/nemo-relay/0.10.1/0001-worker-proto-fall-back-to-prost-build-s-own-protoc-l.patch create mode 100644 patches/nemo-relay/0.10.2/0001-worker-proto-fall-back-to-prost-build-s-own-protoc-l.patch create mode 100644 patches/nemo-relay/0.10.3/0001-worker-proto-fall-back-to-prost-build-s-own-protoc-l.patch create mode 100644 patches/nemo-relay/0.10.4/0001-worker-proto-fall-back-to-prost-build-s-own-protoc-l.patch diff --git a/patches/nemo-relay/0.10.0/0001-worker-proto-fall-back-to-prost-build-s-own-protoc-l.patch b/patches/nemo-relay/0.10.0/0001-worker-proto-fall-back-to-prost-build-s-own-protoc-l.patch new file mode 100644 index 000000000000..731568930eba --- /dev/null +++ b/patches/nemo-relay/0.10.0/0001-worker-proto-fall-back-to-prost-build-s-own-protoc-l.patch @@ -0,0 +1,39 @@ +From 7d7539c7e835dd8fd9cabd470748296a7a8bad72 Mon Sep 17 00:00:00 2001 +From: Ludovic Henry +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 +--- + 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 8bf3a86..b765910 100644 +--- a/crates/worker-proto/build.rs ++++ b/crates/worker-proto/build.rs +@@ -7,7 +7,12 @@ fn main() -> Result<(), Box> { + 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); ++ } + prost.boxed(".nemo.relay.worker.v1.LlmInvocation.execution_codec_context"); + + tonic_prost_build::configure().compile_with_config(prost, &[proto], &[include])?; diff --git a/patches/nemo-relay/0.10.1/0001-worker-proto-fall-back-to-prost-build-s-own-protoc-l.patch b/patches/nemo-relay/0.10.1/0001-worker-proto-fall-back-to-prost-build-s-own-protoc-l.patch new file mode 100644 index 000000000000..731568930eba --- /dev/null +++ b/patches/nemo-relay/0.10.1/0001-worker-proto-fall-back-to-prost-build-s-own-protoc-l.patch @@ -0,0 +1,39 @@ +From 7d7539c7e835dd8fd9cabd470748296a7a8bad72 Mon Sep 17 00:00:00 2001 +From: Ludovic Henry +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 +--- + 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 8bf3a86..b765910 100644 +--- a/crates/worker-proto/build.rs ++++ b/crates/worker-proto/build.rs +@@ -7,7 +7,12 @@ fn main() -> Result<(), Box> { + 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); ++ } + prost.boxed(".nemo.relay.worker.v1.LlmInvocation.execution_codec_context"); + + tonic_prost_build::configure().compile_with_config(prost, &[proto], &[include])?; diff --git a/patches/nemo-relay/0.10.2/0001-worker-proto-fall-back-to-prost-build-s-own-protoc-l.patch b/patches/nemo-relay/0.10.2/0001-worker-proto-fall-back-to-prost-build-s-own-protoc-l.patch new file mode 100644 index 000000000000..731568930eba --- /dev/null +++ b/patches/nemo-relay/0.10.2/0001-worker-proto-fall-back-to-prost-build-s-own-protoc-l.patch @@ -0,0 +1,39 @@ +From 7d7539c7e835dd8fd9cabd470748296a7a8bad72 Mon Sep 17 00:00:00 2001 +From: Ludovic Henry +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 +--- + 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 8bf3a86..b765910 100644 +--- a/crates/worker-proto/build.rs ++++ b/crates/worker-proto/build.rs +@@ -7,7 +7,12 @@ fn main() -> Result<(), Box> { + 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); ++ } + prost.boxed(".nemo.relay.worker.v1.LlmInvocation.execution_codec_context"); + + tonic_prost_build::configure().compile_with_config(prost, &[proto], &[include])?; diff --git a/patches/nemo-relay/0.10.3/0001-worker-proto-fall-back-to-prost-build-s-own-protoc-l.patch b/patches/nemo-relay/0.10.3/0001-worker-proto-fall-back-to-prost-build-s-own-protoc-l.patch new file mode 100644 index 000000000000..731568930eba --- /dev/null +++ b/patches/nemo-relay/0.10.3/0001-worker-proto-fall-back-to-prost-build-s-own-protoc-l.patch @@ -0,0 +1,39 @@ +From 7d7539c7e835dd8fd9cabd470748296a7a8bad72 Mon Sep 17 00:00:00 2001 +From: Ludovic Henry +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 +--- + 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 8bf3a86..b765910 100644 +--- a/crates/worker-proto/build.rs ++++ b/crates/worker-proto/build.rs +@@ -7,7 +7,12 @@ fn main() -> Result<(), Box> { + 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); ++ } + prost.boxed(".nemo.relay.worker.v1.LlmInvocation.execution_codec_context"); + + tonic_prost_build::configure().compile_with_config(prost, &[proto], &[include])?; diff --git a/patches/nemo-relay/0.10.4/0001-worker-proto-fall-back-to-prost-build-s-own-protoc-l.patch b/patches/nemo-relay/0.10.4/0001-worker-proto-fall-back-to-prost-build-s-own-protoc-l.patch new file mode 100644 index 000000000000..731568930eba --- /dev/null +++ b/patches/nemo-relay/0.10.4/0001-worker-proto-fall-back-to-prost-build-s-own-protoc-l.patch @@ -0,0 +1,39 @@ +From 7d7539c7e835dd8fd9cabd470748296a7a8bad72 Mon Sep 17 00:00:00 2001 +From: Ludovic Henry +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 +--- + 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 8bf3a86..b765910 100644 +--- a/crates/worker-proto/build.rs ++++ b/crates/worker-proto/build.rs +@@ -7,7 +7,12 @@ fn main() -> Result<(), Box> { + 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); ++ } + prost.boxed(".nemo.relay.worker.v1.LlmInvocation.execution_codec_context"); + + tonic_prost_build::configure().compile_with_config(prost, &[proto], &[include])?; diff --git a/patches/nemo-relay/0.9.4/0001-worker-proto-fall-back-to-prost-build-s-own-protoc-l.patch b/patches/nemo-relay/0.9.4/0001-worker-proto-fall-back-to-prost-build-s-own-protoc-l.patch index 572c153985f8..c1892394f22c 100644 --- a/patches/nemo-relay/0.9.4/0001-worker-proto-fall-back-to-prost-build-s-own-protoc-l.patch +++ b/patches/nemo-relay/0.9.4/0001-worker-proto-fall-back-to-prost-build-s-own-protoc-l.patch @@ -37,6 +37,3 @@ index 5fddbc74..888ec366 100644 tonic_prost_build::configure().compile_with_config(prost, &[proto], &[include])?; Ok(()) --- -2.50.1 (Apple Git-155) - From ed5bfeb778287866cd14c2a64336b2cc9f37fddb Mon Sep 17 00:00:00 2001 From: Ludovic Henry Date: Sun, 25 Oct 2026 19:01:49 +0100 Subject: [PATCH 4/7] nemo-relay: add opentelemetry-proto to the test requirements --- .github/workflows/build-nemo-relay.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-nemo-relay.yml b/.github/workflows/build-nemo-relay.yml index 9e5b1349abc5..084fedc17aaf 100644 --- a/.github/workflows/build-nemo-relay.yml +++ b/.github/workflows/build-nemo-relay.yml @@ -108,7 +108,10 @@ jobs: CIBW_ENVIRONMENT_LINUX: >- PATH="$PATH:$HOME/.cargo/bin" PROTOC_INCLUDE=/usr/include - CIBW_TEST_REQUIRES: pytest>=8 pytest-asyncio>=0.26 pydantic>=2 typing_extensions + # opentelemetry-proto (pure Python, pulls in protobuf) is imported at + # module scope by python/tests/test_observability_plugin.py; without + # it that file fails collection with ModuleNotFoundError: opentelemetry. + CIBW_TEST_REQUIRES: pytest>=8 pytest-asyncio>=0.26 pydantic>=2 typing_extensions opentelemetry-proto CIBW_TEST_SOURCES: pyproject.toml python/tests # python/tests/integrations needs optional framework extras nemo-relay # ships as PyPI extras (upstream's own test-python excludes this From 414bf7d7148d4ccd8f1670ba73b6b4ed7c76e70b Mon Sep 17 00:00:00 2001 From: "riseproject-dev[bot]" <330740410+riseproject-dev[bot]@users.noreply.github.com> Date: Thu, 29 Oct 2026 09:02:33 +0000 Subject: [PATCH 5/7] nemo-relay: Add versions 0.9.4, 0.10.0, 0.10.1, 0.10.2, 0.10.3, 0.10.4, 0.11.0 Signed-off-by: riseproject-dev[bot] <330740410+riseproject-dev[bot]@users.noreply.github.com> --- docs/packages/nemo-relay.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/packages/nemo-relay.yaml b/docs/packages/nemo-relay.yaml index 6162a067f6e2..b3ab1c015aa9 100644 --- a/docs/packages/nemo-relay.yaml +++ b/docs/packages/nemo-relay.yaml @@ -43,3 +43,4 @@ versions: - version: 0.10.2 - version: 0.10.3 - version: 0.10.4 +- version: 0.11.0 From cc67b1cd5b12ee8847eb118f573c7184f795daf9 Mon Sep 17 00:00:00 2001 From: Ludovic Henry Date: Sat, 31 Oct 2026 01:05:21 +0100 Subject: [PATCH 6/7] nemo-relay: copy the protoc fallback patch to 0.11.0 worker-proto/build.rs is unchanged in 0.11.0, so the patch from 0.10.4 applies as is; without a 0.11.0 directory the apply step fails. --- ...l-back-to-prost-build-s-own-protoc-l.patch | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 patches/nemo-relay/0.11.0/0001-worker-proto-fall-back-to-prost-build-s-own-protoc-l.patch diff --git a/patches/nemo-relay/0.11.0/0001-worker-proto-fall-back-to-prost-build-s-own-protoc-l.patch b/patches/nemo-relay/0.11.0/0001-worker-proto-fall-back-to-prost-build-s-own-protoc-l.patch new file mode 100644 index 000000000000..731568930eba --- /dev/null +++ b/patches/nemo-relay/0.11.0/0001-worker-proto-fall-back-to-prost-build-s-own-protoc-l.patch @@ -0,0 +1,39 @@ +From 7d7539c7e835dd8fd9cabd470748296a7a8bad72 Mon Sep 17 00:00:00 2001 +From: Ludovic Henry +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 +--- + 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 8bf3a86..b765910 100644 +--- a/crates/worker-proto/build.rs ++++ b/crates/worker-proto/build.rs +@@ -7,7 +7,12 @@ fn main() -> Result<(), Box> { + 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); ++ } + prost.boxed(".nemo.relay.worker.v1.LlmInvocation.execution_codec_context"); + + tonic_prost_build::configure().compile_with_config(prost, &[proto], &[include])?; From 58fb17467fcbd06dce9867620a2c8164822f617f Mon Sep 17 00:00:00 2001 From: Ludovic Henry Date: Sat, 31 Oct 2026 12:18:57 +0100 Subject: [PATCH 7/7] build-nemo-relay: stage the repo files three 0.11.0 tests read test_scope_stack_snapshot_preserves_fixture_propagation_uuids, test_diagnostics_reader_example and test_python_query_adapter_matches_shared_contract_fixture read files outside python/tests. They are absent from the 0.9/0.10 tags, and cibuildwheel errors on a missing test source, so they are only staged for later versions. --- .github/workflows/build-nemo-relay.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-nemo-relay.yml b/.github/workflows/build-nemo-relay.yml index 084fedc17aaf..b1a22aacfcfe 100644 --- a/.github/workflows/build-nemo-relay.yml +++ b/.github/workflows/build-nemo-relay.yml @@ -112,7 +112,12 @@ jobs: # module scope by python/tests/test_observability_plugin.py; without # it that file fails collection with ModuleNotFoundError: opentelemetry. CIBW_TEST_REQUIRES: pytest>=8 pytest-asyncio>=0.26 pydantic>=2 typing_extensions opentelemetry-proto - CIBW_TEST_SOURCES: pyproject.toml python/tests + # Three tests added in 0.11.0 read repo files outside python/tests (a scope-stack + # fixture, the diagnostics query contract and the diagnostics example); none of + # them exists in the 0.9/0.10 tags, and cibuildwheel errors on a missing test + # source, so they are only staged for later versions. The non-empty value sits + # in the && branch because an empty string is falsy in `a && '' || b`. + CIBW_TEST_SOURCES: pyproject.toml python/tests ${{ !startsWith(matrix.version, '0.9.') && !startsWith(matrix.version, '0.10.') && 'crates/types/tests/fixtures/scope_stack_snapshot.json crates/core/tests/fixtures/diagnostics_query_contract.json examples/diagnostics/python.py' || '' }} # python/tests/integrations needs optional framework extras nemo-relay # ships as PyPI extras (upstream's own test-python excludes this # directory too); python/tests/plugin and test_dynamic_plugin_host.py