Understanding Poky
Poky is the Yocto Project reference system and is composed of a collection of tools and metadata. It is platform-independent and performs cross-compiling, using the BitBake tool, OpenEmbedded Core, and a default set of metadata, as shown in the following figure. It provides the mechanism to build and combine thousands of distributed open source projects to form a fully customizable, complete, and coherent Linux software stack.
Poky's main objective is to provide all the features an embedded developer needs.
Using BitBake
BitBake is a task scheduler that parses Python and Shell Script mixed code. The code parsed generates and runs tasks, which are basically a set of steps ordered according to the code's dependencies.
It evaluates all available configuration files and recipe data (known as metadata), managing dynamic variable expansion, dependencies, and code generation. It keeps track of all tasks being processed in order to ensure completion, maximizing the use of processing resources to reduce build time and being predictable. The development of BitBake is centralized in the <[email protected]>
mailing list, and its code can be found in the bitbake
subdirectory of Poky.
OpenEmbedded-Core
The OpenEmbedded-Core metadata collection provides the engine of the Poky build tool. It is designed to provide the core features and needs to be as clean as possible. It provides support for five different processor architectures (ARM, x86, x86-64, PowerPC, MIPS and MIPS64), supporting only QEMU-emulated machines.
The development is centralized in the <[email protected]>
mailing list, and houses its metadata inside the meta
subdirectory of Poky.
Metadata
The metadata, which is composed of a mix of Python and Shell Script text files, provides a tremendously flexible system. Poky uses this to extend OpenEmbedded-Core and includes two different layers, which are another metadata subset shown as follows:
meta-yocto
: This layer provides the default and supported distributions, visual branding, and metadata tracking information (maintainers, upstream status, and so on)meta-yocto-bsp
: This layer, on top of it, provides the hardware reference boards support for use in Poky
Chapter 7, Diving into BitBake Metadata, explores the metadata in more detail and serves as a reference when we write our own recipes.