OpenEmbedded Core Linaro meta layer

draft r0b

Introduction

OpenEmbedded Core is a source based distribution. It allows a end developer to pick a set of packages, add board support, add support for particular tools, tune for their product, and then build a reproducable Linux system from scratch. Board or tool specific 'meta layers' can be added to enable support for a particular SoC or feature such as telematics or telephony. OpenEmbedded is particularly popular in embedded applications such as automotive where tight control of the features is needed for performance and security reasons. A source based distribution is a good complement to our current binary (Ubuntu) and Android distributions.

This card covers the inital step of using OpenEmbedded Core to validate Linaro GCC by creating a 'meta-linaro' layer, adding Linaro GCC support, setting up an automated build system, and using this to validate each monthly release. The same system will be used to validate the source and binary releases.

If the TSC choose OpenEmbedded as a future platform, this card builds the history and experience needed to support that internally and upstream.

Implementation

This card will provide:

  • a public meta-linaro layer hosted on git.linaro.org
  • documentation on how to use it for manual and auto toolchain validation
  • integration with the Validation Lab

We may provide:

  • documentation on how to use it in a product

Validation will consist of building the 500 OpenEmbedded Core packages, checking for any build time failures, booting the image in QEMU, and performing a basic set of user space execution tests.

The meta-linaro layer will contain:

  • rules for building using the Linaro GCC binary release
  • rules for building Linaro GCC from a source release
  • a kernel configuration for a QEMU Versatile Express A9 target for use in testing
  • A tuning configuration for the Cortex-A9 in Thumb-2/NEON/softfp mode

Time permitting, it may contain:

  • support for building Linaro toolchain from Bazzar
  • Linaro GDB
  • Linaro QEMU

The initial meta layer will be small and run by hand. As OpenEmbedded is cross-compiled, it can be cheaply run in the cloud to help catch development problems early.

The auto build system shall:

  • test and report each release source tarball

It may:

  • test and report tip on a time based schedule, such as every day
  • test and report tip on each commit
  • test and report on merge requests

The Linaro preferred continuous build system will be used.

Past notes

In case we don't want to patch oe-core locally we rely on getting some of our work upstream. For example OE-core doesn't support an ARMv7 QEMU target yet. The way that our binary toolchain is built may also expose some need for changes.

MLH:: we work upstream. This is fine.

We also depend on access to CI build infrastructure that suites our requirements. Building an embedded distribution is still a resource intensive task. The build of the sato and qt4e images take hours even on a decent machine and creates about 37GiB of object files, binaries, packages and images. In addition fetching the sources to be built takes quite some time but can be shortened by using a shared downloads directory.

MLH:: this is fine. Use S3 as a premirror in the cloud. If too expensive, switch to pre-existing real hardware.

Acceptance Criteria

  • the meta-linaro layer is publicly available and documented
  • OpenEmbedded is used for testing a monthly Linaro GCC source release

  • OpenEmbedded is used for testing a monthly Linaro GCC binary release

KenWerner/Sandbox/OEMetaLinaroCard (last modified 2012-03-08 22:51:39)