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