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

Fedora and Cross Compiling



For the last few days, I've been writing posts that advocate cross compiling packages for Fedora. Some appear skeptical of this approach, so I want to share a bit more of where I am coming from.

Inside Red Hat, my group (GES) creates custom compilers and embedded Linux systems for our customers. We have done this for many years, using various upstream sources, building natively and with cross tools. For the last few years, we have used either RHEL or Fedora as our upstream source base.

Along the way, we stopped compiling our packages on the target hardware. It was just too slow, or didn't have enough RAM, or there weren't enough of them, or real hardware didn't even exist yet. Regardless, there were always less expensive commodity PC CPU cycles to be had.

We have gone through several generations of build methods, trying new systems, modifying them, trying to get an optimal environment for relatively fast, cyclic builds. Much of this time has been consumed by making packages build with rpm and using a cross compiler to do the work. We've had some success here, though not without considerable effort. We spend quite a bit of time chasing Fedora development.

We cross-compile every package that we build(a subset of packages from the aforementioned distributions). There is no simulator or native hardware employed. Judging by messages on the list, other people and businesses are working toward a similar goal, though each with their own infrastructure and method. All the messages about adding arm to Fedora are very exciting! Everybody who has their own private way of getting Fedora built for arm could instead contribute toward the common goal.

I would like to see cross compilation become a standard method in Fedora. It scales where native builds don't. There might be faster arm chips these days, but lets not forget all the underpowered embedded CPUs and costly systems like s390. Bootstrapping is simplified. People without access to hardware can work on build problems (Simulators are good for this too).

What are the hurdles to adoption? Broadly, they break down into technical and social:

Technical: There must be cross compilers before we can cross compile. The build system must be enhanced to support cross compilation. Finally, packages must be modified to support cross compilation.

Social: As a volunteer effort, it is unreasonable to expect existing package maintainers to do the work necessary to support cross compilation. There must be people to take on that responsibility and work with upstream and package maintainers to integrate the necessary changes.

I don't have fast and easy answers to all of the above, but I would like to have a discussion about them. My group may be able to offer expertise, patches and some man power toward this goal. What do you think?

--
Brendan Conoboy / Red Hat, Inc. / blc redhat com


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