[Top][All Lists]

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

Re: OSF versioning and large current/revision/age

From: Ralf Wildenhues
Subject: Re: OSF versioning and large current/revision/age
Date: Mon, 3 Jan 2005 14:10:07 +0100
User-agent: Mutt/1.4.1i

Hi Tim,

* Tim Mooney wrote on Sun, Dec 19, 2004 at 06:55:18PM CET:
> I just built atk-1.9.0 (part of gtk+) on Friday, and ran into an issue
> with versioning that's making me wonder what kind of problems we may
> encounter in the future.
> Atk's ABI hasn't changed in quite a while, and because of the way it (and
> many other GNU/GNOME packages) increments library versioning, the shared
> library is created (by libtool) with a libtool invokation that includes:
>       -version-info 900:0:900
> First, based on inspection of (from 1.5.10), it looks like
> libtool doesn't currently handle current/revision/age values with four
> or more digits.  That's probably going to be a problem for projects like
> atk.


Does anybody know whether using four-digit version numbers is portable
(or, to put the other way round: was there a technical reason for three
digits)?  As this impacts every system libtool supports, this has very
far-reaching implications.  A survey would be necessary before changing

> Second, on platforms that use OSF-style versioning, that -version-info
> argument results in a library creation command line that's almost 11K in
> length; 90% or more of that command line length relates to the
>       test -n "900.900.0:0.0:1.0:.....:899.0:900.0" && \
>       -set_version 900.900.0:0.0:1.0:.....:899.0:900.0
> This results in an IVERSION field in the shared library that's more than
> 5K in length.  At least on Tru64 (I'm not sure about other platforms
> that use OSF-like versioning, such as IRIX) that's not a problem for the
> loader or the executable itself, but it is excessive.  ;-)


> Rainer Orth had a good overview of osf versioning vis-à-vis libtool in a
> message to the list a couple years ago:
> There was a short thread a couple months later, relating to his patch
> waiting to be applied:
> At the end of that thread, I asked a question that seems to be relevant
> again (still): Why is libtool using both SONAME-style versioning *and*
> internal versioning, for platforms like Tru64 and IRIX?

Erm, changing this would break compatibility.
The best we could do would be to make this a Libtool option.

But other than that, offering the other way looks like a decent idea,
the discussions you mention do not seem to imply otherwise.

> Does anyone have any recollection of why that decision was made?

I'll leave this..

> The archives are silent about it.  I also don't understand why a ".0"
> is being appended to each and every interface ( ${iface} ) that's part
> of $verstring.

..and this for someone more knowledgeable than me to answer.

> In any case, I generally espouse following a particular UNIX flavor's
> conventions for building and installing software, but in the particular
> case of libtool and osf-style versioning, I've long been concerned that
> we might be heading for trouble.  libtool's concepts of current, age,
> interface, et.  al. don't mesh particularly well with IVERSION-style
> versioning, IMHO.
> I'm considering patching libtool so that it *optionally* uses *just*
> soname versioning, similar to Solaris.  That way, the person that's
> actually building software with libtool can decide if they want libtool to
> use the IVERSION field and the soname, or just soname.

If the other maintainers agree, we might adopt this.

> I've only partially been following the thread about libtool and MAKEFLAGS,
> but it looks like there's a possibility of some kind of $(LIBTOOLFLAGS) that
> could be passed to libtool on the command line to control other optional
> behavior.  I had been considering an environment variable that libtool
> would check and parse, but if other optional behavior control is going to
> be via command-line flags, it would seem best if my patch piggybacked on
> that work.

No, I don't think this is a sensible way to go.  IMVHO it would seem
much more appropriate to add a new option to LT_INIT and maybe as well
provide this as a configuration option (not sure about the latter).

Comments appreciated.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]