@@ -8,18 +8,18 @@ Archives: https://mail.python.org/mailman/listinfo/wheel-builders
8
8
Older archives: https://groups.google.com/forum/#!forum/manylinux-discuss
9
9
10
10
The goal of the manylinux project is to provide a convenient way to
11
- distribute binary Python extensions as wheels on Linux. This effort
12
- has produced `PEP 513 <https://www.python.org/dev/peps/pep-0513/ >`_ which
13
- is further enhanced by `PEP 571 <https://www.python.org/dev/peps/pep-0571/ >`_
14
- and now `PEP 599 <https://www.python.org/dev/peps/pep-0599/ >`_ defining
15
- `` manylinux2014_* `` platform tags .
11
+ distribute binary Python extensions as wheels on Linux.
12
+ This effort has produced `PEP 513 <https://www.python.org/dev/peps/pep-0513/ >`_ (manylinux1),
13
+ `PEP 571 <https://www.python.org/dev/peps/pep-0571/ >`_ (manylinux2010),
14
+ `PEP 599 <https://www.python.org/dev/peps/pep-0599/ >`_ (manylinux2014) and
15
+ `PEP 600 < https://www.python.org/dev/peps/pep-0600/ >`_ (manylinux_x_y) .
16
16
17
17
PEP 513 defined ``manylinux1_x86_64 `` and ``manylinux1_i686 `` platform tags
18
18
and the wheels were built on Centos5. Centos5 reached End of Life (EOL) on
19
- March 31st, 2017 and thus PEP 571 was proposed .
19
+ March 31st, 2017.
20
20
21
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)
22
+ tags and the wheels were built on Centos6. Centos6 reached End of Life (EOL)
23
23
on November 30th, 2020.
24
24
25
25
PEP 599 defines the following platform tags:
@@ -41,8 +41,10 @@ PEP 599 defines the following platform tags:
41
41
Wheels are built on CentOS 7 which will reach End of Life (EOL)
42
42
on June 30th, 2024.
43
43
44
- Code and details regarding ``manylinux1 `` can be found here:
45
- `manylinux1 <https://github.com/pypa/manylinux/tree/manylinux1 >`_.
44
+ PEP 600 has been designed to be "future-proof" and does not enforce specific symbols and a specific distro to build.
45
+ It only states that a wheel tagged ``manylinux_x_y `` shall work on any distro based on ``glibc>=x.y ``.
46
+ The manylinux project supports ``manylinux_2_24 `` images for ``x86_64 ``, ``i686 ``, ``aarch64 ``, ``ppc64le `` and ``s390x ``.
47
+
46
48
47
49
Wheel packages compliant with those tags can be uploaded to
48
50
`PyPI <https://pypi.python.org >`_ (for instance with `twine
52
54
+-------------------+----------------------------------+
53
55
| ``manylinux `` tag | Client-side pip version required |
54
56
+===================+==================================+
57
+ | ``manylinux_x_y `` | pip >= 20.3 |
58
+ +-------------------+----------------------------------+
55
59
| ``manylinux2014 `` | pip >= 19.3 |
56
60
+-------------------+----------------------------------+
57
61
| ``manylinux2010 `` | pip >= 19.0 |
58
62
+-------------------+----------------------------------+
59
63
| ``manylinux1 `` | pip >= 8.1.0 |
60
64
+-------------------+----------------------------------+
61
65
62
- The manylinux2014 tags allow projects to distribute wheels that are
66
+ The various manylinux tags allow projects to distribute wheels that are
63
67
automatically installed (and work!) on the vast majority of desktop
64
68
and server Linux distributions.
65
69
@@ -73,74 +77,63 @@ Building manylinux-compatible wheels is not trivial; as a general
73
77
rule, binaries built on one Linux distro will only work on other Linux
74
78
distros that are the same age or newer. Therefore, if we want to make
75
79
binaries that run on most Linux distros, we have to use an old enough
76
- distro -- CentOS 7 .
80
+ distro.
77
81
78
82
79
- Rather than forcing you to install CentOS 7 yourself, install Python,
83
+ Rather than forcing you to install an old distro yourself, install Python,
80
84
etc., we provide `Docker <https://docker.com/ >`_ images where we've
81
85
done the work for you. The images are uploaded to `quay.io `_ and are tagged
82
86
for repeatable builds.
83
87
84
- manylinux1 (CentOS 5 based)
85
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~
86
-
87
- x86-64 image: ``quay.io/pypa/manylinux1_x86_64 ``
88
-
89
- .. image :: https://quay.io/repository/pypa/manylinux1_x86_64/status
90
- :target: https://quay.io/repository/pypa/manylinux1_x86_64
91
88
92
- i686 image: ``quay.io/pypa/manylinux1_i686 ``
93
-
94
- .. image :: https://quay.io/repository/pypa/manylinux1_i686/status
95
- :target: https://quay.io/repository/pypa/manylinux1_i686
96
-
97
- manylinux2010 (CentOS 6 based)
98
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
89
+ manylinux_2_24 (Debian 9 based)
90
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
99
91
100
- x86-64 image: ``quay.io/pypa/manylinux2010_x86_64 ``
92
+ - x86_64 image: ``quay.io/pypa/manylinux_2_24_x86_64 ``
93
+ - i686 image: ``quay.io/pypa/manylinux_2_24_i686 ``
94
+ - aarch64 image: ``quay.io/pypa/manylinux_2_24_aarch64 ``
95
+ - ppc64le image: ``quay.io/pypa/manylinux_2_24_ppc64le ``
96
+ - s390x image: ``quay.io/pypa/manylinux_2_24_s390x ``
101
97
102
- .. image :: https://quay.io/repository/pypa/manylinux2010_x86_64/status
103
- :target: https://quay.io/repository/pypa/manylinux2010_x86_64
104
-
105
- i686 image: ``quay.io/pypa/manylinux2010_i686 ``
106
-
107
- .. image :: https://quay.io/repository/pypa/manylinux2010_i686/status
108
- :target: https://quay.io/repository/pypa/manylinux2010_i686
109
98
110
99
manylinux2014 (CentOS 7 based)
111
100
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
112
101
113
- x86_64 image: ``quay.io/pypa/manylinux2014_x86_64 ``
102
+ - x86_64 image: ``quay.io/pypa/manylinux2014_x86_64 ``
103
+ - i686 image: ``quay.io/pypa/manylinux2014_i686 ``
104
+ - aarch64 image: ``quay.io/pypa/manylinux2014_aarch64 ``
105
+ - ppc64le image: ``quay.io/pypa/manylinux2014_ppc64le ``
106
+ - s390x image: ``quay.io/pypa/manylinux2014_s390x ``
114
107
115
- .. image :: https://quay.io/repository/pypa/manylinux2014_x86_64/status
116
- :target: https://quay.io/repository/pypa/manylinux2014_x86_64
117
108
118
- i686 image: ``quay.io/pypa/manylinux2014_i686 ``
109
+ manylinux2010 (CentOS 6 based - EOL)
110
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
119
111
120
- .. image :: https:// quay.io/repository/ pypa/manylinux2014_i686/status
121
- :target: https:// quay.io/repository/ pypa/manylinux2014_i686
112
+ - x86-64 image: `` quay.io/pypa/manylinux2010_x86_64 ``
113
+ - i686 image: `` quay.io/pypa/manylinux2010_i686 ``
122
114
123
- aarch64 image: ``quay.io/pypa/manylinux2014_aarch64 ``
124
115
125
- .. image :: https://quay.io/repository/pypa/manylinux2014_aarch64/status
126
- :target: https://quay.io/repository/pypa/manylinux2014_aarch64
116
+ manylinux1 (CentOS 5 based - EOL)
117
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
127
118
128
- ppc64le image: `` quay.io /pypa/manylinux2014_ppc64le ``
119
+ Code and details regarding `` manylinux1 `` can be found in the ` manylinux1 branch < https://github.com /pypa/manylinux/tree/manylinux1 >`_.
129
120
130
- .. image :: https://quay.io/repository/pypa/manylinux2014_ppc64le/status
131
- :target: https://quay.io/repository/pypa/manylinux2014_ppc64le
121
+ Support for ``manylinux1 `` will `end on January 1st, 2022 <https://github.com/pypa/manylinux/issues/994 >`_.
132
122
133
- s390x image: ``quay.io/pypa/manylinux2014_s390x ``
123
+ - x86-64 image: ``quay.io/pypa/manylinux1_x86_64 ``
124
+ - i686 image: ``quay.io/pypa/manylinux1_i686 ``
134
125
135
- .. image :: https://quay.io/repository/pypa/manylinux2014_s390x/status
136
- :target: https://quay.io/repository/pypa/manylinux2014_s390x
137
126
138
- These images are rebuilt using GitHub Actions on every commit to this
127
+ All images are rebuilt using GitHub Actions / Travis-CI on every commit to this
139
128
repository; see the
140
129
`docker/ <https://github.com/pypa/manylinux/tree/master/docker >`_
141
130
directory for source code.
142
131
143
- The images currently contain:
132
+
133
+ Image content
134
+ ~~~~~~~~~~~~~
135
+
136
+ All images currently contain:
144
137
145
138
- CPython 3.5, 3.6, 3.7, 3.8 and 3.9, installed in
146
139
``/opt/python/<python tag>-<abi tag> ``. The directories are named
@@ -149,8 +142,7 @@ The images currently contain:
149
142
can be used to produce wheels named like
150
143
``<pkg>-<version>-cp37-cp37m-<arch>.whl ``.
151
144
152
- - Devel packages for all the libraries that PEP 571/599 allows you to
153
- assume are present on the host system
145
+ - Development packages for all the libraries that PEP 571/599 list. One should not assume the presence of any other development package.
154
146
155
147
- The `auditwheel <https://pypi.python.org/pypi/auditwheel >`_ tool
156
148
@@ -170,6 +162,8 @@ current (root) directory:
170
162
171
163
$ PLATFORM=$(uname -m) POLICY=manylinux2014 COMMIT_SHA=latest ./build.sh
172
164
165
+ Please not that the Docker build is using `buildx <https://github.com/docker/buildx >`_.
166
+
173
167
Example
174
168
-------
175
169
@@ -205,6 +199,9 @@ reached EOL was discussed in `PEP 571 <https://www.python.org/dev/peps/pep-0571/
205
199
The proposal to upgrade ``manylinux2010 `` to ``manylinux2014 `` was
206
200
discussed in `PEP 599 <https://www.python.org/dev/peps/pep-0599/ >`_.
207
201
202
+ The proposal for a "future-proof" ``manylinux_x_y `` definition was
203
+ discussed in `PEP 600 <https://www.python.org/dev/peps/pep-0600/ >`_.
204
+
208
205
This repo also has some analysis code that was used when putting
209
206
together the original proposal in the ``policy-info/ `` directory.
210
207
0 commit comments