[Pkg-fglrx-devel] Bug#763636: amd-libopencl1: wrong symbol file for libOpenCL.so.1

Vincent Danjean vdanjean at debian.org
Wed Oct 1 14:35:38 UTC 2014


Package: amd-libopencl1
Version: 1:14.6~ga14.201-1
Severity: important

  Hi,

  Your current symbol file is written as:
libOpenCL.so.1 amd-libopencl1 #MINVER#
| ocl-icd-libopencl1 | libopencl1, libopencl-1.1-1
| ocl-icd-libopencl1 | libopencl1, libopencl-1.2-1
| ocl-icd-libopencl1 | libopencl1, libopencl-2.0-1
 OPENCL_1.0 at OPENCL_1.0 1.0 1
[...]
 clBuildProgram at OPENCL_1.0 1.0 1
[...]

  If, for example a 1.1 OpenCL application is compiled with your package
installed, the generated dependencies will be:
 amd-libopencl1 (>= 1.1), ocl-icd-libopencl1 | libopencl1, libopencl-1.1-1

  There are two problems:
1) the #MINVER# taken from the list of symbol is wrong. In the list of
  symbols, this is the OpenCL *version*. But it will applied to the
  amd-libopencl1 package version.
  As amd-libopencl1 use an epoch, the relation is always satisfied, so you
  never see the problem.
2) the compiled program will depends on amd-libopencl1 with no alternative.
  This is due to the fact that the first line is *always* added to the
  dependencies. See #737731. I was hit by that with ocl-icd.

I would suggest you to rewrite your symbol file as either
A:
libOpenCL.so.1 ocl-icd-libopencl1 | libopencl1
| libopencl-1.1-1
| libopencl-1.2-1
| libopencl-2.0-1
 OPENCL_1.0 at OPENCL_1.0 1.0 1
[...]
 clBuildProgram at OPENCL_1.0 1.0 1
[...]

B:
libOpenCL.so.1 amd-libopencl1 #MINVER# | libopencl1
| amd-libopencl1 #MINVER# | libopencl-1.1-1
| amd-libopencl1 #MINVER# | libopencl-1.2-1
| amd-libopencl1 #MINVER# | libopencl-2.0-1
 OPENCL_1.0 at OPENCL_1.0 FIXED_VERSION 1
[...]
 clBuildProgram at OPENCL_1.0 FIXED_VERSION 1
[...]


  With A, you try to ensure that OpenCL packages will install
ocl-icd-libopencl1 by default. This wont be always the case if apt resolves the
"libopencl-X.Y-1" first with your amd-libopencl1 package. It sometimes occurs
as shown in #739409 for the ocl-icd package. Or, you would need to add a
versionned alternative to ocl-icd-libopencl1 for the line 2-4 such as:
| ocl-icd-libopencl1 #MINVER# | libopencl-1.1-1
| ocl-icd-libopencl1 #MINVER# | libopencl-1.2-1
| ocl-icd-libopencl1 #MINVER# | libopencl-2.0-1
but then you need to fix FIXED_VERSION in symbol list according to
ocl-icd-libopencl1 package version (ie 1.0 for all 1.0, 1.1 and 1.2 OpenCL
symbol and 2.2.0 for all 2.0 OpenCL symbols for now)

  With B, you try to ensure that OpenCL packages compiled with amd-libopencl1
will install amd-libopencl1 by default but they will also be able to work this
another ICD loader providing the good OpenCL version.
  Note that, in this case, you need to fix your FIXED_VERSION in symbol list
according to amd-libopencl1 package versions where each symbol appears.


  Regards,
    Vincent

-- System Information:
Debian Release: jessie/sid
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'unstable'), (500, 'testing'), (500, 'stable'), (500, 'oldstable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
armel
mipsel

Kernel: Linux 3.14-2-amd64 (SMP w/8 CPU cores)
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages amd-libopencl1 depends on:
ii  libc6              2.19-11
ii  multiarch-support  2.19-11

Versions of packages amd-libopencl1 recommends:
ii  amd-opencl-icd [opencl-icd]    1:14.6~ga14.201-1
ii  intel-opencl-icd [opencl-icd]  2.0.31360.31426-1
ii  pocl-opencl-icd [opencl-icd]   0.7-1

amd-libopencl1 suggests no packages.



More information about the Pkg-fglrx-devel mailing list