Re: Building the Python binding (with fix)
Denis Corbin <[email protected]> Wed, 21 Jun 2023 22:55:55 +0200
| Newsgroups | gmane.comp.sysutils.backup.dar.support |
|---|---|
| Message-ID | <[email protected]> |
On 21/06/2023 05:23, John Goerzen wrote: > Hi, Hi, > > Now that I have uploaded libthreadar, and a version with libthreadar and > curl enabled to Debian, the last thing I need to get built is the Python > binding. > > I got that working OK, but: > > $ python3 > Python 3.11.4 (main, Jun 7 2023, 10:13:09) [GCC 12.2.0] on linux > Type "help", "copyright", "credits" or "license" for more information. >>>> import libdar > Traceback (most recent call last): > File "<stdin>", line 1, in <module> > ImportError: /usr/lib/python3/dist-packages/libdar.cpython-311-x86_64-linux-gnu.so: undefined symbol: _ZTIN6libdar16user_interactionE > > That seems to be in libdar64.so. But, oddly: > > ldd /usr/lib/python3/dist-packages/libdar.cpython-311-x86_64-linux-gnu.so > linux-vdso.so.1 (0x00007ffd60d82000) > libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fa98776d000) > libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fa987749000) > libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa987568000) > /lib64/ld-linux-x86-64.so.2 (0x00007fa987b0e000) > libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fa987489000) > > Huh. No reference to libdar64, or to threadar. Or curl, or tons of > other things. Odd. Strange thing... > > It was linked with: > > g++ -shared -L/usr/lib/x86_64-linux-gnu -lgpgme -lcurl -lthreadar -lpthread ../libdar/.libs/libdar64.so pybind11_libdar.o -o libdar.cpython-311-x86_64-linux-gnu.so > > On a lark, I tried: > > g++ -shared -Wl,--no-as-needed -L/usr/lib/x86_64-linux-gnu -lgpgme -lcurl -lthreadar -lpthread ../libdar/.libs/libdar64.so pybind11_libdar.o -o libdar.cpython-311-x86_64-linux-gnu.so > > Yep, that did it! It imports in python3, and: > > $ ldd ./libdar.cpython-311-x86_64-linux-gnu.so > linux-vdso.so.1 (0x00007fff6a398000) > libgpgme.so.11 => /lib/x86_64-linux-gnu/libgpgme.so.11 (0x00007f075b231000) > libcurl.so.4 => /lib/x86_64-linux-gnu/libcurl.so.4 (0x00007f075b184000) > libthreadar.so.1000 => /lib/x86_64-linux-gnu/libthreadar.so.1000 (0x00007f075b174000) > libdar64.so.6000 => /lib/x86_64-linux-gnu/libdar64.so.6000 (0x00007f075aeaa000) > libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f075ac54000) > libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f075ab73000) > libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f075ab4f000) > libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f075a96e000) > /lib64/ld-linux-x86-64.so.2 (0x00007f075b3d0000) > libassuan.so.0 => /lib/x86_64-linux-gnu/libassuan.so.0 (0x00007f075a958000) > libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0 (0x00007f075a930000) > libnghttp2.so.14 => /lib/x86_64-linux-gnu/libnghttp2.so.14 (0x00007f075a901000) > libidn2.so.0 => /lib/x86_64-linux-gnu/libidn2.so.0 (0x00007f075a8ce000) > librtmp.so.1 => /lib/x86_64-linux-gnu/librtmp.so.1 (0x00007f075a8af000) > libssh2.so.1 => /lib/x86_64-linux-gnu/libssh2.so.1 (0x00007f075a86e000) > libpsl.so.5 => /lib/x86_64-linux-gnu/libpsl.so.5 (0x00007f075a85a000) > libssl.so.3 => /lib/x86_64-linux-gnu/libssl.so.3 (0x00007f075a7b1000) > libcrypto.so.3 => /lib/x86_64-linux-gnu/libcrypto.so.3 (0x00007f075a330000) > libgssapi_krb5.so.2 => /lib/x86_64-linux-gnu/libgssapi_krb5.so.2 (0x00007f075a2dc000) > libldap-2.5.so.0 => /lib/x86_64-linux-gnu/libldap-2.5.so.0 (0x00007f075a27d000) > liblber-2.5.so.0 => /lib/x86_64-linux-gnu/liblber-2.5.so.0 (0x00007f075a26d000) > libzstd.so.1 => /lib/x86_64-linux-gnu/libzstd.so.1 (0x00007f075a1b1000) > libbrotlidec.so.1 => /lib/x86_64-linux-gnu/libbrotlidec.so.1 (0x00007f075a1a4000) > libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f075a185000) > libargon2.so.1 => /lib/x86_64-linux-gnu/libargon2.so.1 (0x00007f075a179000) > librsync.so.2 => /lib/x86_64-linux-gnu/librsync.so.2 (0x00007f075a16b000) > libgcrypt.so.20 => /lib/x86_64-linux-gnu/libgcrypt.so.20 (0x00007f075a025000) > liblz4.so.1 => /lib/x86_64-linux-gnu/liblz4.so.1 (0x00007f0759fff000) > liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007f0759fd0000) > liblzo2.so.2 => /lib/x86_64-linux-gnu/liblzo2.so.2 (0x00007f0759fa9000) > libbz2.so.1.0 => /lib/x86_64-linux-gnu/libbz2.so.1.0 (0x00007f0759f96000) > libcap.so.2 => /lib/x86_64-linux-gnu/libcap.so.2 (0x00007f0759f8a000) > libunistring.so.2 => /lib/x86_64-linux-gnu/libunistring.so.2 (0x00007f0759dd4000) > libgnutls.so.30 => /lib/x86_64-linux-gnu/libgnutls.so.30 (0x00007f0759bb8000) > libhogweed.so.6 => /lib/x86_64-linux-gnu/libhogweed.so.6 (0x00007f0759b6d000) > libnettle.so.8 => /lib/x86_64-linux-gnu/libnettle.so.8 (0x00007f0759b1f000) > libgmp.so.10 => /lib/x86_64-linux-gnu/libgmp.so.10 (0x00007f0759a9e000) > libkrb5.so.3 => /lib/x86_64-linux-gnu/libkrb5.so.3 (0x00007f07599c4000) > libk5crypto.so.3 => /lib/x86_64-linux-gnu/libk5crypto.so.3 (0x00007f0759997000) > libcom_err.so.2 => /lib/x86_64-linux-gnu/libcom_err.so.2 (0x00007f075998f000) > libkrb5support.so.0 => /lib/x86_64-linux-gnu/libkrb5support.so.0 (0x00007f0759981000) > libsasl2.so.2 => /lib/x86_64-linux-gnu/libsasl2.so.2 (0x00007f0759964000) > libbrotlicommon.so.1 => /lib/x86_64-linux-gnu/libbrotlicommon.so.1 (0x00007f0759941000) > libb2.so.1 => /lib/x86_64-linux-gnu/libb2.so.1 (0x00007f0759922000) > libp11-kit.so.0 => /lib/x86_64-linux-gnu/libp11-kit.so.0 (0x00007f07597ec000) > libtasn1.so.6 => /lib/x86_64-linux-gnu/libtasn1.so.6 (0x00007f07597d7000) > libkeyutils.so.1 => /lib/x86_64-linux-gnu/libkeyutils.so.1 (0x00007f07597d0000) > libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007f07597bf000) > libgomp.so.1 => /lib/x86_64-linux-gnu/libgomp.so.1 (0x00007f075976e000) > libffi.so.8 => /lib/x86_64-linux-gnu/libffi.so.8 (0x00007f0759760000) > > So now the question is: > > 1) How did this work for you/others? I got the same error on a Devuan VM... > > 2) Would you like to add this -Wl,--no-as-needed to the build system > yourself, or should I patch that locally for Debian? Let me a few days for I find more time to investigate on that... > > Thanks! > > - John > Keep you informed. Denis
OpenPGP_signature
(application/pgp-signature, 840 B) - not displayed