fresh-cat-90827
07/07/2021, 6:24 PMpex_binary
target docstring to comment on packaging multiplatform PEX files.
https://github.com/pantsbuild/pants/blob/f9b5815352cb571e98f3214a23b83c86f96ee2a7/src/python/pants/backend/python/target_types.py#L242
So the idea is that it is possible to create multi-platform PEX files so that the very same .pex
file can be distributed and run both on Linux and MacOS device. This is achieved by adding multiple platform tags for the pex_binary
target declaration.
This will make sure that the .pex
file contains wheels for both platforms (e.g., if numpy
is a requirement, then there will be one .whl
file for numpy
compiled for MacOS and one .whl
file for numpy
compiled for Linux).
If there are many requirements with compiled non-Python code, a multi-platform PEX file can be significantly larger than a platform-specific one.
It wasn’t clear to me that multiple wheel files will be included (one for each target platform) which became obvious once I have unzipped the .pex
file and inspected the .deps
directory. Do you think that it’s worth adding this to the docstring?
Do you like this wording or it could be expressed in a better way?
--- a/src/python/pants/backend/python/target_types.py
+++ b/src/python/pants/backend/python/target_types.py
@@ -241,7 +241,9 @@ class PexPlatformsField(StringSequenceField):
help = (
"The platforms the built PEX should be compatible with.\n\nThis defaults to the current "
"platform, but can be overridden to different platforms. You can give a list of multiple "
- "platforms to create a multiplatform PEX.\n\nTo use wheels for specific "
+ "platforms to create a multiplatform PEX. A multiplatform PEX file will contain platform "
+ "specific wheels for each 3rd party requirement that has some non-Python "
+ "code that requires compilation. \n\nTo use wheels for specific "
"interpreter/platform tags, you can append them to the platform with hyphens like: "
'PLATFORM-IMPL-PYVER-ABI (e.g. "linux_x86_64-cp-27-cp27mu", '
'"macosx_10.12_x86_64-cp-36-cp36m"):\n\n - PLATFORM: the host platform, e.g. '
happy-kitchen-89482
07/07/2021, 8:26 PMfresh-cat-90827
07/07/2021, 8:40 PMhappy-kitchen-89482
07/07/2021, 8:48 PM