Debian Bug report logs - #545464
dpkg-cross: multiarch support

version graph

Package: dpkg-cross; Maintainer for dpkg-cross is Debian Embedded Group <debian-embedded@lists.debian.org>; Source for dpkg-cross is src:dpkg-cross.

Reported by: Simon Richter <sjr@debian.org>

Date: Mon, 7 Sep 2009 11:27:03 UTC

Severity: normal

Found in versions 2.5.3+adhoc, dpkg-cross/2.5.5

Fixed in version dpkg-cross/2.5.6

Done: Neil Williams <codehelp@debian.org>

Bug is archived. No further changes may be made.

Toggle useless messages

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to debian-bugs-dist@lists.debian.org, sjr@debian.org, Debian Embedded Group <debian-embedded@lists.debian.org>:
Bug#545464; Package dpkg-cross. (Mon, 07 Sep 2009 11:27:16 GMT) Full text and rfc822 format available.

Acknowledgement sent to Simon Richter <sjr@debian.org>:
New Bug report received and forwarded. Copy sent to sjr@debian.org, Debian Embedded Group <debian-embedded@lists.debian.org>. (Mon, 07 Sep 2009 11:27:24 GMT) Full text and rfc822 format available.

Message #5 received at submit@bugs.debian.org (full text, mbox):

From: Simon Richter <sjr@debian.org>
To: Debian Bug Tracking System <submit@bugs.debian.org>
Subject: dpkg-cross: multiarch support
Date: Mon, 07 Sep 2009 13:03:40 +0200
[Message part 1 (text/plain, inline)]
Package: dpkg-cross
Version: 2.5.3+adhoc
Severity: normal
Tags: patch

Hi,

this patch implements basic multiarch support by simply copying files in
/usr/{include,lib}/$DEB_HOST_GNU_ARCH to the destination package.

I am not 100% sure this will be sufficient for all packages to work,
although I think that packages that would expect us to do some
transformation here would also fail when Debian switches to multiarch.

Severity "normal" since this is urgent to get into Debian before eglibc
switches.

The patch might apply at an offset, as I built it on top of the ad-hoc
architecture definition patch.

   Simon

-- Package-specific info:

-- (/etc/dpkg-cross/cross-compile not submitted) --


-- System Information:
Debian Release: squeeze/sid
  APT prefers unstable
  APT policy: (500, 'unstable'), (1, 'experimental')
Architecture: amd64 (x86_64)

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

Versions of packages dpkg-cross depends on:
ii  binutils-multiarch 2.19.51.20090827-1    Binary utilities that support mult
ii  debconf [debconf-2 1.5.27                Debian configuration management sy
ii  dpkg-dev           1.15.3.1+adhoc        Debian package development tools
ii  libdebian-dpkgcros 2.5.3+adhoc+multiarch functions to aid cross-compiling D
ii  perl               5.10.0-25             Larry Wall's Practical Extraction 

Versions of packages dpkg-cross recommends:
ii  fakeroot                      1.13       Gives a fake root environment

dpkg-cross suggests no packages.

-- debconf information:
* dpkg-cross/default-arch: None
[multiarch.diff (text/x-diff, attachment)]

Information forwarded to debian-bugs-dist@lists.debian.org, sjr@debian.org, Debian Embedded Group <debian-embedded@lists.debian.org>:
Bug#545464; Package dpkg-cross. (Fri, 11 Sep 2009 12:51:07 GMT) Full text and rfc822 format available.

Acknowledgement sent to Simon Richter <sjr@debian.org>:
Extra info received and forwarded to list. Copy sent to sjr@debian.org, Debian Embedded Group <debian-embedded@lists.debian.org>. (Fri, 11 Sep 2009 12:51:07 GMT) Full text and rfc822 format available.

Message #10 received at 545464@bugs.debian.org (full text, mbox):

From: Simon Richter <sjr@debian.org>
To: Debian Bug Tracking System <545464@bugs.debian.org>
Subject: dpkg-cross: updated patch
Date: Fri, 11 Sep 2009 14:49:19 +0200
[Message part 1 (text/plain, inline)]
Package: dpkg-cross
Severity: normal

here is an updated version of the patch.
[dpkg-cross-multiarch.diff (text/x-diff, attachment)]

Information forwarded to debian-bugs-dist@lists.debian.org, Debian Embedded Group <debian-embedded@lists.debian.org>:
Bug#545464; Package dpkg-cross. (Sun, 17 Jan 2010 14:42:10 GMT) Full text and rfc822 format available.

Acknowledgement sent to Neil Williams <codehelp@debian.org>:
Extra info received and forwarded to list. Copy sent to Debian Embedded Group <debian-embedded@lists.debian.org>. (Sun, 17 Jan 2010 14:42:10 GMT) Full text and rfc822 format available.

Message #15 received at 545464@bugs.debian.org (full text, mbox):

From: Neil Williams <codehelp@debian.org>
To: 545464@bugs.debian.org
Cc: 545464-submitter@bugs.debian.org
Subject: Still relevant?
Date: Sun, 17 Jan 2010 14:37:06 +0000
[Message part 1 (text/plain, inline)]
Is this patch still relevant?

With the wider changes to dpkg-cross for multiarch support, what would
be the purpose of building a -cross package from a binary that has
already been converted to multiarch?

http://lists.debian.org/debian-embedded/2010/01/msg00008.html

There would seem to be no reason to support multiarch paths, instead a
-cross package of a multiarched package should be an empty dummy
package.

-- 


Neil Williams
=============
http://www.data-freedom.org/
http://www.linux.codehelp.co.uk/
http://e-mail.is-not-s.ms/

[Message part 2 (application/pgp-signature, inline)]

Message sent on to Simon Richter <sjr@debian.org>:
Bug#545464. (Sun, 17 Jan 2010 14:42:14 GMT) Full text and rfc822 format available.

Information forwarded to debian-bugs-dist@lists.debian.org, Debian Embedded Group <debian-embedded@lists.debian.org>:
Bug#545464; Package dpkg-cross. (Sun, 17 Jan 2010 21:30:16 GMT) Full text and rfc822 format available.

Acknowledgement sent to Simon Richter <sjr@debian.org>:
Extra info received and forwarded to list. Copy sent to Debian Embedded Group <debian-embedded@lists.debian.org>. (Sun, 17 Jan 2010 21:30:17 GMT) Full text and rfc822 format available.

Message #23 received at 545464@bugs.debian.org (full text, mbox):

From: Simon Richter <sjr@debian.org>
To: Neil Williams <codehelp@debian.org>, 545464-quiet@bugs.debian.org
Cc: 545464@bugs.debian.org, 545464-submitter@bugs.debian.org
Subject: Re: Bug#545464: Still relevant?
Date: Sun, 17 Jan 2010 22:21:36 +0100
Hi,

On Sun, Jan 17, 2010 at 02:37:06PM +0000, Neil Williams wrote:

> Is this patch still relevant?

This allows multiarch packages to be used on systems with non-multiarch
dpkg, provided the cross-compiler used looks into the multiarch paths. I
have no idea whether this is a desired feature.

> There would seem to be no reason to support multiarch paths, instead a
> -cross package of a multiarched package should be an empty dummy
> package.

This may indeed be the way to go.

   Simon




Information stored :
Bug#545464; Package dpkg-cross. (Sun, 17 Jan 2010 21:30:18 GMT) Full text and rfc822 format available.

Acknowledgement sent to Simon Richter <sjr@debian.org>:
Extra info received and filed, but not forwarded. (Sun, 17 Jan 2010 21:30:18 GMT) Full text and rfc822 format available.

Message sent on to Simon Richter <sjr@debian.org>:
Bug#545464. (Sun, 17 Jan 2010 21:30:22 GMT) Full text and rfc822 format available.

Reply sent to Neil Williams <codehelp@debian.org>:
You have taken responsibility. (Mon, 18 Jan 2010 12:21:07 GMT) Full text and rfc822 format available.

Notification sent to Simon Richter <sjr@debian.org>:
Bug acknowledged by developer. (Mon, 18 Jan 2010 12:21:07 GMT) Full text and rfc822 format available.

Message #36 received at 545464-done@bugs.debian.org (full text, mbox):

From: Neil Williams <codehelp@debian.org>
To: 545464-done@bugs.debian.org
Subject: Closing
Date: Mon, 18 Jan 2010 12:18:51 +0000
[Message part 1 (text/plain, inline)]
> On Sun, Jan 17, 2010 at 02:37:06PM +0000, Neil Williams wrote:
> 
> > Is this patch still relevant?
> 
> This allows multiarch packages to be used on systems with non-multiarch
> dpkg, provided the cross-compiler used looks into the multiarch paths. I
> have no idea whether this is a desired feature.

I don't see a use case for it - the package can just be handled as a
normal -cross package.
 
> > There would seem to be no reason to support multiarch paths, instead a
> > -cross package of a multiarched package should be an empty dummy
> > package.
> 
> This may indeed be the way to go.

OK. 


-- 


Neil Williams
=============
http://www.data-freedom.org/
http://www.nosoftwarepatents.com/
http://www.linux.codehelp.co.uk/

[Message part 2 (application/pgp-signature, inline)]

Information forwarded to debian-bugs-dist@lists.debian.org, Debian Embedded Group <debian-embedded@lists.debian.org>:
Bug#545464; Package dpkg-cross. (Fri, 29 Jan 2010 23:36:07 GMT) Full text and rfc822 format available.

Acknowledgement sent to Goswin von Brederlow <goswin-v-b@web.de>:
Extra info received and forwarded to list. Copy sent to Debian Embedded Group <debian-embedded@lists.debian.org>. (Fri, 29 Jan 2010 23:36:07 GMT) Full text and rfc822 format available.

Message #41 received at 545464@bugs.debian.org (full text, mbox):

From: Goswin von Brederlow <goswin-v-b@web.de>
To: Debian Bug Tracking System <545464@bugs.debian.org>
Subject: Please build full -cross packages by default still
Date: Sat, 30 Jan 2010 00:34:02 +0100
Package: dpkg-cross
Version: 2.5.5
Severity: normal

Hi,

on top of the multiarch support in dpkg-cross looking broken (it just
skips multiarch packages instead of creating a dummy here) the current
dpkg does not support installing the multiarch package for foreign
architectures anyway.

For that reason please, by default, convert multiarch packages into
-cross packages with all the files moved into the cross compile dirs
(to avoid future file conflicts).

It would be good to have an option to create the dummy -cross package
for testing purposes. Then later, when dpkg supports multiarch, a
conffile option would be nice so users can start the transition. Only
after some time of testing should this become default though and it
should still be disableable (is that a word? possible to disable) so
unstable dpkg-cross can still be used to create packages for
pre-multiarch dpkg.

MfG
	Goswin

-- Package-specific info:

-- (/etc/dpkg-cross/cross-compile not submitted) --


-- System Information:
Debian Release: squeeze/sid
  APT prefers unstable
  APT policy: (500, 'unstable'), (499, 'unstable')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.29.4-frosties-2 (SMP w/4 CPU cores)
Locale: LANG=C, LC_CTYPE=de_DE (charmap=ISO-8859-1)
Shell: /bin/sh linked to /bin/bash

Versions of packages dpkg-cross depends on:
ii  binutils-multiarch            2.20-5     Binary utilities that support mult
ii  debconf [debconf-2.0]         1.5.28     Debian configuration management sy
ii  dpkg-dev                      1.15.5.6   Debian package development tools
ii  libconfig-auto-perl           0.20-2     Magical config file parser
ii  libdebian-dpkgcross-perl      2.5.5      functions to aid cross-compiling D
ii  perl                          5.10.1-9   Larry Wall's Practical Extraction 

Versions of packages dpkg-cross recommends:
ii  fakeroot                      1.14.4-1   Gives a fake root environment

dpkg-cross suggests no packages.

-- debconf information excluded




Did not alter fixed versions and reopened. Request was from Debbugs Internal Request <owner@bugs.debian.org> to internal_control@bugs.debian.org. (Wed, 03 Feb 2010 15:00:03 GMT) Full text and rfc822 format available.

Information forwarded to debian-bugs-dist@lists.debian.org, Debian Embedded Group <debian-embedded@lists.debian.org>:
Bug#545464; Package dpkg-cross. (Tue, 09 Feb 2010 18:48:03 GMT) Full text and rfc822 format available.

Acknowledgement sent to Neil Williams <codehelp@debian.org>:
Extra info received and forwarded to list. Copy sent to Debian Embedded Group <debian-embedded@lists.debian.org>. (Tue, 09 Feb 2010 18:48:03 GMT) Full text and rfc822 format available.

Message #48 received at 545464@bugs.debian.org (full text, mbox):

From: Neil Williams <codehelp@debian.org>
To: 545464@bugs.debian.org, control@bugs.debian.org
Subject: Zombie cross packages
Date: Tue, 9 Feb 2010 18:49:42 +0000
[Message part 1 (text/plain, inline)]
tag 545464 - patch
thanks

The plan for the transition will be:

0. fix dpkg-cross to properly create the packages that should have been
made in the latest release.

1. dpkg-cross puts no files in the new multiarch locations, no matter
what - this prevents conflicts when the new version of dpkg is able to
install the packages containing those multiarch locations.

2. dpkg-cross enforces OLD behaviour for all packages no matter what -
this preserves the old paths for the current compilers.

3. packages that contain multiarch metadata in debian/control get an
explanation in the -cross package description and that's it - these
are henceforth termed zombie cross packages because they are only
needed to support remaining reverse dependencies.

4. need am emprunecross helper to identify these zombie cross packages
and delete them all. (emprunecross removes all -cross, the new helper
needs to be in dpkg-cross and far more precise.)

5. need zombie package-aware dpkg-checkbuilddeps

6. At some point *AFTER* dpkg has support for installing the true
multiarch packages in their correct (new) locations
(e.g. usr/lib/$triplet), then a new version of dpkg-cross can be
prepared that drops the old location from any new zombie packages
created after that time. All zombies (and only zombies) will be
made from multiarch-compatible packages and zombies created by the
final version of dpkg-cross will be truly empty.

Item 5 will wait, the important parts are:

a: current compilers work with current locations and gradually learn to
look in the new multiarch locations - packages or test chroots can be
manually fettled to have files in the relevant locations for testing
purposes. Alternatively, test with a patched dpkg that can use the
multiarch package itself.

b: when a version of dpkg is uploaded that understands how to install
an armel mulitarch package alongside the amd64 one, the cross package
will not prevent installation of the armel mulitarch package.

c: The aim is to have the wrapper for removing these zombie packages in
the version of dpkg-cross which makes it into Squeeze. Users are
advised to run the wrapper frequently to reduce problems of having a
new version of the headers in the multiarch location and a previous
version in the old cross location. It is not possible to impose a
arch-specific conflict in the zombie cross package but it might be
possible for the multiarch package to conflict with the zombie cross
package.

d: the patch for #545464 is wrong because it puts symlinks in the new
location and the real files in the old location. This is unnecessary
churn when this zombie cross package merely needs to contain the files
for the old location and be deleted as soon as the reverse dependencies
make that possible.

e: if this all happens during a SONAME transition for a particular
package all bets are off - although it probably will work as the zombie
cross package will replace the previous cross package with the new
version headers.

f: essentially, the perennial problem of not being able to
automatically upgrade -cross packages remains as problematic as ever
because of #d and #e.

The intention here is to not require a new version of dpkg-cross
immediately that a new version of dpkg becomes available and to be sure
that the new version of dpkg can install multiarch packages without
dpkg-cross and -cross packages in general getting in the way.

There was always going to be some pain during this transition for those
who want to use dpkg-cross with Debian unstable (or squeeze until the
freeze starts) - that pain is mostly restricted to manually having to
update and upgrade -cross packages but as this burden is not new, I
don't see that as a barrier. It just becomes possibly more of an issue
than previously.

-- 


Neil Williams
=============
http://www.data-freedom.org/
http://www.linux.codehelp.co.uk/
http://e-mail.is-not-s.ms/

[Message part 2 (application/pgp-signature, inline)]

Removed tag(s) patch. Request was from Neil Williams <codehelp@debian.org> to control@bugs.debian.org. (Tue, 09 Feb 2010 18:48:09 GMT) Full text and rfc822 format available.

Added tag(s) pending. Request was from Neil Williams <codehelp@debian.org> to control@bugs.debian.org. (Tue, 09 Feb 2010 23:00:06 GMT) Full text and rfc822 format available.

Information forwarded to debian-bugs-dist@lists.debian.org, Debian Embedded Group <debian-embedded@lists.debian.org>:
Bug#545464; Package dpkg-cross. (Wed, 10 Feb 2010 08:09:03 GMT) Full text and rfc822 format available.

Acknowledgement sent to Goswin von Brederlow <goswin-v-b@web.de>:
Extra info received and forwarded to list. Copy sent to Debian Embedded Group <debian-embedded@lists.debian.org>. (Wed, 10 Feb 2010 08:09:03 GMT) Full text and rfc822 format available.

Message #57 received at 545464@bugs.debian.org (full text, mbox):

From: Goswin von Brederlow <goswin-v-b@web.de>
To: 545464@bugs.debian.org
Subject: Re: Bug#545464: Zombie cross packages
Date: Wed, 10 Feb 2010 09:07:51 +0100
Neil Williams <codehelp@debian.org> writes:

> tag 545464 - patch
> thanks
>
> The plan for the transition will be:
>
> 0. fix dpkg-cross to properly create the packages that should have been
> made in the latest release.
>
> 1. dpkg-cross puts no files in the new multiarch locations, no matter
> what - this prevents conflicts when the new version of dpkg is able to
> install the packages containing those multiarch locations.
>
> 2. dpkg-cross enforces OLD behaviour for all packages no matter what -
> this preserves the old paths for the current compilers.
>
> 3. packages that contain multiarch metadata in debian/control get an
> explanation in the -cross package description and that's it - these
> are henceforth termed zombie cross packages because they are only
> needed to support remaining reverse dependencies.

That can not happen till dpkg can actually install multiarch packages
for foreign architectures. And even then it should be an option so one
can convert packages for use with older dpkg.

So by default even package with multiarch metadata must use the OLD
behaviour unless configured to use zombie packages. Anything else will
not result in something functional now.

> 4. need am emprunecross helper to identify these zombie cross packages
> and delete them all. (emprunecross removes all -cross, the new helper
> needs to be in dpkg-cross and far more precise.)

Do we? There is the automatic tracking in apt-get/aptitude. There is
deborphan and debfoster. And the normal use case is a chroot that needs
a good spring cleaning every now and then anyway.

> 5. need zombie package-aware dpkg-checkbuilddeps

Long term.

> 6. At some point *AFTER* dpkg has support for installing the true
> multiarch packages in their correct (new) locations
> (e.g. usr/lib/$triplet), then a new version of dpkg-cross can be
> prepared that drops the old location from any new zombie packages
> created after that time. All zombies (and only zombies) will be
> made from multiarch-compatible packages and zombies created by the
> final version of dpkg-cross will be truly empty.

Zombie packages should have no files in them (other than maybe
/usr/share/doc). Anything else would not be the empty dummy packages
previously discussed.

> Item 5 will wait, the important parts are:
>
> a: current compilers work with current locations and gradually learn to
> look in the new multiarch locations - packages or test chroots can be
> manually fettled to have files in the relevant locations for testing
> purposes. Alternatively, test with a patched dpkg that can use the
> multiarch package itself.
>
> b: when a version of dpkg is uploaded that understands how to install
> an armel mulitarch package alongside the amd64 one, the cross package
> will not prevent installation of the armel mulitarch package.

Additionally the -cross package should depend on the same version of the
non-cross package. The multiarch amd64 and armel packages will also be
locked to be the same version. Put both together and you ensure that
there is only one version of a library present at any one time for all
architectures. That way it doesn't matter if the compiler use the files
from the old or new location.

> c: The aim is to have the wrapper for removing these zombie packages in
> the version of dpkg-cross which makes it into Squeeze. Users are
> advised to run the wrapper frequently to reduce problems of having a
> new version of the headers in the multiarch location and a previous
> version in the old cross location. It is not possible to impose a
> arch-specific conflict in the zombie cross package but it might be
> possible for the multiarch package to conflict with the zombie cross
> package.

Not needed. See above. Official packages also can't have arch specific
depends or conflicts and won't have conflicts on all possible -cross
packages of themself. Multiarch dpkg requires that all architectures
must have the same version. So we only have to make sure the -cross
packages are that version as well (zombie or not zombie). A depends in
the -cross package does that.

> d: the patch for #545464 is wrong because it puts symlinks in the new
> location and the real files in the old location. This is unnecessary
> churn when this zombie cross package merely needs to contain the files
> for the old location and be deleted as soon as the reverse dependencies
> make that possible.

As said above. Zombie packages should be empty. And non zombie packages
have all files in the OLD dirs, even if the original deb has them in the
new dirs. By keeping the dirs seperate the multiarch package can be
installed later without a file overwrite conflict, as you said above. I
think that is an important feature.

> e: if this all happens during a SONAME transition for a particular
> package all bets are off - although it probably will work as the zombie
> cross package will replace the previous cross package with the new
> version headers.

Huh? If a SONAME happens at the same time then you have libfoo1,
libfoo1-armel-cross, libfoo2:amd64, libfoo2:armel and optional
libfoo2-armel-cross. None of them have any files in common and none of
them would would be upgraded automatically unless a reverse depends
upgrade says so. They can all be installed in parallel.

> f: essentially, the perennial problem of not being able to
> automatically upgrade -cross packages remains as problematic as ever
> because of #d and #e.
>
> The intention here is to not require a new version of dpkg-cross
> immediately that a new version of dpkg becomes available and to be sure
> that the new version of dpkg can install multiarch packages without
> dpkg-cross and -cross packages in general getting in the way.
>
> There was always going to be some pain during this transition for those
> who want to use dpkg-cross with Debian unstable (or squeeze until the
> freeze starts) - that pain is mostly restricted to manually having to
> update and upgrade -cross packages but as this burden is not new, I
> don't see that as a barrier. It just becomes possibly more of an issue
> than previously.

And apt-ma-emu solves that part.

MfG
        Goswin

PS: The only thing really required is to move files from
/usr/lib/triplet to /usr/triplet/lib in -cross packages in
dpkg-cross. Anything else is just nice.




Information forwarded to debian-bugs-dist@lists.debian.org, Debian Embedded Group <debian-embedded@lists.debian.org>:
Bug#545464; Package dpkg-cross. (Wed, 10 Feb 2010 14:06:06 GMT) Full text and rfc822 format available.

Acknowledgement sent to Neil Williams <codehelp@debian.org>:
Extra info received and forwarded to list. Copy sent to Debian Embedded Group <debian-embedded@lists.debian.org>. (Wed, 10 Feb 2010 14:06:06 GMT) Full text and rfc822 format available.

Message #62 received at 545464@bugs.debian.org (full text, mbox):

From: Neil Williams <codehelp@debian.org>
To: 545464@bugs.debian.org
Subject: Re: Bug#545464: Zombie cross packages
Date: Wed, 10 Feb 2010 14:04:28 +0000
[Message part 1 (text/plain, inline)]
On Wed, 10 Feb 2010 09:07:51 +0100
Goswin von Brederlow <goswin-v-b@web.de> wrote:

> > 3. packages that contain multiarch metadata in debian/control get an
> > explanation in the -cross package description and that's it - these
> > are henceforth termed zombie cross packages because they are only
> > needed to support remaining reverse dependencies.
> 
> That can not happen till dpkg can actually install multiarch packages
> for foreign architectures. And even then it should be an option so one
> can convert packages for use with older dpkg.

Forget empty packages, zombies aren't empty, just zombies. :-)

This is the example workflow for the current changes:

(liblouis2 declares a Multi-Arch field and has it's files in Multiarch
places, libqof2 is a plain pre-Multiarch library.)

root@calvin:~/dpkg-cross-test# dpkg-cross -a armel -v -b liblouis2_1.8.0-1_armel.deb 
Excluding: 
Trying to build: liblouis2_1.8.0-1_armel.deb
Going to convert liblouis2_1.8.0-1_armel.deb
Extracting liblouis2_1.8.0-1_armel.deb
Extracting information from control file
Creating destination package tree
moving symlink /usr/lib/arm-linux-gnueabi/liblouis.so.2.
moving file /usr/lib/arm-linux-gnueabi/liblouis.so.2.1.0.
Installing shlibs file
Creating control file
Creating md5sums file
dpkg-deb: building package `liblouis2-armel-cross' in `./liblouis2-armel-cross_1.8.0-1_all.deb'.
root@calvin:~/dpkg-cross-test# dpkg -c ./liblouis2-armel-cross_1.8.0-1_all.deb
drwxr-xr-x root/root         0 2010-02-10 13:50 ./
drwxr-xr-x root/root         0 2010-02-10 13:50 ./usr/
drwxr-xr-x root/root         0 2010-02-10 13:50 ./usr/arm-linux-gnueabi/
drwxr-xr-x root/root         0 2010-02-10 13:50 ./usr/arm-linux-gnueabi/include/
-rw-r--r-- root/root     80556 2010-02-10 13:50 ./usr/arm-linux-gnueabi/include/liblouis.so.2.1.0
lrwxrwxrwx root/root         0 2010-02-10 13:50 ./usr/arm-linux-gnueabi/include/liblouis.so.2 -> liblouis.so.2.1.0
root@calvin:~/dpkg-cross-test# dpkg-cross -a armel -v -b libqof2_0.8.1-1_armel.deb   
Excluding: 
Trying to build: libqof2_0.8.1-1_armel.deb
Going to convert libqof2_0.8.1-1_armel.deb
Extracting libqof2_0.8.1-1_armel.deb
Extracting information from control file
Creating destination package tree
Creating symlink /usr/arm-linux-gnueabi/lib/libqof.so.2 -> libqof.so.2.0.1
Creating symlink /usr/arm-linux-gnueabi/lib/libqofsql.so.1 -> libqofsql.so.1.0.1
Creating /usr/share/doc/libqof2-armel-cross/README
Installing shlibs file
Creating control file
Creating md5sums file
dpkg-deb: building package `libqof2-armel-cross' in `./libqof2-armel-cross_0.8.1-1_all.deb'.
root@calvin:~/dpkg-cross-test# dpkg -c ./libqof2-armel-cross_0.8.1-1_all.deb  
drwxr-xr-x root/root         0 2010-02-10 13:50 ./
drwxr-xr-x root/root         0 2010-02-10 13:50 ./usr/
drwxr-xr-x root/root         0 2010-02-10 13:50 ./usr/arm-linux-gnueabi/
drwxr-xr-x root/root         0 2010-02-10 13:50 ./usr/arm-linux-gnueabi/lib/
-rw-r--r-- root/root     42836 2009-07-07 00:11 ./usr/arm-linux-gnueabi/lib/libqofsql.so.1.0.1
-rw-r--r-- root/root    245296 2009-07-07 00:11 ./usr/arm-linux-gnueabi/lib/libqof.so.2.0.1
drwxr-xr-x root/root         0 2010-02-10 13:50 ./usr/share/
drwxr-xr-x root/root         0 2010-02-10 13:50 ./usr/share/doc/
drwxr-xr-x root/root         0 2010-02-10 13:50 ./usr/share/doc/libqof2-armel-cross/
-rw-r--r-- root/root       262 2010-02-10 13:50 ./usr/share/doc/libqof2-armel-cross/README
lrwxrwxrwx root/root         0 2010-02-10 13:50 ./usr/arm-linux-gnueabi/lib/libqof.so.2 -> libqof.so.2.0.1
lrwxrwxrwx root/root         0 2010-02-10 13:50 ./usr/arm-linux-gnueabi/lib/libqofsql.so.1 -> libqofsql.so.1.0.1
root@calvin:~/dpkg-cross-test# 

./liblouis2-armel-cross_1.8.0-1_all.deb is the zombie

root@calvin:~/dpkg-cross-test# dpkg -I ./liblouis2-armel-cross_1.8.0-1_all.deb
 new debian package, version 2.0.
 size 44116 bytes: control archive= 541 bytes.
     498 bytes,    14 lines      control              
      82 bytes,     1 lines      md5sums              
      21 bytes,     1 lines      shlibs               
 Package: liblouis2-armel-cross
 Version: 1.8.0-1
 Section: devel
 Priority: extra
 Architecture: all
 Maintainer: Debian Accessibility Team <debian-accessibility@lists.debian.org>
 Source: liblouis
 Depends: libc6-armel-cross (>= 2.4), liblouis-data-armel-cross
 Provides: liblouis2-armel-dcv1
 X-Multiarch: delete
 Description: liblouis2 - multiarch zombie package
  This package was generated by dpkg-cross as a zombie multiarch package.
  .
  Remove this package when there are no reverse dependencies left.

> So by default even package with multiarch metadata must use the OLD
> behaviour unless configured to use zombie packages. Anything else will
> not result in something functional now.

Misunderstanding. Zombies use the old behaviour and there's no
configuration step.

> > 4. need am emprunecross helper to identify these zombie cross packages
> > and delete them all. (emprunecross removes all -cross, the new helper
> > needs to be in dpkg-cross and far more precise.)
> 
> Do we? There is the automatic tracking in apt-get/aptitude. There is
> deborphan and debfoster. And the normal use case is a chroot that needs
> a good spring cleaning every now and then anyway.

True but *every* -cross package shows up in the aptitude/synaptic
local/obsolete list - that's the same list that emprunecross finds.
Except that with aptitude/synaptic that list also includes locally
installed packages like test builds and pre-upload versions. What we
need to help people identify are *just* the zombie packages and then
work out which of those have no reverse dependencies still installed
and can therefore be removed.

> > 6. At some point *AFTER* dpkg has support for installing the true
> > multiarch packages in their correct (new) locations
> > (e.g. usr/lib/$triplet), then a new version of dpkg-cross can be
> > prepared that drops the old location from any new zombie packages
> > created after that time. All zombies (and only zombies) will be
> > made from multiarch-compatible packages and zombies created by the
> > final version of dpkg-cross will be truly empty.
> 
> Zombie packages should have no files in them (other than maybe
> /usr/share/doc). Anything else would not be the empty dummy packages
> previously discussed.

No, that's changed. Sorry if that wasn't clear. Zombie packages contain
files in the OLD locations.
 
> > Item 5 will wait, the important parts are:
> >
> > a: current compilers work with current locations and gradually learn to
> > look in the new multiarch locations - packages or test chroots can be
> > manually fettled to have files in the relevant locations for testing
> > purposes. Alternatively, test with a patched dpkg that can use the
> > multiarch package itself.
> >
> > b: when a version of dpkg is uploaded that understands how to install
> > an armel mulitarch package alongside the amd64 one, the cross package
> > will not prevent installation of the armel mulitarch package.
> 
> Additionally the -cross package should depend on the same version of the
> non-cross package.

We've had this discussion before - there cannot be a cross-architecture
dependency at this time.

http://lists.debian.org/debian-embedded/2010/01/msg00028.html

> > c: The aim is to have the wrapper for removing these zombie packages in
> > the version of dpkg-cross which makes it into Squeeze. Users are
> > advised to run the wrapper frequently to reduce problems of having a
> > new version of the headers in the multiarch location and a previous
> > version in the old cross location. It is not possible to impose a
> > arch-specific conflict in the zombie cross package but it might be
> > possible for the multiarch package to conflict with the zombie cross
> > package.
> 
> Not needed. See above. 

Not essential but very useful and it is desirable.
[Message part 2 (application/pgp-signature, inline)]

Information forwarded to debian-bugs-dist@lists.debian.org, Debian Embedded Group <debian-embedded@lists.debian.org>:
Bug#545464; Package dpkg-cross. (Wed, 10 Feb 2010 21:09:03 GMT) Full text and rfc822 format available.

Acknowledgement sent to Goswin von Brederlow <goswin-v-b@web.de>:
Extra info received and forwarded to list. Copy sent to Debian Embedded Group <debian-embedded@lists.debian.org>. (Wed, 10 Feb 2010 21:09:03 GMT) Full text and rfc822 format available.

Message #67 received at 545464@bugs.debian.org (full text, mbox):

From: Goswin von Brederlow <goswin-v-b@web.de>
To: Neil Williams <codehelp@debian.org>
Cc: 545464@bugs.debian.org
Subject: Re: Bug#545464: Zombie cross packages
Date: Wed, 10 Feb 2010 22:08:01 +0100
Neil Williams <codehelp@debian.org> writes:

> On Wed, 10 Feb 2010 09:07:51 +0100
> Goswin von Brederlow <goswin-v-b@web.de> wrote:
>
>> > 3. packages that contain multiarch metadata in debian/control get an
>> > explanation in the -cross package description and that's it - these
>> > are henceforth termed zombie cross packages because they are only
>> > needed to support remaining reverse dependencies.
>> 
>> That can not happen till dpkg can actually install multiarch packages
>> for foreign architectures. And even then it should be an option so one
>> can convert packages for use with older dpkg.
>
> Forget empty packages, zombies aren't empty, just zombies. :-)
>
> This is the example workflow for the current changes:
>
> (liblouis2 declares a Multi-Arch field and has it's files in Multiarch
> places, libqof2 is a plain pre-Multiarch library.)
>
> root@calvin:~/dpkg-cross-test# dpkg-cross -a armel -v -b liblouis2_1.8.0-1_armel.deb 
> Excluding: 
> Trying to build: liblouis2_1.8.0-1_armel.deb
> Going to convert liblouis2_1.8.0-1_armel.deb
> Extracting liblouis2_1.8.0-1_armel.deb
> Extracting information from control file
> Creating destination package tree
> moving symlink /usr/lib/arm-linux-gnueabi/liblouis.so.2.
> moving file /usr/lib/arm-linux-gnueabi/liblouis.so.2.1.0.
> Installing shlibs file
> Creating control file
> Creating md5sums file
> dpkg-deb: building package `liblouis2-armel-cross' in `./liblouis2-armel-cross_1.8.0-1_all.deb'.
> root@calvin:~/dpkg-cross-test# dpkg -c ./liblouis2-armel-cross_1.8.0-1_all.deb
> drwxr-xr-x root/root         0 2010-02-10 13:50 ./
> drwxr-xr-x root/root         0 2010-02-10 13:50 ./usr/
> drwxr-xr-x root/root         0 2010-02-10 13:50 ./usr/arm-linux-gnueabi/
> drwxr-xr-x root/root         0 2010-02-10 13:50 ./usr/arm-linux-gnueabi/include/
> -rw-r--r-- root/root     80556 2010-02-10 13:50 ./usr/arm-linux-gnueabi/include/liblouis.so.2.1.0
> lrwxrwxrwx root/root         0 2010-02-10 13:50 ./usr/arm-linux-gnueabi/include/liblouis.so.2 -> liblouis.so.2.1.0
> root@calvin:~/dpkg-cross-test# dpkg-cross -a armel -v -b libqof2_0.8.1-1_armel.deb   
> Excluding: 
> Trying to build: libqof2_0.8.1-1_armel.deb
> Going to convert libqof2_0.8.1-1_armel.deb
> Extracting libqof2_0.8.1-1_armel.deb
> Extracting information from control file
> Creating destination package tree
> Creating symlink /usr/arm-linux-gnueabi/lib/libqof.so.2 -> libqof.so.2.0.1
> Creating symlink /usr/arm-linux-gnueabi/lib/libqofsql.so.1 -> libqofsql.so.1.0.1
> Creating /usr/share/doc/libqof2-armel-cross/README
> Installing shlibs file
> Creating control file
> Creating md5sums file
> dpkg-deb: building package `libqof2-armel-cross' in `./libqof2-armel-cross_0.8.1-1_all.deb'.
> root@calvin:~/dpkg-cross-test# dpkg -c ./libqof2-armel-cross_0.8.1-1_all.deb  
> drwxr-xr-x root/root         0 2010-02-10 13:50 ./
> drwxr-xr-x root/root         0 2010-02-10 13:50 ./usr/
> drwxr-xr-x root/root         0 2010-02-10 13:50 ./usr/arm-linux-gnueabi/
> drwxr-xr-x root/root         0 2010-02-10 13:50 ./usr/arm-linux-gnueabi/lib/
> -rw-r--r-- root/root     42836 2009-07-07 00:11 ./usr/arm-linux-gnueabi/lib/libqofsql.so.1.0.1
> -rw-r--r-- root/root    245296 2009-07-07 00:11 ./usr/arm-linux-gnueabi/lib/libqof.so.2.0.1
> drwxr-xr-x root/root         0 2010-02-10 13:50 ./usr/share/
> drwxr-xr-x root/root         0 2010-02-10 13:50 ./usr/share/doc/
> drwxr-xr-x root/root         0 2010-02-10 13:50 ./usr/share/doc/libqof2-armel-cross/
> -rw-r--r-- root/root       262 2010-02-10 13:50 ./usr/share/doc/libqof2-armel-cross/README
> lrwxrwxrwx root/root         0 2010-02-10 13:50 ./usr/arm-linux-gnueabi/lib/libqof.so.2 -> libqof.so.2.0.1
> lrwxrwxrwx root/root         0 2010-02-10 13:50 ./usr/arm-linux-gnueabi/lib/libqofsql.so.1 -> libqofsql.so.1.0.1
> root@calvin:~/dpkg-cross-test# 
>
> ./liblouis2-armel-cross_1.8.0-1_all.deb is the zombie
>
> root@calvin:~/dpkg-cross-test# dpkg -I ./liblouis2-armel-cross_1.8.0-1_all.deb
>  new debian package, version 2.0.
>  size 44116 bytes: control archive= 541 bytes.
>      498 bytes,    14 lines      control              
>       82 bytes,     1 lines      md5sums              
>       21 bytes,     1 lines      shlibs               
>  Package: liblouis2-armel-cross
>  Version: 1.8.0-1
>  Section: devel
>  Priority: extra
>  Architecture: all
>  Maintainer: Debian Accessibility Team <debian-accessibility@lists.debian.org>
>  Source: liblouis
>  Depends: libc6-armel-cross (>= 2.4), liblouis-data-armel-cross
>  Provides: liblouis2-armel-dcv1
>  X-Multiarch: delete
>  Description: liblouis2 - multiarch zombie package
>   This package was generated by dpkg-cross as a zombie multiarch package.
>   .
>   Remove this package when there are no reverse dependencies left.

Please don't call it a zombie. It has no zombieish properties. It has
exactly the same contents and locations as when converted from a
non-multiarch liblouis2. It also has the exact same depends, provides,
conflicts, ... as when converted from a non-multiarch liblouis2. It is
also not save to remove this package as that would remove vital files.
The only difference is where file were located before conversion.

It also only becomes save to remove liblouis2-armel-cross when it has
pulled in the multiarch liblouis2:armel to provide the files and has no
reverse depends left. So the description is wrong too.

>> So by default even package with multiarch metadata must use the OLD
>> behaviour unless configured to use zombie packages. Anything else will
>> not result in something functional now.
>
> Misunderstanding. Zombies use the old behaviour and there's no
> configuration step.
>
>> > 4. need am emprunecross helper to identify these zombie cross packages
>> > and delete them all. (emprunecross removes all -cross, the new helper
>> > needs to be in dpkg-cross and far more precise.)
>> 
>> Do we? There is the automatic tracking in apt-get/aptitude. There is
>> deborphan and debfoster. And the normal use case is a chroot that needs
>> a good spring cleaning every now and then anyway.
>
> True but *every* -cross package shows up in the aptitude/synaptic
> local/obsolete list - that's the same list that emprunecross finds.
> Except that with aptitude/synaptic that list also includes locally
> installed packages like test builds and pre-upload versions. What we
> need to help people identify are *just* the zombie packages and then
> work out which of those have no reverse dependencies still installed
> and can therefore be removed.
>
>> > 6. At some point *AFTER* dpkg has support for installing the true
>> > multiarch packages in their correct (new) locations
>> > (e.g. usr/lib/$triplet), then a new version of dpkg-cross can be
>> > prepared that drops the old location from any new zombie packages
>> > created after that time. All zombies (and only zombies) will be
>> > made from multiarch-compatible packages and zombies created by the
>> > final version of dpkg-cross will be truly empty.
>> 
>> Zombie packages should have no files in them (other than maybe
>> /usr/share/doc). Anything else would not be the empty dummy packages
>> previously discussed.
>
> No, that's changed. Sorry if that wasn't clear. Zombie packages contain
> files in the OLD locations.
>  
>> > Item 5 will wait, the important parts are:
>> >
>> > a: current compilers work with current locations and gradually learn to
>> > look in the new multiarch locations - packages or test chroots can be
>> > manually fettled to have files in the relevant locations for testing
>> > purposes. Alternatively, test with a patched dpkg that can use the
>> > multiarch package itself.
>> >
>> > b: when a version of dpkg is uploaded that understands how to install
>> > an armel mulitarch package alongside the amd64 one, the cross package
>> > will not prevent installation of the armel mulitarch package.
>> 
>> Additionally the -cross package should depend on the same version of the
>> non-cross package.
>
> We've had this discussion before - there cannot be a cross-architecture
> dependency at this time.

And I'm not suggesting to add one. A plain libfoo-armel-cross "Depends:
libfoo (= 1.2-3)" will do. That will require at least some arch for have
a libfoo of version 1.2-3 and multiarch then requires all of them to be
version 1.2-3. Overall that ensures every libfoo.so.1.2 on the system
will be from 1.2-3. No version skew possible.

> http://lists.debian.org/debian-embedded/2010/01/msg00028.html
>
>> > c: The aim is to have the wrapper for removing these zombie packages in
>> > the version of dpkg-cross which makes it into Squeeze. Users are
>> > advised to run the wrapper frequently to reduce problems of having a
>> > new version of the headers in the multiarch location and a previous
>> > version in the old cross location. It is not possible to impose a
>> > arch-specific conflict in the zombie cross package but it might be
>> > possible for the multiarch package to conflict with the zombie cross
>> > package.
>> 
>> Not needed. See above. 
>
> Not essential but very useful and it is desirable.

I suggest making something that works for every transitional dummy
package in Debian and then building our dummy cross packages to fit the
same pattern. Checking the package has no files other than the required
files in /usr/share/doc/package and no reverse depends might do it.

That also wouldn't catch "zombie" packages which are still needed to
do the update to the multiarch libfoo:armel.

MfG
        Goswin




Reply sent to Neil Williams <codehelp@debian.org>:
You have taken responsibility. (Sat, 27 Feb 2010 21:39:13 GMT) Full text and rfc822 format available.

Notification sent to Simon Richter <sjr@debian.org>:
Bug acknowledged by developer. (Sat, 27 Feb 2010 21:39:13 GMT) Full text and rfc822 format available.

Message #72 received at 545464-close@bugs.debian.org (full text, mbox):

From: Neil Williams <codehelp@debian.org>
To: 545464-close@bugs.debian.org
Subject: Bug#545464: fixed in dpkg-cross 2.5.6
Date: Sat, 27 Feb 2010 21:37:47 +0000
Source: dpkg-cross
Source-Version: 2.5.6

We believe that the bug you reported is fixed in the latest version of
dpkg-cross, which is due to be installed in the Debian FTP archive:

dpkg-cross_2.5.6.dsc
  to main/d/dpkg-cross/dpkg-cross_2.5.6.dsc
dpkg-cross_2.5.6.tar.gz
  to main/d/dpkg-cross/dpkg-cross_2.5.6.tar.gz
dpkg-cross_2.5.6_all.deb
  to main/d/dpkg-cross/dpkg-cross_2.5.6_all.deb
libdebian-dpkgcross-perl_2.5.6_all.deb
  to main/d/dpkg-cross/libdebian-dpkgcross-perl_2.5.6_all.deb



A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to 545464@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Neil Williams <codehelp@debian.org> (supplier of updated dpkg-cross package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmaster@debian.org)


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Format: 1.8
Date: Tue, 09 Feb 2010 20:55:35 +0000
Source: dpkg-cross
Binary: dpkg-cross libdebian-dpkgcross-perl
Architecture: source all
Version: 2.5.6
Distribution: unstable
Urgency: low
Maintainer: Debian Embedded Group <debian-embedded@lists.debian.org>
Changed-By: Neil Williams <codehelp@debian.org>
Description: 
 dpkg-cross - tools for cross compiling Debian packages
 libdebian-dpkgcross-perl - functions to aid cross-compiling Debian packages
Closes: 545464 566744
Changes: 
 dpkg-cross (2.5.6) unstable; urgency=low
 .
   * Implement transitionary support for Multi-Arch (Closes: #545464)
   * Allow for apt-cross to not be installed when checking list of
     multiarch packages (Closes: #566744)
Checksums-Sha1: 
 1db653b47725c8fe0662bc56c711d76a5238d042 1209 dpkg-cross_2.5.6.dsc
 0612428e0c2c61c887f8e38030e6f87ccf52dd5e 72328 dpkg-cross_2.5.6.tar.gz
 45327b833107c6ac5561777a89d899d13427705a 52656 dpkg-cross_2.5.6_all.deb
 741e8692be635ab111c5d113ffbe255bac759e61 28844 libdebian-dpkgcross-perl_2.5.6_all.deb
Checksums-Sha256: 
 25219636161a95da629311793b3a2b523e548c01e49d298cd85bc66dee94f9e1 1209 dpkg-cross_2.5.6.dsc
 a29a2638d22b6357da2e5eb542436dc7a03acb0ebb4a80c71ef5a81d076dc489 72328 dpkg-cross_2.5.6.tar.gz
 6fca1145792f8abb7027c2f12c2d924ade7aea8a2a9451a1b009f7b5d380725d 52656 dpkg-cross_2.5.6_all.deb
 0888a55f6255cff34c075efada6fa318262791b54852ee3c5512d2b1336c2750 28844 libdebian-dpkgcross-perl_2.5.6_all.deb
Files: 
 5eccbb08bfa40939b9683ec0a1132118 1209 utils extra dpkg-cross_2.5.6.dsc
 31f756a3e3c846a7c7a1ce7a77c450a6 72328 utils extra dpkg-cross_2.5.6.tar.gz
 5a36d5bef5f631fbe578a0e8f19f8d22 52656 utils extra dpkg-cross_2.5.6_all.deb
 10c5e64fa2fc73679384841dae57500e 28844 perl extra libdebian-dpkgcross-perl_2.5.6_all.deb

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)

iEYEARECAAYFAkuJd0UACgkQiAEJSii8s+PeawCgqKpf2ARqzzcTcJzohq6PG6hr
OhoAoOYxBfVbVOLJiw0yr2I2Sxr1EKi5
=IM2c
-----END PGP SIGNATURE-----





Bug archived. Request was from Debbugs Internal Request <owner@bugs.debian.org> to internal_control@bugs.debian.org. (Wed, 07 Apr 2010 07:37:28 GMT) Full text and rfc822 format available.

Send a report that this bug log contains spam.


Debian bug tracking system administrator <owner@bugs.debian.org>. Last modified: Thu Apr 17 13:05:38 2014; Machine Name: beach.debian.org

Debian Bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.