mirror of
git://git.yoctoproject.org/poky.git
synced 2025-07-19 21:09:03 +02:00

(From yocto-docs rev: a9a3248b12b85f3637ebe5eddd4b1a29268d5598) Signed-off-by: Robert P. J. Day <rpjday@crashcourse.ca> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
525 lines
28 KiB
XML
525 lines
28 KiB
XML
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
|
||
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
|
||
[<!ENTITY % poky SYSTEM "../poky.ent"> %poky; ] >
|
||
|
||
<chapter id='ref-terms'>
|
||
<title>Yocto Project Terms</title>
|
||
|
||
<para>
|
||
Following is a list of terms and definitions users new to the Yocto
|
||
Project development environment might find helpful.
|
||
While some of these terms are universal, the list includes them
|
||
just in case:
|
||
<itemizedlist>
|
||
<listitem><para>
|
||
<emphasis>Append Files:</emphasis>
|
||
Files that append build information to a recipe file.
|
||
Append files are known as BitBake append files and
|
||
<filename>.bbappend</filename> files.
|
||
The OpenEmbedded build system expects every append file to have
|
||
a corresponding recipe (<filename>.bb</filename>) file.
|
||
Furthermore, the append file and corresponding recipe file
|
||
must use the same root filename.
|
||
The filenames can differ only in the file type suffix used
|
||
(e.g.
|
||
<filename>formfactor_0.0.bb</filename> and
|
||
<filename>formfactor_0.0.bbappend</filename>).</para>
|
||
|
||
<para>Information in append files extends or overrides the
|
||
information in the similarly-named recipe file.
|
||
For an example of an append file in use, see the
|
||
"<ulink url='&YOCTO_DOCS_DEV_URL;#using-bbappend-files'>Using .bbappend Files in Your Layer</ulink>"
|
||
section in the Yocto Project Development Tasks Manual.</para>
|
||
|
||
<para>When you name an append file, you can use the
|
||
"<filename>%</filename>" wildcard character to allow for
|
||
matching recipe names.
|
||
For example, suppose you have an append file named as follows:
|
||
<literallayout class='monospaced'>
|
||
busybox_1.21.%.bbappend
|
||
</literallayout>
|
||
That append file would match any
|
||
<filename>busybox_1.21.</filename><replaceable>x</replaceable><filename>.bb</filename>
|
||
version of the recipe.
|
||
So, the append file would match any of the following recipe names:
|
||
<literallayout class='monospaced'>
|
||
busybox_1.21.1.bb
|
||
busybox_1.21.2.bb
|
||
busybox_1.21.3.bb
|
||
busybox_1.21.10.bb
|
||
busybox_1.21.25.bb
|
||
</literallayout>
|
||
<note><title>Important</title>
|
||
The use of the "<filename>%</filename>" character
|
||
is limited in that it only works directly in front of the
|
||
<filename>.bbappend</filename> portion of the append file's
|
||
name.
|
||
You cannot use the wildcard character in any other
|
||
location of the name.
|
||
</note>
|
||
</para></listitem>
|
||
<listitem><para id='bitbake-term'>
|
||
<emphasis>BitBake:</emphasis>
|
||
The task executor and scheduler used by the OpenEmbedded build
|
||
system to build images.
|
||
For more information on BitBake, see the
|
||
<ulink url='&YOCTO_DOCS_BB_URL;'>BitBake User Manual</ulink>.
|
||
</para></listitem>
|
||
<listitem><para id='board-support-package-bsp-term'>
|
||
<emphasis>Board Support Package (BSP):</emphasis>
|
||
A group of drivers, definitions, and other components that
|
||
provide support for a specific hardware configuration.
|
||
For more information on BSPs, see the
|
||
<ulink url='&YOCTO_DOCS_BSP_URL;'>Yocto Project Board Support Package (BSP) Developer's Guide</ulink>.
|
||
</para></listitem>
|
||
<listitem>
|
||
<para id='build-directory'>
|
||
<emphasis>Build Directory:</emphasis>
|
||
This term refers to the area used by the OpenEmbedded build
|
||
system for builds.
|
||
The area is created when you <filename>source</filename> the
|
||
setup environment script that is found in the Source Directory
|
||
(i.e. <link linkend='structure-core-script'><filename>&OE_INIT_FILE;</filename></link>).
|
||
The
|
||
<link linkend='var-TOPDIR'><filename>TOPDIR</filename></link>
|
||
variable points to the Build Directory.</para>
|
||
|
||
<para>You have a lot of flexibility when creating the Build
|
||
Directory.
|
||
Following are some examples that show how to create the
|
||
directory.
|
||
The examples assume your
|
||
<link linkend='source-directory'>Source Directory</link> is
|
||
named <filename>poky</filename>:
|
||
<itemizedlist>
|
||
<listitem><para>Create the Build Directory inside your
|
||
Source Directory and let the name of the Build
|
||
Directory default to <filename>build</filename>:
|
||
<literallayout class='monospaced'>
|
||
$ cd $HOME/poky
|
||
$ source &OE_INIT_FILE;
|
||
</literallayout>
|
||
</para></listitem>
|
||
<listitem><para>Create the Build Directory inside your
|
||
home directory and specifically name it
|
||
<filename>test-builds</filename>:
|
||
<literallayout class='monospaced'>
|
||
$ cd $HOME
|
||
$ source poky/&OE_INIT_FILE; test-builds
|
||
</literallayout>
|
||
</para></listitem>
|
||
<listitem><para>
|
||
Provide a directory path and specifically name the
|
||
Build Directory.
|
||
Any intermediate folders in the pathname must exist.
|
||
This next example creates a Build Directory named
|
||
<filename>YP-&POKYVERSION;</filename>
|
||
in your home directory within the existing
|
||
directory <filename>mybuilds</filename>:
|
||
<literallayout class='monospaced'>
|
||
$ cd $HOME
|
||
$ source $HOME/poky/&OE_INIT_FILE; $HOME/mybuilds/YP-&POKYVERSION;
|
||
</literallayout>
|
||
</para></listitem>
|
||
</itemizedlist>
|
||
<note>
|
||
By default, the Build Directory contains
|
||
<link linkend='var-TMPDIR'><filename>TMPDIR</filename></link>,
|
||
which is a temporary directory the build system uses for
|
||
its work.
|
||
<filename>TMPDIR</filename> cannot be under NFS.
|
||
Thus, by default, the Build Directory cannot be under NFS.
|
||
However, if you need the Build Directory to be under NFS,
|
||
you can set this up by setting <filename>TMPDIR</filename>
|
||
in your <filename>local.conf</filename> file
|
||
to use a local drive.
|
||
Doing so effectively separates <filename>TMPDIR</filename>
|
||
from <filename>TOPDIR</filename>, which is the Build
|
||
Directory.
|
||
</note>
|
||
</para></listitem>
|
||
<listitem><para id='hardware-build-system-term'>
|
||
<emphasis>Build Host:</emphasis>
|
||
The system used to build images in a Yocto Project
|
||
Development environment.
|
||
The build system is sometimes referred to as the
|
||
<firstterm>development host</firstterm>.
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<emphasis>Classes:</emphasis>
|
||
Files that provide for logic encapsulation and inheritance so
|
||
that commonly used patterns can be defined once and then
|
||
easily used in multiple recipes.
|
||
For reference information on the Yocto Project classes, see the
|
||
"<link linkend='ref-classes'>Classes</link>" chapter.
|
||
Class files end with the <filename>.bbclass</filename>
|
||
filename extension.
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<emphasis>Configuration File:</emphasis>
|
||
Files that hold global definitions of variables,
|
||
user-defined variables, and hardware configuration
|
||
information.
|
||
These files tell the OpenEmbedded build system what to
|
||
build and what to put into the image to support a
|
||
particular platform.</para>
|
||
|
||
<para>Configuration files end with a <filename>.conf</filename>
|
||
filename extension.
|
||
The <filename>conf/local.conf</filename> configuration file in
|
||
the
|
||
<link linkend='build-directory'>Build Directory</link>
|
||
contains user-defined variables that affect every build.
|
||
The <filename>meta-poky/conf/distro/poky.conf</filename>
|
||
configuration file defines Yocto "distro" configuration
|
||
variables used only when building with this policy.
|
||
Machine configuration files, which
|
||
are located throughout the
|
||
<link linkend='source-directory'>Source Directory</link>, define
|
||
variables for specific hardware and are only used when building
|
||
for that target (e.g. the
|
||
<filename>machine/beaglebone.conf</filename> configuration
|
||
file defines variables for the Texas Instruments ARM Cortex-A8
|
||
development board).
|
||
</para></listitem>
|
||
<listitem><para id='term-container-layer'>
|
||
<emphasis>Container Layer:</emphasis>
|
||
Layers that hold other layers.
|
||
An example of a container layer is OpenEmbedded's
|
||
<ulink url='https://github.com/openembedded/meta-openembedded'><filename>meta-openembedded</filename></ulink>
|
||
layer.
|
||
The <filename>meta-openembedded</filename> layer contains
|
||
many <filename>meta-*</filename> layers.
|
||
</para></listitem>
|
||
<listitem><para id='cross-development-toolchain'>
|
||
<emphasis>Cross-Development Toolchain:</emphasis>
|
||
In general, a cross-development toolchain is a collection of
|
||
software development tools and utilities that run on one
|
||
architecture and allow you to develop software for a
|
||
different, or targeted, architecture.
|
||
These toolchains contain cross-compilers, linkers, and
|
||
debuggers that are specific to the target architecture.</para>
|
||
|
||
<para>The Yocto Project supports two different cross-development
|
||
toolchains:
|
||
<itemizedlist>
|
||
<listitem><para>
|
||
A toolchain only used by and within
|
||
BitBake when building an image for a target
|
||
architecture.
|
||
</para></listitem>
|
||
<listitem><para>A relocatable toolchain used outside of
|
||
BitBake by developers when developing applications
|
||
that will run on a targeted device.
|
||
</para></listitem>
|
||
</itemizedlist></para>
|
||
|
||
<para>Creation of these toolchains is simple and automated.
|
||
For information on toolchain concepts as they apply to the
|
||
Yocto Project, see the
|
||
"<ulink url='&YOCTO_DOCS_OM_URL;#cross-development-toolchain-generation'>Cross-Development Toolchain Generation</ulink>"
|
||
section in the Yocto Project Overview and Concepts Manual.
|
||
You can also find more information on using the
|
||
relocatable toolchain in the
|
||
<ulink url='&YOCTO_DOCS_SDK_URL;'>Yocto Project Application Development and the Extensible Software Development Kit (eSDK)</ulink>
|
||
manual.
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<emphasis>Extensible Software Development Kit (eSDK):</emphasis>
|
||
A custom SDK for application developers.
|
||
This eSDK allows developers to incorporate their library
|
||
and programming changes back into the image to make
|
||
their code available to other application developers.</para>
|
||
|
||
<para>For information on the eSDK, see the
|
||
<ulink url='&YOCTO_DOCS_SDK_URL;'>Yocto Project Application Development and the Extensible Software Development Kit (eSDK)</ulink>
|
||
manual.
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<emphasis>Image:</emphasis>
|
||
An image is an artifact of the BitBake build process given
|
||
a collection of recipes and related Metadata.
|
||
Images are the binary output that run on specific hardware or
|
||
QEMU and are used for specific use-cases.
|
||
For a list of the supported image types that the Yocto Project
|
||
provides, see the
|
||
"<link linkend='ref-images'>Images</link>"
|
||
chapter.
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<emphasis>Layer:</emphasis>
|
||
A collection of related recipes.
|
||
Layers allow you to consolidate related metadata to
|
||
customize your build.
|
||
Layers also isolate information used when building
|
||
for multiple architectures.
|
||
Layers are hierarchical in their ability to override
|
||
previous specifications.
|
||
You can include any number of available layers from the
|
||
Yocto Project and customize the build by adding your
|
||
layers after them.
|
||
You can search the Layer Index for layers used within
|
||
Yocto Project.</para>
|
||
|
||
<para>For introductory information on layers, see the
|
||
"<ulink url='&YOCTO_DOCS_OM_URL;#the-yocto-project-layer-model'>The Yocto Project Layer Model</ulink>"
|
||
section in the Yocto Project Overview and Concepts Manual.
|
||
For more detailed information on layers, see the
|
||
"<ulink url='&YOCTO_DOCS_DEV_URL;#understanding-and-creating-layers'>Understanding and Creating Layers</ulink>"
|
||
section in the Yocto Project Development Tasks Manual.
|
||
For a discussion specifically on BSP Layers, see the
|
||
"<ulink url='&YOCTO_DOCS_BSP_URL;#bsp-layers'>BSP Layers</ulink>"
|
||
section in the Yocto Project Board Support Packages (BSP)
|
||
Developer's Guide.
|
||
</para></listitem>
|
||
<listitem><para id='metadata'>
|
||
<emphasis>Metadata:</emphasis>
|
||
A key element of the Yocto Project is the Metadata that
|
||
is used to construct a Linux distribution and is contained
|
||
in the files that the
|
||
<link linkend='build-system-term'>OpenEmbedded build system</link>
|
||
parses when building an image.
|
||
In general, Metadata includes recipes, configuration
|
||
files, and other information that refers to the build
|
||
instructions themselves, as well as the data used to
|
||
control what things get built and the effects of the
|
||
build.
|
||
Metadata also includes commands and data used to
|
||
indicate what versions of software are used, from
|
||
where they are obtained, and changes or additions to the
|
||
software itself (patches or auxiliary files) that
|
||
are used to fix bugs or customize the software for use
|
||
in a particular situation.
|
||
OpenEmbedded-Core is an important set of validated
|
||
metadata.</para>
|
||
|
||
<para>In the context of the kernel ("kernel Metadata"), the
|
||
term refers to the kernel config fragments and features
|
||
contained in the
|
||
<ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi/yocto-kernel-cache'><filename>yocto-kernel-cache</filename></ulink>
|
||
Git repository.
|
||
</para></listitem>
|
||
<listitem><para id='oe-core'>
|
||
<emphasis>OpenEmbedded-Core (OE-Core):</emphasis>
|
||
OE-Core is metadata comprised of foundational recipes,
|
||
classes, and associated files that are meant to be
|
||
common among many different OpenEmbedded-derived systems,
|
||
including the Yocto Project.
|
||
OE-Core is a curated subset of an original repository
|
||
developed by the OpenEmbedded community that has been
|
||
pared down into a smaller, core set of continuously
|
||
validated recipes.
|
||
The result is a tightly controlled and an quality-assured
|
||
core set of recipes.</para>
|
||
|
||
<para>You can see the Metadata in the
|
||
<filename>meta</filename> directory of the Yocto Project
|
||
<ulink url='http://git.yoctoproject.org/cgit/cgit.cgi'>Source Repositories</ulink>.
|
||
</para></listitem>
|
||
<listitem><para id='build-system-term'>
|
||
<emphasis>OpenEmbedded Build System:</emphasis>
|
||
The build system specific to the Yocto Project.
|
||
The OpenEmbedded build system is based on another project known
|
||
as "Poky", which uses
|
||
<link linkend='bitbake-term'>BitBake</link> as the task
|
||
executor.
|
||
Throughout the Yocto Project documentation set, the
|
||
OpenEmbedded build system is sometimes referred to simply
|
||
as "the build system".
|
||
If other build systems, such as a host or target build system
|
||
are referenced, the documentation clearly states the
|
||
difference.
|
||
<note>
|
||
For some historical information about Poky, see the
|
||
<link linkend='poky'>Poky</link> term.
|
||
</note>
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<emphasis>Package:</emphasis>
|
||
In the context of the Yocto Project, this term refers to a
|
||
recipe's packaged output produced by BitBake (i.e. a
|
||
"baked recipe").
|
||
A package is generally the compiled binaries produced from the
|
||
recipe's sources.
|
||
You "bake" something by running it through BitBake.</para>
|
||
|
||
<para>It is worth noting that the term "package" can,
|
||
in general, have subtle meanings.
|
||
For example, the packages referred to in the
|
||
"<link linkend='required-packages-for-the-build-host'>Required Packages for the Build Host</link>"
|
||
section are compiled binaries that, when installed, add
|
||
functionality to your Linux distribution.</para>
|
||
|
||
<para>Another point worth noting is that historically within
|
||
the Yocto Project, recipes were referred to as packages - thus,
|
||
the existence of several BitBake variables that are seemingly
|
||
mis-named,
|
||
(e.g. <link linkend='var-PR'><filename>PR</filename></link>,
|
||
<link linkend='var-PV'><filename>PV</filename></link>, and
|
||
<link linkend='var-PE'><filename>PE</filename></link>).
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<emphasis>Package Groups:</emphasis>
|
||
Arbitrary groups of software Recipes.
|
||
You use package groups to hold recipes that, when built,
|
||
usually accomplish a single task.
|
||
For example, a package group could contain the recipes for a
|
||
company’s proprietary or value-add software.
|
||
Or, the package group could contain the recipes that enable
|
||
graphics.
|
||
A package group is really just another recipe.
|
||
Because package group files are recipes, they end with the
|
||
<filename>.bb</filename> filename extension.
|
||
</para></listitem>
|
||
<listitem><para id='poky'>
|
||
<emphasis>Poky:</emphasis>
|
||
Poky, which is pronounced <emphasis>Pock</emphasis>-ee,
|
||
is a reference embedded distribution and a reference
|
||
test configuration.
|
||
Poky provides the following:
|
||
<itemizedlist>
|
||
<listitem><para>
|
||
A base-level functional distro used to illustrate
|
||
how to customize a distribution.
|
||
</para></listitem>
|
||
<listitem><para>
|
||
A means by which to test the Yocto Project
|
||
components (i.e. Poky is used to validate
|
||
the Yocto Project).
|
||
</para></listitem>
|
||
<listitem><para>
|
||
A vehicle through which you can download
|
||
the Yocto Project.
|
||
</para></listitem>
|
||
</itemizedlist>
|
||
Poky is not a product level distro.
|
||
Rather, it is a good starting point for customization.
|
||
<note>
|
||
Poky began as an open-source
|
||
project initially developed by OpenedHand.
|
||
OpenedHand developed Poky from the existing
|
||
OpenEmbedded build system to create a commercially
|
||
supportable build system for embedded Linux.
|
||
After Intel Corporation acquired OpenedHand, the
|
||
poky project became the basis for the Yocto Project's
|
||
build system.
|
||
</note>
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<emphasis>Recipe:</emphasis>
|
||
A set of instructions for building packages.
|
||
A recipe describes where you get source code, which patches
|
||
to apply, how to configure the source, how to compile it and so on.
|
||
Recipes also describe dependencies for libraries or for other
|
||
recipes.
|
||
Recipes represent the logical unit of execution, the software
|
||
to build, the images to build, and use the
|
||
<filename>.bb</filename> file extension.
|
||
</para></listitem>
|
||
<listitem><para id='reference-kit-term'>
|
||
<emphasis>Reference Kit:</emphasis>
|
||
A working example of a system, which includes a
|
||
<link linkend='board-support-package-bsp-term'>BSP</link>
|
||
as well as a
|
||
<link linkend='hardware-build-system-term'>build host</link>
|
||
and other components, that can work on specific hardware.
|
||
</para></listitem>
|
||
<listitem>
|
||
<para id='source-directory'>
|
||
<emphasis>Source Directory:</emphasis>
|
||
This term refers to the directory structure created as a result
|
||
of creating a local copy of the <filename>poky</filename> Git
|
||
repository <filename>git://git.yoctoproject.org/poky</filename>
|
||
or expanding a released <filename>poky</filename> tarball.
|
||
<note>
|
||
Creating a local copy of the <filename>poky</filename>
|
||
Git repository is the recommended method for setting up
|
||
your Source Directory.
|
||
</note>
|
||
Sometimes you might hear the term "poky directory" used to refer
|
||
to this directory structure.
|
||
<note>
|
||
The OpenEmbedded build system does not support file or
|
||
directory names that contain spaces.
|
||
Be sure that the Source Directory you use does not contain
|
||
these types of names.
|
||
</note></para>
|
||
|
||
<para>The Source Directory contains BitBake, Documentation,
|
||
Metadata and other files that all support the Yocto Project.
|
||
Consequently, you must have the Source Directory in place on
|
||
your development system in order to do any development using
|
||
the Yocto Project.</para>
|
||
|
||
<para>When you create a local copy of the Git repository, you
|
||
can name the repository anything you like.
|
||
Throughout much of the documentation, "poky"
|
||
is used as the name of the top-level folder of the local copy of
|
||
the poky Git repository.
|
||
So, for example, cloning the <filename>poky</filename> Git
|
||
repository results in a local Git repository whose top-level
|
||
folder is also named "poky".</para>
|
||
|
||
<para>While it is not recommended that you use tarball expansion
|
||
to set up the Source Directory, if you do, the top-level
|
||
directory name of the Source Directory is derived from the
|
||
Yocto Project release tarball.
|
||
For example, downloading and unpacking
|
||
<filename>&YOCTO_POKY_TARBALL;</filename> results in a
|
||
Source Directory whose root folder is named
|
||
<filename>&YOCTO_POKY;</filename>.</para>
|
||
|
||
<para>It is important to understand the differences between the
|
||
Source Directory created by unpacking a released tarball as
|
||
compared to cloning
|
||
<filename>git://git.yoctoproject.org/poky</filename>.
|
||
When you unpack a tarball, you have an exact copy of the files
|
||
based on the time of release - a fixed release point.
|
||
Any changes you make to your local files in the Source Directory
|
||
are on top of the release and will remain local only.
|
||
On the other hand, when you clone the <filename>poky</filename>
|
||
Git repository, you have an active development repository with
|
||
access to the upstream repository's branches and tags.
|
||
In this case, any local changes you make to the local
|
||
Source Directory can be later applied to active development
|
||
branches of the upstream <filename>poky</filename> Git
|
||
repository.</para>
|
||
|
||
<para>For more information on concepts related to Git
|
||
repositories, branches, and tags, see the
|
||
"<ulink url='&YOCTO_DOCS_OM_URL;#repositories-tags-and-branches'>Repositories, Tags, and Branches</ulink>"
|
||
section in the Yocto Project Overview and Concepts Manual.
|
||
</para></listitem>
|
||
<listitem><para><emphasis>Task:</emphasis>
|
||
A unit of execution for BitBake (e.g.
|
||
<link linkend='ref-tasks-compile'><filename>do_compile</filename></link>,
|
||
<link linkend='ref-tasks-fetch'><filename>do_fetch</filename></link>,
|
||
<link linkend='ref-tasks-patch'><filename>do_patch</filename></link>,
|
||
and so forth).
|
||
</para></listitem>
|
||
<listitem><para id='toaster-term'><emphasis>Toaster:</emphasis>
|
||
A web interface to the Yocto Project's
|
||
<link linkend='build-system-term'>OpenEmbedded Build System</link>.
|
||
The interface enables you to configure and run your builds.
|
||
Information about builds is collected and stored in a database.
|
||
For information on Toaster, see the
|
||
<ulink url='&YOCTO_DOCS_TOAST_URL;'>Toaster User Manual</ulink>.
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<emphasis>Upstream:</emphasis>
|
||
A reference to source code or repositories
|
||
that are not local to the development system but located in a
|
||
master area that is controlled by the maintainer of the source
|
||
code.
|
||
For example, in order for a developer to work on a particular
|
||
piece of code, they need to first get a copy of it from an
|
||
"upstream" source.
|
||
</para></listitem>
|
||
</itemizedlist>
|
||
</para>
|
||
|
||
</chapter>
|
||
<!--
|
||
vim: expandtab tw=80 ts=4
|
||
-->
|