Skip to content

Commit e43ac67

Browse files
committed
Update manylinux tags section
1 parent a69329a commit e43ac67

1 file changed

Lines changed: 63 additions & 15 deletions

File tree

source/specifications/platform-compatibility-tags.rst

Lines changed: 63 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,72 @@
55
Platform compatibility tags
66
===========================
77

8-
The platform compatibility tagging model used for ``wheel`` distribution is
9-
defined in :pep:`425`.
8+
Platform compatibility tags allow build tools to mark distributions as being
9+
compatible with specific platforms, and allows installers to understand which
10+
distributions are compatible with the system they are running on.
11+
12+
General platform tags
13+
=====================
14+
15+
The platform compatibility tagging model used for the ``wheel`` distribution
16+
format is defined in :pep:`425`.
1017

1118
.. _manylinux:
1219

13-
Manylinux tags
14-
==============
20+
Platform tags for Linux platforms
21+
=================================
22+
23+
The scheme defined in :pep:`425` is insufficient for public distribution of
24+
wheel files (and \*nix wheel files in general) to Linux platforms, due to the
25+
large ecosystem of Linux platforms and subtle differences between them.
26+
27+
Instead, :pep:`513` defines the ``manylinux`` standard, which represents a
28+
common subset of Linux platforms, and allows building wheels tagged with the
29+
``manylinux`` platform tag which can be used across most common Linux
30+
distributions.
31+
32+
There are multiple iterations of the ``manylinux`` specification, each
33+
representing the common subset of Linux platforms at a given point in time:
34+
35+
* ``manylinux1`` (:pep:`513`) supports ``x86_64`` and ``i686``
36+
architectures, and is based on a compatible Linux platform from 2007.
37+
* ``manylinux2010`` (:pep:`571`) supports ``x86_64`` and ``i686``
38+
architectures. and updates the previous specification to be based on a
39+
compatible Linux platform from 2010 instead.
40+
* ``manylinux2014`` (:pep:`599`) adds support for a number of
41+
additional architectures (``aarch64``, ``armv7l``, ``ppc64``, ``ppc64le``,
42+
and ``s390x``) and updates the base platform to a compatible Linux platform
43+
from 2014.
44+
45+
In general, distributions built for older versions of the specification are
46+
forwards-compatible (meaning that ``manylinux1`` distributions should continue
47+
to work on modern systems) but not backwards-compatible (meaning that
48+
``manylinux2010`` distributions are not expected to work on platforms that
49+
existed before 2010).
50+
51+
Package maintainers should attempt to target the most compatible specification
52+
possible, with the caveat that the provided build environment for
53+
``manylinux1`` has reached end-of-life, and the build environment for
54+
``manylinux2010`` will reach end-of-life in November 2020 [#]_, meaning that
55+
these images will no longer receive security updates.
56+
57+
Manylinux compatibility support
58+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
59+
60+
.. Note::
61+
The ``manylinux2014`` specification is relatively new and is not yet widely
62+
recognised by install tools.
1563

16-
The scheme defined in :pep:`425` is insufficient for public distribution
17-
of Linux wheel files (and \*nix wheel files in general), so the *manylinux*
18-
platform tags were defined, to allow providing wheels for many common Linux
19-
distributions. See :pep:`513` for more about how this works.
64+
The following table shows the minimum versions of relevant projects to support
65+
the various ``manylinux`` standards:
2066

21-
* ``manylinux1`` is defined in :pep:`513`, for x86_64 and i686 architectures.
22-
* ``manylinux2010`` is defined in :pep:`571`, for x86_64 and i686 architectures.
23-
It is based on a platform from 2010, whereas ``manylinux1`` is based on a
24-
platform from 2007. This means that ``manylinux2010`` packages are easier to
25-
create, but not compatible with some older systems where ``manylinux1``
26-
packages would work.
67+
========== ============== ================= =================
68+
Tool ``manylinux1`` ``manylinux2010`` ``manylinux2014``
69+
========== ============== ================= =================
70+
pip ``>=8.1.0`` ``>=19.0`` ``>=19.3`` [#]_
71+
auditwheel ``>=1.0.0`` ``>=2.0.0`` ``>=3.0.0`` [#]_
72+
========== ============== ================= =================
2773

28-
``manylinux2010`` is not yet widely recognised by install tools.
74+
.. [#] https://wiki.centos.org/About/Product
75+
.. [#] Not yet released.
76+
.. [#] Not yet released.

0 commit comments

Comments
 (0)