[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: public extension linked with libpython* vs. -Wl,-no-undefined



* Nico Schlömer <nico.schloemer@gmail.com>, 2014-03-17, 15:49:
I'm building a package with Python support and would like to reduce the number of warnings that dh_python2 gives me.

One of them is

  public extension linked with libpython2.7

for a number of libraries. It is true that libpython2.7 is linked into them,

$ readelf -d /path/to/_ML.so
[...]
0x0000000000000001 (NEEDED)             Shared library: [libpython2.7.so.1.0]
[...]

but when I don't, builds with "-Wl,-no-undefined" will fail.

What is the reason for discouraging explicit links with libpython*?

The fundamental reason is that, except in unusual circumstances, this library won't be used. Python Policy §2.1 reads: “some distributions link extensions to libpython, but this is not the case in Debian as symbols might as well be resolved by ‘/usr/bin/python<X>.<Y>’ which is not linked to libpython.”

In the past there used to be also a strong practical reason against linking to libpython: every ELF dependency on libpython2.X was translated by dpkg-shlibdeps to package dependency on python2.X, which typically meant that your package ended up depending on multiple different Python versions. But theses days there's only one supported Python (2.X) version, so this is not such a big deal.

BTW, there's a greater chance to meet a Python expert on debian-python@ than here. :-P

--
Jakub Wilk


Reply to: