Issue 5365 - Library symbol versioning or other help for library transitions
Summary: Library symbol versioning or other help for library transitions
Status: VERIFIED FIXED
Alias: None
Product: OpenLDAP
Classification: Unclassified
Component: slapd (show other issues)
Version: 2.4.7
Hardware: All All
: --- blocker
Target Milestone: 2.5.3
Assignee: Quanah Gibson-Mount
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-02-10 19:06 UTC by rra@debian.org
Modified: 2021-04-01 04:01 UTC (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this issue.
Description rra@debian.org 2008-02-10 19:06:16 UTC
Full_Name: Russ Allbery
Version: 2.4.7
OS: Debian GNU/Linux
URL: 
Submission from: (NULL) (171.66.157.14)


One of the challenges of handling core system libraries like OpenLDAP in the
context of a packaged distribution is handling library transitions when the
SONAME of the library changes (such as between 2.3 and 2.4, and presumably
between 2.4 and 2.5).  It's rarely possible to rebuild every package at the same
time against the newer libraries (particularly since there are dependency chains
that often require one package go first before another can be rebuilt), let
alone all of the user software that's outside the space managed by the
distribution.  Because of that, both the old and new library usually have to
co-exist for at least a brief period on many systems, with some binaries linked
against the old version and some against the new version, until the upgrade is
complete.

This is, fundamentally, the problem of the distribution and not the problem of
the OpenLDAP team.  However, one thing that, from a distributor perspective,
helps considerably with transitions like this is if the upstream library
distributor uses symbol versioning on those platforms that support it (primarily
Linux and Solaris, and possibly -- I have no personal experience -- the *BSDs). 
If symbol versioning is used for the libraries, the 2.3 and 2.4 libraries can be
loaded into the same namespace and won't conflict with each other, since the
programs and other libraries will bind to the version against which they were
compiled.

So, basically, this is a feature request: would it be possible to add symbol
versioning to the libldap and libber libraries?  Very simple symbol versioning
(just assigning one version to all public symbols) would be sufficient to make
these sorts of transitions much easier.  I'm happy to help provide information
and Makefile glue to do this if it's desirable; I've done it in a portable way
with several other libraries in packages I maintain.

Please feel free to tell me I should move this to a post to openldap-technical
or somewhere else; I know it's sort of borderline between an ITS and a library
usage discussion.

Comment 1 Hallvard Furuseth 2008-02-10 21:24:14 UTC
moved from Incoming to Software Enhancements
Comment 2 Hallvard Furuseth 2009-12-04 19:02:15 UTC
moved from Software Enhancements to Incoming
Comment 3 Howard Chu 2012-08-18 00:34:12 UTC
changed notes
Comment 4 OpenLDAP project 2014-08-01 21:03:51 UTC
also see #7139
Comment 5 Quanah Gibson-Mount 2017-03-27 23:20:11 UTC
moved from Incoming to Software Enhancements
Comment 6 Ondřej Kuzník 2021-02-24 17:10:58 UTC
Since we're about to release a new version and I think we're bumping ABI again, we should really get this in.
Comment 7 Quanah Gibson-Mount 2021-03-02 16:23:23 UTC
Sent an email to Steve on 3/1/2021 to see if he'd be willing to contribute Debian's patch.
Comment 9 Quanah Gibson-Mount 2021-03-29 19:13:46 UTC
Commits: 
  • 38d1ac04 
by Quanah Gibson-Mount at 2021-03-29T18:11:00+00:00 
ITS#5365 - Add support for symbol versioning libldap and lilber