BitBake parses configuration files, classes, and .bb
files.
The first thing BitBake does is look for the bitbake.conf
file.
This file resides in the
Source Directory
within the meta/conf/
directory.
BitBake finds it by examining its
BBPATH
environment
variable and looking for the meta/conf/
directory.
The bitbake.conf
file lists other configuration
files to include from a conf/
directory below the directories listed in BBPATH
.
In general, the most important configuration file from a user's perspective
is local.conf
, which contains a user's customized
settings for the OpenEmbedded build environment.
Other notable configuration files are the distribution
configuration file (set by the
DISTRO
variable)
and the machine configuration file
(set by the
MACHINE
variable).
The DISTRO
and MACHINE
BitBake environment
variables are both usually set in
the local.conf
file.
Valid distribution
configuration files are available in the meta/conf/distro/
directory
and valid machine configuration
files in the meta/conf/machine/
directory.
Within the meta/conf/machine/include/
directory are various tune-*.inc
configuration files that provide common
"tuning" settings specific to and shared between particular architectures and machines.
After the parsing of the configuration files, some standard classes are included.
The base.bbclass
file is always included.
Other classes that are specified in the configuration using the
INHERIT
variable are also included.
Class files are searched for in a classes
subdirectory
under the paths in BBPATH
in the same way as
configuration files.
After classes are included, the variable
BBFILES
is set, usually in
local.conf
, and defines the list of places to search for
.bb
files.
By default, the BBFILES
variable specifies the
meta/recipes-*/
directory within Poky.
Adding extra content to BBFILES
is best achieved through the use of
BitBake layers as described in the
"Understanding and
Creating Layers" section of the Yocto Project Development Manual.
BitBake parses each .bb
file in BBFILES
and
stores the values of various variables.
In summary, for each .bb
file the configuration plus the base class of variables are set, followed
by the data in the .bb
file
itself, followed by any inherit commands that
.bb
file might contain.
Because parsing .bb
files is a time
consuming process, a cache is kept to speed up subsequent parsing.
This cache is invalid if the timestamp of the .bb
file itself changes, or if the timestamps of any of the include,
configuration or class files the .bb
file depends on changes.