severity 739409 normal
thanks

  Hi,

On 04/04/2014 21:21, Andreas Cadhalpun wrote:
> Control: severity -1 serious
> Justification: breaks other packages

You are kidding? The only effect of this bug is that, if you enable
the non-free Debian repo, then a non-free package can sometimes be
installed by default where another free one (from main) would work.
  If installing another ICD Loader really does not work, then this
is another bug that has nothing to do with depends. ICD Loaders are
meant to be exchangeable.

I'm downgrading the severity of this bug.

> Hi Vincent,
> 
> the current symbols file is still broken. It contains:
> 1: libOpenCL.so.1 #PACKAGE# #MINVER# | libopencl1
> 2: | #PACKAGE# #MINVER# | libopencl1, libopencl-1.1-1
> 3: | #PACKAGE# #MINVER# | libopencl1, libopencl-1.2-1
> 4:  (symver|optional)OPENCL_1.0 1.0 1
> 5:  (symver|optional)OPENCL_1.1 1.0 1
> 6:  (symver|optional)OPENCL_1.2 1.0 2
> 
> The problems are in line 2 and 3, as the virtual packages libopencl-1.1-{1,2} 
> are added without real package providing this interface.

I was hopping that the first alternative would be a good enough
hint for package managers. It seems not. I will apply your patch.

> This creates the following dependencies (from python-pyopencl):
> Depends: libopencl-1.1-1, libopencl-1.2-1, ocl-icd-libopencl1 (>= 1.0) | 
> libopencl1, opencl-icd

> Now if you try to install this package, apt satisfies the libopencl-1.1-1 
> dependency randomly, for me by installing nvidia-libopencl1. (A similar 
> problem is the opencl-icd dependency, but that is added by pyopencl itself.)

nvidia-libopencl1 does not provide libopencl-1.2-1 and conflict
with libopencl1. So I find this fact very suspicious. Do you have
any evidence of it? What are the precise versions of all involved
packages (in particular nvidia-libopencl1).
  But I agree that amd-libopencl1 can be installed if the package
manager try to satisfy "libopencl-1.2-1" before
"ocl-icd-libopencl1 (>= 1.0) | libopencl1" (that said, it needs you
to have enable the non-free Debian repo *and* it should indeed work)

  Note that opencl-icd is a different problem. It tells that your
program needs a ICD (ie OpenCL implementation). However, to my
knowledge (and same for other involved maintainers), there is no
way to express in dpkg/apt a depends on a ICD that will work for
your current hardware. So, this force you to install an ICD but
you will need to select a correct one for your machine.

> Attached is a patch that fixes this problem in ocl-icd.
> 
> Additionally, I'm not sure if you are aware of [1]:
> "Packages MUST NOT use virtual package names (except privately, amongst
> a cooperating group of packages) unless they have been agreed upon and
> appear in this list."
> 
> I think it would be a good idea to add the libopencl* virtual packages
> to that list, because they can be added automatically via the symbols
> file, which is not exactly using 'privately, amongst
> a cooperating group of packages'.

However, that the case. They are used privately amongst OpenCL related
packages. There have been discussions explaining the reasons.
No maintainer of external packages should add them manually.
No package unrelated with OpenCL should use them at all.

> But before you attempt this, I think you should coordinate with the
> other packages currently providing these libraries and standardize
> the symbol names.

This is not possible unless you are able to modify the binaries
provided by AMD, NVidia (and even Intel that, in its libopencl1.so
library doe no even use the correct SONAME...)
  In any case, this is out the scope of the power of Debian Developer
(AMD and NVidia are in non-free, not in main, Intel ones is not
even in non-free due to an error in there licencing file. They promise
me to correct this on a forum but I did not see any fact until now...)

> ocl-icd-libopencl1 uses @OPENCL_*, while e.g. nvidia-libopencl1 uses
> @BASE, so if a program is compiled with ocl-icd-opencl-dev and used
> with nvidia-libopencl1 (which apt installs by default with the current
> broken symbols file), it will produce errors like:
> undefined reference to `clReleaseMemObject@OPENCL_1.0'

Are you sure? When I test it a few months (years) ago, there was
only a warning. Look at line 310 and following at
http://anonscm.debian.org/gitweb/?p=collab-maint/ocl-icd.git;a=blob;f=debian/README.Debian;hb=HEAD
Perhaps the linker behavior changed since this time.

> This happens in my use case:
> I packaged FFmpeg for Debian [2]. Adding opencl support breaks the 
> compilation of many possible reverse dependencies due to this problem.

I do not really understand what you mean. If the linker did not change
its behavior, then the chosen solution (versioned symbols) allowed
all possible runtimes (sometimes at the expense of a warning).
  Note that, if the linker changed its behavior, as AMD and NVidia
does not use the same thing (AMD also use versioned symbols), then
we wont be able to keep binary compatibility with all these ICD loaders.
In this case, ocl-icd will still keep its versioned symbols but I
will need to talk with NVidia maintainer so that we stop using the
same virtual packages (that were here to denote a binary compatibility).

  Regards,
    Vincent

> Best regards,
> Andreas
> 
> 
> 1: https://www.debian.org/doc/packaging-manuals/virtual-package-names-list.txt
> 2: http://bugs.debian.org/729203


-- 
Vincent Danjean       GPG key ID 0xD17897FA         vdanj...@debian.org
GPG key fingerprint: 621E 3509 654D D77C 43F5  CA4A F6AE F2AF D178 97FA
Unofficial pkgs: http://moais.imag.fr/membres/vincent.danjean/deb.html
APT repo:  deb http://people.debian.org/~vdanjean/debian unstable main


-- 
To UNSUBSCRIBE, email to debian-bugs-rc-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to