Skip to content

fix(cd): enable rocksdb-storage in release builds and unbreak non-Linux wheels - #116

Merged
XTLine merged 4 commits into
mainfrom
fix/cd-rocksdb-cross-platform
Aug 26, 2026
Merged

fix(cd): enable rocksdb-storage in release builds and unbreak non-Linux wheels#116
XTLine merged 4 commits into
mainfrom
fix/cd-rocksdb-cross-platform

Conversation

@XTLine

@XTLine XTLine commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

Problem (found by the v0.2.0 tag build)

  1. CD built the broker without --features rocksdb-storage — wheels would silently ship an in-memory broker; the persistent storage engine (the headline of 0.2.0) would be missing
  2. macOS/Windows builds never compiled since the observability/jemalloc work landed: prometheus::process_collector is linux-only in prometheus 0.14; tikv-jemalloc-sys cannot build on windows-msvc
  3. CD Linux job lacked clang/libclang-dev required by librocksdb-sys bindgen

Change

  • CD: cargo build --release --features rocksdb-storage; Linux installs clang/libclang-dev, Windows installs LLVM (+LIBCLANG_PATH)
  • metrics: register process collector only on target_os = "linux"
  • main.rs/Cargo.toml: jemalloc becomes a linux-only target dependency + cfg-gated global allocator

Validation

  • cargo check with and without rocksdb-storage on Linux
  • cargo test -p pulsar-lite-metrics: 13 passed
  • CD dispatched on this branch (testpypi target) to exercise all 3 platform builds before re-tagging

XTLine added 2 commits August 26, 2026 15:46
…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.
XTLine added 2 commits August 26, 2026 17:18
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.
@XTLine
XTLine deployed to testpypi August 26, 2026 09:46 — with GitHub Actions Active
@XTLine
XTLine merged commit 057c849 into main Aug 26, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant