libtool
[Top][All Lists]
Advanced

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

Re: Interface range compatibility?


From: Peter Rosin
Subject: Re: Interface range compatibility?
Date: Fri, 04 Oct 2013 11:39:40 +0200
User-agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20130801 Thunderbird/17.0.8

On 2013-10-02 17:30, Phillip Susi wrote:
> If I build rev 0 of a library, link to it, then rebuild the library
> with interface 1, age 1, that should mean it is compatible with
> interface 0 or 1.  It creates libfoo.so.0.1.0 so an app linked against
> interface 0 will find it.  Now if I rebuild the app against this
> library, I would expect it to prefer interface 1 and there to be a
> libfoo.so.1.0.0 symlink it would request, but there isn't.  Therefore,
> when I decide to drop support for the old interface 0 from the library
> by dropping the age to 0, the app no longer can find the library,
> which is now libfoo.so.1.0.0.

The libfoo.so.1.0.0 symlink isn't there because it will never be used,
at least not if you follow the rules. It is not allowed to simply reset
age to zero. You have to also bump interface in that case.

> What am I missing here?  How do you get the app to prefer the newer
> interface ( and thus, work when the old interface is dropped ) while
> allowing older apps to use the old interface for a while?

Whenever two versions of a library are incompatible, you need to install
both to support both "old" and "new" application. When you remove support
for interface 0, you make an incompatible change which gets you from
"interface 1, age 1" to "interface 2, ago 0". I.e. "interface 1, age 0"
is not a valid successor to "interface 1, age 1".

Cheers,
Peter




reply via email to

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