ref-manual: Added new section for layer input detail.

(From yocto-docs rev: ff952a9681df798cde34b50d1046233a47ca0ce5)

Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Scott Rifenbark 2013-07-11 16:16:05 +03:00 committed by Richard Purdie
parent 20b0437f50
commit 1adebc081d
2 changed files with 291 additions and 129 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View File

@ -222,147 +222,309 @@
environment:
</para>
<mediaobject>
<imageobject>
<imagedata fileref="figures/user-configuration.png"
format="PNG" align='center' scalefit='1' width="100%"/>
</imageobject>
</mediaobject>
<imagedata fileref="figures/user-configuration.png" align="center" width="6in" depth="3.5in" />
<para>
BitBake needs some basic configuration files in order to complete
a build.
These files are <filename>*.conf</filename> files.
The minimally necessary ones reside as example files in the
<ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>.
For simplicity, this section refers to the Source Directory as
the "Poky Directory."
<note>
Poky is primarily an aggregation of existing repositories and
is not actual canonical upstream source for anything.
</note>
When you clone the <filename>poky</filename> Git repository or you
download and unpack a Yocto Project release, you can set up the
Source Directory to be named anything you want.
For this discussion, the cloned repository uses the default
name <filename>poky</filename>.
</para>
<para>
The <filename>meta-yocto</filename> layer inside Poky contains
a <filename>conf</filename> directory that has example
configuration files.
These example files are used as a basis for creating actual
configuration files when you source the build environment
script <filename>oe-init-build-env</filename>.
<note>
The <filename>oe-init-build-env</filename> script also exists
in the <filename>meta</filename> directory of the OE-Core
root directory.
Both scripts look for sample configuration files through
a <filename>$TEMPLATECONF</filename> variable.
When using the Yocto Project Development Environment,
that location resolves to the samples found in the
<filename>poky/meta-yocto/conf</filename> directory.
</note>
</para>
<para>
When you source the build environment script, it creates a
<ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>
if one does not already exist.
BitBake uses the Build Directory for all its work during builds.
The Build Directory has a <filename>conf</filename> directory that
contains default versions of your <filename>local.conf</filename>
and <filename>bblayers.conf</filename> configuration files.
These default configuration files are created by
<filename>oe-init-build-env</filename> only if versions of these
files do not already exist in the Build Directory you specify
when you run the script.
</para>
<para>
The <filename>local.conf</filename> file provides many
basic variables that define your build.
Here is a list of a few.
To see the default configurations in a <filename>local.conf</filename>
file created by the build environment script, see the
<filename>local.conf.sample</filename> in the
<filename>meta-yocto</filename> layer:
<itemizedlist>
<listitem><para><emphasis>Parallelism Options:</emphasis>
Controlled by the
<link linkend='var-BB_NUMBER_THREADS'><filename>BB_NUMBER_THREADS</filename></link>
and
<link linkend='var-PARALLEL_MAKE'><filename>PARALLEL_MAKE</filename></link>
variables.</para></listitem>
<listitem><para><emphasis>Target Machine Selection:</emphasis>
Controlled by the
<link linkend='var-MACHINE'><filename>MACHINE</filename></link>
variable.</para></listitem>
<listitem><para><emphasis>Download Directory:</emphasis>
Controlled by the
<link linkend='var-DL_DIR'><filename>DL_DIR</filename></link>
variable.</para></listitem>
<listitem><para><emphasis>Shared State Directory:</emphasis>
Controlled by the
<link linkend='var-SSTATE_DIR'><filename>SSTATE_DIR</filename></link>
variable.</para></listitem>
<listitem><para><emphasis>Build Output:</emphasis>
Controlled by the
<link linkend='var-TMPDIR'><filename>TMPDIR</filename></link>
variable.</para></listitem>
</itemizedlist>
</para>
<para>
The <filename>bblayers.conf</filename> file tells BitBake what
layers you want it to consider during the build.
The list of layers includes default layers needed by the build
system.
You have to manually add any custom layers that you have created.
You can find more information on working with the
<filename>bblayers.conf</filename> file in the
"<ulink url='&YOCTO_DOCS_DEV_URL;#enabling-your-layer'>Enabling Your Layer</ulink>"
section in the Yocto Project Development Manual.
</para>
<para>
The files <filename>site.conf</filename> and
<filename>auto.conf</filename> are not created by the environment
initialization script.
If you want these configuration files, you must create them
yourself:
<itemizedlist>
<listitem><para><emphasis><filename>site.conf</filename>:</emphasis>
I don't really know what this does.
All I know is that if you want it, you need to hand-create
it.
I need some information on it.</para></listitem>
<listitem><para><emphasis><filename>auto.conf</filename>:</emphasis>
This file is not hand-created.
Rather, the file is usually created and written to by
an autobuilder.
The settings put into the file are typically the same as
you would find in the <filename>local.conf</filename>
or <filename>site.conf</filename> files.
</para></listitem>
</itemizedlist>
</para>
<para>
You can edit all configuration files to further define
the build.
This process is represented by the "User Configuration Edits"
box in the figure.
</para>
<para>
When you launch your build with the
<filename>bitbake &lt;target&gt;</filename> command, BitBake
draws on the user configurations you have provided in your
Build Directory.
</para>
</section>
<section id="metadata-machine-configuration-and-policy-configuration">
<title>Metadata, Machine Configuration, and Policy Configuration</title>
<para>
The previous section described the user configurations that
define the BitBake's global behavior.
This section takes a closer look at the layers the build system
uses to further control the build.
These layers provide Metadata for the software, machine, and
policy.
</para>
<para>
BitBake needs some basic configuration files in order to complete
a build.
These files are <filename>*.conf</filename> files.
The minimally necessary ones reside as example files in the
<ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>.
For simplicity, this section refers to the Source Directory as
the "Poky Directory."
<note>
Poky is primarily an aggregation of existing repositories and
is not actual canonical upstream source for anything.
</note>
When you clone the <filename>poky</filename> Git repository or you
download and unpack a Yocto Project release, you can set up the
Source Directory to be named anything you want.
Here, though, we will assume that you have a cloned repository that
has the default name <filename>poky</filename>.
</para>
<para>
The <filename>meta-yocto</filename> layer inside Poky contains
a <filename>conf</filename> directory that has example
configuration files.
These example files are used as a basis for creating actual
configuration files when you source the build environment
script <filename>oe-init-build-env</filename>.
<note>
The <filename>oe-init-build-env</filename> script also exists
in the <filename>meta</filename> directory of the OE-Core
root directory.
Both scripts look for sample configuration files through
a <filename>$TEMPLATECONF</filename> variable.
When using the Yocto Project Development Environment,
that location resolves to the samples found in the
<filename>poky/meta-yocto/conf</filename> directory.
</note>
</para>
<para>
When you source the build environment script, it creates a
<ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>
that BitBake uses as the area in which it does all its work
during builds.
The Build Directory has a <filename>conf</filename> directory that
contains default versions of your <filename>local.conf</filename>
and <filename>bblayers.conf</filename> configuration files.
These default configuration files are created by
<filename>oe-init-build-env</filename> only if versions of these
files do not already exist in the Build Directory you specify
when you run the script.
</para>
<para>
The <filename>local.conf</filename> file provides many
basic variables that define your build.
Here is a list of a few.
To see the default configurations in a <filename>local.conf</filename>
file created by the build environment script, see the
<filename>local.conf.sample</filename> in the
<filename>meta-yocto</filename> layer:
In general, three types of layer input exist:
<itemizedlist>
<listitem><para><emphasis>Parallelism Options:</emphasis>
Controlled by the
<link linkend='var-BB_NUMBER_THREADS'><filename>BB_NUMBER_THREADS</filename></link>
and
<link linkend='var-PARALLEL_MAKE'><filename>PARALLEL_MAKE</filename></link>
variables.</para></listitem>
<listitem><para><emphasis>Target Machine Selection:</emphasis>
Controlled by the
<link linkend='var-MACHINE'><filename>MACHINE</filename></link>
variable.</para></listitem>
<listitem><para><emphasis>Download Directory:</emphasis>
Controlled by the
<link linkend='var-DL_DIR'><filename>DL_DIR</filename></link>
variable.</para></listitem>
<listitem><para><emphasis>Shared State Directory:</emphasis>
Controlled by the
<link linkend='var-SSTATE_DIR'><filename>SSTATE_DIR</filename></link>
variable.</para></listitem>
<listitem><para><emphasis>Build Output:</emphasis>
Controlled by the
<link linkend='var-TMPDIR'><filename>TMPDIR</filename></link>
variable.</para></listitem>
<listitem><para><emphasis>Metadata:</emphasis>
Software layers contain user-supplied recipe files,
patches, and append files.
</para></listitem>
<listitem><para><emphasis>Machine Configuration:</emphasis>
Board Support Package (BSP) layers provide machine
configurations.
This type of information is specific to a particular
target architecture.</para></listitem>
<listitem><para><emphasis>Policy Configuration:</emphasis>
Distribution Layers provide top-level or general
policies for the image or SDK being built.
For example, this layer would dictate whether BitBake
produces RPM or IPK packages.</para></listitem>
</itemizedlist>
</para>
<para>
The <filename>bblayers.conf</filename> file tells BitBake what
layers you want it to consider during the build.
The list of layers includes default layers needed by the build
system.
You have to manually add any custom layers that you have created.
You can find more information on working with the
<filename>bblayers.conf</filename> file in the
"<ulink url='&YOCTO_DOCS_DEV_URL;#enabling-your-layer'>Enabling Your Layer</ulink>"
The following figure shows an expanded representation of the
Metadata, Machine Configuration, and Policy Configuration input
boxes of the Yocto Project development environment:
</para>
<imagedata fileref="figures/layer-input.png" align="center" width="8in" depth="7.5in" />
<para>
The Yocto Project has many layers that can be used.
You can see a web-interface listing of them on the
<ulink url="http://git.yoctoproject.org/">Source Repositories</ulink>
page.
The layers are shown at the bottom categorized under
"Yocto Metadata Layers."
These layers are fundamentally a subset of the
<ulink url="http://layers.openembedded.org/layerindex/layers/">OpenEmbedded Metadata Index</ulink>,
which shows all layers supported by OpenEmbedded.
</para>
<note>
Layers exist in the Yocto Project Source Repositories that cannot
be found in the OpenEmbedded Metadata Index.
These layers are either deprecated or experimental in nature.
</note>
<para>
BitBake uses the <filename>bblayers.conf</filename> file that is
part of the user configuration to find what layers it should be
using as part of the build.
</para>
<para>
For more 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 Manual.
</para>
<para>
The files <filename>site.conf</filename> and
<filename>auto.conf</filename> are not created by the environment
initialization script.
If you want these configuration files, you must create them
yourself:
<itemizedlist>
<listitem><para><emphasis><filename>site.conf</filename>:</emphasis>
I don't really know what this does.
All I know is that if you want it, you need to hand-create
it.
I need some information on it.</para></listitem>
<listitem><para><emphasis><filename>auto.conf</filename>:</emphasis>
This file is not hand-created.
Rather, the file is usually created and written to by
an autobuilder.
The settings put into the file are typically the same as
you would find in the <filename>local.conf</filename>
or <filename>site.conf</filename> files.
</para></listitem>
</itemizedlist>
</para>
<section id="software-layer">
<title>Software Layer</title>
<para>
You can edit all configuration files to further define
the build.
This process is represented by the "User Configuration Edits"
box in the figure.
</para>
<para>
The software layer provides the Metadata for your source
code used during the build.
This general layer minimally contains license
information; a <filename>README</filename> file; a layer
configuration file named <filename>layer.conf</filename>;
and recipe files (<filename>.bb</filename>), append files
(<filename>.bbappend</filename>), and patches
(<filename>.patch</filename>).
</para>
<para>
When you launch your build with the
<filename>bitbake &lt;target&gt;</filename> command, BitBake
draws on the user configurations you have provided in your
Build Directory.
</para>
<para>
You provide any new recipes that your project needs in the
form of recipe files.
If you are modifying any existing recipes from other layers,
rather than duplicate them here with the modifcations, you can
provide a recipe append file that just has the modifications.
Patch files are stored in the <filename>files</filename>
directory.
</para>
</section>
<section id="distro-layer">
<title>Distro Layer</title>
<para>
The distribution layer provides policy configurations for your
distribution.
Best practices dictate that you isolate these types of
configurations into their own layer.
Metadata you provide in this layer overrides similar settings
that BitBake finds in your <filename>local.conf</filename>
file in the Build Directory.
</para>
<para>
The following list provides some explanation and references
for what you typically find in the distribution layer:
<itemizedlist>
<listitem><para><emphasis>classes:</emphasis>
Class files (<filename>.bbclass</filename>) hold
common functionality that can be shared among
recipes in the distribution.
When your recipes inherit a class, they take on the
settings and functions for that class.
You can read more about class files in the
"<link linkend='ref-classes'>Classes</link>" section.
</para></listitem>
<listitem><para><emphasis>conf:</emphasis>
This area holds configuration information for the
distribution.
Any distribution-wide include files and, of course, the
<filename>layer.conf</filename> configuration
file that every layer must have.</para></listitem>
<listitem><para><emphasis>recipes-core:</emphasis>
Recipes and append files that affect common
functionality across the distribution.
This area also can hold common distribution headers,
initialization files, and
<filename>defconfig</filename> files for the
distribution.</para></listitem>
</itemizedlist>
</para>
</section>
<section id="bsp-layer">
<title>BSP Layer</title>
<para>
The BSP Layer provides machine configurations.
Everything in this layer is specific to the machine for which
you are building the image or the SDK.
BSP Layer's have a structure that is followed if they are
considered to be compatible with the Yocto Project.
For information on the structure, see the
<ulink url='&YOCTO_DOCS_BSP_URL;'>Yocto Project Board Support Package (BSP) Developer's Guide</ulink>.
</para>
<para>
The BSP Layer contains a configuration directory that has
configuration files for the machine
(<filename>&lt;machine&gt;.conf</filename>) and, of course,
the layer (<filename>layer.conf</filename>).
</para>
<para>
The remainder of the layer is dedicated to specific recipes
by function: bsp, core, graphics, and kernel.
Metadata can exist for multiple formfactors, graphics
support systems, and so forth.
</para>
</section>
</section>
</section>