[Debian-med-packaging] How to enable Python3 for python-freecontact
Andreas Tille
andreas at an3as.eu
Tue Jul 3 18:17:00 BST 2018
Hi,
as far as I read the docs python-freecontact[1] works with Python3. The
former maintainer left the line
### once libboost-python-dev will be provided for Python3
in d/rules and since I've found
libboost-python1.62.0: /usr/lib/x86_64-linux-gnu/libboost_python-py35.so.1.62.0
libboost-python1.62.0: /usr/lib/x86_64-linux-gnu/libboost_python-py36.so.1.62.0
libboost-python1.63.0: /usr/lib/x86_64-linux-gnu/libboost_python-py35.so.1.63.0
libboost-python1.63.0: /usr/lib/x86_64-linux-gnu/libboost_python-py36.so.1.63.0
(missing py37 - but that's not the point for the moment) I tried to
activate this. When I tried to run the test suite it turned out that
the Python3 3.6 module is linked as follows:
$ ldd /usr/lib/python3/dist-packages/freecontact.cpython-36m-x86_64-linux-gnu.so | grep boost
libboost_python-py27.so.1.62.0 => /usr/lib/x86_64-linux-gnu/libboost_python-py27.so.1.62.0 (0x00007f09c84a8000)
The cause for this becomes obvious in
$ grep -- "-lfreecontact -lboost_python" python-freecontact_1.1-3_amd64.build
x86_64-linux-gnu-g++ -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-z,relro -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -Wdate-time -D_FORTIFY_SOURCE=2 -g -fdebug-prefix-map=/build/python2.7-jgBwco/python2.7-2.7.15=. -fstack-protector-strong -Wformat -Werror=format-security -Wl,-z,relro -Wl,-z,now -g -O2 -fdebug-prefix-map=/build/python-freecontact-1.1=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 build/temp.linux-amd64-2.7/src/freecontact.o -lfreecontact -lboost_python -o /build/python-freecontact-1.1/.pybuild/cpython2_2.7_freecontact/build/freecontact.so
x86_64-linux-gnu-g++ -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,relro -Wl,-z,now -g -O2 -fdebug-prefix-map=/build/python-freecontact-1.1=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 build/temp.linux-amd64-3.7/src/freecontact.o -lfreecontact -lboost_python -o /build/python-freecontact-1.1/.pybuild/cpython3_3.7_freecontact/build/freecontact.cpython-37m-x86_64-linux-gnu.so
x86_64-linux-gnu-g++ -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,relro -Wl,-z,now -g -O2 -fdebug-prefix-map=/build/python-freecontact-1.1=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 build/temp.linux-amd64-3.6/src/freecontact.o -lfreecontact -lboost_python -o /build/python-freecontact-1.1/.pybuild/cpython3_3.6_freecontact/build/freecontact.cpython-36m-x86_64-linux-gnu.so
and
$ readlink /usr/lib/x86_64-linux-gnu/libboost_python.so
libboost_python-py27.so
So I need to find some way thet the library linker flag is not
-lboost_python but rather -lboost_python-${PYVERSION}. When looking
at setup.py it says:
libraries = ['freecontact', 'boost_python'])]
Is there any way to have different library sections in setup.py
to accomplish version specific libraries linked?
Kind regards
Andreas.
[1] https://salsa.debian.org/med-team/python-freecontact
--
http://fam-tille.de
More information about the Debian-med-packaging
mailing list