You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I am trying to build PEX for my CLI tool and I am running into a problem with my dependencies that are distributed as sdist (are downloaded as tar.gz files), while trying to build PEX targetting multiple platforms.
Currently, I want to create two PEX builds, one for macOS and one for Linux.
If I am reading this right, PEX is trying to build the sdist into wheel and then include that into the PEX environment. But the wheel is created for the current platform that the PEX build is happening on, therefore the PEX's build process fails because of the multiple platform's constraints.
Is there something I have configured wrongly? Or am I missing something else?
Also I don't really understand why PEX is trying to do this sdist to bdist translation, since it looks like the final PEX file contains dependencies in extracted form (eq. .deps folder of the PEX zip contains folders with the dependecies). Why it won't directly include the sdist?
Thanks ahead for help!
The text was updated successfully, but these errors were encountered:
Is there something I have configured wrongly? Or am I missing something else?
You're just missing the step of pre-building wheels for all the platforms you want your multi-platform pex to support. Most simply, you'd place the prebuilt wheels flat in a directory available via a network filesystem or HTTPS and then point to that directory with -f:
$ pex --help
...
Resolver options:
Tailor how to find, resolve and translate the packages that get put
into the PEX environment.
--pypi, --no-pypi, --no-index
Whether to use pypi to resolve dependencies; Default:
use pypi
--pex-path=PEX_PATH
A colon separated list of other pex files to merge
into the runtime environment.
-f PATH/URL, --find-links=PATH/URL, --repo=PATH/URL
Additional repository path (directory or URL) to look
for requirements.
...
And pendulum only supplies macosx_10_14_x86_64 pre-built; so you fail on macosx_10_12_x86_64 and macosx_10_13_x86_64.
Also I don't really understand why PEX is trying to do this sdist to bdist translation, since it looks like the final PEX file contains dependencies in extracted form (eq. .deps folder of the PEX zip contains folders with the dependecies). Why it won't directly include the sdist?
The main design goal of pex is to create a hermetic pre-built executable. As such, including sdists inside the pex that are platform-specific and require building on each platform like pendulum would violate this goal and is an intentional non-feature of built pexes.
I'm going to close this as answered, but please ask away if the problem and solution aren't clear.
I am trying to build PEX for my CLI tool and I am running into a problem with my dependencies that are distributed as sdist (are downloaded as
tar.gz
files), while trying to build PEX targetting multiple platforms.Currently, I want to create two PEX builds, one for macOS and one for Linux.
If I am reading this right, PEX is trying to build the sdist into wheel and then include that into the PEX environment. But the wheel is created for the current platform that the PEX build is happening on, therefore the PEX's build process fails because of the multiple platform's constraints.
Similarly when I run this as part of my CI build pipeline (that is running on Ubuntu Xenial), than it fails similarly: https://travis-ci.org/AuHau/giTrack/jobs/478828510
Is there something I have configured wrongly? Or am I missing something else?
Also I don't really understand why PEX is trying to do this sdist to bdist translation, since it looks like the final PEX file contains dependencies in extracted form (eq.
.deps
folder of the PEX zip contains folders with the dependecies). Why it won't directly include the sdist?Thanks ahead for help!
The text was updated successfully, but these errors were encountered: