Subject: Re: Invalid libSDL.so version number in package devel/SDL-1.2.9 ?
To: Jeremy C. Reed <reed@reedmedia.net>
From: Todd Vierling <tv@duh.org>
List: tech-pkg
Date: 10/11/2005 12:59:48
On Tue, 11 Oct 2005, Jeremy C. Reed wrote:

> I was not sure yet if it was a problem with the versioning, see thsi diff
> between 1.2.8 and 1.2.9 configure:
>
>  SDL_MAJOR_VERSION=1
>  SDL_MINOR_VERSION=2
> -SDL_MICRO_VERSION=8
> -SDL_INTERFACE_AGE=1
> -SDL_BINARY_AGE=8
> +SDL_MICRO_VERSION=9
> +SDL_INTERFACE_AGE=2
> +SDL_BINARY_AGE=9

> -LT_CURRENT=$SDL_INTERFACE_AGE
> -LT_REVISION=$SDL_BINARY_AGE
> -LT_AGE=0
> +LT_CURRENT=`expr $SDL_MICRO_VERSION - $SDL_INTERFACE_AGE`
> +LT_REVISION=$SDL_INTERFACE_AGE
> +LT_AGE=`expr $SDL_BINARY_AGE - $SDL_INTERFACE_AGE`

Aha.  The values of LT_CURRENT/LT_AGE changed significantly, so the shlib
version changed as well.  Looks like they switched to a more libtool-ish
version scheme.

Libtool's versioning scheme is a bit different from common shlib concepts.
See the info manual for libtool, "Library interface versions", or a HTMLized
version here:

http://developer.apple.com/documentation/DeveloperTools/glibtool/libtool_6.html

"Current" is an arbitrary revision number of the current major ABI supported
by the library.  "Revision" is an API revision within the current major ABI,
which is normally bumped when new functionality is added that is not
backwards incompatible.  "Age" is a range indicator between different
"current" numbers -- if a library implements the ABI in revisions 101-103,
then "current" is 103 whereas "age" is 2.  (The resultant shlib in that case
has major number 101.)

-- 
-- Todd Vierling <tv@duh.org> <tv@pobox.com> <todd@vierling.name>