Bug#979040: python3-sentencepiece: undefined symbol _ZN13sentencepiece4util6StatusD1Ev

Kentaro Hayashi kenhys at xdump.org
Sun Jan 31 11:45:02 GMT 2021


It seems that this issue is occured when link is executed via dh.

dh_auto_build --sourcedirectory=python --buildsystem=pybuild 
invokes the following command:

  x86_64-linux-gnu-g++ -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-z,relro -g -fwrapv -O2 -Wl,-z,relro -g -O2 -ffile-prefix-map=/debian/sentencepiece.tmp=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 build/temp.linux-x86_64-3.9/src/sentencepiece/sentencepiece_wrap.o -o /debian/sentencepiece.tmp/.pybuild/cpython3_3.9/build/sentencepiece/_sentencepiece.cpython-39-x86_64-linux-gnu.so -L/debian/sentencepiece.tmp/obj-x86_64-linux-gnu/src -lsentencepiece -lsentencepiece_train

When the above command is executed via dh_auto_build, there is no refererence to
libsentencepiece.

ldd /debian/sentencepiece.tmp/.pybuild/cpython3_3.9/build/sentencepiece/_sentencepiece.cpython-39-x86_64-linux-gnu.so
    linux-vdso.so.1 (0x00007ffd3edbb000)
    libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f8217f81000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f8217f67000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f8217da2000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f8217c5e000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f8218170000)

Instead, link is executed via console by hand, the reference to libsentencepiece exists.

 ldd /debian/sentencepiece.tmp/.pybuild/cpython3_3.9/build/sentencepiece/_sentencepiece.cpython-39-x86_64-linux-gnu.so
    linux-vdso.so.1 (0x00007ffd3edbb000)
    libsentencepiece.so.0 => not found
    libsentencepiece_train.so.0 => not found
    libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f8217f81000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f8217f67000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f8217da2000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f8217c5e000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f8218170000)

When .so is built via console, it is loaded from python expectedly (it should be installed manually)

$ python3 -c "import sentencepiece; print(sentencepiece)"
<module 'sentencepiece' from '/usr/lib/python3/dist-packages/sentencepiece/__init__.py'>



More information about the debian-science-maintainers mailing list