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

Policy changes which completely break apt-cross


          All shared library development files are no longer required
	  to be in the `-dev' package, only be available when the `-dev'
	  package is installed.  This allows the `-dev' package to be
	  split as long as it depends on the additional packages.

I haven't looked into why Policy has changed this way, but this is a
heads-up that apt-cross is now completely broken and unfixable as this
change allows files that used to have to be in a -dev package to now
appear in an Architecture:all -common package which apt-cross will
deliberately ignore in a very intransigent and obstinate way.

If *any* development package *anywhere* in the dependency chain of
packages you need to use with apt-cross adopts this part of Policy
3.9.0 then apt-cross will cause one of two breakages:

0: apt-cross will simply fail to install all the necessary files but
succeed at resolving the dependencies and your build will break
with /path/foo.h: No such file or directory.

1: apt-cross will fail to install the cross-dependencies leaving the
rest of your system in a broken state. apt-get -f install might be able
to help but will probably "help" by simply removing all your (broken)
-cross packages and possibly a large part of your cross-building
toolchain. Fixing the system to allow the cross-build to work will mean
manually downloading the Arch:all package with wget and manually
passing that to dpkg-cross.

apt-cross cannot be fixed to work around this issue because it has to
ignore Architecture:all packages in order to be able to resolve *any*
dependency chains without getting into a complete mess with packages
like debconf and perl.

apt-cross will continue to work with Lenny and will continue to work
with packages which do not make use of this change in Policy. The
problem is that there is no nothing to stop a package being uploaded to
Sid and migrating to Squeeze which will suddenly and permanently break
your cross build environment.

This is not fixable. The only result of filing a bug against apt-cross
for this issue will be a bump to Severity:grave (not compliant with
Policy) and the removal of apt-cross from Sid and Squeeze.

This Policy change also makes it impossible to automatically calculate
the details that need to go into the xcontrol file. This isn't that
surprising, it isn't possible to reliably calculate the Build-Depends
line for debian/control without trial and error / detailed knowledge of
the package build system.

apt-cross is hanging by a thread, the only reason I haven't immediately
filed an RM bug is that there simply isn't a drop-in replacement and it
will continue to operate UNTIL someone, somewhere, thinks Policy is a cool idea and uploads a package which is involved in
your particular dependency chain.

Emdebian has lost any pretence at cross-building support for Squeeze or
Sid. Emdebian Crush 2.0 is unachievable, Emdebian Crush 3.0 (or
any later version) depends on finding a replacement for apt-cross which
is Policy-compliant.

Use Lenny for all cross-build work or all bets are off.


Neil Williams

Attachment: pgpWTsZmSFPGM.pgp
Description: PGP signature

Reply to: