On Wed, Jun 03, 2009 at 09:23:12AM +0100, James Bonfield wrote:
> On Wed, Jun 03, 2009 at 01:57:10PM +0900, Charles Plessy wrote:
> > I finally almost finished the packaging of a libtoolized version of the 
> > Staden
> > io_lib, which we agreed to rename libstaden-read in Debian, following what 
> > is
> > already done in Fedora.
> 
> Indeed the name change we already agreed on - makes a lot of sense for
> the library name.
> 
> > One last question I would like before sumbitting the package for inclusion 
> > in
> > the Debian archive is about the sonames. Are there values that you 
> > recommend,
> > or should Debian use values lower than 1 before you provide upstream support
> > for dynamic io_lib ?
> 
> I'd use something containing the library name (libstaden-read) and the
> existing version number minus patch level, (1.11).  Can sonames exist
> in non-dynamic libraries? I assume not, in which case
> libstaden-read.so.1.11 would make sense as the soname.
> 
> The fact that it's a dynamic library rather than a static one
> shouldn't matter should it?  If my understanding is correct the
> purpose of soname is to indicate an API conformance rather than
> specifics of the compilation or library construction.
> 
> Perhaps if I was more rigorous then only the major version number need
> be in the soname field, but I can't guarantee that would mean
> precisely the same API from 1.1 all the way to 1.11. Typically I add
> new functions and try not to change old ones.
> 
> It's also worth noting that the major version number isn't likely to
> change soon (despite plans to do it for the last 10 years!) and so
> it's far more likely that a user would say "I need version 1.10 and
> above" than "I need version 1.x". I'm not fully up to speed on how
> versioning and soname should work though so how does soname cover
> "version x and above" requirements? Is it simply smarts in the linker
> that knows 1.12 should be 1.11 + more?

The linker actually cares about the library interface, not the library
version.

If you remove or change interface, Debian will have to rev the library
version (e.g. from libstaden-read.so.1 to libstaden-read.so.2),
regardless of your upstream 1.x version number.

The reason is that packages compiled/linked against an older
libstaden-read library would break if re-linked at run-time against the
new (incompatible) libstaden-read (which might e.g. get installed when a
user installs a second application using libstaden-read which however
depends on the newer version of the library).

The libtool manual has information about dynamic libraries, their
interfaces and how to version them.


Michael


-- 
To UNSUBSCRIBE, email to debian-med-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to