Comment 5 for bug 731079

Revision history for this message
Wookey (wookey) wrote :

No that scratch directory was deliberately blanked. Not sure what was going on there. I've reproduced the problem now. Here is a rather simpler test-case:
After downloading libidn11 packages
wget -N http://ports.ubuntu.com/ubuntu-ports/pool/universe/libi/libidn/idn_1.18-1build1_armel.deb
wget -N http://ports.ubuntu.com/ubuntu-ports/pool/main/libi/libidn/libidn11-dev_1.18-1build1_armel.deb
wget -N http://ports.ubuntu.com/ubuntu-ports/pool/main/libi/libidn/libidn11_1.18-1build1_armel.deb
wget -N http://ports.ubuntu.com/ubuntu-ports/pool/universe/libi/libidn/libidn11-java_1.18-1build1_all.deb

dpkg-cross -a armel -b -X install-info -X dpkg -X pkg-config libidn11-dev_1.18-1build1_armel.deb libidn11_1.18-1build1_armel.deb libidn11-java_1.18-1build1_all.deb
is run and fails with dpkg-cross: package libidn11-java doesn't provide any useful files. Skipping.

So the real problem here is that xdeb thought libidn11-java was a crossable package, downloaded it and tried to cross it. The question is should we fix this by telling xdeb that it's not meaningfully crossable, or by having it automatically skip over such failures and press on in the hope that it won't matter?

On the one hand the way xdeb works it expects to be able to identify crossable packages from it's heuristics+black/whitelists - doing this lets it remove them from the cross-dependency tree in the -cross packages. On the other hand otherwise-identified, but actually cross-null packages are harmless. If we decided that such packages were not an error, then we'd need to turn on the '--convert-anyway' flag so that the empty packages were there to satisfy the dependencies on them which have not been pruned. (this is how xapt works - just do the whole damn lot). Apart from polluting the package name space with a lot of -cross packages it doesn't do much harm, but is best discouraged outside a chroot becuase it'll make a mess eventually.