Conversation
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
…cv64 deps) numpy, tokenizers and safetensors have no cp314t riscv64 wheels yet; skip the test step for that variant only — the wheel itself builds and links correctly. Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
… test-skip) Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
justeph
reviewed
Aug 21, 2026
| - name: Install cibuildwheel | ||
| run: uv pip install cibuildwheel | ||
|
|
||
| - name: Build wheels |
Collaborator
There was a problem hiding this comment.
use pypa/cibuildwheel actin instead?
| submodules: recursive | ||
| persist-credentials: false | ||
|
|
||
| - name: Install Python |
Collaborator
There was a problem hiding this comment.
can be remove if we use pypa/cibuildwheel
| UV_EXTRA_INDEX_URL: https://pypi.riseproject.dev/simple/ | ||
| UV_INDEX_STRATEGY: unsafe-best-match | ||
| UV_ONLY_BINARY: ':all:' | ||
| MANYLINUX_RISCV64_IMAGE: quay.io/pypa/manylinux_2_39_riscv64 |
Comment on lines
+28
to
+30
| UV_EXTRA_INDEX_URL: https://pypi.riseproject.dev/simple/ | ||
| UV_INDEX_STRATEGY: unsafe-best-match | ||
| UV_ONLY_BINARY: ':all:' |
Collaborator
There was a problem hiding this comment.
drop if using pypa/cibuildwheel
Comment on lines
+88
to
+89
| UV_EXTRA_INDEX_URL=https://pypi.riseproject.dev/simple/ | ||
| UV_INDEX_STRATEGY=unsafe-best-match |
Collaborator
There was a problem hiding this comment.
remove those UV variables
| # override so this native riscv runner builds the riscv64 wheel. | ||
| CIBW_ARCHS: riscv64 | ||
| CIBW_SKIP: '*-musllinux_*' | ||
| CIBW_MANYLINUX_RISCV64_IMAGE: ${{ env.MANYLINUX_RISCV64_IMAGE }} |
| # pyproject pins [tool.cibuildwheel.linux] archs to x86_64+aarch64; | ||
| # override so this native riscv runner builds the riscv64 wheel. | ||
| CIBW_ARCHS: riscv64 | ||
| CIBW_SKIP: '*-musllinux_*' |
Collaborator
There was a problem hiding this comment.
not needed, since CIBW_BUILD specify mmanylinuximage only. Does not hurt though
| # kicking off a multi-hour source build on the runner. | ||
| CIBW_TEST_ENVIRONMENT: >- | ||
| PIP_ONLY_BINARY=:all: | ||
| UV_ONLY_BINARY=:all: |
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.
Summary
.github/workflows/build-xgrammar.ymlto build xgrammar 0.2.4 riscv64 wheelsv0.2.4with recursive submodules (dlpack, googletest, cpptrace), builds withscikit-build-core+ CMakeapache-tvm-ffi(linked aslibtvm_ffi.so, excluded from auditwheel repair per upstream's pyproject) resolves from our registry — riscv64 wheels for 0.1.12 were added in the preceding portCIBW_BUILD_FRONTEND: buildoverrides upstream'sbuild[uv]— the self-hosted riscv runner has no hostuv, causing cibuildwheel to crash in the audit step with that frontendPIP_ONLY_BINARY=:all:scoped toCIBW_TEST_ENVIRONMENTonly (not build phase), matching the pattern established in the apache-tvm-ffi portTest plan
publishjob dry-runs cleanly (log shows "Dry run (not on main branch …)")import xgrammarsmoke passes in each built wheel🤖 Generated with Claude Code