was: Mactel 10.4.8 evolution-data-server build failure

Fred Dushin fadushin at fourfold.org
Thu Jan 11 07:56:05 PST 2007


This is a macports issue, specifically, but I'm canvassing unix- 
porting for an understanding of libtool.  Thanks for your patience.

> This looks like an old issue. See: http://trac.macports.org/projects/
> macports/ticket/9162
>
> If you could file a new ticket with the complete output of `sudo port
> -dv install evolution-data-server` that would help in figuring out
> what the problem might be.

I see that someone submitted full log of the build failure (thanks  
for doing that), but I don't see any movement on the ticket.

I've looked into this a bit more.  What seems to be happening is that  
the evolution-data-server includes a shell script called libtool (not  
to be confused with Apple's libtool), which goes through a list of  
system paths, constructing a set of hard coded shlibs that ultimately  
get linked together though gcc.  This list includes libiconv out of / 
usr/lib (2.2) and out of <macports>/lib (2.4).  The result is a big  
call to gcc, where all -l<name>s are replaced with their hard coded  
paths.  Why someone would write a shell script to do what gcc does is  
beyond me, but hey, this is free software, so quitchyerbitchin.

gcc presumably calls off to the (real) Darwin /usr/bin/libtool, which  
fails on account of the duplicate symbols (presumably, though libtool  
does not say that explicitly -- the "errors" are actually reported as  
warnings).  E.g.:

ld: warning multiple definitions of symbol __libiconv_version
/usr/lib/libiconv.dylib(iconv.o) definition of __libiconv_version
/opt/local/lib/libiconv.dylib(iconv.o) definition of __libiconv_version
...
/usr/bin/libtool: internal link edit command failed

There is also another issue with linking against another shlib that's  
built locally in the evolution-data-server build, again for the same  
reason.  The issue seems to boil down to the fact that /usr/bin/ 
libtool will refuse to link libraries where there is some ambiguity  
as to which symbols to resolve.

I can get the shlib to link by hand if I remove these libraries from  
the link line, but of course this just pops up again on the next call  
to the gnome libtool [sic] shell script.

So...  Does anyone know about flags to /usr/bin/libtool, to maybe  
turn off this behavior (if I understand it correctly).  Actually,  
these would presumably need to be flags to gcc, since the li'l gnome  
script is calling gcc, not libtool directly.

Thanks!
-Fred






More information about the macports-users mailing list