[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

how to prevent dpkg-shlibdeps from Depending on CONFLICTING packages?



Hi mentors,

I'm packaging caffe, which is nearly done.

http://mentors.debian.net/package/caffe

http://mentors.debian.net/debian/pool/contrib/c/caffe/caffe_0.9999~rc2+git20150902+e8e660d3-1.dsc

Source caffe are built twice against different configurations,
and are compiled into 2 groups of binary packages, 4 in each group:

caffe-cpu          conflict with   caffe-cuda
libcaffe-cpu0      conflict with   libcaffe-cuda0
libcaffe-cpu-dev   conflict with   libcaffe-cuda-dev
python-caffe-cpu   conflict with   python-caffe-cuda

They are well built on my amd64 build machine, but when I'm testing
installing them I found this:
(I stripped some lines)

 Package: caffe-cpu
 Source: caffe
 Depends: libcaffe-cpu0 (= 0.9999~rc2+git20150902+e8e660d3-1), libboost-python1.55.0, libc6 (>= 2.14), libcaffe-cuda0 (>= 0.9999~rc2+git20150902+e8e660d3), libgcc1 (>= 1:4.1.1), libgflags2, libgoogle-glog0, libleveldb1, liblmdb0 (>= 0.9.7), libopencv-core2.4, libopencv-highgui2.4, libopencv-imgproc2.4, libprotobuf9, libpython2.7 (>= 2.7), libstdc++6 (>= 4.9)
 Conflicts: caffe-cuda

 Package: caffe-cuda
 Source: caffe
 Depends: libcaffe-cuda0 (= 0.9999~rc2+git20150902+e8e660d3-1), libboost-python1.55.0, libc6 (>= 2.14), libcudart6.5 (>= 2.0), libgcc1 (>= 1:4.1.1), libgflags2, libgoogle-glog0, libleveldb1, liblmdb0 (>= 0.9.7), libopencv-core2.4, libopencv-highgui2.4, libopencv-imgproc2.4, libprotobuf9, libpython2.7 (>= 2.7), libstdc++6 (>= 4.9)
 Conflicts: caffe-cpu

 Package: libcaffe-cpu-dev
 Source: caffe
 Depends: libcaffe-cpu0 (= 0.9999~rc2+git20150902+e8e660d3-1)
 Conflicts: libcaffe-cuda-dev

 Package: libcaffe-cpu0
 Source: caffe
 Provides: libcaffe.so.0         <-----------------NOTICE-------------
 Depends: libboost-python1.55.0, libboost-system1.55.0, libboost-thread1.55.0, libc6 (>= 2.14), libgcc1 (>= 1:4.1.1), libgflags2, libgoogle-glog0, libhdf5-8, libleveldb1, liblmdb0 (>= 0.9.7), libopenblas-base, libopencv-core2.4, libopencv-highgui2.4, libopencv-imgproc2.4, libprotobuf9, libpython2.7 (>= 2.7), libstdc++6 (>= 4.9)
 Conflicts: libcaffe-cuda0

 Package: libcaffe-cuda-dev
 Source: caffe
 Depends: libcaffe-cuda0 (= 0.9999~rc2+git20150902+e8e660d3-1)
 Conflicts: libcaffe-cpu-dev

 Package: libcaffe-cuda0
 Source: caffe
 Provides: libcaffe.so.0          <----------NOTICE--------------------
 Depends: libboost-python1.55.0, libboost-system1.55.0, libboost-thread1.55.0, libc6 (>= 2.14), libcublas6.5 (>= 4.0), libcudart6.5 (>= 5.0), libcurand6.5 (>= 3.2), libgcc1 (>= 1:4.1.1), libgflags2, libgoogle-glog0, libhdf5-8, libleveldb1, liblmdb0 (>= 0.9.7), libopenblas-base, libopencv-core2.4, libopencv-highgui2.4, libopencv-imgproc2.4, libprotobuf9, libpython2.7 (>= 2.7), libstdc++6 (>= 4.9)
 Conflicts: libcaffe-cpu0

 Package: python-caffe-cpu
 Source: caffe
 Depends: python:any (<< 2.8), python:any (>= 2.7.5-5~), libboost-python1.55.0, libc6 (>= 2.4), libcaffe-cuda0 (>= 0.9999~rc2+git20150902+e8e660d3), libgcc1 (>= 1:4.1.1), libgoogle-glog0, libprotobuf9, libpython2.7 (>= 2.7), libstdc++6 (>= 4.2.1), libcaffe-cpu0
 Conflicts: python-caffe-cuda

 Package: python-caffe-cuda
 Source: caffe
 Depends: python:any (<< 2.8), python:any (>= 2.7.5-5~), libboost-python1.55.0, libc6 (>= 2.4), libcaffe-cpu0 (>= 0.9999~rc2+git20150902+e8e660d3), libgcc1 (>= 1:4.1.1), libgoogle-glog0, libprotobuf9, libpython2.7 (>= 2.7), libstdc++6 (>= 4.2.1), libcaffe-cuda0
 Conflicts: python-caffe-cpu

We can see that:

 * there is no problem at dependency of libcaffe-cpu0 and libcaffe-cuda0
 * libdev packages have correct and healthy dependency.
 * caffe-cpu depends on libcaffe-cpu0 (correct), and  libcaffe-cuda0 (wrong), so does caffe-cuda
 * python packages depends on both libcaffe-cpu0 and libcaffe-cuda0

However caffe-cpu and caffe-cuda suites are conflicting with each other,
which means the dependency entry generated by `dpkg-shlibdeps` is wrong.

I looked up dpkg-shlibdeps(1), but found no option like 'exclude' 'prevent' etc...

How should I prevent that wrong and needless dependencies ?
Sed'ing caffe-cpu.substvars, throwing "libcaffe-cuda0*" out ?

Thanks in advance. :-)

-- 
 .''`.                                               Lumin
: :' :                         
`. `'   
  `-    638B C75E C1E5 C589 067E  35DE 6264 5EB3 5F68 6A8A

Attachment: signature.asc
Description: This is a digitally signed message part


Reply to: