Cross-compilers.

Brendan Conoboy blc at redhat.com
Mon Sep 18 14:48:47 UTC 2006


David Woodhouse wrote:
> Perhaps we could build all the Fedora cross-toolchains in a loop like
> that, but let people take it and do more esoteric targets individually
> in Extras.

Sure.  It would be great if core's gcc and binutils made the mesh already.

> Binutils doesn't need it. I can build kernels quite happily without.

That's fine if all you want to do is build a kernel, but any package is 
a candidate for cross compilation.

> If it's our own packages then we're already shipping the source, so the
> GPL shouldn't be an issue if we repackage them.

This doesn't sound right.  We're talking about two different 
repositories (core vs extras).

> I don't actually think we _do_ want to repackage them. If I want to be
> able to install the proper i686 acrobat reader packages in to my i686
> qemu/gcc sysroot, I want to just use yum -- or at _least_ RPM. I don't
> want to have to repackage everything as noarch. We should be able to use
> them directly, even if we have to modify rpm a little.

Modifying rpm may be the best long term option.  If RPM had a magic 
incantation like 'rpm -i --sysroot somepackage.mipsel.rpm' that knew to 
put it under /usr/sysroots/mipsel-linux-gnu that'd be great.

Or we could abolish /usr/include and /usr/lib in favor of sys-roots from 
the ground-up.  Any takers? :-)

> I don't want to require it _prior_ to building. That might be OK for
> Fedora where we _have_ the sysroot prior to building the compiler, but
> when we don't have a pre-existing sysroot, we need to build the compiler
> first.

How about seeding the build system with a hand-made sys-root for the 
first generation?  After that you can iterate using previous builds.

> See rants elsewhere over the last decade or so about dependencies and
> building everything three times :)

Please, no...

> You'll never do that until we ban autoconf in packaging. Packages in
> _general_ won't cross-compile. We'll always have to have a "native"
> environment, although qemu can fake that and your _compiler_ binary can
> be a real native binary in the middle of a target-sysroot, so it's nice
> and fast. See scratchbox, for example.


Autoconf and cross compilation can work just fine together.  That said, 
there are plenty of auto* tests that are cross-ignorant and need fixing. 
  It's not insurmountable, but it does require every package to play 
nicely.

I haven't looked at scratchbox before.  Will do that now.

-Brendan (blc at redhat.com)




More information about the fedora-devel-list mailing list