Bug 8962 - gcc -dynamiclib ${wl}-undefined ${wl}dynamic_lookup when building xcb module components
Summary: gcc -dynamiclib ${wl}-undefined ${wl}dynamic_lookup when building xcb module...
Status: RESOLVED NOTOURBUG
Alias: None
Product: XCB
Classification: Unclassified
Component: Library (show other bugs)
Version: 0.9
Hardware: PowerPC Mac OS X (All)
: high normal
Assignee: Ian Osgood
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2006-11-09 16:12 UTC by Peter Dyballa
Modified: 2007-01-04 09:03 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Attachments

Description Peter Dyballa 2006-11-09 16:12:15 UTC
Mac OS X 10.4.8
GCC 4.0.1
ltmain.sh (GNU libtool) 1.5.23a (1.1220.2.414 2006/10/19 05:05:55)
automake (GNU automake) 1.9.6
autoconf (GNU Autoconf) 2.60

xcb/libxcb 0.9.93
xcb/util 0.1

This all leads to an unresolved macro each time when invoking gcc to make a dylib like:

	gcc -dynamiclib ${wl}-undefined ${wl}dynamic_lookup -o .libs/libxcb.1.0.0.dylib

Nevertheless all libraries are built ...
Comment 1 Jamey Sharp 2006-11-11 16:05:53 UTC
Ian, haven't you seen a problem like this before? I don't remember if we fixed
it or even tracked it down, but it sounds familiar.

I suspect it's a libtool bug, if it's a bug at all, because that ${wl} string
only appears in libtool. I think it's expected to expand to "-Wl,".
Comment 2 Ian Osgood 2006-11-11 17:02:56 UTC
Versions look good to me.

Try exporting LIBTOOLIZE=glibtoolize before running ./autogen.sh.

