-
-
Notifications
You must be signed in to change notification settings - Fork 18.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Consider cibuildwheel for building wheels? #44027
Comments
I think migrating to cibuildwheel was a smooth experience. At scikit-learn, we still need to keep travis-ci for the arm builds (also using cibuildwheel). Triggering wheel builds in PRs is very convenient when cutting a release. There is no need to sync between two repos when debugging issues with wheel building. |
+1. Our nightly builds just silently failed on the other repo, and I think moving builds over here would increase visibility of build issues. I would be fine doing this if @simonjayhawkins is also fine with it. |
Le mar. 19 oct. 2021 à 15:40, Thomas J. Fan ***@***.***> a
écrit :
I think migrating to cibuildwheel was a smooth experience. At
scikit-learn, we still need to keep travis-ci for the arm builds (also
using cibuildwheel). Triggering wheel builds in PRs is very convenient when
cutting a release. There is no need to sync between two repos when
debugging issues with wheel building.
100% agree.
…--
Olivier
|
Has there been any further thought on this? I opened MacPython/pandas-wheels#176 (asking for musl wheels) before realizing this issue exists. Cibuildwheel makes it dead easy. If the goal is to more or less copy numpy's cibuildwheel organization (they are basically fully moved over to my knowledge) then this change should be pretty straightforward. |
@tgross35 we would certainly be happy to try this approach if u r willing please push up a PR |
Hi all. I'm actually currently helping out numpy with their cibuildwheel migration. I would wait until numpy releases successfully with their new cibuildwheel config before switching us to cibuildwheel. PR is welcome, but just be aware that it may be a while before it gets merged. |
@lithomas1 can you clarify a bit? (I was assuming that numpy is already using cibuildwheel, but it's not yet fully working on their side?) |
It's basically done on the numpy side, and numpy nightlies are currently being built with cibuildwheel. The one last thing we're still working on is building the sdist on CI(numpy/numpy#21207). I was just suggesting waiting to port to our side because sometimes there are issues related to the wheel builders that aren't caught until a release/pre-release. |
Sounds good, thanks for the additional details @lithomas1 ! |
@lithomas1 How come there still aren't musllinux wheels on PyPI as yet? |
We need testing for musl first. |
@lithomas1 Is pandas/.github/workflows/unit-tests.yml Lines 243 to 283 in 97c4ef6
|
musllinux wheel generation was recently added so they should be uploaded starting with 2.0.3 |
Disclaimer: I haven't been involved recently in maintaining our wheel building infrastructure, so I don't know how well it is working or not. But, I recently had a good experience with cibuildwheel with a relatively complex package, so therefore thought to bring it up.
Cibuildwheel (https://cibuildwheel.readthedocs.io/en/stable/) is a package helping to build wheels for all different platforms and architectures / python versions on your CI of choice (they support most of the common CI services). And if using GitHub Actions, you can build all wheels with a single CI service.
Scikit-learn started to use it last year (scikit-learn/scikit-learn#17921). You can see their github workflow as an example: https://github.com/scikit-learn/scikit-learn/blob/main/.github/workflows/wheels.yml (this single workflow config includes building all the wheels, building the sdist, and uploading them to the anaconda wheelhouse for nightly builds).
(cc @ogrisel @thomasjpfan in case you have feedback on how the switch worked out)
And it seems numpy also started considering this: numpy/numpy#20102
Another example mentioned in the dev meeting: https://github.com/googleapis/python-crc32c/blob/b1a8d14bf0a1b4f1faa0f9fdd4307e15699daeff/.github/workflows/python-publish.yml#L245
Some potential advantages:
cc @simonjayhawkins @lithomas1 since you are the ones mostly working on https://github.com/MacPython/pandas-wheels, it's of course mostly up to you to decide (and even if the end result might be better, every migration also has a cost).
The text was updated successfully, but these errors were encountered: