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. http://www.emdebian.org/emdebian/langupdate.html 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. http://www.emdebian.org/bugs.php 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. http://buildd.emdebian.org/svn/browser/current/emdebian/trunk/machine/trunk/balloon3-config/trunk http://balloonboard.org/gallery/300/boxdisplay.jpg http://balloonboard.org/ 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 ==== 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 development: #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: =================== http://www.emdebian.org/buildd/index.php 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 checks.) Notes: 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 log. E) A comparison with Debian unstable is constantly updated: http://www.emdebian.org/buildd/status.php 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 comparison.) Problems: 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 http://www.emdebian.org/buildd/index.php?log=cupsys-arm-1215672259.log&pkg=cupsys 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 directory http://www.emdebian.org/buildd/index.php?log=glib2.0-arm-1215674126.log&pkg=glib2.0 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. http://www.emdebian.org/buildd/index.php?log=libusb-arm-1215676434.log&pkg=libusb ncurses - build failure - uses gcc in wide char support build: http://www.emdebian.org/buildd/index.php?log=ncurses-arm-1215676704.log&pkg=ncurses ntp - build failure - assembly error. authkeys.c:445: error: invalid 'asm': invalid operand for code 'w' http://www.emdebian.org/buildd/index.php?log=ntp-arm-1215676930.log&pkg=ntp pcre3 - build failure - apparently simply unresolved symbols resistant to usual fixes. http://www.emdebian.org/buildd/index.php?log=pcre3-arm-1215684456.log&pkg=pcre3 slang2 - possibly needs a patch update, tries to build -pic archives and then fails. http://www.emdebian.org/buildd/index.php?log=slang2-arm-1214368558.log&pkg=slang2 xorg-server - build failure: make[4]: *** No rule to make target `-L/usr/arm-linux-gnu/lib', needed by `Xprt'. Stop. http://www.emdebian.org/buildd/index.php?log=xorg-server-arm-1215677189.log&pkg=xorg-server 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. Problem-solving: http://www.emdebian.org/docs.html http://wiki.debian.org/EmdebianQuickStart 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/). Platforms: All the above is based solely on Emdebian ARM for balloon3: Linux balloon 2.6.25.2-pxa270 #1 Sun May 18 22:38:11 BST 2008 armv5tel unknown http://www.linux.codehelp.co.uk/serendipity/index.php?/archives/124-At-LAST!.html http://balloonboard.org/gallery/300/boxdisplay.jpg http://balloonboard.org/gallery/300/balloon3-0v1-fpga.jpg 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). Enjoy. -- Neil Williams ============= http://www.data-freedom.org/ http://www.nosoftwarepatents.com/ http://www.linux.codehelp.co.uk/
Attachment:
signature.asc
Description: This is a digitally signed message part