-
-
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
Complete manylinux support in pex. #480
Conversation
3db686a
to
c9ab227
Compare
ca38b77
to
ba1ab6a
Compare
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.
Thanks!
pex/finders.py
Outdated
@@ -101,7 +101,8 @@ class WheelMetadata(pkg_resources.EggMetadata): | |||
|
|||
@classmethod | |||
def _split_wheelname(cls, wheelname): |
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.
It sortof looks like this method is assuming it will get 4 entries (because it later takes the last 3, which might not make sense if there weren't 4). Is it worth asserting that len(split_wheelname) == 4
?
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.
sure, fixed.
pex/glibc.py
Outdated
# random junk that might come after the minor version -- this might happen | ||
# in patched/forked versions of glibc (e.g. Linaro's version of glibc | ||
# uses version strings like "2.20-2014.11"). See gh-3588. | ||
m = re.match(r"(?P<major>[0-9]+)\.(?P<minor>[0-9]+)", version_str) |
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.
Does this run frequently enough to be worth pre-compiling in a static?
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.
don't believe it's necessary - this runs roughly once per platform x interpreter intersection, so e.g. 4x for an osx+linux x 2.x+3.x pex build.
pex/package.py
Outdated
elif self.py_version == '3.2': | ||
self._supported_tags.add(('pp321', abi_tag, tag_platform)) | ||
elif self.py_version == '3.3': | ||
self._supported_tags.add(('pp352', abi_tag, tag_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.
3.3
vs 352
... intentional? Maybe comment worthy?
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.
these are PyPy ABI tags (pp
-> PyPy
), so they don't map exactly to CPython/cp
. PyPy 3.3
was implicitly pp352
in PyPy versioning - see: http://doc.pypy.org/en/latest/release-pypy3.3-v5.2-alpha1.html
also commented.
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.
Looks good to me. One comment.
pex/bin/pex.py
Outdated
'cp36m, cp27mu, abi3, none). For example: manylinux1_x86_64-36-cp-cp36m. ' | ||
'Default: current platform.') | ||
'to create a multi-platform pex. To use wheels for specific interpreter/platform tags' | ||
'platform tags, you can append them to the platform with hyphens like: ' |
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.
dupe?
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.
fixed
merged #316 and rebasing this one. |
This PR includes two parts:
N.B. #316 has already been reviewed, so feel free to review only the second commit in the "Commits" view.
The second part of this change provides the following:
Platform
abstraction w/ the notion of the new extended form and adds test coverage.Resolver._identity
construction in favor ofPythonInterpreter.identity
usage.--platform
+--interpreter
CLI modes and adds test coverage.PlatformIdentity
and adds test coverage.getsource()
calls into a function call.pep425tags.py
.Once this change is approved, the plan is to: