-
-
Notifications
You must be signed in to change notification settings - Fork 11.9k
CI: run some wheel build jobs by default, and clean up the rest #29540
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
Conversation
|
The What pain points do the full/fast runs tend to highlight? We should probably run full on numpy-releases (that gets triggered less), so we can probably run fast in the wheels here, and save some full runs for builds that don't go through wheel building. |
I just had a look at what's decorated with
I really don't think it adds any value. It made a lot of sense when we did not run wheel build jobs on PRs, but when we run a Other jobs that can go, for the same reason, are:
If we remove all those, that still leaves us with four extra jobs after this PR, which seems acceptable for the win of testing wheel builds by default.
Still thinking about this. Less duplication is good for maintainability. We need to have at least some files in this repo so we can do wheel builds. We don't need the licensing related stuff here, because we're not distributing wheels from this repo anymore, and there's a benefit to removing it (e.g., no license checkers will notice LGPL etc. in this repo and raise flags by default). The main things that leaves are:
I'm inclined to say for (1) that we avoid duplication and use the files in this repo from |
This accounts for the actual release builds moving to the separate `numpy-release` repo. We want to keep a decent subset of wheel builds in the main repo and always run them, just like other CI jobs that test some config that matters.
These configs are covered by `wheels.yml`, which is now part of the regular test suite rather than off-by-default on PRs.
1495100 to
7a4901f
Compare
7a4901f to
7888892
Compare
|
This is ready now. I went with the |
| # at it in `repair_windows.sh` (needed only on Windows because of the lack | ||
| # of RPATH support). | ||
| if [[ $RUNNER_OS == "Windows" ]]; then | ||
| python <<EOF |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This bit is a little complicated to follow for me because the indentation is changing.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, this took me a while. The old version was super confusing, it was unclear when reading the code that PKG_CONFIG_PATH was not an environment variable.
The diff is hard to read; just looking at the old and new versions side by side should be helpful. What it does isn't changing IIRC, the new version should just be easier to understand.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
+1 from me, as the previous version's author
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When the licences are removed we're losing a record of the code that's being bundled (OpenBLAS, etc).
pyproject.toml says
The licenses for these vendored components are dynamically included in the build process for PyPI wheels.
I can see these files are now in numpy-release, but isn't it important to have a record of them here somewhere. Are there going to be improvements in how we bundle these extra licences in the wheel build process?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it's actually somewhat important to not have GPL licenses in this repo, because there is nothing inside this repo that's GPL, LGPL or otherwise copyleft.
I'd really like to conceptually separate NumPy the project and how its sources are licensed - which matters to anyone building/redistributing numpy - and wheels on PyPI, which are only one way of distributing numpy, and a quite unusual way at that. If you get numpy from any other source than PyPI, it will not contain copyleft components.
Are there going to be improvements in how we bundle these extra licences in the wheel build process?
Hopefully yes. See numpy/numpy-release#11
| PKG_CONFIG_PATH="/project/.openblas" | ||
| LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/project/.openblas/lib" | ||
|
|
||
| [tool.cibuildwheel.macos] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So these entries are being removed because we only need them in numpy-release now?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No we still have macOS wheel builds here in wheels.yml. I actually improved how this bundling works, so messing with DYLD_LIBRARY_PATH is no longer necessary. If you look at https://github.com/numpy/numpy-release/blob/main/cibuildwheel.toml, you won't find a macos entry there either.
| - [ubuntu-22.04-arm, manylinux_aarch64, ""] | ||
| - [ubuntu-22.04-arm, musllinux_aarch64, ""] | ||
| - [macos-13, macosx_x86_64, openblas] | ||
| - [macos-13, macosx_x86_64, accelerate] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Did you want to remove all macos-13 runs here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should we move them to azure where there are still native macos x86_64 runners?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we do that separately based on what comes out of the discussion at gh-29728?
I haven't yet looked into what Azure plans to do with their platform support. Also, I hope we'll get rid of Azure completely ....
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For this one, my thinking was that there's another job that tests Accelerate LP64 and ILP64 at once (see here, plus this particular job is quite slow, so I wanted to remove this one as duplicate.
|
I'm happy for this to be merged. I'll do so tomorrow morning if it's not done by then. |
|
Thanks @rgommers |
|
Thanks for the reviews! Let me look at the last open comment about the |
Now that we have https://github.com/numpy/numpy-release, we can remove most wheel build jobs from this repo and at the same time improve the default set of jobs running in CI by adding some wheel build jobs to the mix (none got run by default before this PR).
Up for discussion:
fullorfasttest suite?linux_musl.ymlone removed here)numpyandnumpy-releaserepos? xref Sync the code here with upstream numpy/numpy numpy-release#6 which @mattip just opened