-
-
Notifications
You must be signed in to change notification settings - Fork 292
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
Warn when --platform
resolves fail tag checks.
#2533
Conversation
The addition of wheel tag compatibility to the resolve chech adding in pex-tool#2512 regressed users of abbreviated `--platform` in some cases by failing PEX builds that would otherwise succeed and, later, actually work at runtime. Keep the spirit of pex-tool#2512 by emitting a detailed warning at build time with remediation steps instead of failing the build outright. Fixes pex-tool#2532
PEXWarning: The resolved distributions for 1 target may not be compatible: | ||
1: abbreviated platform cp311-cp311-manylinux_2_28_x86_64 may not be compatible with: | ||
cryptography 42.0.8 requires cffi>=1.12; platform_python_implementation != "PyPy" but 2 incompatible dists were resolved: | ||
cffi-1.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | ||
cffi-1.16.0-cp311-cp311-linux_x86_64.whl | ||
|
||
Its generally advisable to use `--complete-platform` instead of `--platform` to | ||
ensure resolved distributions will be compatible with the target platform at | ||
runtime. For instructions on how to generate a `--complete-platform` see: | ||
https://docs.pex-tool.org/buildingpex.html#complete-platform |
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.
@cburroughs added you FYI. Avoid Pex 2.19.0 as a |
Thanks for the alert. FYI, although I imagine it doesn't particularly change anything on the Pex side: Pants almost doesn't use it any more, as the last use on |
Yeah, I did that research here: pantsbuild/pants#21425 (comment) |
Previously, when speculatively building a wheel from an sdist for a foreign platform target, the wheel tags needed to match the foreign platform target's tags exactly in all cases. For `--complete-platform` this makes sense, we have complete information about the foreign platform target's tags, but for an abbreviated `--platform` it does not since we have abbreviated information that is not enough to know a tag mismatch definitively signals the wheel will never work on the foreign platform target. Now only those definitive cases (e.g.: the speculative wheel is Linux but the foreign abbreviated platform is macOS) are rejected. This will let some eventually failing wheels though, but the warning added in #2533 already covers this risk.
The addition of a wheel tag compatibility check to the overall
post-resolve check in #2512 regressed users of abbreviated
--platform
in some cases by failing PEX builds that would otherwise succeed and,
later, actually work at runtime. Keep the spirit of #2512 by emitting a
detailed warning at build time with remediation steps instead of failing
the build outright.
Fixes #2532