libpytalloc-util 2.2.0 broke the ABI

Andreas Schneider asn at samba.org
Thu Nov 21 13:41:44 UTC 2019


Hello,

we tried to package libtalloc 2.2.0 and our internal testing tools revealed an 
ABI breakage in libpytalloc-util.


nothing provides libpytalloc-util.cpython-36m-ppc64le-linux-gnu.so.
2(PYTALLOC_UTIL.PY3_2.1.5)(64bit) needed by python3-samba-4.10.4-101


Checking the PRM Provides libpytalloc-utils show the ABI is:

libpytalloc-util.cpython-36m-ppc64le-linux-gnu.so.2()(64bit)
libpytalloc-util.cpython-36m-ppc64le-linux-gnu.so.
2(PYTALLOC_UTIL.CPYTHON_36M_PPC64LE_LINUX_GNU_2.2.0)(64bit)
libpytalloc-util.cpython-36m-ppc64le-linux-gnu.so.2(PYTALLOC_UTIL_2.0.6)
(64bit)
libpytalloc-util.cpython-36m-ppc64le-linux-gnu.so.2(PYTALLOC_UTIL_2.0.7)
(64bit)
libpytalloc-util.cpython-36m-ppc64le-linux-gnu.so.2(PYTALLOC_UTIL_2.0.8)
(64bit)
libpytalloc-util.cpython-36m-ppc64le-linux-gnu.so.2(PYTALLOC_UTIL_2.1.0)
(64bit)
libpytalloc-util.cpython-36m-ppc64le-linux-gnu.so.2(PYTALLOC_UTIL_2.1.1)
(64bit)
libpytalloc-util.cpython-36m-ppc64le-linux-gnu.so.2(PYTALLOC_UTIL_2.1.10)
(64bit)
libpytalloc-util.cpython-36m-ppc64le-linux-gnu.so.2(PYTALLOC_UTIL_2.1.11)
(64bit)
libpytalloc-util.cpython-36m-ppc64le-linux-gnu.so.2(PYTALLOC_UTIL_2.1.12)
(64bit)
libpytalloc-util.cpython-36m-ppc64le-linux-gnu.so.2(PYTALLOC_UTIL_2.1.13)
(64bit)
libpytalloc-util.cpython-36m-ppc64le-linux-gnu.so.2(PYTALLOC_UTIL_2.1.14)
(64bit)
libpytalloc-util.cpython-36m-ppc64le-linux-gnu.so.2(PYTALLOC_UTIL_2.1.15)
(64bit)
libpytalloc-util.cpython-36m-ppc64le-linux-gnu.so.2(PYTALLOC_UTIL_2.1.16)
(64bit)
libpytalloc-util.cpython-36m-ppc64le-linux-gnu.so.2(PYTALLOC_UTIL_2.1.2)
(64bit)
libpytalloc-util.cpython-36m-ppc64le-linux-gnu.so.2(PYTALLOC_UTIL_2.1.3)
(64bit)
libpytalloc-util.cpython-36m-ppc64le-linux-gnu.so.2(PYTALLOC_UTIL_2.1.4)
(64bit)
libpytalloc-util.cpython-36m-ppc64le-linux-gnu.so.2(PYTALLOC_UTIL_2.1.5)
(64bit)
libpytalloc-util.cpython-36m-ppc64le-linux-gnu.so.2(PYTALLOC_UTIL_2.1.6)
(64bit)
libpytalloc-util.cpython-36m-ppc64le-linux-gnu.so.2(PYTALLOC_UTIL_2.1.7)
(64bit)
libpytalloc-util.cpython-36m-ppc64le-linux-gnu.so.2(PYTALLOC_UTIL_2.1.8)
(64bit)
libpytalloc-util.cpython-36m-ppc64le-linux-gnu.so.2(PYTALLOC_UTIL_2.1.9)
(64bit)
libpytalloc-util.cpython-36m-ppc64le-linux-gnu.so.2(PYTALLOC_UTIL_2.2.0)
(64bit)

as you can see the PYTALLOC_UTIL.PY3_2.1.5 (note the .PY3) symbols are gone. 
This means we have an ABI break in libpytalloc-util. You can't update the 
library without breaking existing applications!


However the SO version has not been bumped to indicate such a breakage, we 
still claim it is compatible. The SO version should be 3 in such a case and 
not 2.

This has been introduced by commit 24127acae0f05f0011c4008e75f1a1de31584199

    ABI: Remove unused .py3*.sigs files
    
    These are no longer used by the build system so avoid
    confusion by removing them from the tree.

I'm investigating how we are fixing this in RHEL now. Maybe we have to add the 
symbols back in our package.

For Samba I guess we should bump the SO version of libpytalloc-util to 3 asap.


In addition I think we need a CI job which runs the abi-compliance-checker for 
all public libraries.

Fedora provides packages for abi-dumper and abi-compliance-checker. So we 
could keep an ABI dump from the current released version in the source tree 
and compare against that one if we break anything.


Cheers,

	Andreas

-- 
Andreas Schneider                      asn at samba.org
Samba Team                             www.samba.org
GPG-ID:     8DFF53E18F2ABC8D8F3C92237EE0FC4DCC014E3D





More information about the samba-technical mailing list