falconry / falcon

The no-magic web data plane API and microservices framework for Python developers, with a focus on reliability, correctness, and performance at scale.
https://falcon.readthedocs.io/en/stable/
Apache License 2.0
9.51k stars 937 forks source link

chore: build binary wheels using `cibuildwheel` #2267

Closed vytas7 closed 1 month ago

vytas7 commented 1 month ago

This is a prototype version since PRs do not have access to secrets anyway, I think.

The plan is to merge this PR once we are happy with the presented code, and test releasing to TestPyPi using the manual dispatch workflow. Then if we are happy we can add/adapt the scripts to perform sanity checks on the produced wheels, and set up publishing to PyPi, retiring the current "Create wheel" workflow,

I got some warnings from various platforms when building on CPython 3.8. So the plan is to build only manylinux and musllinux 64-bit x86 wheels for CPython 3.8.

Otherwise we are building the following combos: CPython: 3.9, 3.10, 3.11, 3.12, 3.13. Platforms: Linux x86 manylinux & musllinux, Linux ARM manylinux & musllinux, Linux IBM Z manylinux, macOS x86, macOS ARM, Windows x86. Only 64-bit builds.

TL;DR Proposed CPython wheels

3.8 3.9 3.10 3.11 3.12 3.13
manylinux_x86_64 :ballot_box_with_check: :ballot_box_with_check: :ballot_box_with_check: :ballot_box_with_check: :ballot_box_with_check: :ballot_box_with_check:
manylinux_i686
musllinux_x86_64 :ballot_box_with_check: :ballot_box_with_check: :ballot_box_with_check: :ballot_box_with_check: :ballot_box_with_check: :ballot_box_with_check:
musllinux_i686
manylinux_aarch64 :ballot_box_with_check: :ballot_box_with_check: :ballot_box_with_check: :ballot_box_with_check: :ballot_box_with_check:
manylinux_ppc64le
manylinux_s390x :ballot_box_with_check: :ballot_box_with_check: :ballot_box_with_check: :ballot_box_with_check: :ballot_box_with_check:
musllinux_aarch64 :ballot_box_with_check: :ballot_box_with_check: :ballot_box_with_check: :ballot_box_with_check: :ballot_box_with_check:
musllinux_ppc64le
musllinux_s390x
macosx_x86_64 :ballot_box_with_check: :ballot_box_with_check: :ballot_box_with_check: :ballot_box_with_check: :ballot_box_with_check:
macosx_universal2
macosx_arm64 :ballot_box_with_check: :ballot_box_with_check: :ballot_box_with_check: :ballot_box_with_check: :ballot_box_with_check:
win_amd64 :ballot_box_with_check: :ballot_box_with_check: :ballot_box_with_check: :ballot_box_with_check: :ballot_box_with_check:
win32
win_arm64

Example of the latest build before I removed the workflow from running on every PR: https://github.com/falconry/falcon/actions/runs/10416797908

codecov[bot] commented 1 month ago

Codecov Report

All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 100.00%. Comparing base (c124e3a) to head (b005a9d). Report is 1 commits behind head on master.

Additional details and impacted files ```diff @@ Coverage Diff @@ ## master #2267 +/- ## ========================================= Coverage 100.00% 100.00% ========================================= Files 63 63 Lines 7112 7112 Branches 1260 1260 ========================================= Hits 7112 7112 ```

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

vytas7 commented 1 month ago

Coverage failed to accept reports, it has been really lame recently :grimacing: All green otherwise.