Markus Hoenicka wrote:
> Hi,
> 
> Florian Forster writes:
>  > What Andreas is discussing is, as far as I see, the versioning schema
>  > used by the GNU linker. Markus is talking about the libtool versioning
>  > system. Unfortunately, that's not the same thing.
> 
> Well analyzed. I should have pointed out upfront that libdbi uses
> libtool, which is why I implied we were talking about those numbers.
> 
>  > I've been given to understand that the major version under GNU/Linux is
>  > calculated as
>  >   major = current - age
>  > while other systems (iIrc FreeBSD) would use
>  >   major = 1 + current - age.
>  > 
>  > So, if you only add new functions, `current' and `age' are increased
>  > which will leave `major' at the same value.
>  > 
> 
> That sounds good.
> 
>  > The `minor' number is, I think, basically equal to the `age' and the
>  > `patch' number is equal to the `revision'. For example, the libtool
>  > version 8:3:8 would result in the ABI version 0.8.3.
> 
> That is:
> 
> major = current - age
> minor = age
> patch = revision
> 
> If that serves everyone's needs, I'll be happy to use this.
> 

Sure, but please add a LIBDBI_VERSION macro as well, or people
will start tweaking them in themselves, which will cause headache
for you if you want to add one later.

#define LIBDBI_VERSION ((MAJOR * 10000) + (MINOR * 100) + (REVISION))

should do it.

I don't really give a damn where those numbers come from so long as
it can be easily found out which LIBDBI_VERSION a particular piece of
functionality or bugfix appeared in, and so long as it only ever
increases.

>  > Currently, 1:0:1 is
>  > configured (== 0.1.0). To denote a backwards incompatible change, you'd
>  > use 2:0:0 which would be translated to 2.0.0.
> 
> This is where the hairy issues start. *All* libdbi releases up to
> 0.8.3 have used the libtool interface version 0:5:0. It is just
> because all releases were backwards-compatible that we were not
> flooded with complaints about linker errors. The next release
> is going to add a couple of functions (especially the instance
> interface), so we'd wind up having 1:0:1. However, 0.1.0 is not an
> obvious successor for 0.8.3. So, should we use:
> 
> major = current - age
> minor = age + 8
> patch = revision
> 
> until major is actually increased?
> 

Umm. Won't major be higher now than it was before? Sorry, but I
just can't wrap my head around what the various libtool macros
are supposed to signify, and the explanations on
http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html
doesn't exactly help (why should age be reset to 0 but nothing else
changed when interfaces are removed?).

-- 
Andreas Ericsson                   andreas.erics...@op5.se
OP5 AB                             www.op5.se
Tel: +46 8-230225                  Fax: +46 8-230231

Considering the successes of the wars on alcohol, poverty, drugs and
terror, I think we should give some serious thought to declaring war
on peace.

------------------------------------------------------------------------------
Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are
powering Web 2.0 with engaging, cross-platform capabilities. Quickly and
easily build your RIAs with Flex Builder, the Eclipse(TM)based development
software that enables intelligent coding and step-through debugging.
Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com
_______________________________________________
libdbi-devel mailing list
libdbi-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libdbi-devel

Reply via email to