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

Reply via email to