ldb ABI versions in 4.17: should it include 2.5.1 & 2.5.2 versions too?
Andreas Schneider
asn at samba.org
Sat Sep 10 12:29:25 UTC 2022
On Saturday, 10 September 2022 12:20:06 CEST Michael Tokarev via samba-
technical wrote:
> 09.09.2022 23:20, Andrew Bartlett via samba-technical wrote:
> > On Fri, 2022-09-09 at 14:19 +0300, Michael Tokarev via samba-technical
> >
> > wrote:
> >> I'm not sure if this matter or not (since ldb is tied with samba), but
> >> ldb in 4.17.0rc5 lacks versions 2.5.1 and 2.5.2 released within samba
> >> 4.16.x series, while previous minor ldb releases are listed there.
> >
> > No, we don't normally include the branched history of ldb there.
>
> Maybe this is something which can be reviewed?
>
> The thing is. Giving this ldb-2.5.2 version as an example.
>
> Let's imagine there's a program using ldb (linking with ldb). And it
> has been compiled with ldb-2.5.2. And it uses, say,
> ldb_msg_add_string_flags symbol. When compiled/linked against ldb-2.5.2,
> the executable is marked with NEEDS: ldb_msg_add_string_flags at LDB_2.5.2,
> and generally needs LDB_2.5.2 version in libldb.
>
> Now we upgrade libldb from 2.5.2 to 2.6.1. But there, the same
> ldb_msg_add_string_flags is versioned as LDB_2.6.1. But it is the
> same symbol, doing exactly the same thing.
>
> So this program which were linked with ldb-2.5.2, will not run after
> upgrade. - runtime linker will complain it can't find LDB_2.5.2 version
> (and this symbol) in just-upgraded ldb-2.6.1. So we'll have to
> recompile the program just to fix the ldb versioning references.
>
> Maybe for ldb this is more theoretical, since main its user is samba,
> and as far as I can tell, samba should use exactly the same version of
> ldb at runtime as it were compiled with. In debian we do have this
> requirement now, - maybe someday it can be lifted, I dunno. But for
> other libraries this might be more interesting.
I argued with this many times, but libldb is simply not a stable API and it
should have never been released as a public library.
The problem is that as it has been released and others started to use it (e.g.
sssd). So whenever you update ldb you always have to recompile all projects
depending on it.
In RHEL we have marked libldb as ACG level 4
https://access.redhat.com/articles/rhel8-abi-compatibility
Andreas
--
Andreas Schneider asn at samba.org
Samba Team www.samba.org
GPG-ID: 8DFF53E18F2ABC8D8F3C92237EE0FC4DCC014E3D
More information about the samba-technical
mailing list