@@ -11,21 +11,48 @@ The goal of the manylinux project is to provide a convenient way to
11
11
distribute binary Python extensions as wheels on Linux. This effort
12
12
has produced `PEP 513 <https://www.python.org/dev/peps/pep-0513/ >`_ which
13
13
is further enhanced by `PEP 571 <https://www.python.org/dev/peps/pep-0571/ >`_
14
- defining ``manylinux2010_x86_64 `` and ``manylinux2010_i686 `` platform tags.
14
+ and now `PEP 599 <https://www.python.org/dev/peps/pep-0599/ >`_ defining
15
+ ``manylinux2014_* `` platform tags.
15
16
16
17
PEP 513 defined ``manylinux1_x86_64 `` and ``manylinux1_i686 `` platform tags
17
- and the wheels were built on Centos5. Centos5 reached End of Life (EOL) on
18
+ and the wheels were built on Centos5. Centos5 reached End of Life (EOL) on
18
19
March 31st, 2017 and thus PEP 571 was proposed.
19
20
20
- Code and details regarding ``manylinux1 `` can be found here:
21
+ PEP 571 defined ``manylinux2010_x86_64 `` and ``manylinux2010_i686 `` platform
22
+ tags and the wheels were built on Centos6. Centos6 will reach End of Life (EOL)
23
+ on November 30th, 2020.
24
+
25
+ PEP 599 defines the following platform tags:
26
+
27
+ - ``manylinux2014_x86_64 ``
28
+
29
+ - ``manylinux2014_i686 ``
30
+
31
+ - ``manylinux2014_aarch64 ``
32
+
33
+ - ``manylinux2014_armv7l ``
34
+
35
+ - ``manylinux2014_ppc64 ``
36
+
37
+ - ``manylinux2014_ppc64le ``
38
+
39
+ - ``manylinux2014_s390x ``
40
+
41
+ Wheels are built on CentOS 7 which will reach End of Life (EOL)
42
+ on June 30th, 2024.
43
+
44
+ Code and details regarding ``manylinux1 `` can be found here:
21
45
`manylinux1 <https://github.com/pypa/manylinux/tree/manylinux1 >`_.
22
46
47
+ Code and details regarding ``manylinux2010 `` can be found here:
48
+ `manylinux2010 <https://github.com/pypa/manylinux/tree/manylinux2010 >`_.
49
+
23
50
Wheel packages compliant with those tags can be uploaded to
24
51
`PyPI <https://pypi.python.org >`_ (for instance with `twine
25
52
<https://pypi.python.org/pypi/twine> `_) and can be installed with
26
- **pip 19.0 and later **.
53
+ **pip 19.3 and later **.
27
54
28
- The manylinux2010 tags allow projects to distribute wheels that are
55
+ The manylinux2014 tags allow projects to distribute wheels that are
29
56
automatically installed (and work!) on the vast majority of desktop
30
57
and server Linux distributions.
31
58
@@ -41,18 +68,28 @@ Docker images
41
68
Building manylinux-compatible wheels is not trivial; as a general
42
69
rule, binaries built on one Linux distro will only work on other Linux
43
70
distros that are the same age or newer. Therefore, if we want to make
44
- binaries that run on most Linux distros, we have to use a very old
45
- distro -- CentOS 6 .
71
+ binaries that run on most Linux distros, we have to use an old enough
72
+ distro -- CentOS 7 .
46
73
47
74
48
- Rather than forcing you to install CentOS 6 yourself, install Python,
49
- etc., we provide a `Docker <https://docker.com/ >`_ image where we've
75
+ Rather than forcing you to install CentOS 7 yourself, install Python,
76
+ etc., we provide `Docker <https://docker.com/ >`_ images where we've
50
77
done the work for you:
51
78
52
- 64-bit image (x86-64): ``quay.io/pypa/manylinux2010_x86_64 ``
79
+ x86_64 image: ``quay.io/pypa/manylinux2014_x86_64 ``
80
+
81
+ .. image :: https://quay.io/repository/pypa/manylinux2014_x86_64/status
82
+ :target: https://quay.io/repository/pypa/manylinux2014_x86_64
53
83
54
- .. image :: https://quay.io/repository/pypa/manylinux2010_x86_64/status
55
- :target: https://quay.io/repository/pypa/manylinux2010_x86_64
84
+ i686 image: ``quay.io/pypa/manylinux2014_i686 ``
85
+
86
+ .. image :: https://quay.io/repository/pypa/manylinux2014_i686/status
87
+ :target: https://quay.io/repository/pypa/manylinux2014_i686
88
+
89
+ aarch64 image: ``quay.io/pypa/manylinux2014_aarch64 ``
90
+
91
+ .. image :: https://quay.io/repository/pypa/manylinux2014_aarch64/status
92
+ :target: https://quay.io/repository/pypa/manylinux2014_aarch64
56
93
57
94
58
95
These images are rebuilt using Travis-CI on every commit to this
@@ -62,52 +99,40 @@ directory for source code.
62
99
63
100
The images currently contain:
64
101
65
- - CPython 2.7, 3.4 , 3.5 , 3.6 and 3.7 , installed in
102
+ - CPython 3.5 , 3.6 , 3.7 and 3.8 , installed in
66
103
``/opt/python/<python tag>-<abi tag> ``. The directories are named
67
104
after the PEP 425 tags for each environment --
68
- e.g. ``/opt/python/cp27-cp27mu `` contains a wide-unicode CPython 2.7
69
- build, and can be used to produce wheels named like
70
- ``<pkg>-<version>-cp27-cp27mu -<arch>.whl ``.
105
+ e.g. ``/opt/python/cp35-cp35m `` contains a CPython 3.5 build, and
106
+ can be used to produce wheels named like
107
+ ``<pkg>-<version>-cp35-cp35m -<arch>.whl ``.
71
108
72
- - Devel packages for all the libraries that PEP 571 allows you to
109
+ - Devel packages for all the libraries that PEP 599 allows you to
73
110
assume are present on the host system
74
111
75
112
- The `auditwheel <https://pypi.python.org/pypi/auditwheel >`_ tool
76
113
77
- Note that prior to CPython 3.3, there were two ABI-incompatible ways
78
- of building CPython: ``--enable-unicode=ucs2 `` and
79
- ``--enable-unicode=ucs4 ``. We provide both versions
80
- (e.g. ``/opt/python/cp27-cp27m `` for narrow-unicode,
81
- ``/opt/python/cp27-cp27mu `` for wide-unicode). NB: essentially all
82
- Linux distributions configure CPython in ``mu ``
83
- (``--enable-unicode=ucs4 ``) mode, but ``--enable-unicode=ucs2 `` builds
84
- are also encountered in the wild. Other less common or virtually
85
- unheard of flag combinations (such as ``--with-pydebug `` (``d ``) and
86
- ``--without-pymalloc `` (absence of ``m ``)) are not provided.
87
114
88
115
Building Docker images
89
116
----------------------
90
117
91
- To build the Docker images, you will need to fetch the tarballs to
92
- ``docker/sources/ `` prior to building. This can be done with the
93
- provided prefetch script, after which you can proceed with building.
94
- Please run the following command from the current (root) directory::
118
+ To build the Docker images, please run the following command from the
119
+ current (root) directory:
95
120
96
121
$ PLATFORM=$(uname -m) TRAVIS_COMMIT=latest ./build.sh
97
122
98
123
Example
99
124
-------
100
125
101
- An example project which builds 64-bit wheels for each Python interpreter
126
+ An example project which builds x86_64 wheels for each Python interpreter
102
127
version can be found here: https://github.com/pypa/python-manylinux-demo. The
103
- repository also contains demo to build 32-bit and 64-bit wheels with ``manylinux1 ``
128
+ repository also contains demo to build i686 and x86_64 wheels with ``manylinux1 ``
104
129
tags.
105
130
106
131
This demonstrates how to use these docker images in conjunction with auditwheel
107
132
to build manylinux-compatible wheels using the free `travis ci <https://travis-ci.org/ >`_
108
133
continuous integration service.
109
134
110
- (NB: for the 32-bit images running on a 64-bit host machine, it's necessary to run
135
+ (NB: for the i686 images running on a x86_64 host machine, it's necessary to run
111
136
everything under the command line program `linux32 `, which changes reported architecture
112
137
in new program environment. See `this example invocation
113
138
<https://github.com/pypa/python-manylinux-demo/blob/master/.travis.yml#L14> `_)
@@ -124,9 +149,12 @@ where the PEP was originally written, so if for some reason you really
124
149
want to see the full history of edits it went through, then this is
125
150
the place to look.
126
151
127
- The proposal to upgrade ``manylinux1 `` to ``manylinux2010 `` after Centos5
152
+ The proposal to upgrade ``manylinux1 `` to ``manylinux2010 `` after Centos5
128
153
reached EOL was discussed in `PEP 571 <https://www.python.org/dev/peps/pep-0571/ >`_.
129
154
155
+ The proposal to upgrade ``manylinux2010 `` to ``manylinux2014 `` was
156
+ discussed in `PEP 599 <https://www.python.org/dev/peps/pep-0599/ >`_.
157
+
130
158
This repo also has some analysis code that was used when putting
131
159
together the original proposal in the ``policy-info/ `` directory.
132
160
0 commit comments