[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Headsup: ncurses soname bump 5 to 6



On Thu, 18 Sep 2008 23:03:25 +0200
Julien Cristau <jcristau@debian.org> wrote:

> On Thu, Sep 18, 2008 at 13:40:14 -0700, Dan Kegel wrote:
> 
> > On Thu, Sep 18, 2008 at 1:12 PM, Thomas Dickey <dickey@his.com> wrote:
> > >> .... from the upstream POV, this would be another ABI transition.
> > >
> > > If there's no patch, there's nothing to discuss, then.
> > 
> > Going forward, though, can you avoid potential issues like this
> > by maintaining better ABI compatibility between versions?
> > i.e. when you add a libncurses.so.7, can you make it so
> > that all apps that linked against libncurses.so.6 still continue
> > to work without recompilation?
> 
> This doesn't make any sense.  If all apps linked against the previous
> version continued to work without recompilation, it wouldn't be an
> incompatible ABI change, and so wouldn't require a SONAME bump.

Take a different example - a library that retains all symbols during
the current SONAME, migrating some into a "deprecated" section/file and
adding new ones as bug fixes. When those deprecated symbols are finally
removed, a SONAME bump is required. (This is the case for qof, glib2.0
and gtk2.0 use deprecated symbols too.) The symbols are versioned so
that reverse dependencies can depend on the correct version.

The library can support compile-time --no-deprecated option
to ./configure so that all reverse dependencies can be tested upstream
against the new ABI *before* the modified version of the library is
released upstream.

Those reverse dependencies then make a release before the next library
upstream release, including whatever changes are necessary to work with
the library when built with --no-deprecated, even though
--no-deprecated is not enabled by default.

Technically, the reverse dependencies are now ABI compatible across
both versions - with and without the deprecated symbols. That cannot
mean that the library itself can drop those deprecated symbols
upstream without changing the SONAME. So the first upstream release of
the library with all the deprecated symbols removed (not just disabled)
needs to bump the SONAME, as does the Debian package.

Just because all the reverse dependencies in Debian have migrated
successfully, does not mean that upstream do not have to make a SONAME
bump.

-- 


Neil Williams
=============
http://www.data-freedom.org/
http://www.nosoftwarepatents.com/
http://www.linux.codehelp.co.uk/

Attachment: pgpt7bxTYoU93.pgp
Description: PGP signature


Reply to: