FS#33211 - [opencv] libopencv_ocl.so depends on libopencl.so but it is not in requirements

Attached to Project: Arch Linux
Opened by Matt (v01d) - Wednesday, 26 December 2012, 16:54 GMT
Last edited by Ray Rashif (schivmeister) - Friday, 04 January 2013, 05:17 GMT
Task Type Bug Report
Category Packages: Extra
Status Closed
Assigned To Ray Rashif (schivmeister)
Architecture All
Severity Medium
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 0
Private No

Details

Description:
OpenCV package includes several .so files. One of these is libopencv_ocl.so which provides support for OpenCL in OpenCV. While this functionality should be optional, pkg-config and similar configuration systems include -lopencv_ocl in the link parameters, therefore breaking compilation when opencl is not present in the system.


Additional info:

link error:
/usr/bin/ld: warning: libOpenCL.so.1, needed by /usr/lib/libopencv_ocl.so, not found (try using -rpath or -rpath-link)
/usr/lib/libopencv_ocl.so: undefined reference to `clEnqueueUnmapMemObject'
/usr/lib/libopencv_ocl.so: undefined reference to `clCreateProgramWithBinary'
/usr/lib/libopencv_ocl.so: undefined reference to `clReleaseKernel'
/usr/lib/libopencv_ocl.so: undefined reference to `clEnqueueWriteBufferRect'
/usr/lib/libopencv_ocl.so: undefined reference to `clGetDeviceIDs'
/usr/lib/libopencv_ocl.so: undefined reference to `clReleaseMemObject'
/usr/lib/libopencv_ocl.so: undefined reference to `clGetKernelWorkGroupInfo'
/usr/lib/libopencv_ocl.so: undefined reference to `clGetProgramInfo'
/usr/lib/libopencv_ocl.so: undefined reference to `clCreateCommandQueue'
/usr/lib/libopencv_ocl.so: undefined reference to `clEnqueueReadBufferRect'
/usr/lib/libopencv_ocl.so: undefined reference to `clBuildProgram'
/usr/lib/libopencv_ocl.so: undefined reference to `clFinish'
/usr/lib/libopencv_ocl.so: undefined reference to `clGetProgramBuildInfo'
/usr/lib/libopencv_ocl.so: undefined reference to `clEnqueueMapBuffer'
/usr/lib/libopencv_ocl.so: undefined reference to `clCreateImage2D'
/usr/lib/libopencv_ocl.so: undefined reference to `clEnqueueNDRangeKernel'
/usr/lib/libopencv_ocl.so: undefined reference to `clEnqueueCopyBufferToImage'
/usr/lib/libopencv_ocl.so: undefined reference to `clEnqueueReadBuffer'
/usr/lib/libopencv_ocl.so: undefined reference to `clGetPlatformIDs'
/usr/lib/libopencv_ocl.so: undefined reference to `clGetDeviceInfo'
/usr/lib/libopencv_ocl.so: undefined reference to `clCreateBuffer'
/usr/lib/libopencv_ocl.so: undefined reference to `clFlush'
/usr/lib/libopencv_ocl.so: undefined reference to `clReleaseCommandQueue'
/usr/lib/libopencv_ocl.so: undefined reference to `clReleaseProgram'
/usr/lib/libopencv_ocl.so: undefined reference to `clCreateContext'
/usr/lib/libopencv_ocl.so: undefined reference to `clEnqueueCopyBufferRect'
/usr/lib/libopencv_ocl.so: undefined reference to `clEnqueueWriteBuffer'
/usr/lib/libopencv_ocl.so: undefined reference to `clReleaseContext'
/usr/lib/libopencv_ocl.so: undefined reference to `clSetKernelArg'
/usr/lib/libopencv_ocl.so: undefined reference to `clCreateKernel'
/usr/lib/libopencv_ocl.so: undefined reference to `clCreateProgramWithSource'


Steps to reproduce:
compile any opencv program using cmake or pkg-config
This task depends upon

Closed by  Ray Rashif (schivmeister)
Friday, 04 January 2013, 05:17 GMT
Reason for closing:  Fixed
Additional comments about closing:  2.4.3-4
Comment by Ray Rashif (schivmeister) - Wednesday, 26 December 2012, 19:19 GMT
Thanks, I missed a test with pkg-config, but I had somehow expected it. The support is rather basic, in fact. To really take advantage you will have to rebuild with the additional opencl flags which are hardware-dependent. But since this is rather new, I chose to introduce it in our binary this way. Anyway, will move to depends. Otherwise if anyone objects I'll build without opencl.

Loading...