[maemo-developers] Public maemo repository

From: Marius Vollmer marius.vollmer at nokia.com
Date: Fri Jul 27 16:07:16 EEST 2007
"ext Rodrigo Vivi" <rodrigo.vivi at gmail.com> writes:

> Another thing that is necessary to say is that OpenEmbedded and
> scratchbox can coexist. OE is a great buildsystem to build the
> distribution itself (avoiding monkey work) and scratchbox is a great
> cross-compile environment that is very useful to make faster the
> compilation in a SDK like maemo.

Let me show my ignorance by digging into this a bit deeper.

My understanding is that OpenEmbedded is a concrete set of software
components that come with detailed instructions for BitBake to
cross-compile them for a number of host architectures[1].

Thus, the BitBake recipes for OpenEmbedded components make sure that
these components can be cleanly cross-compiled.

Scratchbox, on the other hand, 'fakes' a complete emulated environment
for the host architecture and the usual autotooled software components
can be compiled natively in that environment.

Thus, Scratchbox saves you the need to make your software cleanly
cross-compilable.[2]

These two approches don't conflict, of course.  But what is the point
of using Scratchbox if all your components are also contained in
OpenEmbedded?  In other words, if your software is cross-compilable,
why use Scratchbox?

[ There might be components that are not cross-compilable, such as 3rd
  party applications that are not part of OpenEmbedded.  We shouldn't
  tolerate these kinds of components, I'd say, since their existence
  will just increase the chaos.
]

And, if your software is cross-compilable, why use BitBake?  Isn't
dpkg-buildpackage good enough for us?  The Emdebian project is going
that direction, I think, and it's a good direction.[3]

I would expect BitBake to support more host configurations in an
easier way than dpkg-buildpackage (for example, changing a compiler
flag and recompiling the whole thing), but we don't want to go there,
I'd say.  There should be one architecture (in the Debian sense) that
runs on as much hardware platforms as possible.

I don't want to compile separately for the 770 and the N800, or for
McCaslin and Menlow, the same way I don't compile separately for Intel
and AMD.  In that sense, OpenEmbedded is too close to Gentoo for my
taste. :)


[1] I think cross-compiling terminology goes like this, at least in
    the GNU project:

    `--build=BUILD-TYPE'
         the type of system on which the package is being configured and
         compiled.  It defaults to the result of running `config.guess'.

    `--host=HOST-TYPE'
         the type of system on which the package will run.  By default it
         is the same as the build machine.  Specifying it enables the
         cross-compilation mode.

    `--target=TARGET-TYPE'
         the type of system for which any compiler tools in the package will
         produce code (rarely needed).  By default, it is the same as host.

[2] I think it's close to a miracle that this actually works well
    enough in practice.

[3] If anything, they are too careful by forking all the packaging
    (emdebian/ versus debian/).  Debian prides itself for supporting
    dozens of architectures, surely making cross-compile-cleanliness
    an important target will not be rejected?

More information about the maemo-developers mailing list