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

Re: Problems with apt-cross -- libcache-apt-perl doesn't parse apt-cache output properly



On Mon, 8 Nov 2010 13:40:45 -0500
Jim Heck <pinball.rules@gmail.com> wrote:

> I recently started having problems with apt-cross on my system.

Only recently? apt-cross has been broken since August and I've tried to
highlight this several times already.

apt-cross and libcache-apt-perl are being removed from Squeeze in
less than 2 days because these problems are not fixable. apt-cross was
more or less limping along until disruptive changes were introduced into
apt *after* the release freeze had started.

Emdebian has the xapt package in the same repository as the toolchains,
so you should be able to use that instead. xapt is much simpler than
apt-cross but it also does a lot less things. Not least is that xapt
does not even try to protect you from yourself - it will install
packages that you don't actually need but it will also actually install
all the packages you do need, which is where apt-cross was failing.

xapt exists at an earlier version in pdebuild-cross (/usr/share) and
exists as a separate binary package in Debian experimental.

*xapt is NOT a drop-in replacement for apt-cross*!! It is best used
inside chroots or on stable systems where your cross-dependencies
don't get updated every day.

This is all another reason why the only sane way to cross-build in
Squeeze is to use a disposable pbuilder chroot: pdebuild-cross.

> ** Match line difference that gets everything working again in
> /usr/share/perl5/Cache/Apt/Config.pm

This is only the tip of the iceberg - the code beneath this check does
not work with the version of apt in Squeeze, hence the removal.

It is apt which has broken this support but the principal problem
exists where it always did: in the libapt-pkg-perl package which
cannot match the dependency resolution of the underlying C++ code in
apt.

> -        if (/^\s*(\d+)\s(\w+):.*\s+(\w+)\/\w+\/?\w*\sPackages$/) {
> +        if (/^\s*(\d+)\s(\w+):.*\s+(\w+)\/\w+\/?\s+\w+\s+Packages$/)

I've already tried this in SVN. It doesn't solve the problems fully.

You're welcome to use this patch locally if it continues to work for
you but the rest of the code is only likely to cause other problems for
other users. There is no universal fix for apt-cross, the underlying
perl bindings are just bust.

-- 


Neil Williams
=============
http://www.linux.codehelp.co.uk/

Attachment: pgpaTeilZZaL0.pgp
Description: PGP signature


Reply to: