[Top][All Lists]

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

Re: totally confused by versioning system of libtool...

From: Daniel Reed
Subject: Re: totally confused by versioning system of libtool...
Date: Fri, 13 May 2005 11:51:05 -0400 (EDT)

On Fri, 13 May 2005, Ed Hartnett wrote:
Bob Friesenhahn <address@hidden> writes:
That implies that when I install a new version, the old version says
around. Is that correct?
Yes.  Unless it is explicitly deleted.
Suppose that we discover a bug which doesn't require any API change to
fix, but which will cause he users' computers to go into self-destruct
mode, and catch on fire.
But now, we have the additional option of deleting the version of the
library file that contains the bug, during the install of the next
version. Then, their applications would crash horribly. But at least
their computer would not explode.

Do not simply delete the broken file, replace it.

If libexample-0.0.0, which installs as, contains a bug, release a bug fix libexample-0.0.1, which will also install as, replacing the broken version.

Programs that were running at the time of the upgrade will continue to use the buggy version (even if the file is removed from the directory hierarchy, it will be kept available for processes that had it open before it was removed).

Programs that start after the upgrade will automatically use the new version, with no relinking or explosions, horrible or otherwise.

Many projects will continue to make bug fix releases even if a newer API is currently under development--including Libtool itself. For this example scenario, if libexample-1.0.2 is the current release, but a critical bug is found in both it and libexample-0.0.5, then you can feel free to release libexample-0.0.6 and libexample-1.0.3 at the same time.

People using software that depends on libexample's 0 series will get the bug fix without having to rebuild or, worse, rewrite their software.

People using software that depends on libexample's 1 series should not be confused by the new release for the older 0 series, because 0.0.6 is still less than 1.0.anything. The only down side is that installing libexample 0.0.6 might cause to be re-pointed to and libexample 0's headers to overwrite libexample 1's headers, so software that is compiled after an upgrade might be forced to use the libexample 0 API and ABI instead of libexample 1's (which would not necessarily cause explosions, just different-than-expected but still functional behavior). The next time the libexample 1 series was upgraded everything would go back to normal.

Daniel Reed <address@hidden>
The reasonable man adapts himself to the world; the unreasonable one
persists in trying to adapt the world to himself. Therefore all progress
depends on the unreasonable man. -- George Bernard Shaw

reply via email to

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