-
-
Notifications
You must be signed in to change notification settings - Fork 261
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
Support manylinux1 wheels #281
Comments
PEP 513 has an algorithm for detecting manylinux support, although pip has modified it slightly to deal with weird distributions: pypa/pip#3497, pypa/pip#3590 |
I've been thinking about tackling this, but I can't decide how/whether to handle manylinux compatibility at buildtime. At runtime, you can just use the PEP513 (or modified pip) algorithm, but that won't work for building a Linux PEX on an OS X host. The best I've thought of is using
Similar to pypa/pip#3689. Or is it reasonable to assume |
how about making it explicitly user controlled at pex creation time - e.g. with a feature flag like then if the user wants to build a manylinux compatible pex for running on a separate host, they'd just pass this flag - and then separately be gated by the runtime compatibility checking when running the pex on the separate host where the constraint actually matters. |
Sounds reasonable. |
+1, more and more packages are providing only manylinux1 wheels. It would be great if pex could pull those in instead of requiring linux-x86_64 artifacts. |
another +1 on this. We have run into this issue with libsass which is only providing manylinux1 so we had to pin the last version... any update on manylinux pex support? |
Unfortunately I'm not using PEX at my current job and haven't had much time to spend on this. 😞 |
+1 if/when you get to it :) This 🔥'd me. |
+1 |
+1 ;-) |
I found a disgusting hack that "works" for me. At the very least, when I build a pex using some manylinux1 wheels, it will allow it to be run. In def platform_iterator(cls, platform):
"""Iterate over all compatible platform tags of a supplied platform tag.
:param platform: the platform tag to iterate over
"""
if cls.is_macosx_platform(platform):
for plat in cls.iter_compatible_osx_platforms(platform):
yield plat
elif platform == 'linux_x86_64':
yield 'manylinux1_x86_64'
yield platform
else:
yield platform |
the final implementation is now reviewable here: #480 |
Adds support for manylinux1_x86_64 and manylinux1_i686 platforms. I've treated them as platforms, because that's how PEP-513 describes them. This fixes #281. Fixes a number of bugs related to the handling of wheels that have hyphens in the package names (e.g., cassandra-driver and msgpack-python). Fixes a couple places where str.replace was being called without storing the result (thereby accomplishing nothing since str is immutable)
this is now available as of pex 1.4.0 (on pypi). pex will now resolve against manylinux dists both at build and runtime (implicitly, by default) when targeting linux platforms, with no special platform targeting required:
if you'd like to disable manylinux resolves (1.3.x and earlier behavior), you can pass
you can also do more granular platform/tag targeting via an extended
...which still supports multi-platform usage:
please take a moment to kick the tires with pex 1.4.0 and open issues for any bugs or problems that you might discover. enjoy! |
This seems to still not work for me. When I download a manylinux wheel, pex can't seem to find it, but if I just rename When using the manylinux wheel for psycopg2==2.7.4 named as
(the mechanics of what exactly is happening here are still a mystery to me, but I'm guessing it's something like: no suitable wheel is found, so it starts trying to build from the source tar.gz, and can't because I'm not on Linux) but when I then clear my My |
Pants resolves its own version of pex. Can find-in-page for |
Ah, ok. Couldn't find it from that page directly, but I'm on pants 1.7.0, and judging from https://github.com/pantsbuild/pants/blob/1.7.x/3rdparty/python/requirements.txt#L17 I guess I'm on pex 1.3.2 still. |
Pex doesn't seem to support manylinux1 wheels:
This was mentioned briefly in #250, but that was closed.
The text was updated successfully, but these errors were encountered: