Jezuz-h-christ-on-a-crutch.

I just got done reading the libtool source, which was indeed the
only way to understand wtf goes on with the version number.  I also
of course read the libtool documentation, which is a laugh, because
it tells you in one section in a fairly ominous tone *never* to
try to sync the libtool version number to your release number,
and then goes on in another to say in an equally chastizing manner
that if you don't let libtool name the .so then your libraries
will be forced by libtool into some sort of a state of binary 
build-time incompatibility.  <sexist grumblings about the gender
of libtool deleted>

SO, anyway, here's how it breaks down.  You have a version-info
in the Makefile.am of A:B:C.  Based on whatever is the custom on an OS, 
it is made into a .so name.  On linux, A.C.B is used as the .so number.

A should be incremented whenever there is a change in interface, even if
compatibility with the old interface is preserved.

B should be set to 0 when A is incremented, but if A stays the
same then B should be incremented, to put it simply, whenever a public 
release is made.

C should only ever be non-zero when the release has retained binary 
compatibility for an older version.  It should be set to the difference
between the value of A now (in the to-be-released version), and the 
last value of A for which binary compatibility is maintained.

Fortunately, this means that, if we decide the Beta versions shouldn't
be "prosecuted as adults" and promise to behave ourselves from now on, 
2:1:0 == 2.0.1 is correct for the next LibGGI release and 
0:8:0 == 0.0.8 for libgii/libgg is fine too.  2.0.0 was
NOT correct for the last release, but that's water under the bridge now.
My guess is that the next major release of LibGGI will retain compatibility 
with the LibGGI 2 interface, and so, the next major release would
be 3:0:1 == 3.1.0

So, it really boils down to what we want to *call* our releases.  It
would make more sense to use the libtool system, because we are not 
a linux specific library and despite the nasty warnings it's not that
horrible a convention.  In that case, we should probably keep the 
":" notation to make people realize we are doing this, and the upcoming
release will be called "2:1" or "2:1:0" when speaking of it.  If we
go this way, perhaps we should also explain that we are shifting to 
this convention in the webpage announcement.

Anyway, those are the pickles, if we want to stick to libtool's way of
doing things.  If not, then I'd like us to have a reason, e.g. using
another system, hopefully a popular one, because I really don't like
fish unless it is deep fried, and mackeral is general a not good for 
deep frying.

--
Brian

Reply via email to