lmnr-claude-code-proxy: add build-lmnr-claude-code-proxy.yml for riscv64 wheels - #598
Merged
Conversation
…v64 wheels LMNR AI publishes no public source repository and no public CI for this package: the PyPI sdist is the only form the upstream tree is distributed in (the npm package is built from the same bin/ crate). The workflow therefore fetches the sdist and hands it to cibuildwheel as package-dir, which extracts and builds it exactly as maturin would from a checkout. The extension is a PyO3 cdylib without abi3, so the matrix is the usual per-interpreter cp312/cp313/cp314/cp314t; upstream ships the same shape (cp310..cp314 plus cp314t). musllinux is dropped because rustup.rs has no riscv64 musl host toolchain. Upstream ships no tests, so the workflow stages a smoke suite that exercises the compiled extension end to end: it asserts the loaded module is the .so, starts the Rust proxy, drives /lmnr-internal/health and /lmnr-internal/span-context (valid and invalid payloads) and forwards a request through the proxy to a local upstream server. The same suite passes against upstream's released 0.1.24 wheel. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
cibuildwheel chdirs into its own extraction temp dir when package-dir is a tar.gz (__main__.py: contextlib.chdir(project_dir)), and CIBW_TEST_SOURCES resolves against Path.cwd(), so the smoke tests staged in the workspace were invisible and the test phase died with "Test source tests does not exist" after the whole Rust build. Extracting the sdist ourselves and passing the directory keeps cwd at the workspace root, where both the package dir and tests/ live. Caught by a cibuildwheel run of this exact recipe against manylinux_2_39_aarch64, which builds and repairs the wheel natively in minutes. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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.
lmnr-claude-code-proxy0.1.24PyO3/maturin extension wrapping a small Rust proxy (hyper/tokio/rustls). Upstream publishes no riscv64 wheel.
Mirrors upstream's
release.yml.Differs from upstream
Matrix: per-interpreter
cp312-cp314t. PyO3 is used without abi3, so the wheels arecp3XX-cp3XX, as upstream ships.Testing
License: ✅
5 passed.