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

Re: dpkg-cross multiarch transition

On Fri, 15 Jan 2010 12:17:40 +0000
Neil Williams <codehelp@debian.org> wrote:

Some multiarch packages do exist in sid:

$ cat /var/lib/apt-cross/multiarch.list 
# this file is empty initially and updated using
# /usr/share/apt-cross/update-multiarch.pl


liblouisxml1 is a reverse dependency of liblouis0 in the same list, so
testing with the dpkg-cross changes produces an empty -cross package:

$ dpkg -I liblouisxml1-armel-cross_2.1.0-1_all.deb 
 new debian package, version 2.0.
 size 738 bytes: control archive= 443 bytes.
     534 bytes,    13 lines      control              
       0 bytes,     0 lines      md5sums              
 Package: liblouisxml1-armel-cross
 Version: 2.1.0-1
 Section: devel
 Priority: extra
 Architecture: all
 Maintainer: Debian Accessibility Team <debian-accessibility@lists.debian.org>
 Source: liblouisxml
 Depends: libc6-armel-cross (>= 2.4), liblouis0, libxml2-armel-cross (>= 2.7.4), liblouisxml-data-armel-cross
 Provides: liblouisxml1-armel-dcv1
 X-Multiarch: delete
 Description: liblouisxml1 - multiarch dummy package
  This package was generated by dpkg-cross as a dummy multiarch package.
  Remove this package when there are no reverse dependencies left.

Please check the Depends: line and the rest of the output carefully.

If apt-cross was handling this, it would probably pass '-X
liblouisxml-data' as that is an Architecture: all package, resulting in:

 Depends: libc6-armel-cross (>= 2.4), liblouis0, libxml2-armel-cross (>= 2.7.4)

> new -cross packages are built. The location of this file is, as yet,
> undecided. It *should* be in /etc/ but apt-cross would then need to
> run under sudo to update it, which is something we've avoided before.

The file cannot be a conffile, it needs to be generated - otherwise
migrations of dpkg-cross into testing could make the list go out of sync.

So, dpkg-cross will simply contain the directory in the package itself.
Admins can then choose to create files in that directory that list the
binary package names which are multiarch-compliant. For example,
copy /var/lib/apt-cross/multiarch.list
to /etc/dpkg-cross/multiarch-cross.d/ or create a new file for packages
that are not currently part of Debian.

If you use the new helper from apt-cross, the lists in all files from
the /etc/dpkg-cross/multiarch-cross.d/ directory will be collated and
only packages not already included will be put into
the /var/lib/apt-cross/multiarch.list file.

>  1. Absolute and total reliance on the accuracy of the config file(s)
>      created, updated and maintained by a separate process, e.g.
>      update-multiarch.pl from apt-cross (new helper). (If you need two
>      configurations, use one or more chroots.)
>  2. If the binary package name being handled by dpkg-cross exists in
>      that config file, create a multiarch-cross version - if not,
> behave precisely as now.
>  3. multiarch-cross versions have NO files in the package of any kind.
>  4. multiarch-cross versions have a mangled description indicating a
>      dummy package
>  5. multiarch-cross versions depend on the multiarch native package,
>      i.e. libfoo-ARCH-cross depends on libfoo at or greater than the
>      version of libfoo that first includes multiarch support.
>  6. multiarch-cross versions include a new control field: 
>      X-Multiarch: delete
>  7. multiarch-cross versions have exactly the same package name as
> now, e.g. libfoo-armel-cross, to avoid disturbing reverse
> dependencies.


Neil Williams

Attachment: pgpoPHtwQuRZo.pgp
Description: PGP signature

Reply to: