Red Hat Bugzilla – Bug 204641
xorg-x11-devel do not only includes development files and X do load module support from .a archives
Last modified: 2007-11-30 17:07:27 EST
Description of problem:
The package xorg-x11-devel includes /usr/X11R6/lib/libGL.a which make it
any other openGL library like them from nVidia. This is cause X load this
library in front of libGL.so.
This makes other drivers with openGL support break if you need the devel package
to develop X applications. (Other libraries just get overwritten but makes the
rpm database broken for the involved xorg-x11-devel.)
There has two to be done:
1. X must not load any .a archive.
2. The header files and the .a archives has to be for its own in a package
without any .so library!
Version-Release number of selected component (if applicable):
Any in EL4
What is the problem you're seeing? The X server never loads libGL.a and linking
against libGL will always pick up the shared library unless you explicitly
specify -static on the link line.
As for 2. we always ship header files, .so files and sometimes .a files in
-devel packages. The non-devel package has the fully versioned .so files, for
[krh@devserv krh]$ rpm -qlp xorg-x11-Mesa-libGL-6.8.2-1.EL.13.36.i386.rpm
I rechecked the bug again and I'm able to clarify it a bit:
- The /usr/X11R6/lib/libGL.a is not loaded by the X server (anymore).
- But there is still a problem with the X libraries. Package xorg-x11-devel
includes /usr/lib/libGL.so which has not to be in a -devel package! This .so
library is in fact loaded by the X server. Those file make the problems as it
will be in, for example, nvidia-libs package as this is the correct location
for the GL driver.
So I suggest to
1. wipe out any appearance of a .so file in a -devel package
2. If needed make a separate -gl-libs package holding such libraries to allow
to replace them with other packages.
We're not going to change the packaging of X in RHEL4 at this point.
Your analysis is also just plain wrong. libGL.a has never been loaded by the X
server, and neither is libGL.so.