fix(cd): enable rocksdb-storage in release builds and unbreak non-Linux wheels - #116
Merged
Conversation
…ux wheels The v0.2.0 tag build failed on macOS/Windows and would have shipped a memory-only broker on all platforms: - CD built the broker without --features rocksdb-storage, so wheels silently fell back to in-memory storage; add the flag plus the bindgen prerequisites (clang/libclang-dev on Linux, LLVM on Windows) - prometheus::process_collector is linux-only in prometheus 0.14 even with the process feature; gate its registration - tikv-jemalloc-sys cannot build on windows-msvc; make jemalloc a linux-only dependency (the glibc arena fix it targets is linux-only)
clang-sys searches ONLY the LIBCLANG_PATH directory once the variable
is set, even to an empty string, so the previous conditional ('' on
Linux/macOS) disabled the default search globs and bindgen found no
libclang despite it being installed. Windows keeps the explicit path
(choco LLVM); Linux/macOS rely on their default globs.
PyPI rejects bare linux_x86_64 (HTTP 400). The ubuntu-24.04 host binary also requires GLIBC_2.38 (__isoc23_* from gcc-13 headers) plus a host libstdc++, so the v0.1.0 manylinux_2_17 relabel is no longer honest. Build the Linux broker inside quay.io/pypa/manylinux_2_28_x86_64 with static libstdc++/libgcc, download protoc 25.x (Alma 8's 3.5 is too old for prost-build), and have setup.py emit manylinux_2_28_x86_64.
The container mounts the repo root at /src, so the workspace manifest is /src/rust/Cargo.toml and the later copy step reads rust/target/release/pulsar-lite.
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.
Problem (found by the v0.2.0 tag build)
--features rocksdb-storage— wheels would silently ship an in-memory broker; the persistent storage engine (the headline of 0.2.0) would be missingprometheus::process_collectoris linux-only in prometheus 0.14;tikv-jemalloc-syscannot build on windows-msvcclang/libclang-devrequired by librocksdb-sys bindgenChange
cargo build --release --features rocksdb-storage; Linux installs clang/libclang-dev, Windows installs LLVM (+LIBCLANG_PATH)metrics: register process collector only ontarget_os = "linux"main.rs/Cargo.toml: jemalloc becomes a linux-only target dependency + cfg-gated global allocatorValidation
cargo checkwith and withoutrocksdb-storageon Linuxcargo test -p pulsar-lite-metrics: 13 passed