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

Status of Emdebian {ARM}

Emdebian has been developing nicely over the last few months and the
time has come to produce a general status report because we are close to
having a reproducible set of working root filesystems for embedded ARM
devices to run Emdebian using prebuilt packages. Kernels and kernel
modules need to be arranged separately and the installation method will
need to be customised to the particular device at this stage. (I am
hoping to build the root filesystem tarball into the Debian Installer at
some stage.) Only ARM is supported at this time (ARM as in the current
Debian ARM port, not armel).

During DebCamp and DebConf8, I will be working on the issues set out
here as well as the ongoing development of TDebs with Christian Perrier
and the Debian i18n team.

Emdebian now provides a cross-building autobuilder (in the
emdebian-tools package) which uses patches from Emdebian SVN to reduce
package size, reduce dependencies and support TDebs. These changes will
progress into more bugs in the relevant Debian packages in due course
under the banner of the "mass bug filing for cross-build support"
already in use. 

We also have an autobuilder for the toolchains themselves.

Emdebian also provides a wrapper for debootstrap (called emsandbox) to
build a root filesystem from the Emdebian ARM repository - separating
the build process from the generation of the root filesystem. All
packages can be customised for specific devices and the modified
packages folded into emsandbox via the use of a local repository and
local autobuilder.

Root Filesystems:
1. Basic busybox and glibc: 9.0Mb compressed, 24Mb installed.
2. as 1 with X server     : 11Mb compressed,  ~60Mb installed.
3. as 2 with full GPE GUI : 25Mb compressed, ~80Mb installed. 

(My Debian pbuilder debootstrap is 146Mb compressed.)

Each root filesystem can be customised for specific machines and
variants of machines, e.g. balloon3.

These sizes are already a significant improvement on standard Debian but
optimisations in glibc, tzdata and xfonts-base are expected to reduce
the installed size by at least another 12Mb. Work is ongoing to fold
uClibc into Emdebian to reduce installation sizes further. 


Bugs in Emdebian itself include #484700 which makes installation tricky
- chpasswd fails so the first task is to chroot into the installed
filesystem via the bootloader and set a non-random root password. I
suspect an error in how the passwd files are generated. 

Two bugs already in the Debian BTS are critical for future Emdebian
#448615 - support for DEB_BUILD_OPTIONS="nodocs" in debhelper
#450483 - support for setting DEB_CONFIGURE_SCRIPT_ENV to empty in CDBS 
	when cross-building to ensure the correct cross-compiler
	options are available.

BTS crossbuilt tag and buildd.emdebian.org pseudo-package support has
been requested. (#480408 and #480511).

Autobuilder Summary:

235 packages built successfully.

17 packages failed to cross build.

93% built OK
6% failed. 

28 packages are tagged for a manual upload. Some are old builds that had
already been uploaded before the autobuilder was written (and have not
changed in Debian since), others are due to dependency issues. Rather
than break the archive, packages are never uploaded until relevant
dependencies have been checked by edos-debcheck, fixed and uploaded.
This results in Emdebian unstable always being installable - a
significant bonus in cross-building as it means the root filesystems
should always build. Migration into testing is a manual process. (Note
that -dev, .udeb and -doc packages are ignored for installability

A) All the autobuilt packages did cross-build previously and those that
fail to cross-build, fail at the latest versions in Debian Sid. Many
could be upstream errors. All exist in Emdebian at previous versions
(only 1 failure is known to contain bugs in the current versions in
Emdebian and this only affects GUI installations. 2 other GUI packages
contains bugs but build OK.).
B) Some of the packages in the repository (including some of the
failures) are not used in *any* of the default emsandbox configurations.
Two need to be removed from the repository completely.
C) Some fixes are waiting for updates in Debian, either new uploads
migrating to mirrors or pending fixes currently in incoming.
D) The history of each package is now available via the Emdebian
Autobuilder Report: http://www.emdebian.org/buildd/index.php
The package name links to the history of previous build attempts for
this package. The version string links to the repository data for the
current version in Emdebian. The result of the build links to the build
E) A comparison with Debian unstable is constantly updated: 
F) The repository contains a fair number of packages that we don't
currently use. This is a reflection of the problems of determining the
"path" through the dependencies when starting at the bottom (glibc|
uClibc etc.). Bear this in mind when considering new architectures and
new package sets. The process involves a lot of trial and error,
particularly as cross-building offers the change to alter the dependency
path at each iteration. 
G)	AFAICT OE has not built these packages at these versions but I
haven't checked each one individually. (It would be useful to know if
someone has the time - even better, write a script that can do the


