-----Original Message-----
Date: Tue, 07 Jul 2009 18:03:10 -0400
From: Mark Salter <msalter(a)redhat.com>
Subject: crossbuilding rpms with koji
To: fedora-buildsys-list(a)redhat.com
Message-ID: <1247004190.2512.14.camel(a)deneb.localdomain>
Content-Type: text/plain
I have been doing some experimenting with crossbuilds of rpms
using
koji. I realize that fedora policy requires supported arches to
be
native built, but my focus is towards infrastructure to
crossbuild
rpms for embedded systems where the fedora distribution is not
well
suited. So as a first stab at this, I started working with the
F-10
release packages with an armv5tel target. The reason for this
was
that the ongoing work with fedora arm secondary arch allowed me
to
focus on the crossbuild infrastructure without having to spend
a lot
of time working on arch-specific patches in the packages
themselves.
Anyway, I ended up crossbuilding around 400 F-10 packages.
Enough to
build up a rootfs which boots to a familiar looking gnome
desktop on
an omap-based beagleboard. Of those 400 packages, about 20%
needed
some amount of patching to support crossbuilding. Most were
simple
things like specfile tweaks (i.e. "s/gcc/%{__cc}/") or simple
makefile
patches to get around hard-coded tool names. And a handful
needed more
complicated patches (almost entirely autoconf/automake
related).
Great! I had a similar attempt to build cross rpms for ARM. And
since I was cross-building I could built those against glibc as
well as uClibc. Although my package set is much smaller (~50).
I'll try to place the cross patches that I have somewhere,
probably most of them are already in your setup.
I didn't build these in koji though, but it would be cool to have
them in there.
Now that I've gotten to this point, I'd like to solicit some
comments
on the approach taken and get some guidance on how to beat the
kludgey
first cut into shape so that it can be acceptable upstream. The
infrastructure side consists of:
* A yum plugin which allows yum to install non-native rpms
into the build roots.
* A mock plugin to handle the crossbuilding details.
* A koji patch to support the crossbuild extensions to mock
* A cross-toolchain package
* A cross-rpm-config package which provides configuration
for rpm in the mock chroot and configuration details for
the mock plugin.
IIUC you have pkgname.armv5tel.rpm? If so, how did you make rpm
to build those? I had to modify /etc/rpm/platform to fool rpm in
thinking it is building for armv5tel. Is there a cleaner way for
doing this?
...snip...
Kedar.