[including whole message in reply since the original was private]
On Tue, Jan 12, 2010 at 11:37:33AM +0200, Alex Joni wrote:
>> Traceback (most recent call last):
>>   File "/usr/bin/axis", line 54, in <module>
>>     from minigl import *
>> ImportError: /usr/lib/libGL.so.1: undefined symbol: XGetErrorDatabaseText
>
> Hi Jeff,
>
> any idea what could cause this? (google came up pretty empty on this)
> The guy having these issues mentions that glxgears is working on this  
> machine (a VM), so does any non-axis emc2 config.
>
> Many thanks,
> Alex
>

You didn't say what distribution or version.  If a proprietary libGL,
you didn't state which one.

http://osdir.com/ml/freedesktop.xlibs.general/2004-01/msg00016.html

the internet finds variations on this theme, and the underlying cause is
a bad shared library that doesn't link to every shared library it
requires.

That post suggests how to determine if the system's libGL is buggy (ldd
-r -d /usr/lib/libGL.so.1 will likely print the 'undefined symbol
message' on its own).

This post suggests that maybe the ATI proprietary OpenGL drivers had
this problem back in the 2008 timeframe:
    dpkg-shlibdeps: warning: symbol XGetErrorDatabaseText used by
        debian/xorg-driver-fglrx/usr/lib/libGL.so.1.2 found in none
        of the libraries.
    http://ubuntuforums.org/showthread.php?t=696164&page=3

I have access to a 9.10 machine with xorg-driver-fglrx 8.660 which does
*not* seem to have the problem (at least as shown by ldd).

Probably linking -lX11 or -lXmu after -lGL for minigl.so will allow axis
to work even if the underlying bug in libGL is not fixed.  If someone
wants to submit a configure test and Makefile changes to fix this
problem, I'd be open to it.  But we don't want to add the extra -l flag
for platforms where it's not required.

The following patch might provide an easy way to test whether adding the
-l will fix the problem.  If it changes the undefined symbol to a new
undefined symbol, that's a sign of progress; use standard techniques to
find the next needed library.  But do not apply this patch to emc in its
current form.  Use a configure test to determine if this hack is
necessary, as most libGLs do not require this.

Jeff

diff --git a/src/emc/usr_intf/axis/Submakefile 
b/src/emc/usr_intf/axis/Submakefile
index 244104f..faf562c 100644
--- a/src/emc/usr_intf/axis/Submakefile
+++ b/src/emc/usr_intf/axis/Submakefile
@@ -16,12 +16,12 @@ $(call TOOBJSDEPS, $(EMCMODULESRCS)) : Makefile.inc
 
 $(EMCMODULE): $(call TOOBJS, $(EMCMODULESRCS)) ../lib/libemc.a 
../lib/libnml.so.0 ../lib/libemcini.so
        $(ECHO) Linking python module $(notdir $@)
-       @$(CXX) $(LDFLAGS) -shared -o $@ $^ -L/usr/X11R6/lib -lm -lGL
+       @$(CXX) $(LDFLAGS) -shared -o $@ $^ -L/usr/X11R6/lib -lm -lGL -lX11
 
 
 $(MINIGLMODULE): $(call TOOBJS, $(MINIGLMODULESRCS))
        $(ECHO) Linking python module $(notdir $@)
-       @$(CC) $(LDFLAGS) -shared -o $@ $^ -L/usr/X11R6/lib -lGLU -lGL
+       @$(CC) $(LDFLAGS) -shared -o $@ $^ -L/usr/X11R6/lib -lGLU -lGL -lX11
 
 $(SETICONMODULE): $(call TOOBJS, $(SETICONMODULESRCS))
        $(ECHO) Linking python module $(notdir $@)

------------------------------------------------------------------------------
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev 
_______________________________________________
Emc-developers mailing list
Emc-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-developers

Reply via email to