I noticed a bug/feature of Python 2.7 (and 3.X) distutils that worries me a bit. Let's try to compile a simple extension module:

$ python2.7 setup.py build_ext | grep -F .c
gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O2 -Wall 
-Wstrict-prototypes -fPIC -I/usr/include/python2.7 -c markupsafe/_speedups.c -o 
build/temp.linux-x86_64-2.7/markupsafe/_speedups.o

Everything looks fine until we put some build flags into environment (if we were building a Debian package, dpkg-buildpackage would do that for us):

$ eval $(dpkg-buildflags --export=sh)
$ rm -Rf build/
$ python2.7 setup.py build_ext | grep -F .c
gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -O2 -fPIC 
-I/usr/include/python2.7 -c markupsafe/_speedups.c -o 
build/temp.linux-x86_64-2.7/markupsafe/_speedups.o

Please note that "-fno-strict-aliasing" is no longer passed to gcc. I believe C extensions quite often exploit type punning that breaks strict aliasing rules, so omitting -fno-string-aliasing has a great potential for breakage.

My question is: is this is a bug in python2.7/python3.X? Or are we supposed to fix (all) the extensions that are built via distutils?

--
Jakub Wilk


--
To UNSUBSCRIBE, email to debian-python-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/20101211112730.ga8...@jwilk.net

Reply via email to