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

Re: next generation apt/dpkg-cross



On Wed, 20 Jan 2010 18:49:22 +0100
Goswin von Brederlow <goswin-v-b@web.de> wrote:

(Please don't CC: me, I read the list.)

> >> I don't see why. Since I'm populating the apt database with the
> >> native, the foreign multiarch and the -cross packages the update
> >> process can use either one or any combination of them. So when a
> >> new version of a package comes out the -cross package will be
> >> upgraded just like a native or foreign multiarch package.
> >
> > How are you populating the apt cache? Trying to fool apt into
> > thinking that -cross packages exist in a repository is going to
> > break when dependency chains get long.
> 
> But they do exist.

Only in /var/lib/dpkg/status and that isn't enough for apt - at least
it isn't when dealing with long dependency chains with apt-cross.

> Apt-get will download them and tell dpkg to install
> them.

If the package name has changed in that process, the new package name
is unknown to apt.

> The dependency chanins for the -cross packages are at most one
> item longer than the non -cross packages because the only time the
> chain gets longer is when a dummy -cross package depends on a
> multiarch package. If apt can not handle chains one longer than now
> then there is something seriously wrong in apt.
> 
> >From experience I can say I never had a problem of apt not being able
> to resolve dependencies with -cross packages for me and I used it to
> install a wine-i386-cross for example (which has quite a big
> dependency chain).

Try GTK+ - it's a far more complex dependency tree; and start from a
clean chroot.
 
> > With apt-cross and package renaming, this caused horrendous
> > problems in real situations - apt-get simply failed to work or
> > would force the removal of the entire set of -cross packages when
> > any depended on native packages.
> 
> Which must be an artifact of the mess the existing apt-cross does. I
> have never seen any apt problem that I didn't get without -cross
> packages also so far.

I don't think you're testing the same kind of problem.
 
> > If it can really do that with complex dependency chains like
> > installing a full cross-building environment for building GTK+
> > applications in a clean chroot (see #502433) then apt-cross can be
> > replaced.
> 
> I believe it can handle that trivially. I will put #502433 down as
> test case.

OK.
 
> > I think we can keep apt-cross for Lenny and before, demarcate
> > Squeeze/Sid as the painful transition from apt-cross to
> > apt-multiarch and from there on to full multiarch.
> 
> Do we need an apt-cross in squeze just to build lenny packages? Can't
> lenny builds done from a lenny base?

There are changes in apt-cross in squeeze that are useful.
 
> > Whichever suite the Packages files says it is - according to the
> > version. The determination of suite precedes the download stage, so
> > we only get 1.2-3 if 1.2-2 is in a different suite. At least,
> > that's how apt-cross needs to do it.
> 
> I ment if you install it with dpkg-cross directly instead of through
> apt-cross. The package might even be locally build and not be in any
> suite.

If you install without configuring dpkg-cross
via /etc/dpkg-cross/multiarch-cross.d/ then you will only get -cross
packages listed in Depends:
 
> A -cross package can depend on a arch:all package, a binary package
> (arch: native), a multiarch library or a -cross package. And only a
> -cross package can depend on a -cross package.

Having -armel-cross depending on a non-multiarch libfoo just doesn't
work with apt-cross.
 
> That means that in any dependency graph any non circular path can have
> at most one transition from -cross to non-cross. And only a -cross
> package depending on a multiarch library (libfoo-arm-cross depends on
> libfoo:arm) makes the path longer than without -cross packages. So any
> dependency chain is at most one longer than without -cross. The
> overall graph though can be a tad bit larger. Theoretically the graph
> is at most 3 times larger (every single package native, multiarch
> foreign and -cross) but that will never happen.
> 
> Note: Having amd64 + arm + arm -cross packages is still less than
> amd64 + i386 + kfreebsd-amd64 + kfreebsd-i386, wich is a real use case
> of multiarch. So apt has to cope with enlarged dependency graphs in
> the future. Poor us just has to find and fix any bugs that causes.
> 
> > e.g. You've got a full GNOME install on amd64. You need to
> > cross-build a GPE package which depends on libgtk+2.0-0 which you
> > also have installed for amd64. If, with apt-cross,
> > libgpewidget1-armel-cross depends on libgtk+2.0-0{amd64} because
> > gtk is not yet multiarched, then trying to upgrade amd64 gtk will
> > cause the removal of lbgpewidget1-armel-cross AND all it's reverse
> > dependencies because they are local packages and not in a
> > repository. Now scale that up to one of the X11 libraries or
> > something like directFB.
> 
> Worked for me with having gnome and a 32bit wine installed (which
> needs gtk and a few more). So I'm not worried (yet :) about that. I've
> never seen the kind of problems you describe.

Those problems certainly occured with apt-cross. 
 
> You really just have to try&see. This is a problem one can only
> understand by having an example case that fails (or not :).

So let's get the alternative package into Debian and get testing.
 
> Should there be support for non script hooks? I would think shell is
> enough with the option of perl if someone really needs to. If non
> script hooks are to be allowed then /usr/lib/... would have to be
> used.

Perl should be allowable - I can't see installations of Crush supporting
multiarch!
 
> It is hard to find a good name. apt-cross is not enough but
> apt-multiarch promises too much. It isn't real multiarch as it still
> uses -cross packages.

... albeit only in such a way as to ensure the removal of -cross
packages.
 
> I'm open to suggestions for something inbetween.

It could only be apt-cross if there was a way to migrate from apt-cross
to your script - I can't see that working.

apt-hookma ?

There are already too many packages starting with 'apt-*' - maybe some
other name is going to be better.

I also think that your script would suffer adversely from being named
'apt-cross*' because of the problems within apt-cross.

multiarch-hooks ?

ma-apt ?

maahook ?

It's a transient package, it doesn't need to be a particularly
"attention-grabbing" name, doesn't even have to be that intuitive.

I just think it should downplay the -cross elements which it tries to
replace.

multiapt-tools ?

-- 


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

Attachment: pgpGI6zly2EwE.pgp
Description: PGP signature


Reply to: