Skip to content

daft: add build-daft.yml for riscv64 wheels - #930

Open
luhenry wants to merge 4 commits into
mainfrom
daft
Open

daft: add build-daft.yml for riscv64 wheels#930
luhenry wants to merge 4 commits into
mainfrom
daft

Conversation

@luhenry

@luhenry luhenry commented Sep 4, 2026

Copy link
Copy Markdown
Member

Compiles Daft's PyO3/maturin extension module and its ~50-crate internal workspace (arrow, tokio, opentelemetry, etc.). Upstream publishes no riscv64 wheel.

Mirrors upstream's build-wheel.yml build job.

Differs from upstream

  • Version is written into Cargo.toml directly instead of via setuptools_scm - we only ever build an exact release tag.
  • DAFT_DASHBOARD_SKIP_BUILD=1 skips the bundled dashboard's Node/npm frontend build - not needed for the Python package or its tests.

Testing

  • tests/dataframe under the native runner only - the only riscv64 ray build published anywhere (2.58.0) exceeds daft's own ray<2.58.0 extras bound
  • numpy/pandas/pyarrow pinned to the newest riscv64 builds our registry publishes

License: OK

Built on cp310 (abi3).

System pip's vendored packaging library doesn't recognize the
manylinux_2_39_riscv64 platform tag and rejects the wheel as
"not a supported wheel on this platform"; uv's resolver does.
The only riscv64 ray build published anywhere is 2.58.0 (cp312/cp313/cp314
only), which exceeds the ray[data, client]<2.58.0,>=2.11.0 upper bound
daft's own ray extra declares, so there is no ray build daft supports to
test with. Switch the test venv to cp312 too, since that is now the floor
our registry publishes riscv64 numpy/pandas/pyarrow builds for.
uv pip install only honors its own UV_EXTRA_INDEX_URL/UV_ONLY_BINARY,
not the PIP_-prefixed names copied from cibuildwheel's pip-based test
steps elsewhere in this repo. With those silently ignored, uv resolved
pyarrow==25.0.1 against public PyPI only (no riscv64 wheel there) and
source-built it, which needs the real Arrow C++ CMake package the
manylinux image doesn't carry -- surfacing ~6.5h later as a CMake
"could not find Arrow" configure error that looked like a missing
native dependency of daft itself. Swap to UV_EXTRA_INDEX_URL/
UV_ONLY_BINARY and add UV_INDEX_STRATEGY=unsafe-best-match so uv
actually reaches our registry's riscv64 pyarrow/numpy/pandas builds
(same pattern as build-matplotlib.yml/build-onnx.yml). See CLAUDE.md
gotcha 244.
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