Mandate that manylinux1 wheels be built without --with-fpectl (#166)

This commit is contained in:
Nathaniel J. Smith 2016-12-25 11:19:18 -08:00 committed by Brett Cannon
parent e4c4632b00
commit e526964e5d
1 changed files with 23 additions and 0 deletions

View File

@ -244,6 +244,7 @@ This is a rather complex and subtle issue that extends beyond
the scope of ``manylinux1``; for more discussion see: [9]_, [10]_,
[11]_.
UCS-2 vs UCS-4 builds
---------------------
@ -282,10 +283,30 @@ But you should never have a wheel with a name like::
PKG-VERSION-cp27-none-manylinux1_x86_64.whl
^^^^ BAD! Don't do this!
This wheel claims to be simultaneously compatible with *both* ucs2 and
ucs4 builds, which is bad.
We note for information that the ``ucs4`` ABI appears to be much more
widespread among Linux CPython distributors.
fpectl builds vs. no fpectl builds
----------------------------------
All extant versions of CPython can be built either with or without the
``--with-fpectl`` flag to ``configure``. It turns out that this
changes the CPython ABI: extensions that are built against a
no-``fpectl`` CPython are always compatible with yes-``fpectl``
CPython, but the reverse is not necessarily true. (Symptom: errors at
import time complaining about ``undefined symbol: PyFPE_jbuf``.) See:
[16]_.
For maximum compatibility, therefore, the CPython used to build
manylinux1 wheels must be compiled *without* the ``--with-fpectl``
flag, and manylinux1 extensions must not reference the symbol
``PyFPE_jbuf``.
Compilation of Compliant Wheels
===============================
@ -600,6 +621,8 @@ References
(https://fedoraproject.org/wiki/Bundled_Software_policy)
.. [15] Debian Policy Manual -- 4.13: Convenience copies of code
(https://www.debian.org/doc/debian-policy/ch-source.html#s-embeddedfiles)
.. [16] numpy bug report:
https://github.com/numpy/numpy/issues/8415#issuecomment-269095235
Copyright