1. gtk+2.0 fails to cross-build because the patches now try to build the
udeb which comes up against a bug in dpkg-cross. I've uploaded the
new version (including a couple of other bug fixes) today. (A late
problem in apt-cross has delayed things slightly.) The Gtk package also
needs some work to run /usr/lib/libgtk2.0-0/update-gdkpixbuf-loaders so
that the icons can be read in the GUI.

2. pango1.0 also needs a fix to update the pango modules. This is
usually done at build time but it means running a cross-built binary. It
is a minor task and not CPU intensive so I plan to do this in postinst.
Without this fix, no text is rendered in the GUI, only empty glyphs.

4. xfonts-base is way too large still. More work is needed here to
optimise just what is meant by the 'fixed' font for X, precisely which
font files can be removed, which might be needed outside C or English
locales etc.

5. Other packages not currently cross-building include:
(NOTE: Some of these build logs are VERY large.)

adduser - needs to be removed from the repository, it is perl
          and we implement it via busybox.
cups|cupsys - /usr/include/pthread.h:653: 
          warning: '__regparm__' attribute directive ignored

gcc-4.2 - needs to be removed from the repository, it no longer builds
	libgcc1 which was the main reason for cross-building it.
glib2.0 - more generated content:
	/bin/sh: line 2: /usr/bin/glib-genmarshal: No such file or

gnomevfs - hasn't built for ages and isn't usable anyway due to
	dependency issues. Currently preventing the use of
	gpe-filemanager. Due to be replaced by GIO in Debian.

libusb - build failure, so far resistant to usual fixes.

ncurses - build failure - uses gcc in wide char support build:

ntp - build failure - assembly error.
authkeys.c:445: error: invalid 'asm': invalid operand for code 'w'

pcre3 - build failure - apparently simply unresolved symbols resistant
	to usual fixes.

slang2 - possibly needs a patch update, tries to build -pic archives
	and then fails.

xorg-server - build failure:
	make[4]: *** No rule to make target `-L/usr/arm-linux-gnu/lib', needed
by `Xprt'.  Stop.

Of the problems above, only problems 2, 3 and 4 (gtk, pango and
xfonts-base) are "critical" as these are the only ones where the current
packages are sufficiently broken that the new version is essential
before Emdebian can make a "release" of a series of three root
filesystems for ARM.

Any help on the above issues is appreciated.


If you have SVN access, use 'emdebuild --svn-only' to commit your
changes (even if your changes don't solve all the problems).

Without SVN access, post the result of 'svn diff ../emdebian*' to the
debian-embedded mailing list (or 'svn diff ../debian*' if you have added
a patch for the upstream code to debian/patches/).

All the above is based solely on Emdebian ARM for balloon3:
Linux balloon #1 Sun May 18 22:38:11 BST 2008 armv5tel

AFAICT no other ARM platforms have been tested. :-(

When using emdebian-tools for native builds, for uClibc support or for
any architectures which I do not currently build, *PLEASE* file normal
Debian bugs in the BTS for emdebian-tools so that I don't lose track of
the issues. If you ask me something on IRC or on the debian-embedded or
debian-devel mailing lists, I am likely to forget what I promised /
explained / fixed so a bug report will really *REALLY* help me. 

Finally, Lenny will release with working cross-building support via dpkg
and emdebian-tools but it is not possible to implement the same for Etch
except within a Lenny or Sid chroot. emdebian-tools is also not usable
on Debian derivatives like Ubuntu due to the lack of suitably ported
packages to prepare as cross-dependencies during the builds - a Debian
chroot is again recommended.

Although Emdebian won't be providing complete tarballs for installation
due to the variety of devices and installation methods/media (and the
limited space that prevents automated querying of the device), we are
still planning a 'release' of Emdebian {ARM} alongside Lenny as a series
of root filesystem options.

Not sure whether this should be Emdebian 1.0 or 5.0 - it is our first
working release but contains only packages from Debian 5.0 (Lenny/main).



Neil Williams

Attachment: signature.asc
Description: This is a digitally signed message part

Reply to: