[Fink-devel] gmp-4.3.0-1000

2009-04-15 Thread Jack Howarth
   I've built and tested new gmp-4.3.0-1000 packaging on
both a G4 and G5. In both cases the make test completes
without errors. I did notice that the compatibility level
has been bumped...

Error: Shlibs field says compatibility version for /sw/lib/libgmp.3.dylib is 
8.0.0, but it is actually 9.0.0.

From what Peter O'Gorman said about a similar situation in the
new ppl-0.10.1 release...

http://gcc.gnu.org/ml/gcc/2009-04/msg00444.html

...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

--
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


[Fink-devel] compatibiltiy versions (was: Re: gmp-4.3.0-1000)

2009-04-15 Thread Peter O'Gorman
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.107: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


Re: [Fink-devel] compatibiltiy versions (was: Re: gmp-4.3.0-1000)

2009-04-15 Thread Jack Howarth
On Wed, Apr 15, 2009 at 10:34:56AM -0500, Peter O'Gorman wrote:
 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.107: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

Peter,
   So it is completely legal in fink to go ahead and upgrade a package
(gmp-4.3.0, ppl-0.10.1 and fftw3-2.3.1) which has bumped the 
compatibility level but not the major soversion number as long
as you insure that all packages that BuildDepend/Depend against these
have been updated to require the newer version? My recollection is
that there was a concern that this was a mistake upstream and that the
major soversion should have been bumped so that the fftw3 maintainer never
wanted to update to the newer version for that reason. 
   Regarding the additional functionality in fink, are you referring
to the missing library dependencies in dpkg (where a deb knows explicitly
all of the specific libraries that its shared libraries and executables
are linked against) such that attempting to remove a package that has
shared libraries that some other packages files need will flag an error
(no matter if the dependencies aren't stated in the info file)? My understanding
was that was extremely difficult to implement on darwin because of the
explicit path information (rpath?) used in linking.
  Jack

--
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


Re: [Fink-devel] compatibiltiy versions (was: Re: gmp-4.3.0-1000)

2009-04-15 Thread David R. Morrison

On Apr 15, 2009, at 8:49 AM, Jack Howarth wrote:

  So it is completely legal in fink to go ahead and upgrade a package
 (gmp-4.3.0, ppl-0.10.1 and fftw3-2.3.1) which has bumped the
 compatibility level but not the major soversion number

Yes, completely legal.

 as long
 as you insure that all packages that BuildDepend/Depend against these
 have been updated to require the newer version?

That is not necessary.  If the upstream maintainers are doing things  
correctly, the new version of the library will continue to work with  
old packages.

 My recollection is
 that there was a concern that this was a mistake upstream

Sometimes the upstream packagers make mistakes and should have bumped  
the major soversion when they didn't.  But unless you have a reason to  
believe that is the case, you should assume that the compatibility is  
correctly measured by compatibility_version.

  Regarding the additional functionality in fink, are you referring
 to the missing library dependencies in dpkg (where a deb knows  
 explicitly
 all of the specific libraries that its shared libraries and  
 executables
 are linked against) such that attempting to remove a package that has
 shared libraries that some other packages files need will flag an  
 error
 (no matter if the dependencies aren't stated in the info file)? My  
 understanding
 was that was extremely difficult to implement on darwin because of the
 explicit path information (rpath?) used in linking.

Not extremely difficult, just different than Debian.  We have a way to  
do it, but nobody found the time to fully implement it.

  -- Dave



--
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


[Fink-devel] Does your package do mysql15 | mysql15-ssl ? If so, it's probably broken. :)

2009-04-15 Thread Benjamin Reed
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

They are not binary compatible with each other, you can't build against
one and have it work on the other:

diff -Nurd /tmp/nossl.txt /tmp/ssl.txt  | c++filt | grep '^+' | wc -l
2029

If you were to build foo against mysql-ssl15-shlibs, it will not run if
you switch it out with mysql15-shlibs.

- --
Benjamin Reed a.k.a. Ranger Rick
Fink, KDE, and Mac OS X development

Blog: http://www.raccoonfink.com/
Music: http://music.raccoonfink.com/

-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.9 (Darwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFJ5m1SUu+jZtP2Zf4RArYPAJ9MikF6mNJyVmGzxOzIlHc6+PAuVACfXb0C
alFOyNo/cAW3u6Fzu2DahWc=
=XhQL
-END PGP SIGNATURE-

--
Stay on top of everything new and different, both inside and 
around Java (TM) technology - register by April 22, and save
$200 on the JavaOne (SM) conference, June 2-5, 2009, San Francisco.
300 plus technical and hands-on sessions. Register today. 
Use priority code J9JMT32. http://p.sf.net/sfu/p
___
Fink-devel mailing list
Fink-devel@lists.sourceforge.net
http://news.gmane.org/gmane.os.apple.fink.devel