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

Emdebian and cross-building support



Emdebian is the Embedded Debian Project - an official subproject of
Debian.

Emdebian now has a usable toolset [0], toolchains [1] and sufficient
test packages [2] to build a usable root filesystem [3] that is
configurable for different machines and machine variants [4]. Current
support is aimed towards ARM but other architectures can be supported
with sufficient developer interest.

This has primarily been achieved with out-of-tree patchsets [5] and a
common set of problems has appeared.

In order to proceed, the number and complexity of patches needs to be
reduced by incorporating cross-build-friendly changes into a variety of
Debian packages and systems without affecting the Debian builds.

This is an overview of the changes that Emdebian is seeking across
Debian and I will send individual emails on each of these topics with
more detail of each one.

1. Translation repositories separate from packages.
2. Consistent handling of the DEB_BUILD_OPTIONS nocheck, notest, nodocs
3. Beginning a long-term mass bug filing for crossbuild support.

The changes sought by Emdebian are intended to support using Debian on
embedded devices where storage space is far from cheap and involve
running counter to the current Debian default of "install everything
that works, every time, everywhere".

Emdebian needs:
"install the absolute minimum that will get a functioning system with
full control over the subsequent installation of all files up to and
including the entire GUI for this specific device and variant".

Note that this may sound like a Gentoo approach but Emdebian is
concerned with installing prebuilt customised binaries derived from
Debian source packages, not building customised versions from
upstream source every time. Prebuilt binaries allow Emdebian to harness
the power of dpkg and apt as well as the wider QA support in Debian.

Emdebian seeks to support all embedded devices, whether the OS is
"hidden" from the user (as in routers etc.) or forms the entire UI (as
in PDAs, smartphones etc.).

One necessary precursor to these changes is that Emdebian does not
respect "Essential" and does without perl. (Essential in
Emdebian is defined as "whatever the device needs and nothing more".
Via the machine and variant support in Emdebian, 'Essential' becomes a
machine-specific "moving" target.) Also, to remove more wasted space,
manpages, changelogs and other documentation is dropped completely.

Therefore the changes and patch sets that are needed for Emdebian are
not yet directly implementable within Debian but part of an ongoing
process. The patch sets used by Emdebian contain elements that
Debian can use as well as changes that will be reimplemented before
being merged into Debian, subject to the results of these threads.

The goal is to make enough Debian packages cross-build successfully
that Emdebian no longer needs separate patch sets. Achieving this goal
will involve more than one of this set of changes.

Once complete, Debian will truly be the Universal Operating System -
embedded, desktop and server.

This email starts a series of threads that will identify and explore
those components of an Emdebian system that can and should be
implemented within Debian, picking apart the existing Emdebian patch
sets and identifying how to merge the changes into Debian as a whole as
well as Debian packages.

Summary
========

Translations, locales and gconv
-------------------------------

On a typical Gnome installation, /usr/share/locale/ can take up 250Mb
or more (those who attended the Emdebian talk at DebConf7 will have
heard how Emdebian currently handles this problem). [6] [7] [8]

This interim method is unsustainable because it increases the number of
binary packages tenfold which has unacceptable consequences for the
dpkg and apt cache size if the translation packages are included into
the main repository. This thread will seek a sustainable method that
separates the translation files and all gconv and zoneinfo support into
a dedicated structure, outside the normal $mirror/debian main archive
layout, such that Debian can support installing all translations (as
now), no translations (for Emdebian on a router etc.) and any
permutation of translations, appropriate gconv support and any mix of
zoneinfo support that would be appropriate for an embedded device like
a PDA or smartphone etc.

Such a system would also be ideal for allowing translators to upload
translation updates without needing a package upload by the maintainer.

See also #448018

Consistent handling of the DEB_BUILD_OPTIONS
--------------------------------------------

nodocs, nocheck/notest need to be formalised and implemented across
Debian in a standard, consistent manner that reproducibly supports the
same changes to each package no matter what build system is used.

Some agreement on what nocheck or notest means and which one to use.
For Emdebian needs, whichever name is used, the imperative is that
setting that DEB_BUILD_OPTION *must* completely prevent the execution
of any compiled program within any test suite provided by upstream. The
only checks or tests that can be implemented outside nocheck|notest
must only use system binaries from coreutils, binutils-multiarch or one
of the gcc binaries.

Long-term mass bug filing for crossbuild support
------------------------------------------------

Emdebian has currently built 91 Debian source packages in the
preparation of the basic root filesystem and other testing of the
toolset. All of those have involved some level of patches to support
cross-building with CDBS packages needing the least.

This thread will discuss the type of changes that are needed, which
packages are affected and how these bugs will be identified.


===============================

[0] http://www.emdebian.org/tools.html
[1] http://www.emdebian.org/crosstools.html
[2] http://www.emdebian.org/packages/index.html
[3] http://www.emdebian.org/emdebian/rootfs.html
[4] http://www.emdebian.org/emdebian/machinevariants.html
[5] http://buildd.emdebian.org/svn/browser/current/target/trunk/
[6] http://linux.codehelp.co.uk/emdebian/debconf7/htdocs/img9.html
[7] http://linux.codehelp.co.uk/emdebian/debconf7/htdocs/img13.html
[8] http://linux.codehelp.co.uk/emdebian/html/ch04.html

-- 


Neil Williams
=============
http://www.data-freedom.org/
http://www.nosoftwarepatents.com/
http://www.linux.codehelp.co.uk/

Attachment: pgpU0kPx4ogoC.pgp
Description: PGP signature


Reply to: