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

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

Reply via email to