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

Re: Making a package multiarch (for real)



+++ Mathieu Malaterre [2014-11-06 18:10 +0100]:
> [CC me please]
> 
> I am trying to make CharLS a true multiarch capable package. However I
> fail to understand what I did wrong.
> 
> Steps:
> $ apt-get source charls
> $ cd charls-1.0
> $ vim debian/control
> -> mark libcharls-dev as `Multi-Arch: foreign` and libcharls1 as
> `Multi-Arch: same`

In general -dev packages should be :same, along with the library
packages, then -dev packages for build and host arches can be
co-installed for cross-compiling. I know the docs are out of date on
this point, but please do both unless it is difficult for some reason.
 
> Build on both amd64 and i386:
> 
> $ dpkg -I libcharls1_1.0-5_amd64.deb | grep same
>  Multi-Arch: same
> $ dpkg -I libcharls1_1.0-5_i386.deb | grep same
>  Multi-Arch: same
> 
> shared lib are using proper multiarch paths:
> 
> $ dpkg -c libcharls1_1.0-5_amd64.deb
> drwxr-xr-x root/root         0 2014-11-06 17:53 ./
> drwxr-xr-x root/root         0 2014-11-06 17:53 ./usr/
> drwxr-xr-x root/root         0 2014-11-06 17:53 ./usr/share/
> drwxr-xr-x root/root         0 2014-11-06 17:53 ./usr/share/doc/
> drwxr-xr-x root/root         0 2014-11-06 17:53 ./usr/share/doc/libcharls1/
> -rw-r--r-- root/root       750 2014-11-06 16:23
> ./usr/share/doc/libcharls1/changelog.Debian.gz
> -rw-r--r-- root/root      1860 2014-11-06 16:23
> ./usr/share/doc/libcharls1/copyright
> drwxr-xr-x root/root         0 2014-11-06 17:53 ./usr/lib/
> drwxr-xr-x root/root         0 2014-11-06 17:53 ./usr/lib/x86_64-linux-gnu/
> -rw-r--r-- root/root    198824 2014-11-06 17:53
> ./usr/lib/x86_64-linux-gnu/libCharLS.so.1.0
> lrwxrwxrwx root/root         0 2014-11-06 17:53
> ./usr/lib/x86_64-linux-gnu/libCharLS.so.1 -> libCharLS.so.1.0
> 
> and:
> 
> $ dpkg -c libcharls1_1.0-5_i386.deb
> drwxr-xr-x root/root         0 2014-11-06 17:54 ./
> drwxr-xr-x root/root         0 2014-11-06 17:54 ./usr/
> drwxr-xr-x root/root         0 2014-11-06 17:54 ./usr/share/
> drwxr-xr-x root/root         0 2014-11-06 17:54 ./usr/share/doc/
> drwxr-xr-x root/root         0 2014-11-06 17:54 ./usr/share/doc/libcharls1/
> -rw-r--r-- root/root       750 2014-11-06 16:23
> ./usr/share/doc/libcharls1/changelog.Debian.gz
> -rw-r--r-- root/root      1860 2014-11-06 16:23
> ./usr/share/doc/libcharls1/copyright
> drwxr-xr-x root/root         0 2014-11-06 17:54 ./usr/lib/
> drwxr-xr-x root/root         0 2014-11-06 17:54 ./usr/lib/i386-linux-gnu/
> -rw-r--r-- root/root    198060 2014-11-06 17:54
> ./usr/lib/i386-linux-gnu/libCharLS.so.1.0
> lrwxrwxrwx root/root         0 2014-11-06 17:54
> ./usr/lib/i386-linux-gnu/libCharLS.so.1 -> libCharLS.so.1.0
> 
> 
> Install:
> 
> $ sudo dpkg -i libcharls1_1.0-5_amd64.deb libcharls1_1.0-5_i386.deb
> (Reading database ... 252480 files and directories currently installed.)
> Preparing to unpack libcharls1_1.0-5_amd64.deb ...
> Unpacking libcharls1:amd64 (1.0-5) over (1.0-5) ...
> Preparing to unpack libcharls1_1.0-5_i386.deb ...
> Unpacking libcharls1:i386 (1.0-5) over (1.0-5) ...
> Setting up libcharls1:amd64 (1.0-5) ...
> Setting up libcharls1:i386 (1.0-5) ...
> Processing triggers for libc-bin (2.19-12) ...
> 
> But then:
> 
> $ sudo apt-get upgrade
> Reading package lists... Done
> Building dependency tree
> Reading state information... Done
> You might want to run 'apt-get -f install' to correct these.
> The following packages have unmet dependencies:
>  libcharls1:i386 : Conflicts: libcharls1 but 1.0-5 is installed
> E: Unmet dependencies. Try using -f.

I presume you are on an amd64 box? 

It's not obvious what's wrong there. Is your package available
somewhere to look at?

> How do I get a detailed diagnosis of the conflicting files ?

Good question. I usually use aptitude but it's not great for multiarch
issues. does apt-get -f install help?

Wookey
-- 
Principal hats:  Linaro, Emdebian, Wookware, Balloonboard, ARM
http://wookware.org/


Reply to: