Bug 1011618

Summary: nividia drivers do not play nice with gallium patched pontostroy repository
Product: [openSUSE] openSUSE Distribution Reporter: Eli Wapniarski <eliwap>
Component: X11 3rd Party DriverAssignee: E-mail List <xorg-maintainer-bugs>
Status: RESOLVED DUPLICATE QA Contact: Stefan Dirsch <sndirsch>
Severity: Normal    
Priority: P5 - None CC: ddadap, eliwap
Version: 13.2   
Target Milestone: ---   
Hardware: x86-64   
OS: openSUSE 13.2   
Whiteboard:
Found By: --- Services Priority:
Business Priority: Blocker: ---
Marketing QA Status: --- IT Deployment: ---

Description Eli Wapniarski 2016-11-22 13:23:20 UTC
Hi

I wanted to try the gallium patched wine-staging rpm from:

http://download.opensuse.org/repositories/home:/pontostroy:/X11/openSUSE_13.2/

when I try to install them against my nividia drivers I get:

file /usr/lib64/libOpenCL.so.1.0.0 from install of libOpenCL1-2.2.8-15.1.x86_64 conflicts with file from package nvidia-computeG03-340.98-45.1.x86_64

or:

file /usr/lib64/libOpenCL.so.1.0.0 from install of libOpenCL1-2.2.8-15.1.x86_64 conflicts with file from package nvidia-computeG04-340.98-45.1.x86_64

depending on my computer.

I opened up a bug report at against the G03 drivers:

https://bugzilla.opensuse.org/show_bug.cgi?id=1011167

I was told:

nvidia-computeG03-340.98-45.1.x86_64 must respect opencl icd

I would assume that would be true for all the nvidia drivers

I hope that you can help

