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

apt-cross and xapt

I've got a thorny problem which I'd like the release team to assess.


1. apt-cross was flaky with apt 0.7.2x but it mostly worked. The Debian
Embedded team had been working on a replacement for some time but it
wasn't ready in time for the freeze. At the time of the freeze, we were
reasonably confident that poor old apt-cross could hobble on for
another stable release with only a relatively small amount of
awkwardness and minor hassle. It was never going to be particularly
nice but it would suffice for most cases until a replacement could be
created. apt-cross itself has been RFH for some months without any help
forthcoming - other than developing a replacement outside apt-cross

2. The replacement is called xapt and it entirely does away with the
complexity inherent in the apt-cross approach - this solves many issues
at the cost of making the solution a bit inelegant. (It doesn't even try
to avoid installing cross versions of packages that are not useful in
cross-building as identifying those packages is what breaks apt-cross.)
However, within limited current testing, it appears to work acceptably.

3. After the freeze, lots of changes went into apt 0.8.x which added
yet more breakage to apt-cross. (It mostly fails to handle the
modifications in the apt sources lists supported by apt >= 0.8.x and can
try to use the wrong suite as a result.) Development work continued on
the xapt replacement. xapt exists in Squeeze currently in the
pdebuild-cross binary package as /usr/share/pdebuild-cross/xapt because
when that version was uploaded, xapt had only been tested inside
pbuilder chroots which had to be mangled by hand to use xapt.

4. Wookey added more fixes to xapt as part of his work with Ubuntu and
Linaro. Those changes were due to go into an upload of the
emdebian-crush source package today. This version (2.2.6) drops the
dependency on apt-cross, moves xapt from /usr/share to /usr/bin as a NEW
package, available for use outside chroots, and moves both
existing binary packages (emdebian-crush and pdebuild-cross) to depend
on xapt. xapt is not perfect but it is an improvement over apt-cross
and is less susceptible to breakage via changes in apt.

5. I and the rest of the debian-embedded team have been remiss in not
actually filing bugs for the issues we all knew dogged apt-cross, so
only two bugs have actually been reported so far. As above, when the
release freeze was announced, apt-cross wasn't *that* broken and we
were not aware of the l10n issues which have now proved to be RC (see
below). Subsequent to the freeze, changes in apt >= 0.8.x have
fundamentally undermined the way that apt-cross saw the world and would
need a complete rewrite to fix. In effect, that rewrite is xapt.

6. The latest issue to hit apt-cross is that it is completely useless
outside the LC_ALL=C locale because the apt perl bindings appear to
write translated values for the control fields "Depends" and
"Conflicts" into the binary apt-cache files used by apt-cross without
apparently preserving any identifiable "tags" which would identify the
untranslated field. This is bug #591457 (which I initially
misunderstood but have now been able to test and replicate). After a
bit of testing, I've found no working fix for this issue and have
bumped 591457 to grave, so apt-cross could easily be removed from

I would like to get xapt into Squeeze as an update and preferably as a
NEW package.

xapt dependencies in 2.2.6: 
Depends: ${perl:Depends}, ${misc:Depends}, apt, dpkg-cross (>= 2.3.8),

pdebuild-cross dependencies in 2.2.6:
Depends: ${misc:Depends}, multistrap (>= 2.1.6), pbuilder, fakeroot,
 gettext-base, xapt (= ${source:Version})

emdebian-crush dependencies in 2.2.6
Depends: ${perl:Depends}, ${misc:Depends}, dpkg-dev (>= 1.15.2),
 emdebian-grip, lintian (>= 2.3.1), libconfig-auto-perl,
 pdebuild-cross, sudo

Adding xapt to either of these packages would needlessly add a lot of
dependencies for those users who only need xapt and if apt-cross is
removed, there could be a number of those. (apt-cross currently has a
popcon of ~300).

Would xapt be acceptable as a NEW package which is actually an update
of a script already in Squeeze?

The problem is that for pdebuild-cross to be able to use xapt, it needs
to be able to install xapt within the pbuilder chroot and this is best
done by letting apt install xapt as a package when building or
updating the pbuilder chroot. Having to install pdebuild-cross inside a
pbuilder chroot (and therefore install pbuilder inside a pbuilder
chroot) seems sub-optimal.

I need to know how best to proceed before I can upload 2.2.6.

We do have an alternative which is to put 2.2.6 into Debian
experimental (as originally planned) but Emdebian squeeze - in the same
repository as the current cross-building toolchains. I reconsidered
this when I realised that apt-cross would likely be removed from
Squeeze, leaving Squeeze without a way of installing cross
dependencies for users using toolchains other than those from Emdebian.


Neil Williams

Attachment: pgpSe7exnBX9K.pgp
Description: PGP signature

Reply to: