View Single Post
Old 01-02-04, 12:08 PM   #7
zander
NVIDIA Corporation
 
zander's Avatar
 
Join Date: Aug 2002
Posts: 3,740
Default

I hold no grudge against RedHat and have no reason to "bash" them; flame wars don't enjoy the reputation of being productive, anyway, and pointing fingers doesn't solve problems. My initial comment on the bug report was merely intended to point out common misconceptions about NVIDIA's installation utility, nvidia-installer.

My memory didn't serve me well and I made the false claim (which I withdrew after re-reading the document) that the /usr/X11R6/lib installation path itself violates the Linux OpenGL ABI; this is not the case, as Mike also points out in his latest comment. He makes valid points with respect to the runtime linker and architecture specific optimizations and there is no denying that earlier versions of nvidia-installer falsely assume that no libGL will reside outside of /usr/lib. As a result, conflicting files are searched for in /usr/lib, only, and moved to /var/lib/nvidia to allow their restoration in the event that the NVIDIA driver is to be uninstalled. Consequently, any copies of libGL installed in /usr/X11R6/lib remain intact.

Even these older revisions of nvidia-installer place the appropriate NVIDIA libGL in /usr/lib/tls, however, which leaves the question why the libraries in /usr/X11R6/lib/tls have precedence, when they shouldn't:

Code:
[root@fedora root]# ldconfig -p | grep libGL.so
        libGL.so.1 (libc6, hwcap: 0x8000000000000000) => /usr/X11R6/lib/tls/libGL.so.1
        libGL.so.1 (libc6, hwcap: 0x8000000000000000) => /usr/lib/tls/libGL.so.1
        libGL.so.1 (libc6) => /usr/lib/libGL.so.1
        libGL.so (libc6, hwcap: 0x8000000000000000) => /usr/lib/tls/libGL.so
        libGL.so (libc6) => /usr/lib/libGL.so

[root@fedora root]# ldd /usr/X11R6/bin/glxgears
        libGL.so.1 => /usr/X11R6/lib/tls/libGL.so.1 (0x00732000)
        libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x00101000)
        libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x00d20000)
        libpthread.so.0 => /lib/tls/libpthread.so.0 (0x00147000)
        libm.so.6 => /lib/tls/libm.so.6 (0x00cf7000)
        libc.so.6 => /lib/tls/libc.so.6 (0x00bbc000)
        libdl.so.2 => /lib/libdl.so.2 (0x00d1b000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x00ba4000)
Either way, one can only hope that distributors such as RedHat and hardware vendors such as NVIDIA (as well as distributors/vendors among themselves) will find ways to coordinate their efforts more efficiently in the future.
zander is offline   Reply With Quote