Thanks
Comment 1 Stefan Dirsch 2016-11-22 13:42:43 UTC
What about uninstalling nvidia-computeG03/nvidia-computeG04? I'm not sure whether NVIDIA is aware of this issue. Daniel?
Comment 2 Eli Wapniarski 2016-11-23 10:00:14 UTC
then I would have my graphics drivers and would not be able to use my computer
Comment 3 Eli Wapniarski 2016-11-23 10:01:08 UTC
opps...meant to say that I would not have my drivers
Comment 4 Stefan Dirsch 2016-11-23 10:07:08 UTC
Which is wrong. Have you ever looked into the content of this package?
Comment 5 Eli Wapniarski 2016-11-28 05:39:53 UTC
no... I have not. And even if I did... I would not know what to change
Comment 6 Stefan Dirsch 2016-11-28 11:02:47 UTC
(In reply to Eli Wapniarski from comment #5)
> no... I have not. And even if I did... I would not know what to change

I didn't suggest to change anything in nvidia-computeG04 package, just not install or uninstall it. It's an optional package for customers using CUDA or OpenCL, i.e. GPGPU. By default it's preselected, but you can unselect or uninstall it.
Comment 7 Eli Wapniarski 2016-11-28 15:31:00 UTC
ah... OK... I can try that... If its not needed then everything should be good. I will let you know by sometime tomorrow

Thanks
Comment 8 Eli Wapniarski 2016-11-28 15:50:40 UTC
I installed libOpenCL1 from the pontosroy repo. This time it did not complain about dependancies.

After that I tried to uninstall and got the following.

I hope I did not break something.

rpm -e nvidia-computeG04-367.57-28.1.x86_64
error: Failed dependencies:
        libnvidia-ml.so.1()(64bit) is needed by (installed) x11-video-nvidiaG04-367.57-28.1.x86_64
        nvidia-computeG04 is needed by (installed) x11-video-nvidiaG04-367.57-28.1.x86_64
Comment 9 Eli Wapniarski 2016-11-29 06:06:13 UTC
to further this .... I uninstalled both:

libOpenCl1 and nvidia-computeG04

and then tried to reinstall both and got

File /usr/lib64/libOpenCL.so.1.0.0
  from install of
     nvidia-computeG04-367.57-28.1.x86_64 (nVidia Graphics Drivers)
  conflicts with file from install of
     libOpenCL1-2.2.8-15.1.x86_64 (home:pontostroy:X11)


looking inside the rpms I indeed see that there is a conflict and indeed they are different libraries:

in /usr/lib64

libOpenCl1
----------
@libOpenCL.so.1                18
*libOpenCL.so.1.0.0            121320

nvidia-computeG04
-----------------
@libOpenCL.so.1                18
*libOpenCL.so.1.0.0            26328

the library provided by NVidia package is obviously smaller.

For the time being there is no obvious way to resolve the conflict and since I am using the nividia drivers and the dependancy of libnvidia-ml.so.1 for the x11-video-nvidiaG04 then no gallium_nine patched wine for me :(

I hope somehow this can get resolved given the proprietary nature of the NVidia drivers
Comment 10 Stefan Dirsch 2016-11-29 11:27:23 UTC
Ok. Just figured out that a tool called nvidia-debugdump, which is being used by nvidia-bug-report.sh, (meanwhile?) needs libnvidia-ml.so.1.

The purpose of nvidia-computeG04 is to have GPGPU functionality without the need of installing x11-video-nvidiaG04 and that way big parts of the X stack.

I was wrong, currently it's not possible to install x11-video-nvidiaG04 without installing nvidia-computeG04. Another reason than the dependancy to libnvidia-ml.so.1 is the need of /etc/modprobe.d/XX-nvidia.conf for both packages. So nvidia-computeG04 is currently needed by x11-video-nvidiaG04.

One may want to split out libnvidia-ml.so.1 and /etc/modprobe.d/XX-nvidia.conf to an additional package, which then is required by nvidia-computeG04 and x11-video-nvidiaG04. But it make things even more complicated. I would like to avoid that.
Comment 11 Stefan Dirsch 2016-11-29 11:45:59 UTC
One additional information:

http://us.download.nvidia.com/XFree86/Linux-x86/355.06/README/installedcomponents.html

[...]
Two OpenCL libraries (/usr/lib/libOpenCL.so.1.0.0, /usr/lib/libnvidia-opencl.so.355.06); the former is a vendor-independent Installable Client Driver (ICD) loader, and the latter is the NVIDIA Vendor ICD. A config file /etc/OpenCL/vendors/nvidia.icd is also installed, to advertise the NVIDIA Vendor ICD to the ICD Loader.
Comment 12 Stefan Dirsch 2016-11-29 12:48:57 UTC
Dup of bnc#1011167.

*** This bug has been marked as a duplicate of bug 1011167 ***
Comment 13 Daniel Dadap 2016-11-29 18:05:49 UTC
Yeah, libOpenCL should probably be dropped from the NVIDIA driver package, and the package (and others that require the OpenCL ICD) should depend upon a separate package which provides the OpenCL ICD.
Comment 14 Stefan Dirsch 2016-11-30 14:04:32 UTC
Thanks Daniel.

After checking the README of this libOpenCL package I'm no longer sure it's a good idea to replace NVIDIA's libOpenCL.so.1 one with that one. It may work together with NVIDIA's driver, when available during build time (which is unlikely). For other vendors it then may not work at all. I'm not convinced
replacing NVIDIA's libOpenCL.so.1.

---
This package aims at creating an Open Source alternative to vendor specific
OpenCL ICD loaders.

The main difficulties to create such software is that the order of
function pointers in a structure is not publicy available.
  This software maintains a YAML database of all known and guessed
entries.

  If the configure script is called with --enable-update-database,
then:
- a dummy OpenCL implementation using available headers on the system
  is created
- this dummy OpenCL implementation is installed system-wide (root
  access needed) with the file dummy.icd in /etc/OpenCL/vendors/
- a test program then calls every function defined in the
  headers and thus obtains the function mapping inside the demultiplexer
So, if an other OpenCL ICD loader is installed on the system, this
allows us to discover the mapping of new entries in the structure,
entries that are then recoreded in the YAML database.
  Of course, if the currently installed OpenCL ICD loader is this one,
there wont be any problems but no new mapping will be discovered.

This package also delivers a skeleton of bindings to incorporate inside an
OpenCL implementation to give it ICD functionalities.

Main Make targets:
all/check/install/...: builds the library and bindings from database
update-database: adds new functions to the database from the currently
  installed OpenCL ICD Loader. Needs root permission.
---