[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: Using libtool -release versus -version-info breaks packages (ITS#3035)

Note that this change was made as the previous versioning,
including what still used on the 2.1 branch, is broken.
It was (is) allowing incompatible versions of the libraries
to be picked up dynamically (which is causing the usual

Use of -release appears to be the only mechanism available to
us that:
        a) ensures applications can link in OpenLDAP libraries
        using -lldap -llber and pick up the latest (static or
        shared) libraries.
        b) ensures conflicting shared libraries are not picked
        up dynamically, and
        c) ensures the Project is able to update the ABIs as
        needed (including applying fixes that effect the ABI
        as patch releases, including on older branches).

The only approach I know which meets this requirement
would be to use of sonames which encode that effectively
encode the version (e.g., 20207).  This was rejected as
libtool only supports sonames as large as 999.  It is
also questionable if all dynamic linkers support sonames
larger than 255.

If you know of some other approach which meets the
project requirements, please feel free to suggest it on
the developers list.  However, reverting to the old broken
way of doing things is not an option.


At 12:28 AM 3/23/2004, kean@armory.com wrote:
>Full_Name: Kean Johnston
>Version: 2.2.7
>OS: Multiple
>URL: ftp://ftp.openldap.org/incoming/
>Submission from: (NULL) (
>OpenLDAP 2.2.7 introduced a change to how libtool is being used. build/top.mk
>changes from using -version-info to using -release, and build/version.var
>changes the format of ol_api_lib accordingly. This has serious packaging
>The upshot of this change is that every time a new version of OpenLDAP comes
>out, there is a new set of libraries that is produced. By using -release, file
>names like liblber-2.2.7.so are used. The problem with this is that if you ever
>distribute, say version 2.2.7 of OpenLDAP, then you have to ship that version
>forever more, as there may be applications that now have that shared library as
>a dependency. The purpose of -version-info is to fix exactly this, so that you
>only need to ship old .so's for releases where the binary interface really has
>changed. I am sure it was not your intention to make package vendors ship every
>singel release of OpenLDAP thats ever been produced (or that a package
>distributor may have published on the web).
>Can you please go back to using -version-info? Many thanks.