Package: libboost-python1.67-dev Version: 1.67.0-11 Severity: important
Hi, I was just trying to build LuxCore from source, and after installing all needed dependencies, installing Intel Embree manually, I could start compilation of LuxCore, (I can provide quick instructions how to do it exactly, it is pretty easy). however the last step, the linking of the main executable fails: user@debian:~/LuxCore/build$ make -j32 ... [ 96%] Linking CXX executable ../../bin/luxcoreui /usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/libboost_python.so: undefined reference to `PySlice_New' /usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/libboost_python.so: undefined reference to `PyList_Sort' /usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/libboost_python.so: undefined reference to `PySequence_GetSlice' /usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/libboost_python.so: undefined reference to `PyType_IsSubtype' /usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/libboost_python.so: undefined reference to `PyExc_RuntimeError' /usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/libboost_python.so: undefined reference to `PyUnicode_Type' /usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/libboost_python.so: undefined reference to `PyString_Size' /usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/libboost_python.so: undefined reference to `PyStaticMethod_New' /usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/libboost_python.so: undefined reference to `PyEval_CallFunction' /usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/libboost_numpy.so: undefined reference to `PyErr_Print' /usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/libboost_python.so: undefined reference to `PyString_FromStringAndSize' /usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/libboost_python.so: undefined reference to `PyBaseObject_Type' .... $ user@debian:~/LuxCore/build$ ls -l /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/libboost_python.so lrwxrwxrwx 1 root root 20 Nov 30 17:12 /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/libboost_python.so -> libboost_python27.so Could it be that some CMake files or pkgconfig stuff, do not properly add -lpython{,2,3} ? Also in libbost-python1.67.0 there is no libboost_python.so anyway: # dpkg -L libboost-python1.67.0 /. /usr /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/libboost_python27.so.1.67.0 /usr/lib/x86_64-linux-gnu/libboost_python36.so.1.67.0 /usr/lib/x86_64-linux-gnu/libboost_python37.so.1.67.0 ... # But it is in the -dev package: $ dpkg -L libboost-python1.67-dev /. /usr /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/libboost_python27.a /usr/lib/x86_64-linux-gnu/libboost_python36.a /usr/lib/x86_64-linux-gnu/libboost_python37.a /usr/share /usr/share/doc /usr/share/doc/libboost-python1.67-dev /usr/share/doc/libboost-python1.67-dev/changelog.Debian.gz /usr/share/doc/libboost-python1.67-dev/copyright /usr/lib/x86_64-linux-gnu/libboost_python.a /usr/lib/x86_64-linux-gnu/libboost_python.so /usr/lib/x86_64-linux-gnu/libboost_python27.so /usr/lib/x86_64-linux-gnu/libboost_python3-py37.a /usr/lib/x86_64-linux-gnu/libboost_python3-py37.so /usr/lib/x86_64-linux-gnu/libboost_python3.a /usr/lib/x86_64-linux-gnu/libboost_python3.so /usr/lib/x86_64-linux-gnu/libboost_python36.so /usr/lib/x86_64-linux-gnu/libboost_python37.so $ $ ls -l /usr/lib/x86_64-linux-gnu/libboost_python.so lrwxrwxrwx 1 root root 20 Nov 30 17:12 /usr/lib/x86_64-linux-gnu/libboost_python.so -> libboost_python27.so $ $ objdump -R -T /usr/lib/x86_64-linux-gnu/libboost_python.so | grep PySlice 0000000000000000 D *UND* 0000000000000000 PySlice_New 0000000000045778 R_X86_64_JUMP_SLOT PySlice_New $ Yet, it doesn't link to proper library: $ ldd /usr/lib/x86_64-linux-gnu/libboost_python.so linux-vdso.so.1 (0x00007ffdc62cf000) librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f70cfa6e000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f70cfa69000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f70cfa48000) libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007f70cfa43000) libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f70cf8c0000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f70cf72c000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f70cf710000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f70cf553000) /lib64/ld-linux-x86-64.so.2 (0x00007f70cfb00000) $ (no *python* libs linked). Is it using libdl to open python libs dynamically? How would that even work? The libpython2{,7}-dev are installed, and the symbols are in proper places: $ objdump -T -R /usr/lib/x86_64-linux-gnu/libpython2.7.so | grep PySlice_New 0000000000172820 g DF .text 00000000000000ec Base PySlice_New $ Why libbost_pythonX is not linked with -lpythonX ? It looks somehow similar to: https://bugs.archlinux.org/task/22800 https://bugs.archlinux.org/task/23130 https://svn.boost.org/trac10/ticket/5263 -- System Information: Debian Release: buster/sid APT prefers testing APT policy: (500, 'testing') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 4.18.0-2-amd64 (SMP w/32 CPU cores) Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE=en_US.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /usr/bin/dash Init: systemd (via /run/systemd/system) LSM: AppArmor: enabled Versions of packages libboost-python1.67-dev depends on: ii libboost-python1.67.0 1.67.0-11 ii libboost1.67-dev 1.67.0-11 ii python-dev 2.7.15-3 ii python3-dev 3.6.7-1 libboost-python1.67-dev recommends no packages. Versions of packages libboost-python1.67-dev suggests: pn gccxml <none> pn libboost1.67-doc <none> -- no debconf information