[pkg-boost-devel] Bug#842928: libboost-python1.62.0 exports Python 2 symbols for Python 3

Khoyo khoyobegenn at gmail.com
Wed Nov 2 11:46:41 UTC 2016


Package: libboost-python1.62.0

Version: 1.62.0+dfsg-2

This fails with libboost-python 1.62, but works with 1.61:

 % g++ -I/usr/include/python3.5m/ conftest.cc -lboost_python-py35 -lpython3.5m
/tmp/cc6JvhrE.o: In function `PyInit_empty':
conftest.cc:(.text+0x8a): undefined reference to
`boost::python::detail::init_module(PyModuleDef&, void (*)())'
/usr/lib/gcc/x86_64-linux-gnu/6/../../../x86_64-linux-gnu/libboost_python-py35.so:
undefined reference to `PyString_Size'
/usr/lib/gcc/x86_64-linux-gnu/6/../../../x86_64-linux-gnu/libboost_python-py35.so:
undefined reference to `PyUnicodeUCS4_FromEncodedObject'
/usr/lib/gcc/x86_64-linux-gnu/6/../../../x86_64-linux-gnu/libboost_python-py35.so:
undefined reference to `PyFile_FromString'
/usr/lib/gcc/x86_64-linux-gnu/6/../../../x86_64-linux-gnu/libboost_python-py35.so:
undefined reference to `PyString_Type'
/usr/lib/gcc/x86_64-linux-gnu/6/../../../x86_64-linux-gnu/libboost_python-py35.so:
undefined reference to `PyInt_Type'
/usr/lib/gcc/x86_64-linux-gnu/6/../../../x86_64-linux-gnu/libboost_python-py35.so:
undefined reference to `PyString_FromString'
/usr/lib/gcc/x86_64-linux-gnu/6/../../../x86_64-linux-gnu/libboost_python-py35.so:
undefined reference to `PyUnicodeUCS4_AsWideChar'
/usr/lib/gcc/x86_64-linux-gnu/6/../../../x86_64-linux-gnu/libboost_python-py35.so:
undefined reference to `PyString_FromStringAndSize'
/usr/lib/gcc/x86_64-linux-gnu/6/../../../x86_64-linux-gnu/libboost_python-py35.so:
undefined reference to `Py_InitModule4_64'
/usr/lib/gcc/x86_64-linux-gnu/6/../../../x86_64-linux-gnu/libboost_python-py35.so:
undefined reference to `PyString_FromFormat'
/usr/lib/gcc/x86_64-linux-gnu/6/../../../x86_64-linux-gnu/libboost_python-py35.so:
undefined reference to `PyNumber_Divide'
/usr/lib/gcc/x86_64-linux-gnu/6/../../../x86_64-linux-gnu/libboost_python-py35.so:
undefined reference to `PyNumber_InPlaceDivide'
/usr/lib/gcc/x86_64-linux-gnu/6/../../../x86_64-linux-gnu/libboost_python-py35.so:
undefined reference to `PyInt_AsLong'
/usr/lib/gcc/x86_64-linux-gnu/6/../../../x86_64-linux-gnu/libboost_python-py35.so:
undefined reference to `PyString_InternFromString'
/usr/lib/gcc/x86_64-linux-gnu/6/../../../x86_64-linux-gnu/libboost_python-py35.so:
undefined reference to `PyClass_Type'
/usr/lib/gcc/x86_64-linux-gnu/6/../../../x86_64-linux-gnu/libboost_python-py35.so:
undefined reference to `PyString_AsString'
/usr/lib/gcc/x86_64-linux-gnu/6/../../../x86_64-linux-gnu/libboost_python-py35.so:
undefined reference to `PyInt_FromLong'
/usr/lib/gcc/x86_64-linux-gnu/6/../../../x86_64-linux-gnu/libboost_python-py35.so:
undefined reference to `PyFile_AsFile'
collect2: error: ld returned 1 exit status

The Debian version of `libboost_python-py35.so.1.62.0` does indeed
need these symbols, but they are not exported in Python 3 (they are
part of
the Python 2 C API):

$ readelf --dyn-syms
/usr/lib/x86_64-linux-gnu/libboost_python-py35.so.1.62.0 | grep
PyInt_Type
    54: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND PyInt_Type
$ readelf --dyn-syms /usr/lib/x86_64-linux-gnu/libpython3.5m.so | grep
PyInt_Type
$

`libboost_python-py35.so.1.61.0` didn't need those, and other
distributions packages don't either, so I think this is a Debian bug.



More information about the pkg-boost-devel mailing list