Fedora and Cross Compiling

Clark Williams williams at redhat.com
Mon Jun 11 22:53:37 UTC 2007


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Oliver Falk wrote:
> On 06/08/2007 09:56 PM, Brendan Conoboy wrote:
> [ ... ]
>>> The build system must be enhanced to support cross compilation.
>> This is a really interesting (to me) extension of the build system
>> requiring enhancements in many areas.
>>
>> First, there are primitives in Koji that need to be built up such that,
>> for instance, x86 knows it can cross build arm tools.
> 
> To make koji believe it can build arm on x86 should be no problem. But
> how to tell koji to don't do the %test's. We need to do this on rpm level...
> 
>> Second, the x86 host needs to be able to retrieve and install arm
>> dependencies in the arm sys-root (arm's glibc, arm's libX11-devel, etc).
> 
> Now we need to touch yum... I'm sure Seth can hack up that bit of code.
> :-) Also mock needs to understand it.


We use mock and yum in our current cross build environment (I'm in
Brendan's group as well). Mock doesn't really care what's going on in
the chroot, it just installs package dependencies and periodically runs
commands in the chroot. So, if you have a repository with cross tool
binary RPMs in it, mock will happily use yum to fetch them, install them
into your chroot and will run them in the chroot. I did add an option to
mock (the --installdeps option) that will just pull the build
depdendencies from an RPM and have yum install them into a chroot, but
that's the only thing that's really cross-specific in mock. Haven't
really had to do anything to yum.

We do have some ugly hackery in our tools that use mock/yum though. We
override the RPM macros and rpmrc files, in an attempt to use the
out-of-the-box specfile while overriding the compiler, linker,
assembler, etc. The intent is to put together a chroot that contains
cross tools, then run rpmbuild on a specfile in the chroot so that the
outtput is a binary RPM targeted for the desired architecture (armv5l,
mips32, etc.). Unfortunately not many specfiles work out-of-the-box.

I'll see if I can put together a (somewhat) coherent description of how
we build and install cross RPMS. Not sure it'll be all that useful for
Fedora, but it might stimulate a discussion that gets us there.

Clark

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (GNU/Linux)
Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org

iD8DBQFGbdJxHyuj/+TTEp0RApRGAKDf2AN8wbLH4D1XJsLdzoyLBmdmQwCghisq
vFCAIROepedxEoadk6eDT68=
=Z1DR
-----END PGP SIGNATURE-----




More information about the fedora-devel-list mailing list