Skip to content
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

Merged
merged 2 commits into from
Sep 17, 2024

Conversation

jsirois
Copy link
Member

@jsirois jsirois commented Sep 16, 2024

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

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
Comment on lines +100 to +109
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
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mtimm if you have time to eyeball this warning, I'd be grateful. It tests a subset of your OP case in #2532.

@jsirois
Copy link
Member Author

jsirois commented Sep 16, 2024

@benjyw and @huonw this is FYI since 2.19.0 is a regression for Pants assuming it still supports --platform; so you'd want to stay behind or skip ahead to 2.19.1 to avoid fallout.

@jsirois jsirois merged commit 9098057 into pex-tool:main Sep 17, 2024
26 checks passed
@jsirois jsirois deleted the issues/2532 branch September 17, 2024 00:38
@jsirois jsirois requested a review from cburroughs September 17, 2024 16:33
@jsirois
Copy link
Member Author

jsirois commented Sep 17, 2024

@cburroughs added you FYI. Avoid Pex 2.19.0 as a --platform user.

@huonw
Copy link
Collaborator

huonw commented Sep 17, 2024

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 main (in FaaS targets) is now deprecated for removal in a few releases.

@jsirois
Copy link
Member Author

jsirois commented Sep 17, 2024

Yeah, I did that research here: pantsbuild/pants#21425 (comment)
I think that deprecated FaaS use is the only one in the code base affecting end users from a search this am.

jsirois added a commit that referenced this pull request Dec 2, 2024
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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

v2.19.0: No longer finds dependencies
2 participants