diff --git a/.github/workflows/build-databricks-zerobus-ingest-sdk.yml b/.github/workflows/build-databricks-zerobus-ingest-sdk.yml index 26524673f95..bc83f8f18de 100644 --- a/.github/workflows/build-databricks-zerobus-ingest-sdk.yml +++ b/.github/workflows/build-databricks-zerobus-ingest-sdk.yml @@ -99,7 +99,8 @@ jobs: CIBW_ENVIRONMENT_LINUX: >- PATH="$PATH:$HOME/.cargo/bin" PIP_EXTRA_INDEX_URL=https://pypi.riseproject.dev/simple/ - CIBW_TEST_REQUIRES: pytest pytest-asyncio>=0.21,<1.0 pyarrow + # Latest pyarrow with riscv64 wheels on pypi.riseproject.dev; newer ones are sdist-only and need Arrow C++. + CIBW_TEST_REQUIRES: pytest pytest-asyncio>=0.21,<1.0 pyarrow==25.0.1 CIBW_TEST_SOURCES: python/tests CIBW_TEST_COMMAND: >- python -c "import zerobus._zerobus_core as m; assert m.__file__.endswith('.so'), m.__file__" && diff --git a/docs/packages/databricks-zerobus-ingest-sdk.yaml b/docs/packages/databricks-zerobus-ingest-sdk.yaml index d360d806d52..4e3e7e5d848 100644 --- a/docs/packages/databricks-zerobus-ingest-sdk.yaml +++ b/docs/packages/databricks-zerobus-ingest-sdk.yaml @@ -26,3 +26,4 @@ versions: - filename: databricks_zerobus_ingest_sdk-1.9.0-cp39-abi3-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl sha256: 1c751fde320db55604ec44dc9aa6ea8a55850b95e21439f41e8ad7e6ce84014f requires-python: '>=3.9, <3.15' +- version: 1.10.0 diff --git a/patches/databricks-zerobus-ingest-sdk/1.10.0/0001-sdk-fall-back-to-prost-build-s-own-protoc-lookup-on-.patch b/patches/databricks-zerobus-ingest-sdk/1.10.0/0001-sdk-fall-back-to-prost-build-s-own-protoc-lookup-on-.patch new file mode 100644 index 00000000000..3cec621fcba --- /dev/null +++ b/patches/databricks-zerobus-ingest-sdk/1.10.0/0001-sdk-fall-back-to-prost-build-s-own-protoc-lookup-on-.patch @@ -0,0 +1,39 @@ +From 87f2462219287d68f873d7b3d12b5cd2bce0e47a Mon Sep 17 00:00:00 2001 +From: Ludovic Henry +Date: Mon, 28 Sep 2026 12:50:24 +0000 +Subject: [PATCH] sdk: fall back to prost-build's own protoc lookup on riscv64 + +Upstream-Status: Inappropriate [protoc-bin-vendored ships no riscv64 binary; prost-build already honours $PROTOC and falls back to protoc on PATH, so only overriding PROTOC when the vendored lookup succeeds 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), and build.rs unwrap()ed it, panicking before prost-build +ever got a chance to look for a protoc on PATH or via $PROTOC. Only +setting PROTOC when the vendored lookup succeeds restores that fallback, +documented in prost-build's "Sourcing protoc" section. + +Signed-off-by: Ludovic Henry +--- + rust/sdk/build.rs | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/rust/sdk/build.rs b/rust/sdk/build.rs +index 3e080ec..c75eaa9 100644 +--- a/rust/sdk/build.rs ++++ b/rust/sdk/build.rs +@@ -5,7 +5,11 @@ use std::env; + mod zeroparser_proto_build; + + fn main() { +- env::set_var("PROTOC", protoc_bin_vendored::protoc_bin_path().unwrap()); ++ // protoc-bin-vendored ships no riscv64 binary; falling through leaves ++ // prost_build's own PROTOC-env/PATH lookup in charge. ++ if let Ok(protoc) = protoc_bin_vendored::protoc_bin_path() { ++ env::set_var("PROTOC", protoc); ++ } + tonic_prost_build::compile_protos("zerobus_service.proto") + .unwrap_or_else(|e| panic!("Failed to compile protos {:?}", e)); + +-- +2.43.0 +