Hanspeter, Attached are a list of the changes I have accumulated for your packages from cleaning up the mislinks on a build of...
fink install rkward-r31 from a clean bootstrap on 10.10. Jack ps Appended is also the blurb I will be sending to other maintainers on this issue now... --------------------------------------------------------------------------------------------------------------- The appended changes were made to eliminate the linkage regression cause by the libtool bug... http://lists.gnu.org/archive/html/libtool-patches/2014-09/msg00002.html which, by confusing Yosemite (10.10) with Puma (10.1), regresses the dynamic shared library linkages from -Wl,-undefined -Wl,dynamic_lookup to -Wl,-flat_namespace. This can cause significant breakage in software on Yosemite... https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63610 by adopting an unconventional and untested linkage. In the above case, the mislinked libgfortran dylib resulted in severe regressions in the gfortran testsuite. Other problems may be more obscure and not captured by existing testsuites. Since it will take some time for upstream to integrate the new libtool into their software releases, the most convenient fix is to add a PatchScript entry of the form... # Patch configure to not link like Puma on Yosemite perl -pi.bak -e 's|10\.\[012\]\*\)|10\.\[012\]\[\,\.\]\*\)|g' configure with all the configure scripts in the source directory appended. If placed last in the PatchScript, this will leave a set of configure.bak and configure files which can be diff to reveal the desire change of... --- configure.bak 2012-05-11 13:57:48.000000000 -0400 +++ configure 2014-10-26 21:22:06.000000000 -0400 @@ -10131,7 +10131,7 @@ case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[91]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - 10.[012]*) + 10.[012][,.]*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; If the package uses autoreconf to regenerate configure, the perl edit should be moved after that operation of course. The current plan is add a new validation shlib test to fink which will issue an error if a non-bundle shared library is detected without two-level namespace (which is a marker for -flat_namespace having been used to created the file). Until this is available, a grep of the build log will suffix to detect these bad linkages. grep flat_namespace fink_build.log | grep -v bundle | grep dynamic which will produce a list of all of those linkages done for -dynamiclib but incorrectly regressed to -flat_namespace. Alternatively you can use... find . -name "*.dylib" -print | xargs otool -hv > ~/liblist to obtain a list of all of the shared libraries in a given directory. Looking for those missing the TWOLEVEL entry in the flags field which indicates the dynamic lookup was not used and are mislinked libraries. On Wed, Oct 29, 2014 at 7:34 AM, Hanspeter Niederstrasser < f...@snaggledworks.com> wrote: > On 10/27/2014 7:12 PM, Jack Howarth wrote: > >> Hanspeter, >> I assume you are aware that the current libtool releases have a bug >> which causes the shared library linkages on 10.10 to be erroneously >> treated >> as linkages on 10.1 (Puma) such that >> >> ${wl}-flat_namespace ${wl}-undefined ${wl}suppress >> >> >> is used instead of the appropriate >> >> >> ${wl}-undefined ${wl}dynamic_lookup >> >> >> This can produce some really nasty breakage like... >> >> >> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63610 >> >> >> The approach that I have taken is to start from a clean bootstrap and >> >> collect complete fink build logs for a large fink build such as >> >> >> fink install relax-py27 >> >> >> The log can then be used with... >> >> >> grep flat_namespace fink_build.log | grep -v bundle | grep dynamic >> >> >> to produce a list of linkages which are incorrectly done as if the >> Yosemite >> machine were on Puma. >> >> The configure files in these programs can be perl edited to be >> correct >> with... >> >> >> # Patch configure to not link like Puma on Yosemite >> >> perl -pi.bak -e 's|10\.\[012\]\*\)|10\.\[012\]\[\,\.\]\*\)|g' configure >> >> >> with all of the configure files in the package listed at the end of the >> line. >> >> This will produce a change of the form... >> >> >> diff -uNr gmp-6.0.0.orig/configure gmp-6.0.0/configure >> >> --- gmp-6.0.0.orig/configure 2014-03-25 10:38:04.000000000 -0400 >> >> +++ gmp-6.0.0/configure 2014-10-26 01:08:59.000000000 -0400 >> >> @@ -14809,7 +14809,7 @@ >> >> case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in >> >> 10.0,*86*-darwin8*|10.0,*-darwin[91]*) >> >> _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' >> ;; >> >> - 10.[012]*) >> >> + 10.[012][,.]*) >> >> _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined >> ${wl}suppress' ;; >> >> 10.*) >> >> _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' >> ;; >> >> I then normally just do test build of each fixed package in a new window >> and search the contents for '-flat_namespace' to confirm it isn't being >> used with -dynamiclib. >> Jack >> ps I can help work through the qt packages after mid-week if your are >> short >> on time. >> > > Thanks for the notice. I'm working my way through dependencies right now. > > Hanspeter > >
hanspeter.diffs
Description: Binary data
------------------------------------------------------------------------------
_______________________________________________ Fink-devel mailing list Fink-devel@lists.sourceforge.net List archive: http://news.gmane.org/gmane.os.apple.fink.devel Subscription management: https://lists.sourceforge.net/lists/listinfo/fink-devel