Check your paths to make sure your upgraded tools are running, not the preinstalled out-of-date tools. 
(For reference, I'm using DarwinPorts for my autotools.)

Did you install the xorg macros?
Comment 3 Peter Dyballa 2006-11-12 01:45:11 UTC
(In reply to comment #2)
> Versions look good to me.
> 
> Try exporting LIBTOOLIZE=glibtoolize before running ./autogen.sh.

I am using libtoolize from libtool 1.5.23a à la:

	env LIBTOOLIZE=/usr/local/bin/libtoolize ... util/modular/build.sh -m /Users/pete/Quellen/
X11R7.1/Mesa-6.5.2 -D /usr/X11R7

This version of libtool did not create a glibtoolize script. /sw/bin/glibtoolize is version 1.5.22. I let 
mostly build.sh do the job from the prepared environment. Only XDarwin and other Apple particles are 
problems that need special treatment ...

> 
> Check your paths to make sure your upgraded tools are running, not the preinstalled out-of-date 
tools. 
> (For reference, I'm using DarwinPorts for my autotools.)

I set also PATH for build.sh:

	PATH=/Users/pete/Quellen/X11R7.1/util/modular:/usr/local/bin:/sw/lib/freetype219/bin:/sw/
lib/odcctools/bin:/sw/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/usr/local/teTeX/bin/
powerpc-apple-darwin-current

> 
> Did you install the xorg macros?

I don't know what you mean by this. I have in ~/Quellen/X11R7.1 a directory util and inside it a directory 
macros. From time to time I update its contents with git – is there more I should know and apply?
Comment 4 Ian Osgood 2006-11-12 09:15:05 UTC
Paths look good.

> > Did you install the xorg macros?
> 
> I don't know what you mean by this. I have in ~/Quellen/X11R7.1 a directory util
> and inside it a directory macros. From time to time I update its contents with git
> – is there more I should know and apply?

You also need to 'sudo make install' the macros whenever they change. They affect the behavior of the 
autotools. Also ACLOCAL needs to be set. XCB prerequisites like this are discussed on the wiki:

  http://xcb.freedesktop.org/wiki/DevelopersGuide
  http://xorg.freedesktop.org/wiki/ModularDevelopersGuide
Comment 5 Peter Dyballa 2006-11-12 11:19:28 UTC
(In reply to comment #4)
> Paths look good.
> 
> > > Did you install the xorg macros?
> > 
> > I don't know what you mean by this. I have in ~/Quellen/X11R7.1 a directory util
> > and inside it a directory macros. From time to time I update its contents with git
> > – is there more I should know and apply?
> 
> You also need to 'sudo make install' the macros whenever they change.

This happened last when I updated them.

> They affect the behavior of the autotools. Also ACLOCAL needs to be set.

Other environment variables I set are:

ACLOCAL_LOCALDIR=/usr/X11R7/share/aclocal
ACLOCAL="aclocal -I /usr/X11R7/share/aclocal -I /usr/local/share/aclocal -I /sw/share/aclocal" 
PKG_CONFIG_PATH=/usr/X11R7/lib/pkgconfig:/sw/lib/freetype219/lib/pkgconfig:/sw/lib/fontconfig2/
lib/pkgconfig:/sw/lib/pkgconfig:/sw/lib/system-openssl/lib/pkgconfig:/sw/share/pkgconfig:/usr/
local/lib/pkgconfig:/usr/lib/pkgconfig:/usr/local/clamXav/lib/pkgconfig

although build.sh sets some of them, but it's easier to copy these ready-made settings to do something 
in the *shell* buffer. Besides these I also have CFLAGS, CPPFLAGS, LDFLAGS, and for example

MACOSX_DEPLOYMENT_TARGET=10.4

Some are set in ~/.MacOSX/environment.plist.

I'll see whether I can read (again) on the wikis (I had to do it before I could start to compile). Right now 
components for XDarwin are bugging me a lot!

And these unresolved macros only exist for XCB components! I could attach 2.5 MB ...
Comment 6 Peter Dyballa 2006-11-14 15:21:17 UTC
Having updated X11R7.1 also XCB components needed a re-compile. Now I saw this:

	/usr/bin/libtool: internal link edit command failed
	make[2]: *** [libxcb.la] Error 1
	make[1]: *** [all] Error 2

So it's obvious something in libxcb (0.9.93) that resets my PATH from the proper 'env PATH=/Users/
pete/Quellen/X11R7.1/util/modular:/usr/local/bin:/sw/lib/freetype219/bin:/sw/lib/odcctools/bin:/sw/
bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/usr/local/teTeX/bin/powerpc-apple-darwin-current' 
setting. The faulty line that produced error with "/usr/bin/libtool" is:

gcc -dynamiclib ${wl}-undefined ${wl}dynamic_lookup -o .libs/libxcb.1.0.0.dylib  .libs/xcb_conn.o .libs/
xcb_out.o .libs/xcb_in.o .libs/xcb_ext.o .libs/xcb_xid.o .libs/xcb_list.o .libs/xcb_util.o .libs/
xcb_auth.o .libs/xproto.o .libs/bigreq.o .libs/xc_misc.o  -L/usr/X11R7/lib -L/sw/lib/freetype219/lib -
L/sw/lib/fontconfig2/lib -L/sw/lib/ncurses -L/usr/local/lib -L/sw/lib /usr/X11R7/lib/libXau.dylib /usr/
X11R7/lib/libXdmcp.dylib  -mcpu=7450 -mtune=7450 -multiply_defined -install_name  /usr/X11R7/
lib/libxcb.1.dylib -Wl,-compatibility_version -Wl,2 -Wl,-current_version -Wl,2.0
ld: -multiply_defined: unknown argument: -Zinstall_name

And this is also incorrect: according to PATH ld should be /sw/lib/odcctools/bin/ld ... (and there is only  
"-multiply_defined" without the "suppress" component the LDFLAGS setting!) Is there some pkg-config 
invocation for a non-X11R7.1 thing that might tell a different libtool path name?
Comment 7 Ian Osgood 2006-11-18 19:59:05 UTC
Related to bug #8052 perhaps?

(BTW, though I develop XCB on the Mac, I test it against Apple's X server, not X.org, so there are lots of 
differences between my set of packages and yours.)
Comment 8 Ian Osgood 2006-11-21 09:35:08 UTC
Ignore that last bug reference... I meant bug #8504.
Comment 9 Peter Dyballa 2006-11-22 15:39:42 UTC
(In reply to comment #8)
> Ignore that last bug reference... I meant bug #8504.

Yes, there seems to be some connection. For some days I could not see the unresolved macros, then 
they returned.

I had other error messages with XCB because I had not installed Graphviz. When I went to install it, I 
started with swig – and made test or check. During this hour long process I saw error messages from 
Apple's /usr/bin/libtool, so I checked wherever I set PATH (or path for tcsh), and I think I've found an 
error that overrides the setting from ~/.MacOSX/environment.plist! One of the next days it should be 
fixed from my side, I think! (Although it's strange that it only happens with XCB.)
Comment 10 Peter Dyballa 2006-11-23 10:12:45 UTC
It might get longer to debug this issue:

	checking for XCBPROTO... yes
	checking for NEEDED... configure: error: Package requirements (xau pthread-stubs) were not met:
	
	No package 'pthread-stubs' found

I should not play with 'git pull,' I think ...
Comment 11 Ian Osgood 2006-11-23 10:17:08 UTC
Not a problem: you just need to fetch and install a new pthread-stubs package required for some *other* 
variants of FreeBSD. (Although it would be nice to have the libxcb build do the right thing if it isn't 
installed.) I'll update the wiki to note the new dependency.

git-clone git://anongit.freedesktop.org/git/xcb/pthread-stubs
Comment 12 Peter Dyballa 2006-11-24 02:28:31 UTC
(In reply to comment #11)
> Not a problem: you just need to fetch and install a new pthread-stubs package required for some 
*other* 
> variants of FreeBSD. (Although it would be nice to have the libxcb build do the right thing if it isn't 
> installed.) I'll update the wiki to note the new dependency.

There is also util/modular/build.sh – and maybe also the shell script http://xorg.freedesktop.org/wiki/
ModularDevelopersGuide?action=AttachFile&do=get&target=git_xorg on http://xorg.freedesktop.org/
wiki/ModularDevelopersGuide ...
Comment 13 Peter Dyballa 2006-11-24 07:05:09 UTC
I corrected some *sh RC files to have the same PATH or path in interactive, non-interactive, and login 
shells. I set the PATH that /sw/lib/odcctools/bin/libtool (does not report a version information) is found 
first. LIBTOOLIZE was set to /usr/bin/glibtoolize. The macro was srill unresolved:

           gcc -dynamiclib ${wl}-undefined ${wl}dynamic_lookup -o .libs/libxcb.1.0.0 ...

A new error was introduced:

	(cd .libs && rm -f libxcb.1 && ln -s libxcb.1.0.0 libxcb.1)
	(cd .libs && rm -f libxcb && ln -s libxcb.1.0.0 libxcb)
	ar cru .libs/libxcb.a  xcb_conn.o xcb_out.o xcb_in.o xcb_ext.o xcb_xid.o xcb_list.o xcb_util.o 
xcb_auth.o xproto.o bigreq.o xc_misc.o~ranlib .libs/libxcb.a
	ar: xc_misc.o~ranlib: No such file or directory
	make[2]: *** [libxcb.la] Error 1

Grep'ping for ~ shows a lot of $this~$that in configure!

My approach was to run 'autoreconf -fvi' and then ./configure ...

I think I'll continue with xcb/util. xcb/proto is at version 1.0.
Comment 14 Peter Dyballa 2006-11-24 11:45:53 UTC
When in the search path /sw/lib/odcctools/bin/libtool was first, LIBTOOLIZE=/usr/bin/glibtoolize 
produced unusable configure files; when LIBTOOLIZE was /sw/bin/glibtoolize the macros were 
unresolved.

When in the search path /usr/local/bin/libtool was first, LIBTOOLIZE=/usr/bin/glibtoolize produced 
unusable configure files again; when LIBTOOLIZE was /sw/bin/glibtoolize the macros were unresolved; 
and they did not change when I set LIBTOOLIZE to /usr/local/bin/libtoolize.

Comment 15 Peter O'Gorman, The Written Word, Inc. 2007-01-04 06:59:58 UTC
(In reply to comment #13)

>            gcc -dynamiclib ${wl}-undefined ${wl}dynamic_lookup -o 

This is a bug in libtool, and is actually harmless, the ${wl} are shown, but
when the command is executed -Wl, is used. Report the bug (again) at
bug-libtool@gnu.org if you see fit, but I do not have the time to fix such a
cosmetic bug right now :/
Comment 16 Ian Osgood 2007-01-04 09:03:22 UTC
Thanks for the info.


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.