Re: Libtool versioning made easy (was Re: Converting libraries andplugins to use gtk3
- From: dmacks netspace org
- To: Adam Jackson <ajax redhat com>
- Cc: desktop-devel-list <desktop-devel-list gnome org>, Alexander Larsson <alexl redhat com>, devel-announce-list gnome org
- Subject: Re: Libtool versioning made easy (was Re: Converting libraries andplugins to use gtk3
- Date: Wed, 30 Jun 2010 17:09:40 -0400
On Wed, 30 Jun 2010 16:33:28 -0400, Behdad Esfahbod wrote:
On 06/30/2010 04:26 PM, Adam Jackson wrote:
> > On Wed, 2010-06-30 at 15:43 -0400, Behdad Esfahbod wrote:
> >
> >> In your src/Makefile.am add "-version-info $(LT_VERSION_INFO)" to your
> >> library's LDFLAGS.
> >
> > Or you could just do it directly:
> >
> > libX11_la_LDFLAGS = -version-number 6:3:0 -no-undefined
> >
> > gives you libX11.so.6.3.0.
>
> Using straight major.minor.micro is actually a good idea too.
Maybe we should
> do that. The only difference with my scheme is that my scheme
assumes that
> individual releases in a devel series all add new interfaces whereas using
> major.minor.micro directly assumes that no point releases adds new
interfaces
> (stable or not). Both assumptions are wrong, but mine is on the
safe side.
> The only reason I like your proposal is that I don't think anyone
makes any
> assumption about minor .so version anyway...
Some platforms' (hi darwin!) library format has an internal interface
versioning counter. That's why libtool is so weird: -version-info
speaks specifically and only to the *interface* versioning, because it
knows how to set those flags. In particular, it knows when to change
SONAME and when just to increase a version counter. That's a great
feature! It keeps updates from accidentally breaking things. And the
dynamic linker even knows to check the current version vs the one used
when compiling and give a plain-language error message about version
too old--kinda like symbol-versioning.
I really don't care what additional atoms gets appended to the
filename, but ELF naming conventions do a poor job of delineating what
the SONAME is. And lots of libraries break ABI in minor releases. That
is, going from version 6.3.0 to 6.4.0 of libX11 *must* change SONAME,
not remain libX11.so.6 because it is not drop-in compatible with the
previous one.
> > libtool very sensibly only really documents -version-info because, in
> > this one instance, they chose to implement something so utterly
> > orthogonal to any library versioning scheme ever seen in the wild as to
> > be unusable, instead of their usual strategy of implementing something
> > so lowest-common-denominator as to be unusable.
The instructions give a clear flowchart about what sorts of library
changes should result in what changes to the -version-info flag. It's
pretty different from other tools' versioning flags because it can
handle linkers with features linux's doesn't have that are cool and
useful on those platforms. It seems like the kernel of this proposal is
to not bother having read the docs and to subvert even the most basic
interface versioning/stability goals just to get a pretty filename.
dan
--
Daniel Macks
dmacks netspace org
[
Date Prev][Date Next] [
Thread Prev][Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]