Skip to content

duckdb: add build-duckdb.yml for riscv64 wheels - #395

Merged
luhenry merged 2 commits into
mainfrom
duckdb
Aug 26, 2026
Merged

duckdb: add build-duckdb.yml for riscv64 wheels#395
luhenry merged 2 commits into
mainfrom
duckdb

Conversation

@luhenry

@luhenry luhenry commented Aug 25, 2026

Copy link
Copy Markdown
Member

Builds duckdb 1.5.5 wheels for manylinux_riscv64, mirroring upstream's
packaging_wheels.yml
narrowed to riscv64 and cp312/cp313/cp314 (upstream publishes no free-threaded wheel,
and its own matrix has none).

Deviations from upstream, all riscv64-driven:

  • build-frontend: build instead of build[uv] — cibuildwheel's audit step asserts a
    host uv, which the self-hosted riscv64 runner does not have.
  • before-build emptied — upstream installs ccache, which only exists in EPEL, and
    manylinux explicitly ships no EPEL on riscv64. cmake and ninja still come from
    scikit-build-core's build requirements; both publish riscv64 wheels on PyPI.
  • Test dependencies listed explicitly rather than exported from uv's lock: pyarrow,
    polars, adbc-driver-manager and tensorflow have no riscv64 wheels anywhere, and
    every test that uses them is behind pytest.importorskip. pandas is pinned to the
    newest release our registry carries (pip resolves the highest version across both
    indexes, and PyPI's newer ones are x86_64/aarch64 only).
  • Runs upstream's testsuite: fast invocation (tests/fast); tests/slow and
    tests/extensions need network fixtures.

Validated arch-independently before pushing: duckdb 1.5.5 from PyPI plus exactly this
dependency set, staged the way test-sources stages it, gives
1853 passed, 146 skipped, 7 xfailed.

Note: the version pin goes through OVERRIDE_GIT_DESCRIBE, which is upstream's own
set-version mechanism, so the wheel is plain 1.5.5 with no .dev/local segment.

luhenry and others added 2 commits August 25, 2026 22:59
Mirrors duckdb-python's packaging_wheels.yml, narrowed to
manylinux_riscv64 and cp312/cp313/cp314 (upstream publishes no
free-threaded wheel).

Deviations from upstream, all riscv64-driven:
- build-frontend `build` instead of `build[uv]`: cibuildwheel's audit
  step asserts a host uv, which the self-hosted riscv64 runner lacks.
- before-build emptied: it installs ccache, which lives in EPEL and
  manylinux ships no EPEL on riscv64. cmake and ninja still come from
  scikit-build-core's build requirements; both have riscv64 wheels.
- test dependencies listed explicitly instead of exported from uv's
  lock: pyarrow, polars, adbc-driver-manager and tensorflow have no
  riscv64 wheels anywhere, and the tests that use them are all behind
  pytest.importorskip. pandas is pinned to the newest release our
  registry carries.
- upstream's `testsuite: fast` invocation (tests/slow needs network).

Verified arch-independently with duckdb 1.5.5 from PyPI and exactly
this dependency set: 1853 passed, 146 skipped, 7 xfailed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@luhenry
luhenry merged commit 540ea8b into main Aug 26, 2026
6 checks passed
@luhenry
luhenry deleted the duckdb branch August 26, 2026 10:50
@luhenry luhenry linked an issue Aug 26, 2026 that may be closed by this pull request
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.

duckdb riscv64 support

1 participant