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 <
[email protected]> 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 [email protected] List archive: http://news.gmane.org/gmane.os.apple.fink.devel Subscription management: https://lists.sourceforge.net/lists/listinfo/fink-devel
