Skip to content

pycurl: add build-pycurl.yml for riscv64 wheels - #940

Open
luhenry wants to merge 3 commits into
mainfrom
pycurl
Open

pycurl: add build-pycurl.yml for riscv64 wheels#940
luhenry wants to merge 3 commits into
mainfrom
pycurl

Conversation

@luhenry

@luhenry luhenry commented Sep 4, 2026

Copy link
Copy Markdown
Member

Compiles pycurl's C extension against libcurl. Upstream publishes no riscv64 wheel.

Mirrors the package-wheel job of upstream's cibuildwheel.yml.

Differs from upstream

  • Replaces upstream's vcpkg-built curl with the riscv64 image's own libcurl-devel (dnf, appstream) - simpler, and a full build.
  • gpl_sources job publishes source for the copyleft libraries auditwheel vendors alongside libcurl.

Matrix: cp310-cp314 plus cp314t, matching upstream's own published wheels (not the default four).

Testing

  • same as upstream, except cp314t installs the dev requirements without numpy/websockets - no riscv64 wheel for that interpreter on our registry yet, so their importorskip'd tests self-skip.

License: wheel bundles libcurl's dependency closure - permissive (curl, OpenSSL, nghttp2, brotli, psl, sasl, fido2, cbor, krb5, OpenLDAP) and copyleft (keyutils, libcap, libidn2, libssh, libunistring, libxcrypt, pcre2, systemd-libs; GPL/LGPL); licence texts and GPL sources are collected and published.

Patches

  • 0001-Widen-license-files-to-cover-bundled-third-party-li.patch - To upstream [not submitted from this automated port run]. Without it the wheel carries no third-party licence texts, since an explicit license-files list replaces setuptools' default glob.

Built on cp312 (aarch64 manylinux rehearsal, same image family as riscv64); 854 passed, 32 skipped.

Compiles pycurl's C extension against the riscv64 manylinux image's own
libcurl-devel (dnf, appstream). Upstream publishes no riscv64 wheel.

Widens pyproject.toml's explicit license-files list so the collected
third-party licences (libcurl and its transitive closure) reach the wheel.
paramiko pulls in cryptography and bcrypt, neither of which has a riscv64
wheel below cp312 (cryptography's newest is cp312-abi3, our own bcrypt port
only builds cp312+); pip falls back to cryptography's sdist and dies on
rustup not supporting riscv64-unknown-linux-gnu. The sftp tests already
self-skip via pytest.importorskip when paramiko is absent.
numpy and websockets do have riscv64 wheels on our registry for every
interpreter we build, including cp314t - excluding them was based on a
stale registry check. Excluding them alongside paramiko broke collection
of test_connect_only_send_recv.py, which imports numpy unconditionally
at module scope (unlike the rest of the suite's pytest.importorskip
guards) and so failed the whole cp310/cp311 test run rather than just
skipping the sftp tests paramiko's absence was meant to skip.
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