Jack Howarth wrote:

> ...I assume it is safe to bump the compatibility level in the
> gmp and ppl info files. Unless I am mistaken this issue is also
> exactly why the fftw3 package was left at 3.1.2 for so long
> since the current 3.2.1 package bumps the compatibility
> level but not the soversion. My previous understanding was
> that the compatibility level should always be one more than
> the major soversion. However it would appear that this doesn't
> have to be the case and that the relationship between the two
> is more flexible than that. If this is really the case, this
> information should be clearly stated in the shared libraries
> section of the fink packaging wiki.

Jack,
I don't know what the issue is with fftw3, but here is some quick info
on install_names (sonames) and compatibility versions.

For libtool built libraries the upstream developer will usually specify
CURRENT:REVISION:AGE, and the library name on darwin is calculated as:

libname.(CURRENT -AGE).dylib

The compatibility version is calculated as:

CURRENT + 1

I dislike that +1, but it can not be removed now without breaking
everything.

This means that for your ppl example:
#           0.10                    7:0:0
#           0.10.1                  8:0:1

version 0.10 of ppl had:
libppl.7.dylib compatibility version 8.0.0

version 0.10.1 has:
libppl.7.dylib compatibility version 9.0.0

So anything that uses libppl that was built using version 0.10 will
continue to run fine using 0.10.1. *However* anything that was built
with version 0.10.1 will *not* work if dyld sees that 0.10 is installed.

This is fine if you are building your own stuff, as it is unlikely that
you will ever downgrade your library, for a package management system
that distributes binaries, it is quite important though. The package
maintainer of a package that uses, in this case, ppl, must ensure that,
when the user installs a gcc that was built with a newer ppl, the user
also gets a newer ppl, if the dependencies only require ppl >= 0.10,
then the user could try to run gcc and get a "crash" because dyld will
refuse to load the older ppl.

The shlibs field etc. was invented for a feature that has been on the
list of things todo for fink for a very long time - automatically set
depends in the binary package for the shared libraries that are actually
used at link time. I think Justin worked on this for a while, but it was
years ago, and I don't remember how far he got.

Does this make it any clearer? Please feel free to add anything you find
useful in this mail to the wiki.

Peter
-- 
Peter O'Gorman
http://pogma.com

------------------------------------------------------------------------------
This SF.net email is sponsored by:
High Quality Requirements in a Collaborative Environment.
Download a free trial of Rational Requirements Composer Now!
http://p.sf.net/sfu/www-ibm-com
_______________________________________________
Fink-devel mailing list
Fink-devel@lists.sourceforge.net
http://news.gmane.org/gmane.os.apple.fink.devel

Reply via email to