Issue 7115: extension module builds fail when using paths in the extension name (original) (raw)
This change shows a regression (https://bugs.launchpad.net/bugs/449734), the setup.py file might not be correct, but it did work before this change (with plain distutils). Quoting from the report:
Set setup.py file looks like this: setup(name='update-manager', ... ext_modules=[Extension('UpdateManager/fdsend', ['UpdateManager/fdsend/fdsend.c'])], ...
With 2.6.4~rc1 the logs read: copying build/lib.linux-x86_64-2.6/fdsend.so -> /tmp/buildd/update-manager-0.126.1/debian/tmp/usr/lib/python2.6/dist-packages
With 2.6.3: copying build/lib.linux-x86_64-2.6/UpdateManager/fdsend.so -> /home/egon/devel/update-manager/checkout/build-area/update-manager-0.126.1/debian/tmp/usr/lib/python2.6/dist-packages/UpdateManager
So it looks like python is eating a prefix.
http://bugs.python.org/issue7064
is why this change was made.
Reading that, it was done because setuptools assumes that the method is always called with the full dotted name, when it was just being called with the last part of it.
However, update-manager isn't using a dotted module path anyway, it's passing a path.
http://docs.python.org/distutils/setupscript.html#extension-names-and-packages
shows that you would be expected to use
ext_modules=[Extension('UpdateManager.fdsend',
['UpdateManager/fdsend/fdsend.c'])],
(note . not / in the first line)