Closed dependabot[bot] closed 2 years ago
@mattip, @joerick, @mayeut - this is weird. Will look into it later (traveling), but cibuildwheel 2.3 breaks PyPy on macOS (3.8 only) (still 10.15) and Linux (3.7) but not being able to get the ninja binary from the PEP 518 requirement. It seems to not be able to handle PEP 517 isolation correctly? No idea if itβs PyPy or Pip or something else.
This succeeds for me
$ git clone https://github.com/pybind/cmake_example
$ cd cmake_example
$ export CIBW_BUILD=pp37-manylinux_x86_64
$ python -c "import cibuildwheel as ci; print(ci.__version__)"
2.3.0
cibuildwheel --platform=linux
Although for some reason the wheel is not copied back to the host.
Maybe increase verbosity so we get a log of what is going on?
CIBW_BUILD=pp37-manylinux_x86_64 cibuildwheel --platform=linux
succeeds (the wheel is copied back in my case).
CIBW_BUILD=*37-manylinux_x86_64 cibuildwheel --platform=linux
fails.
This is true for both pip & build frontends.
The issue comes down to a lack of isolation between builds.
Adding before-build = "rm -rf {project}/build"
solves the issue.
If using the pip frontend, before-build = "python -m pip install -U pip==21.2.4"
also does the trick.
My best guess is that due to caching, cmake is trying to use the ninja it found during the cp37 build while building for pp37. That ninja is not present anymore after a the cp37 build ends.
We might want to report this to setuptools, it's probably not a good idea to cache builds for different interpreters (they already have python version segregation - 3.7
, 3.8
, ...-, it should probably go further than that).
I have not yet investigated the macOS failure but I can hazard that something similar is happening.
I expect that setting the old copy behavior would then also fix it (PIP_USE_DEPRECATED=out-of-tree-build
). I can try that to see if that's the problem.
Build is OK for linux but this raises another issue for cibuildwheel to solve (maybe ignore PIP_*
environment variables when setting up the build environment) ?
Those could be very important in the build environment, though. For example, if a package depends on setuptools in pyproject.toml, setting the constraints via pip variables is the only way to limit setuptools if something breaks (like the removal of the 2to3 support).
The main problem here is pip 21.1 is being used on Windows when I thought it was supposed to be locked to 21.3 on all platforms? Ahh, I see what you mean. We should ignore PIP_
variables during the setting up of our cibuildwheel constraints. Shouldn't we ignore all environment variables there, perhaps? Given that's really just our setup process.
Unrelated PS: @mayeut I sent you a message on discord a while back.
FWIW, build backend has the same issue (since it't a setuptools issue, not surprising, but still noting it)
Bumps pypa/cibuildwheel from 2.2.0 to 2.3.0.
Release notes
Sourced from pypa/cibuildwheel's releases.
Changelog
Sourced from pypa/cibuildwheel's changelog.
Commits
f717468
Bump version: v2.3.07b223b4
Merge pull request #938 from pypa/henryiii-patch-2716b784
Update dependencies (#929)a02eeaa
Update README.mde519566
Update README.mdc33639c
docs: note about musllinux mess594d89f
add support for building wheels for windows on arm64 (#920)59b157f
Merge pull request #926 from mattip/manylinux20146ef2ec3
docs: add psycopg 3 to the projects page (#932)6c2e1cc
Merge pull request #928 from ofek/patch-1Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)