Comment 5 for bug 739151

Revision history for this message
Steve Langasek (vorlon) wrote : Re: [Bug 739151] Re: [PATCH] dpkg-cross: handle multi-arch packages too

Hi Neil,

On Wed, Mar 23, 2011 at 02:55:07PM -0000, Neil Williams wrote:
> On Wed, 23 Mar 2011 15:37:34 +0100
> Marcin Juszkiewicz <email address hidden> wrote:

> > Ubuntu 'natty' switched to multiarch recently and my cross toolchain
> > packages started to fail to build. Most of problems were fixed but then
> > dpkg-cross hit us.

> > Today I looked at dpkg-cross and made attached patch to handle problem.
> > What patch does is converting multiarch packages into old style ones.

> Are you sure you want to convert Multi-Arch paths to the old paths?

In a word: yes. As long as we need dpkg-cross to do anything with
Multi-Arch: same packages, the thing we need them to do is to convert them
over to the old paths.

The reason is straightforward - we need to continue crossing packages with
dpkg-cross for a time while we're transitioning to multiarch, satisfying
certain external constraints (like the fact that no buildds are configured
to install foreign-arch multiarch packages as build dependencies... or that
libc6-dev:$foreign and build-essential:$native are not currently
co-installable); and we don't want crossed packages to conflict on the
filesystem with the native multiarch packages that they're built from,
because that just makes it harder to have a smooth transition.

So since a developer might want to have both libc6-armel-cross and
libc6:armel installed at the same time during the transition, the files
still need to be moved around.

(The same thing applies to ia32-libs on x86, btw.)

> The idea is to get the packages concerned to use Multi-Arch paths which
> the toolchain should just find without needing dpkg-cross at all. The
> toolchain should be looking in the Multi-Arch paths first, then the old
> cross paths.

Yep - but we've got a lot of work to do before we're there, and we don't
want to leave the cross-compiling world broken in the meantime.

> The expected role for dpkg-cross once Multi-Arch started to be deployed
> was only in putting non-Multi-Arch packages into old paths, letting the
> toolchain find the other packages in their normal Multi-Arch paths.

This was also what I expected when viewing the matter from 10,000 feet. Now
that we're closer to the ground, I see that more involvement is still needed
from dpkg-cross during the transition.

> It sounds like the wrong job to me. Why are the libraries IN the
> correct Multi-Arch paths not being found by a Multi-Arch aware
> toolchain? You need a Multi-Arch-Cross toolchain to work with
> Multi-Arch and not changes to dpkg-cross. Old toolchains need to be
> upgraded.

> If correctly Multi-Arch'd packages are not being found by a Multi-Arch
> aware toolchain, that's not something dpkg-cross should be expected to
> solve.

It's not that the toolchain can't find the packages, it's that for
bootstrapping toolchains into the archive we need to generate an installable
libc6-armel-cross and libc6-dev-armel-cross package - and these packages
should not use the multiarch paths, because the *real multiarch packages*
want to use those. :)

Thanks,
--
Steve Langasek Give me a lever long enough and a Free OS
Debian Developer to set it on, and I can move the world.
Ubuntu Developer http://www.debian.org/
<email address hidden> <email address hidden>