Packaging problems with RHEL 6 drivers 331.62

Hi,

I found several issues with the nvidia drivers version 331.62 shipped with the RHEL 6 nvidia CUDA repository.

  • xorg-x11-drv-nvidia-331.62-2.el6.x86_64 includes a broken symlink
    /usr/lib64/nvidia/xorg/libglx.so -> libglx.so.331.62
    while libglx.so.331.62 is provided by xorg-x11-drv-nvidia-gl-331.62-2.el6.x86_64
    this symlink should therefore be included in xorg-x11-drv-nvidia-gl, and not in xorg-x11-drv-nvidia;

  • the following runtime dynamic libraries are provided by xorg-x11-drv-nvidia-gl-331.62-2.el6.x86_64:
    /usr/lib64/nvidia/libGL.so.331.62
    /usr/lib64/nvidia/libnvidia-fbc.so.331.62
    /usr/lib64/nvidia/libnvidia-glcore.so.331.62
    /usr/lib64/nvidia/libnvidia-ifr.so.331.62
    however, the following symlinks are provided by xorg-x11-drv-nvidia-devel-331.62-2.el6.x86_64:
    /usr/lib64/nvidia/libGL.so -> libGL.so.331.62
    /usr/lib64/nvidia/libnvidia-fbc.so -> libnvidia-fbc.so.331.62
    /usr/lib64/nvidia/libnvidia-glcore.so -> libnvidia-glcore.so.331.62
    /usr/lib64/nvidia/libnvidia-ifr.so -> libnvidia-ifr.so.331.62
    those symlinks should be provided by xorg-x11-drv-nvidia-gl, not xorg-x11-drv-nvidia-devel;

  • the following runtime dynamic libraries are provided by xorg-x11-drv-nvidia-libs-331.62-2.el6.x86_64:
    /usr/lib64/nvidia/libcuda.so.331.62
    /usr/lib64/nvidia/libnvcuvid.so.331.62
    /usr/lib64/nvidia/libnvidia-compiler.so.331.62
    /usr/lib64/nvidia/libnvidia-encode.so.331.62
    /usr/lib64/nvidia/libnvidia-ml.so.331.62
    /usr/lib64/nvidia/libnvidia-opencl.so.331.62
    /usr/lib64/nvidia/libOpenCL.so.1.0.0
    however, the following symlinks are provided by xorg-x11-drv-nvidia-devel-331.62-2.el6.x86_64:
    /usr/lib64/libcuda.so -> /usr/lib64/nvidia/libcuda.so
    /usr/lib64/nvidia/libcuda.so -> libcuda.so.331.62
    /usr/lib64/nvidia/libnvcuvid.so -> libnvcuvid.so.331.62
    /usr/lib64/nvidia/libnvidia-compiler.so -> libnvidia-compiler.so.331.62
    /usr/lib64/nvidia/libnvidia-encode.so -> libnvidia-encode.so.331.62
    /usr/lib64/nvidia/libnvidia-ml.so -> libnvidia-ml.so.331.62
    /usr/lib64/nvidia/libnvidia-opencl.so -> libnvidia-opencl.so.331.62
    /usr/lib64/nvidia/libOpenCL.so -> libOpenCL.so.1.0.0
    those symlinks should be provided by xorg-x11-drv-nvidia-libs, not xorg-x11-drv-nvidia-devel.

As a consequence, any upgrade from nvidia RHEL 6 drivers version 319.37 to version 331.62 will break all CUDA software (5.5 and 6.0) since e.g. cuda-core-libs-5-5-5.5-22.x86_64 dlopens libcuda.so which was previously provided (as it should be) by xorg-x11-drv-nvidia-libs in 319.37 and no longer in 331.62 since the corresponding symlink is missing. The (very unsatisfactory) workaround is to install the *-devel packages along with the runtime libraries since those are actually incomplete.

As a rule of thumb, *-devel packages should typically only include development headers, libraries for static linking and/or samples, but never runtime dynamic libraries nor symlinks to runtime dynamic libraries.

Best regards,
Sébastien