MagicStack / MagicStack/uvloop

Add riscv64 (linux_riscv64) wheel to PyPI releases

Ouverte
#732 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Langage dominant
Cython
Étoiles
11.9k
Forks
616
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

## Add `linux_riscv64` wheel to PyPI releases

### Summary

`pip install uvloop` on riscv64 Linux currently requires building from source (~5 min on a 1.6 GHz RISC-V SoC). Adding `linux_riscv64` to the wheel build matrix would give riscv64 users a prebuilt wheel.

### Evidence

| | |
|---|---|
| **Tested wheel** | [`uvloop-0.22.1-cp313-cp313-linux_riscv64.whl`](https://github.com/gounthar/riscv64-python-wheels/releases/download/v2026.03.11-cp313/uvloop-0.22.1-cp313-cp313-linux_riscv64.whl) |
| **Hardware** | BananaPi F3 (SpacemiT K1, rv64imafdcv, 8 cores @ 1.6 GHz, 16 GB RAM) |
| **Python** | 3.13 (CPython) |
| **Build system** | cibuildwheel |
| **Build time** | ~5 min (native, on hardware) |

The wheel imports and passes basic smoke tests on riscv64 Linux.

### Suggested CI change

**Workflow**: `.github/workflows/release.yml`

Add riscv64 to the matrix:

```yaml
# In strategy.matrix.cibw_arch, add riscv64:
cibw_arch: [x86_64, aarch64, universal2, riscv64]

# Add exclude for riscv64 on non-linux:
exclude:
- os: macos-latest
cibw_arch: riscv64
```

Add QEMU step and test skip:
```yaml
- name: Set up QEMU
if: matrix.cibw_arch == 'riscv64'
uses: docker/setup-qemu-action@v3
with:
platforms: riscv64

# Add to env:
CIBW_TEST_SKIP: '*-linux_riscv64'
```

libuv has riscv64 support since v1.44. Event-loop tests may hang under QEMU, hence the test skip recommendation.

### Ecosystem context

- `manylinux_2_28_riscv64` images are available on `quay.io/pypa/` (landed in pypa/manylinux, 2025)
- cibuildwheel 3.x supports riscv64 via QEMU emulation
- auditwheel supports riscv64 platform tags
- Packages already shipping riscv64 wheels on PyPI: aiohttp, yarl, regex, markupsafe, charset-normalizer, rpds-py, multidict, propcache, watchfiles, rignore, setproctitle
- RISC-V hardware is shipping: SiFive HiFive, SpacemiT K1/K3, Sophgo SG2044 (64-core)

### Our temporary index

While upstream support is pending, we maintain a [PEP 503 index](https://gounthar.github.io/riscv64-python-wheels/simple/) with 50+ riscv64 wheels for the Python ML/AI stack, built natively on RISC-V hardware.

Tracking repo: https://github.com/gounthar/riscv64-python-wheels

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par .github/workflows/release.yml et examinez la matrice cibw_arch, les exclusions de plateforme et les tests de wheel existants. Ajoutez la configuration QEMU spécifique à riscv64 et l’entrée CIBW_TEST_SKIP décrites dans l’issue, puis vérifiez que le workflow de release produit un wheel linux_riscv64 sans exécuter les tests de boucle d’événements sous émulation.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
github-actions, python
Domaine
build-system, ci-cd, release
Type d'issue
Fonctionnalité
Difficulté
3/5
Temps estimé
1-2 jours
Activité
À l'abandon
Clarté
Clairement spécifiée
Accessibilité débutants
55/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.