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

PEP 600: add manylinux2014 compatibility #1962

Merged
merged 1 commit into from
Jun 26, 2021
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 26 additions & 8 deletions pep-0600.rst
Original file line number Diff line number Diff line change
Expand Up @@ -68,11 +68,11 @@ wheels, and the manylinux approach has achieved substantial uptake
among both package maintainers and end-users. But any manylinux PEP
needs some way to address these complexities.

In previous manylinux PEPs (:pep:`513`, :pep:`571`), we've done this
by attempting to write down in the PEP the exact set of libraries,
symbol versions, Python configuration, etc. that we believed would
lead to wheels that work on all mainstream glibc-based Linux systems.
But this created several problems:
In previous manylinux PEPs (:pep:`513`, :pep:`571`, :pep:`599`), we've
done this by attempting to write down in the PEP the exact set of
libraries, symbol versions, Python configuration, etc. that we
believed would lead to wheels that work on all mainstream glibc-based
Linux systems. But this created several problems:

First, PEPs are generally supposed to be normative references: if
software doesn't match the PEP, then we fix the software. But in this
Expand Down Expand Up @@ -248,6 +248,13 @@ tags:
- ``manylinux1_i686`` is now an alias for ``manylinux_2_5_i686``
- ``manylinux2010_x86_64`` is now an alias for ``manylinux_2_12_x86_64``
- ``manylinux2010_i686`` is now an alias for ``manylinux_2_12_i686``
- ``manylinux2014_x86_64`` is now an alias for ``manylinux_2_17_x86_64``
- ``manylinux2014_i686`` is now an alias for ``manylinux_2_17_i686``
- ``manylinux2014_aarch64`` is now an alias for ``manylinux_2_17_aarch64``
- ``manylinux2014_armv7l`` is now an alias for ``manylinux_2_17_armv7l``
- ``manylinux2014_ppc64`` is now an alias for ``manylinux_2_17_ppc64``
- ``manylinux2014_ppc64le`` is now an alias for ``manylinux_2_17_ppc64le``
- ``manylinux2014_s390x`` is now an alias for ``manylinux_2_17_s390x``

This redefinition is largely a no-op, but does affect a few things:

Expand Down Expand Up @@ -299,11 +306,14 @@ the default logic should be used.

For compatibility with previous specifications, if the tag is
``manylinux1`` or ``manylinux_2_5`` exactly, then we also check the
module for a boolean attribute ``manylinux1_compatible``, and if the
module for a boolean attribute ``manylinux1_compatible``, if the
tag version is ``manylinux2010`` or ``manylinux_2_12`` exactly, then
we also check the module for a boolean attribute
``manylinux2010_compatible``. If both the new and old attributes are
defined, then ``manylinux_compatible`` takes precedence.
``manylinux2010_compatible``, and if the tag version is
``manylinux2014`` or ``manylinux_2_17`` exactly, then we also check
the module for a boolean attribute ``manylinux2014_compatible``. If
both the new and old attributes are defined, then
``manylinux_compatible`` takes precedence.

Here's some example code. You don't have to actually use this code,
but you can use it for reference if you have questions about the exact
Expand All @@ -314,6 +324,13 @@ semantics::
"manylinux1_i686": "manylinux_2_5_i686",
"manylinux2010_x86_64": "manylinux_2_12_x86_64",
"manylinux2010_i686": "manylinux_2_12_i686",
"manylinux2014_x86_64": "manylinux_2_17_x86_64",
"manylinux2014_i686": "manylinux_2_17_i686",
"manylinux2014_aarch64": "manylinux_2_17_aarch64",
"manylinux2014_armv7l": "manylinux_2_17_armv7l",
"manylinux2014_ppc64": "manylinux_2_17_ppc64",
"manylinux2014_ppc64le": "manylinux_2_17_ppc64le",
"manylinux2014_s390x": "manylinux_2_17_s390x",
}

def manylinux_tag_is_compatible_with_this_system(tag):
Expand Down Expand Up @@ -368,6 +385,7 @@ matches the following regexes:

- ``manylinux1_(x86_64|i686)``
- ``manylinux2010_(x86_64|i686)``
- ``manylinux2014_(x86_64|i686|aarch64|armv7l|ppc64|ppc64le|s390x)``
- ``manylinux_[0-9]+_[0-9]+_(.*)``

Package indexes may impose additional requirements; for example, they
Expand Down