Wireshark-dev: Re: [Wireshark-dev] [Wireshark-commits] rev 40436: /trunk-1.6/ /trunk-1.6/debian
From: Guy Harris <guy@xxxxxxxxxxxx>
Date: Thu, 12 Jan 2012 01:46:31 -0800
On Jan 12, 2012, at 1:35 AM, Guy Harris wrote:

> 
> On Jan 11, 2012, at 4:48 PM, Sam Roberts wrote:
> 
>> On Wed, Jan 11, 2012 at 4:31 PM, Joerg Mayer <jmayer@xxxxxxxxx> wrote:
>>> On Wed, Jan 11, 2012 at 05:00:57PM +0000, gerald@xxxxxxxxxxxxx wrote:
>>>> http://anonsvn.wireshark.org/viewvc/viewvc.cgi?view=rev&revision=40436
>>>> User: gerald
>>>> Date: 2012/01/11 09:00 AM
>>>> 
>>>> Log:
>>>> Have "make-version.pl -v" update the library revision information for
>>>> libwireshark and libwiretap. The source code for each changes with every
>>>> release and according to the libtool documentation we should increment
>>>> the revision number. (wsutil hardly ever changes so we don't update it
>>>> here.)
>>> 
>>> libwiretap_la_LDFLAGS = -version-info 1:6:0 -export-symbols wtap.sym @LDFLAGS_SHAREDLIB@
>>> 
>>> Why not mimic the Wireshark version? so instead of 1:6:0 use 1:6:4 for wireshark
>>> 1.6.4? Would make it trivial to generate the library version number.
>> 
>> http://www.sourceware.org/autobook/autobook/autobook_91.html
> 
> The key bit of which is
> 
> 	It is important to note from the outset that the version number of your project is a very different thing to the version number of any libraries shipped with your project.
> 
> Do not confuse the colons with periods; the libtool library version is {current}:{revision}:{age}, and those aren't major/minor/dot-dot version number components.  {revision} actually changes more often than {age}!
> 
> 	If you have changed any of the sources for this library, the revision number must be incremented. ...
> 
> 	If the new interface is a superset of the previous interface (that is, if the previous interface has not been broken by the changes in this new release), then "age" must be incremented. ...
> 
> 	If the new interface has removed elements with respect to the previous interface, then you have broken backward compatibility and "age" must be reset to `0'. ...

Oh, and

	If the interface has changed, then "current" must be incremented, and "revision" reset to `0'. This is the first revision of a new interface.

Which seems to indicate, BTW, that if Wireshark 1.8.0 changes the libwireshark ABI in a non-backwards-binary-compatible way (which it does, given that it gets rid of FT_EBCDIC in favor of using ENC_EBCDIC with FT_STRING/FT_STRINGZ/FT_UINT_STRING), the version info for the 1.8.0 version of libwireshark should be 2:0:0, *NOT* 1:8:0!  (I.e., it's a new interface number, as it's not backwards-binary-compatible, hence {current} changes from 1 to 2 and {revision} resets to 0; the new revision is not backwards-compatible any previous version, so {age} resets to 0.)