[Top][All Lists]

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

Re: libtool versioning

From: Peter Rosin
Subject: Re: libtool versioning
Date: Tue, 04 May 2010 10:05:37 +0200
User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv: Gecko/20100317 Thunderbird/3.0.4

Den 2010-05-03 22:03 skrev Ralf Wildenhues:
* Jef Driesen wrote on Mon, May 03, 2010 at 08:24:09PM CEST:
Yes, I have read the libtool manual, but it doesn't contain much
info about the resulting filename. Most of the info is about the
c:r:a scheme for input, not the output.

Yes, because the output file name is a per-system detail that you should
not have to care about.

#  1. Start with version information of `0:0:0' for each libtool library.
#  2. Update the version information only immediately before a public
#     release of your software. More frequent updates are unnecessary, and
#     only guarantee that the current interface number gets larger faster.
#  3. If the library source code has changed at all since the last update,
#     then increment revision (`c:r:a' becomes `c:r+1:a').
#  4. If any interfaces have been added, removed, or changed since the last
#     update, increment current, and set revision to 0.
#  5. If any interfaces have been added since the last public release, then
#     increment age.
#  6. If any interfaces have been removed since the last public release,
#     then set age to 0.

Shouldn't step #6 included "changed" as well as "removed"? If you
change the interface (for example modifying function parameters),
backwards compatibility is broken too. But only "removed" is listed

Well, it is listed in step 4 already.

Sure, but if interfaces have been changed, but not removed, the
algorithm stops at step #4,

Read the algorithm without any implicit stops in mind, and it will work.

Anyway, your point is good that this is hard to understand, and we've
addressed that in git master.

Errrm, is that really so? I tend to agree with Jef here...

The algorithm *could* be interpreted such that e.g. the interface change
"int foo(void)" -> "int foo(int)" is an interface addition of int foo(int)
and an interface remove of int foo(void), thus triggering both #5 and #6.
But in that case "changed" need not be mentioned in #4 either. So, because
"changed" is mentioned in #4, it also needs to be explicitly mentioned
in #6.

Or what am I missing?


They are in the crowd with the answer before the question.
> Why do you dislike Jeopardy?

reply via email to

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