summaryrefslogtreecommitdiffstats
path: root/documentation/ref-manual/variables.rst
diff options
context:
space:
mode:
Diffstat (limited to 'documentation/ref-manual/variables.rst')
-rw-r--r--documentation/ref-manual/variables.rst3849
1 files changed, 2590 insertions, 1259 deletions
diff --git a/documentation/ref-manual/variables.rst b/documentation/ref-manual/variables.rst
index b0621168ae..9cdcc1b61b 100644
--- a/documentation/ref-manual/variables.rst
+++ b/documentation/ref-manual/variables.rst
@@ -17,6 +17,7 @@ system and gives an overview of their function and contents.
:term:`W <WARN_QA>` :term:`X <XSERVER>`
.. glossary::
+ :sorted:
:term:`ABIEXTENSION`
Extension to the Application Binary Interface (ABI) field of the GNU
@@ -125,8 +126,7 @@ system and gives an overview of their function and contents.
":ref:`ref-classes-update-alternatives`" section.
:term:`ANY_OF_DISTRO_FEATURES`
- When inheriting the
- :ref:`features_check <ref-classes-features_check>`
+ When inheriting the :ref:`ref-classes-features_check`
class, this variable identifies a list of distribution features where
at least one must be enabled in the current configuration in order
for the OpenEmbedded build system to build the recipe. In other words,
@@ -134,20 +134,19 @@ system and gives an overview of their function and contents.
appear in :term:`DISTRO_FEATURES` within the current configuration, then
the recipe will be skipped, and if the build system attempts to build
the recipe then an error will be triggered.
-
:term:`APPEND`
An override list of append strings for each target specified with
:term:`LABELS`.
- See the :ref:`grub-efi <ref-classes-grub-efi>` class for more
+ See the :ref:`ref-classes-grub-efi` class for more
information on how this variable is used.
:term:`AR`
The minimal command and arguments used to run ``ar``.
:term:`ARCHIVER_MODE`
- When used with the :ref:`archiver <ref-classes-archiver>` class,
+ When used with the :ref:`ref-classes-archiver` class,
determines the type of information used to create a released archive.
You can use this variable to create archives of patched source,
original source, configured source, and so forth by employing the
@@ -193,23 +192,15 @@ system and gives an overview of their function and contents.
ASSUME_SHLIBS = "libEGL.so.1:libegl-implementation"
- :term:`AUTHOR`
- The email address used to contact the original author or authors in
- order to send patches and forward bugs.
-
:term:`AUTO_LIBNAME_PKGS`
- When the :ref:`debian <ref-classes-debian>` class is inherited,
+ When the :ref:`ref-classes-debian` class is inherited,
which is the default behavior, :term:`AUTO_LIBNAME_PKGS` specifies which
packages should be checked for libraries and renamed according to
Debian library package naming.
- The default value is "${PACKAGES}", which causes the debian class to
- act on all packages that are explicitly generated by the recipe.
-
- :term:`AUTO_SYSLINUXMENU`
- Enables creating an automatic menu for the syslinux bootloader. You
- must set this variable in your recipe. The
- :ref:`syslinux <ref-classes-syslinux>` class checks this variable.
+ The default value is "${PACKAGES}", which causes the
+ :ref:`ref-classes-debian` class to act on all packages that are
+ explicitly generated by the recipe.
:term:`AUTOREV`
When :term:`SRCREV` is set to the value of this variable, it specifies to
@@ -219,27 +210,20 @@ system and gives an overview of their function and contents.
If you use the previous statement to retrieve the latest version of
software, you need to be sure :term:`PV` contains
- ``${``\ :term:`SRCPV`\ ``}``. For example, suppose you
- have a kernel recipe that inherits the
- :ref:`kernel <ref-classes-kernel>` class and you use the previous
- statement. In this example, ``${SRCPV}`` does not automatically get
- into :term:`PV`. Consequently, you need to change :term:`PV` in your recipe
- so that it does contain ``${SRCPV}``.
+ ``${``\ :term:`SRCPV`\ ``}``. For example, suppose you have a kernel
+ recipe that inherits the :ref:`ref-classes-kernel` class and you
+ use the previous statement. In this example, ``${SRCPV}`` does not
+ automatically get into :term:`PV`. Consequently, you need to change
+ :term:`PV` in your recipe so that it does contain ``${SRCPV}``.
For more information see the
- ":ref:`dev-manual/common-tasks:automatically incrementing a package version number`"
+ ":ref:`dev-manual/packages:automatically incrementing a package version number`"
section in the Yocto Project Development Tasks Manual.
- :term:`AVAILABLE_LICENSES`
- List of licenses found in the directories specified by
- :term:`COMMON_LICENSE_DIR` and
- :term:`LICENSE_PATH`.
-
- .. note::
-
- It is assumed that all changes to :term:`COMMON_LICENSE_DIR` and
- :term:`LICENSE_PATH` have been done before :term:`AVAILABLE_LICENSES`
- is defined (in :ref:`ref-classes-license`).
+ :term:`AUTO_SYSLINUXMENU`
+ Enables creating an automatic menu for the syslinux bootloader. You
+ must set this variable in your recipe. The
+ :ref:`ref-classes-syslinux` class checks this variable.
:term:`AVAILTUNES`
The list of defined CPU and Application Binary Interface (ABI)
@@ -249,21 +233,20 @@ system and gives an overview of their function and contents.
The list simply presents the tunes that are available. Not all tunes
may be compatible with a particular machine configuration, or with
each other in a
- :ref:`Multilib <dev-manual/common-tasks:combining multiple versions of library files into one image>`
+ :ref:`Multilib <dev-manual/libraries:combining multiple versions of library files into one image>`
configuration.
To add a tune to the list, be sure to append it with spaces using the
"+=" BitBake operator. Do not simply replace the list by using the
"=" operator. See the
- ":ref:`bitbake:bitbake-user-manual/bitbake-user-manual-metadata:basic syntax`" section in the BitBake
+ ":ref:`bitbake-user-manual/bitbake-user-manual-metadata:basic syntax`" section in the BitBake
User Manual for more information.
:term:`AZ_SAS`
Azure Storage Shared Access Signature, when using the
- :ref:`Azure Storage fetcher (az://) <bitbake:bitbake-user-manual/bitbake-user-manual-fetching:fetchers>`
+ :ref:`Azure Storage fetcher (az://) <bitbake-user-manual/bitbake-user-manual-fetching:fetchers>`
This variable can be defined to be used by the fetcher to authenticate
- and gain access to non-public artifacts.
- ::
+ and gain access to non-public artifacts::
AZ_SAS = ""se=2021-01-01&sp=r&sv=2018-11-09&sr=c&skoid=<skoid>&sig=<signature>""
@@ -271,9 +254,9 @@ system and gives an overview of their function and contents.
https://docs.microsoft.com/en-us/azure/storage/common/storage-sas-overview
:term:`B`
- The directory within the :term:`Build Directory` in
- which the OpenEmbedded build system places generated objects during a
- recipe's build process. By default, this directory is the same as the
+ The directory within the :term:`Build Directory` in which the
+ OpenEmbedded build system places generated objects during a recipe's
+ build process. By default, this directory is the same as the
:term:`S` directory, which is defined as::
S = "${WORKDIR}/${BP}"
@@ -314,7 +297,7 @@ system and gives an overview of their function and contents.
:term:`BASE_LIB`
The library directory name for the CPU or Application Binary
Interface (ABI) tune. The :term:`BASE_LIB` applies only in the Multilib
- context. See the ":ref:`dev-manual/common-tasks:combining multiple versions of library files into one image`"
+ context. See the ":ref:`dev-manual/libraries:combining multiple versions of library files into one image`"
section in the Yocto Project Development Tasks Manual for information
on Multilib.
@@ -328,7 +311,7 @@ system and gives an overview of their function and contents.
:term:`BB_ALLOWED_NETWORKS`
Specifies a space-delimited list of hosts that the fetcher is allowed
- to use to obtain the required source code. Following are
+ to use to obtain the required source code. Here are
considerations surrounding this variable:
- This host list is only used if :term:`BB_NO_NETWORK` is either not set
@@ -336,8 +319,7 @@ system and gives an overview of their function and contents.
- There is limited support for wildcard matching against the beginning of
host names. For example, the following setting matches
- ``git.gnu.org``, ``ftp.gnu.org``, and ``foo.git.gnu.org``.
- ::
+ ``git.gnu.org``, ``ftp.gnu.org``, and ``foo.git.gnu.org``::
BB_ALLOWED_NETWORKS = "*.gnu.org"
@@ -365,6 +347,21 @@ system and gives an overview of their function and contents.
host listed in :term:`SRC_URI` after a successful fetch from the
:term:`PREMIRRORS` occurs.
+ :term:`BB_BASEHASH_IGNORE_VARS`
+ See :term:`bitbake:BB_BASEHASH_IGNORE_VARS` in the BitBake manual.
+
+ :term:`BB_CACHEDIR`
+ See :term:`bitbake:BB_CACHEDIR` in the BitBake manual.
+
+ :term:`BB_CHECK_SSL_CERTS`
+ See :term:`bitbake:BB_CHECK_SSL_CERTS` in the BitBake manual.
+
+ :term:`BB_CONSOLELOG`
+ See :term:`bitbake:BB_CONSOLELOG` in the BitBake manual.
+
+ :term:`BB_CURRENTTASK`
+ See :term:`bitbake:BB_CURRENTTASK` in the BitBake manual.
+
:term:`BB_DANGLINGAPPENDS_WARNONLY`
Defines how BitBake handles situations where an append file
(``.bbappend``) has no corresponding recipe file (``.bb``). This
@@ -383,6 +380,12 @@ system and gives an overview of their function and contents.
BB_DANGLINGAPPENDS_WARNONLY = "1"
+ :term:`BB_DEFAULT_TASK`
+ See :term:`bitbake:BB_DEFAULT_TASK` in the BitBake manual.
+
+ :term:`BB_DEFAULT_UMASK`
+ See :term:`bitbake:BB_DEFAULT_UMASK` in the BitBake manual.
+
:term:`BB_DISKMON_DIRS`
Monitors disk space and available inodes during the build and allows
you to control the build based on these parameters.
@@ -504,6 +507,18 @@ system and gives an overview of their function and contents.
a respective interval is reached beyond the initial warning (i.e. 1
Gbytes and 100 Kbytes).
+ :term:`BB_ENV_PASSTHROUGH`
+ See :term:`bitbake:BB_ENV_PASSTHROUGH` in the BitBake manual.
+
+ :term:`BB_ENV_PASSTHROUGH_ADDITIONS`
+ See :term:`bitbake:BB_ENV_PASSTHROUGH_ADDITIONS` in the BitBake manual.
+
+ :term:`BB_FETCH_PREMIRRORONLY`
+ See :term:`bitbake:BB_FETCH_PREMIRRORONLY` in the BitBake manual.
+
+ :term:`BB_FILENAME`
+ See :term:`bitbake:BB_FILENAME` in the BitBake manual.
+
:term:`BB_GENERATE_MIRROR_TARBALLS`
Causes tarballs of the source control repositories (e.g. Git
repositories), including metadata, to be placed in the
@@ -511,8 +526,7 @@ system and gives an overview of their function and contents.
For performance reasons, creating and placing tarballs of these
repositories is not the default action by the OpenEmbedded build
- system.
- ::
+ system::
BB_GENERATE_MIRROR_TARBALLS = "1"
@@ -523,6 +537,52 @@ system and gives an overview of their function and contents.
clean up your :term:`DL_DIR` directory by deleting any Git or other
source control work directories.
+ :term:`BB_GENERATE_SHALLOW_TARBALLS`
+ See :term:`bitbake:BB_GENERATE_SHALLOW_TARBALLS` in the BitBake manual.
+
+ :term:`BB_GIT_SHALLOW`
+ See :term:`bitbake:BB_GIT_SHALLOW` in the BitBake manual.
+
+ :term:`BB_GIT_SHALLOW_DEPTH`
+ See :term:`bitbake:BB_GIT_SHALLOW_DEPTH` in the BitBake manual.
+
+ :term:`BB_HASHCHECK_FUNCTION`
+ See :term:`bitbake:BB_HASHCHECK_FUNCTION` in the BitBake manual.
+
+ :term:`BB_HASHCONFIG_IGNORE_VARS`
+ See :term:`bitbake:BB_HASHCONFIG_IGNORE_VARS` in the BitBake manual.
+
+ :term:`BB_HASHSERVE`
+ See :term:`bitbake:BB_HASHSERVE` in the BitBake manual.
+
+ :term:`BB_HASHSERVE_UPSTREAM`
+ See :term:`bitbake:BB_HASHSERVE_UPSTREAM` in the BitBake manual.
+
+ :term:`BB_INVALIDCONF`
+ See :term:`bitbake:BB_INVALIDCONF` in the BitBake manual.
+
+ :term:`BB_LOADFACTOR_MAX`
+ The system load threshold above which BitBake will stop runnig extra
+ tasks.
+
+ :term:`BB_LOGCONFIG`
+ See :term:`bitbake:BB_LOGCONFIG` in the BitBake manual.
+
+ :term:`BB_LOGFMT`
+ See :term:`bitbake:BB_LOGFMT` in the BitBake manual.
+
+ :term:`BB_MULTI_PROVIDER_ALLOWED`
+ See :term:`bitbake:BB_MULTI_PROVIDER_ALLOWED` in the BitBake manual.
+
+ :term:`BB_NICE_LEVEL`
+ See :term:`bitbake:BB_NICE_LEVEL` in the BitBake manual.
+
+ :term:`BB_NO_NETWORK`
+ See :term:`bitbake:BB_NO_NETWORK` in the BitBake manual.
+
+ :term:`BB_NUMBER_PARSE_THREADS`
+ See :term:`bitbake:BB_NUMBER_PARSE_THREADS` in the BitBake manual.
+
:term:`BB_NUMBER_THREADS`
The maximum number of tasks BitBake should run in parallel at any one
time. The OpenEmbedded build system automatically configures this
@@ -538,9 +598,63 @@ system and gives an overview of their function and contents.
is not set higher than "20".
For more information on speeding up builds, see the
- ":ref:`dev-manual/common-tasks:speeding up a build`"
+ ":ref:`dev-manual/speeding-up-build:speeding up a build`"
section in the Yocto Project Development Tasks Manual.
+ On the other hand, if your goal is to limit the amount of system
+ resources consumed by BitBake tasks, setting :term:`BB_NUMBER_THREADS`
+ to a number lower than the number of CPU threads in your machine
+ won't be sufficient. That's because each package will still be built
+ and installed through a number of parallel jobs specified by the
+ :term:`PARALLEL_MAKE` variable, which is by default the number of CPU
+ threads in your system, and is not impacted by the
+ :term:`BB_NUMBER_THREADS` value.
+
+ So, if you set :term:`BB_NUMBER_THREADS` to "1" but don't set
+ :term:`PARALLEL_MAKE`, most of your system resources will be consumed
+ anyway.
+
+ Therefore, if you intend to reduce the load of your build system by
+ setting :term:`BB_NUMBER_THREADS` to a relatively low value compared
+ to the number of CPU threads on your system, you should also set
+ :term:`PARALLEL_MAKE` to a similarly low value.
+
+ An alternative to using :term:`BB_NUMBER_THREADS` to keep the usage
+ of build system resources under control is to use the smarter
+ :term:`BB_PRESSURE_MAX_CPU`, :term:`BB_PRESSURE_MAX_IO` or
+ :term:`BB_PRESSURE_MAX_MEMORY` controls. They will prevent BitBake
+ from starting new tasks as long as thresholds are exceeded. Anyway,
+ as with :term:`BB_NUMBER_THREADS`, such controls won't prevent the
+ tasks already being run from using all CPU threads on the system
+ if :term:`PARALLEL_MAKE` is not set to a low value.
+
+ :term:`BB_ORIGENV`
+ See :term:`bitbake:BB_ORIGENV` in the BitBake manual.
+
+ :term:`BB_PRESERVE_ENV`
+ See :term:`bitbake:BB_PRESERVE_ENV` in the BitBake manual.
+
+ :term:`BB_PRESSURE_MAX_CPU`
+ See :term:`bitbake:BB_PRESSURE_MAX_CPU` in the BitBake manual.
+
+ :term:`BB_PRESSURE_MAX_IO`
+ See :term:`bitbake:BB_PRESSURE_MAX_IO` in the BitBake manual.
+
+ :term:`BB_PRESSURE_MAX_MEMORY`
+ See :term:`bitbake:BB_PRESSURE_MAX_MEMORY` in the BitBake manual.
+
+ :term:`BB_RUNFMT`
+ See :term:`bitbake:BB_RUNFMT` in the BitBake manual.
+
+ :term:`BB_RUNTASK`
+ See :term:`bitbake:BB_RUNTASK` in the BitBake manual.
+
+ :term:`BB_SCHEDULER`
+ See :term:`bitbake:BB_SCHEDULER` in the BitBake manual.
+
+ :term:`BB_SCHEDULERS`
+ See :term:`bitbake:BB_SCHEDULERS` in the BitBake manual.
+
:term:`BB_SERVER_TIMEOUT`
Specifies the time (in seconds) after which to unload the BitBake
server due to inactivity. Set :term:`BB_SERVER_TIMEOUT` to determine how
@@ -554,15 +668,45 @@ system and gives an overview of their function and contents.
If you want the server to never be unloaded,
set :term:`BB_SERVER_TIMEOUT` to "-1".
+ :term:`BB_SETSCENE_DEPVALID`
+ See :term:`bitbake:BB_SETSCENE_DEPVALID` in the BitBake manual.
+
+ :term:`BB_SIGNATURE_EXCLUDE_FLAGS`
+ See :term:`bitbake:BB_SIGNATURE_EXCLUDE_FLAGS` in the BitBake manual.
+
+ :term:`BB_SIGNATURE_HANDLER`
+ See :term:`bitbake:BB_SIGNATURE_HANDLER` in the BitBake manual.
+
+ :term:`BB_SRCREV_POLICY`
+ See :term:`bitbake:BB_SRCREV_POLICY` in the BitBake manual.
+
+ :term:`BB_STRICT_CHECKSUM`
+ See :term:`bitbake:BB_STRICT_CHECKSUM` in the BitBake manual.
+
+ :term:`BB_TASK_IONICE_LEVEL`
+ See :term:`bitbake:BB_TASK_IONICE_LEVEL` in the BitBake manual.
+
+ :term:`BB_TASK_NICE_LEVEL`
+ See :term:`bitbake:BB_TASK_NICE_LEVEL` in the BitBake manual.
+
+ :term:`BB_TASKHASH`
+ See :term:`bitbake:BB_TASKHASH` in the BitBake manual.
+
+ :term:`BB_VERBOSE_LOGS`
+ See :term:`bitbake:BB_VERBOSE_LOGS` in the BitBake manual.
+
+ :term:`BB_WORKERCONTEXT`
+ See :term:`bitbake:BB_WORKERCONTEXT` in the BitBake manual.
+
:term:`BBCLASSEXTEND`
Allows you to extend a recipe so that it builds variants of the
software. There are common variants for recipes as "natives" like
``quilt-native``, which is a copy of Quilt built to run on the build
system; "crosses" such as ``gcc-cross``, which is a compiler built to
run on the build machine but produces binaries that run on the target
- :term:`MACHINE`; "nativesdk", which targets the SDK
- machine instead of :term:`MACHINE`; and "mulitlibs" in the form
- "``multilib:``\ multilib_name".
+ :term:`MACHINE`; ":ref:`ref-classes-nativesdk`", which
+ targets the SDK machine instead of :term:`MACHINE`; and "mulitlibs" in
+ the form "``multilib:``\ multilib_name".
To build a different variant of the recipe with a minimal amount of
code, it usually is as simple as adding the following to your recipe::
@@ -584,6 +728,9 @@ system and gives an overview of their function and contents.
since ``include`` statements are processed when the recipe is
parsed.
+ :term:`BBDEBUG`
+ See :term:`bitbake:BBDEBUG` in the BitBake manual.
+
:term:`BBFILE_COLLECTIONS`
Lists the names of configured layers. These names are used to find
the other ``BBFILE_*`` variables. Typically, each layer will append
@@ -601,7 +748,7 @@ system and gives an overview of their function and contents.
This variable is useful in situations where the same recipe appears
in more than one layer. Setting this variable allows you to
prioritize a layer against other layers that contain the same recipe
- - effectively letting you control the precedence for the multiple
+ --- effectively letting you control the precedence for the multiple
layers. The precedence established through this variable stands
regardless of a recipe's version (:term:`PV` variable). For
example, a layer that has a recipe with a higher :term:`PV` value but for
@@ -626,7 +773,7 @@ system and gives an overview of their function and contents.
software.
When specifying recipe files, you can pattern match using Python's
- `glob <https://docs.python.org/3/library/glob.html>`_ syntax.
+ `glob <https://docs.python.org/3/library/glob.html>`__ syntax.
For details on the syntax, see the documentation by following the
previous link.
@@ -659,6 +806,9 @@ system and gives an overview of their function and contents.
/work/my-layer/bbappends/meta-security-isafw/*/*/*.bbappend
/work/my-layer/bbappends/openembedded-core/meta/*/*/*.bbappend
+ :term:`BBINCLUDED`
+ See :term:`bitbake:BBINCLUDED` in the BitBake manual.
+
:term:`BBINCLUDELOGS`
Variable that controls how BitBake displays logs on build failure.
@@ -683,6 +833,9 @@ system and gives an overview of their function and contents.
This example enables four layers, one of which is a custom,
user-defined layer named ``meta-mykernel``.
+ :term:`BBLAYERS_FETCH_DIR`
+ See :term:`bitbake:BBLAYERS_FETCH_DIR` in the BitBake manual.
+
:term:`BBMASK`
Prevents BitBake from processing recipes and recipe append files.
@@ -728,31 +881,19 @@ system and gives an overview of their function and contents.
BBMULTICONFIG = "configA configB configC"
- Each configuration file you
- use must reside in the :term:`Build Directory`
- ``conf/multiconfig`` directory (e.g.
- ``build_directory/conf/multiconfig/configA.conf``).
+ Each configuration file you use must reside in a ``multiconfig``
+ subdirectory of a configuration directory within a layer, or
+ within the :term:`Build Directory` (e.g.
+ ``build_directory/conf/multiconfig/configA.conf`` or
+ ``mylayer/conf/multiconfig/configB.conf``).
For information on how to use :term:`BBMULTICONFIG` in an environment
that supports building targets with multiple configurations, see the
- ":ref:`dev-manual/common-tasks:building images for multiple targets using multiple configurations`"
+ ":ref:`dev-manual/building:building images for multiple targets using multiple configurations`"
section in the Yocto Project Development Tasks Manual.
:term:`BBPATH`
- Used by BitBake to locate ``.bbclass`` and configuration files. This
- variable is analogous to the ``PATH`` variable.
-
- .. note::
-
- If you run BitBake from a directory outside of the
- :term:`Build Directory`, you must be sure to set :term:`BBPATH`
- to point to the Build Directory. Set the variable as you would any
- environment variable and then run BitBake::
-
- $ BBPATH = "build_directory"
- $ export BBPATH
- $ bitbake target
-
+ See :term:`bitbake:BBPATH` in the BitBake manual.
:term:`BBSERVER`
If defined in the BitBake environment, :term:`BBSERVER` points to the
@@ -763,18 +904,20 @@ system and gives an overview of their function and contents.
export BBSERVER=localhost:$port
- By default, :term:`BBSERVER` also appears in :term:`BB_HASHBASE_WHITELIST`.
+ By default, :term:`BBSERVER` also appears in :term:`BB_BASEHASH_IGNORE_VARS`.
Consequently, :term:`BBSERVER` is excluded from checksum and dependency
data.
+ :term:`BBTARGETS`
+ See :term:`bitbake:BBTARGETS` in the BitBake manual.
+
:term:`BINCONFIG`
- When inheriting the
- :ref:`binconfig-disabled <ref-classes-binconfig-disabled>` class,
- this variable specifies binary configuration scripts to disable in
- favor of using ``pkg-config`` to query the information. The
- :ref:`binconfig-disabled <ref-classes-binconfig-disabled>` class will modify the specified scripts to
- return an error so that calls to them can be easily found and
- replaced.
+ When inheriting the :ref:`ref-classes-binconfig-disabled` class, this
+ variable specifies binary configuration scripts to disable in favor of
+ using ``pkg-config`` to query the information. The
+ :ref:`ref-classes-binconfig-disabled` class will modify the specified
+ scripts to return an error so that calls to them can be easily found
+ and replaced.
To add multiple scripts, separate them by spaces. Here is an example
from the ``libpng`` recipe::
@@ -782,7 +925,7 @@ system and gives an overview of their function and contents.
BINCONFIG = "${bindir}/libpng-config ${bindir}/libpng16-config"
:term:`BINCONFIG_GLOB`
- When inheriting the :ref:`binconfig <ref-classes-binconfig>` class,
+ When inheriting the :ref:`ref-classes-binconfig` class,
this variable specifies a wildcard for configuration scripts that
need editing. The scripts are edited to correct any paths that have
been set up during compilation so that they are correct for use when
@@ -799,11 +942,14 @@ system and gives an overview of their function and contents.
and `glob <https://docs.python.org/3/library/glob.html>`__.
For more information on how this variable works, see
- ``meta/classes/binconfig.bbclass`` in the :term:`Source Directory`.
+ ``meta/classes-recipe/binconfig.bbclass`` in the :term:`Source Directory`.
You can also find general
information on the class in the
":ref:`ref-classes-binconfig`" section.
+ :term:`BITBAKE_UI`
+ See :term:`bitbake:BITBAKE_UI` in the BitBake manual.
+
:term:`BP`
The base recipe name and version but without any special recipe name
suffix (i.e. ``-native``, ``lib64-``, and so forth). :term:`BP` is
@@ -898,14 +1044,13 @@ system and gives an overview of their function and contents.
:term:`BUILD_OS`
Specifies the operating system in use on the build host (e.g.
"linux"). The OpenEmbedded build system sets the value of
- :term:`BUILD_OS` from the OS reported by the ``uname`` command - the
+ :term:`BUILD_OS` from the OS reported by the ``uname`` command --- the
first word, converted to lower-case characters.
:term:`BUILD_PREFIX`
The toolchain binary prefix used for native recipes. The OpenEmbedded
build system uses the :term:`BUILD_PREFIX` value to set the
- :term:`TARGET_PREFIX` when building for
- ``native`` recipes.
+ :term:`TARGET_PREFIX` when building for :ref:`ref-classes-native` recipes.
:term:`BUILD_STRIP`
Specifies the command to be used to strip debugging symbols from
@@ -916,7 +1061,7 @@ system and gives an overview of their function and contents.
:term:`BUILD_SYS`
Specifies the system, including the architecture and the operating
system, to use when building for the build host (i.e. when building
- ``native`` recipes).
+ :ref:`ref-classes-native` recipes).
The OpenEmbedded build system automatically sets this variable based
on :term:`BUILD_ARCH`,
@@ -929,30 +1074,29 @@ system and gives an overview of their function and contents.
The default value is an empty string ("").
:term:`BUILDDIR`
- Points to the location of the :term:`Build Directory`.
- You can define this directory indirectly through the
- :ref:`structure-core-script` script by passing in a Build
- Directory path when you run the script. If you run the script and do
- not provide a Build Directory path, the :term:`BUILDDIR` defaults to
- ``build`` in the current directory.
+ Points to the location of the :term:`Build Directory`. You can define
+ this directory indirectly through the :ref:`structure-core-script` script
+ by passing in a :term:`Build Directory` path when you run the script. If
+ you run the script and do not provide a :term:`Build Directory` path, the
+ :term:`BUILDDIR` defaults to ``build`` in the current directory.
:term:`BUILDHISTORY_COMMIT`
- When inheriting the :ref:`buildhistory <ref-classes-buildhistory>`
- class, this variable specifies whether or not to commit the build
- history output in a local Git repository. If set to "1", this local
- repository will be maintained automatically by the :ref:`buildhistory <ref-classes-buildhistory>`
- class and a commit will be created on every build for changes to each
- top-level subdirectory of the build history output (images, packages,
- and sdk). If you want to track changes to build history over time,
- you should set this value to "1".
+ When inheriting the :ref:`ref-classes-buildhistory` class, this variable
+ specifies whether or not to commit the build history output in a local
+ Git repository. If set to "1", this local repository will be maintained
+ automatically by the :ref:`ref-classes-buildhistory` class and a commit
+ will be created on every build for changes to each top-level subdirectory
+ of the build history output (images, packages, and sdk). If you want to
+ track changes to build history over time, you should set this value to
+ "1".
- By default, the :ref:`buildhistory <ref-classes-buildhistory>` class does not commit the build
- history output in a local Git repository::
+ By default, the :ref:`ref-classes-buildhistory` class
+ enables committing the buildhistory output in a local Git repository::
- BUILDHISTORY_COMMIT ?= "0"
+ BUILDHISTORY_COMMIT ?= "1"
:term:`BUILDHISTORY_COMMIT_AUTHOR`
- When inheriting the :ref:`buildhistory <ref-classes-buildhistory>`
+ When inheriting the :ref:`ref-classes-buildhistory`
class, this variable specifies the author to use for each Git commit.
In order for the :term:`BUILDHISTORY_COMMIT_AUTHOR` variable to work, the
:term:`BUILDHISTORY_COMMIT` variable must
@@ -963,25 +1107,27 @@ system and gives an overview of their function and contents.
email@host". Providing an email address or host that is not valid
does not produce an error.
- By default, the :ref:`buildhistory <ref-classes-buildhistory>` class sets the variable as follows::
+ By default, the :ref:`ref-classes-buildhistory` class sets the variable
+ as follows::
BUILDHISTORY_COMMIT_AUTHOR ?= "buildhistory <buildhistory@${DISTRO}>"
:term:`BUILDHISTORY_DIR`
- When inheriting the :ref:`buildhistory <ref-classes-buildhistory>`
+ When inheriting the :ref:`ref-classes-buildhistory`
class, this variable specifies the directory in which build history
information is kept. For more information on how the variable works,
- see the ``buildhistory.bbclass`` file.
+ see the :ref:`ref-classes-buildhistory` class.
- By default, the :ref:`buildhistory <ref-classes-buildhistory>` class sets the directory as follows::
+ By default, the :ref:`ref-classes-buildhistory` class sets the directory
+ as follows::
BUILDHISTORY_DIR ?= "${TOPDIR}/buildhistory"
:term:`BUILDHISTORY_FEATURES`
- When inheriting the :ref:`buildhistory <ref-classes-buildhistory>`
+ When inheriting the :ref:`ref-classes-buildhistory`
class, this variable specifies the build history features to be
enabled. For more information on how build history works, see the
- ":ref:`dev-manual/common-tasks:maintaining build output quality`"
+ ":ref:`dev-manual/build-quality:maintaining build output quality`"
section in the Yocto Project Development Tasks Manual.
You can specify these features in the form of a space-separated list:
@@ -1000,13 +1146,13 @@ system and gives an overview of their function and contents.
This saves one file per task and lists the SHA-256 checksums for
each file staged (i.e. the output of the task).
- By default, the :ref:`buildhistory <ref-classes-buildhistory>` class enables the following
- features::
+ By default, the :ref:`ref-classes-buildhistory` class enables the
+ following features::
BUILDHISTORY_FEATURES ?= "image package sdk"
:term:`BUILDHISTORY_IMAGE_FILES`
- When inheriting the :ref:`buildhistory <ref-classes-buildhistory>`
+ When inheriting the :ref:`ref-classes-buildhistory`
class, this variable specifies a list of paths to files copied from
the image contents into the build history directory under an
"image-files" directory in the directory for the image, so that you
@@ -1016,42 +1162,45 @@ system and gives an overview of their function and contents.
any file. Specifying an invalid path does not produce an error.
Consequently, you can include files that might not always be present.
- By default, the :ref:`buildhistory <ref-classes-buildhistory>` class provides paths to the
- following files::
+ By default, the :ref:`ref-classes-buildhistory` class provides paths to
+ the following files::
BUILDHISTORY_IMAGE_FILES ?= "/etc/passwd /etc/group"
:term:`BUILDHISTORY_PATH_PREFIX_STRIP`
- When inheriting the :ref:`buildhistory <ref-classes-buildhistory>`
+ When inheriting the :ref:`ref-classes-buildhistory`
class, this variable specifies a common path prefix that should be
stripped off the beginning of paths in the task signature list when the
``task`` feature is active in :term:`BUILDHISTORY_FEATURES`. This can be
useful when build history is populated from multiple sources that may not
all use the same top level directory.
- By default, the :ref:`buildhistory <ref-classes-buildhistory>` class sets the variable as follows::
+ By default, the :ref:`ref-classes-buildhistory` class sets the variable
+ as follows::
BUILDHISTORY_PATH_PREFIX_STRIP ?= ""
In this case, no prefixes will be stripped.
:term:`BUILDHISTORY_PUSH_REPO`
- When inheriting the :ref:`buildhistory <ref-classes-buildhistory>`
- class, this variable optionally specifies a remote repository to
- which build history pushes Git changes. In order for
- :term:`BUILDHISTORY_PUSH_REPO` to work,
- :term:`BUILDHISTORY_COMMIT` must be set to
- "1".
+ When inheriting the :ref:`ref-classes-buildhistory` class, this variable
+ optionally specifies a remote repository to which build history pushes
+ Git changes. In order for :term:`BUILDHISTORY_PUSH_REPO` to work,
+ :term:`BUILDHISTORY_COMMIT` must be set to "1".
The repository should correspond to a remote address that specifies a
repository as understood by Git, or alternatively to a remote name
that you have set up manually using ``git remote`` within the local
repository.
- By default, the :ref:`buildhistory <ref-classes-buildhistory>` class sets the variable as follows::
+ By default, the :ref:`ref-classes-buildhistory` class sets the variable
+ as follows::
BUILDHISTORY_PUSH_REPO ?= ""
+ :term:`BUILDNAME`
+ See :term:`bitbake:BUILDNAME` in the BitBake manual.
+
:term:`BUILDSDK_CFLAGS`
Specifies the flags to pass to the C compiler when building for the
SDK. When building in the ``nativesdk-`` context,
@@ -1078,8 +1227,7 @@ system and gives an overview of their function and contents.
:term:`BUILDSTATS_BASE`
Points to the location of the directory that holds build statistics
- when you use and enable the
- :ref:`buildstats <ref-classes-buildstats>` class. The
+ when you use and enable the :ref:`ref-classes-buildstats` class. The
:term:`BUILDSTATS_BASE` directory defaults to
``${``\ :term:`TMPDIR`\ ``}/buildstats/``.
@@ -1093,6 +1241,9 @@ system and gives an overview of their function and contents.
splitting the output executable file. Set the variable to "0" to get
a single output executable file.
+ :term:`BZRDIR`
+ See :term:`bitbake:BZRDIR` in the BitBake manual.
+
:term:`CACHE`
Specifies the directory BitBake uses to store a cache of the
:term:`Metadata` so it does not need to be parsed every time
@@ -1122,9 +1273,8 @@ system and gives an overview of their function and contents.
An internal variable specifying the special class override that
should currently apply (e.g. "class-target", "class-native", and so
forth). The classes that use this variable (e.g.
- :ref:`native <ref-classes-native>`,
- :ref:`nativesdk <ref-classes-nativesdk>`, and so forth) set the
- variable to appropriate values.
+ :ref:`ref-classes-native`, :ref:`ref-classes-nativesdk`, and so forth)
+ set the variable to appropriate values.
.. note::
@@ -1166,6 +1316,26 @@ system and gives an overview of their function and contents.
optional at the distribution level, in case the hardware supports
Bluetooth but you do not ever intend to use it.
+ :term:`COMMERCIAL_AUDIO_PLUGINS`
+ This variable is specific to the :yocto_git:`GStreamer recipes
+ </poky/tree/meta/recipes-multimedia/gstreamer/gstreamer1.0-meta-base.bb>`.
+ It allows to build the GStreamer `"ugly"
+ <https://github.com/GStreamer/gst-plugins-ugly>`__ and
+ `"bad" <https://github.com/GStreamer/gst-plugins-bad>`__ audio plugins.
+
+ See the :ref:`dev-manual/licenses:other variables related to commercial licenses`
+ section for usage details.
+
+ :term:`COMMERCIAL_VIDEO_PLUGINS`
+ This variable is specific to the :yocto_git:`GStreamer recipes
+ </poky/tree/meta/recipes-multimedia/gstreamer/gstreamer1.0-meta-base.bb>`.
+ It allows to build the GStreamer `"ugly"
+ <https://github.com/GStreamer/gst-plugins-ugly>`__ and
+ `"bad" <https://github.com/GStreamer/gst-plugins-bad>`__ video plugins.
+
+ See the :ref:`dev-manual/licenses:other variables related to commercial licenses`
+ section for usage details.
+
:term:`COMMON_LICENSE_DIR`
Points to ``meta/files/common-licenses`` in the
:term:`Source Directory`, which is where generic license
@@ -1192,17 +1362,41 @@ system and gives an overview of their function and contents.
speed since the build system skips parsing recipes not compatible
with the current machine.
+ If one wants to have a recipe only available for some architectures
+ (here ``aarch64`` and ``mips64``), the following can be used::
+
+ COMPATIBLE_MACHINE = "^$"
+ COMPATIBLE_MACHINE:arch64 = "^(aarch64)$"
+ COMPATIBLE_MACHINE:mips64 = "^(mips64)$"
+
+ The first line means "match all machines whose :term:`MACHINEOVERRIDES`
+ contains the empty string", which will always be none.
+
+ The second is for matching all machines whose :term:`MACHINEOVERRIDES`
+ contains one override which is exactly ``aarch64``.
+
+ The third is for matching all machines whose :term:`MACHINEOVERRIDES`
+ contains one override which is exactly ``mips64``.
+
+ The same could be achieved with::
+
+ COMPATIBLE_MACHINE = "^(aarch64|mips64)$"
+
+ .. note::
+
+ When :term:`COMPATIBLE_MACHINE` is set in a recipe inherits from
+ native, the recipe is always skipped. All native recipes must be
+ entirely target independent and should not rely on :term:`MACHINE`.
+
:term:`COMPLEMENTARY_GLOB`
Defines wildcards to match when installing a list of complementary
packages for all the packages explicitly (or implicitly) installed in
an image.
- .. note::
-
- The :term:`COMPLEMENTARY_GLOB` variable uses Unix filename pattern matching
- (`fnmatch <https://docs.python.org/3/library/fnmatch.html#module-fnmatch>`__),
- which is similar to the Unix style pathname pattern expansion
- (`glob <https://docs.python.org/3/library/glob.html>`__).
+ The :term:`COMPLEMENTARY_GLOB` variable uses Unix filename pattern matching
+ (`fnmatch <https://docs.python.org/3/library/fnmatch.html#module-fnmatch>`__),
+ which is similar to the Unix style pathname pattern expansion
+ (`glob <https://docs.python.org/3/library/glob.html>`__).
The resulting list of complementary packages is associated with an
item that can be added to
@@ -1217,6 +1411,11 @@ system and gives an overview of their function and contents.
COMPLEMENTARY_GLOB[dev-pkgs] = '*-dev'
+ .. note::
+
+ When installing complementary packages, recommends relationships
+ (set via :term:`RRECOMMENDS`) are always ignored.
+
:term:`COMPONENTS_DIR`
Stores sysroot components for each recipe. The OpenEmbedded build
system uses :term:`COMPONENTS_DIR` when constructing recipe-specific
@@ -1268,24 +1467,24 @@ system and gives an overview of their function and contents.
:term:`Source Directory`.
:term:`CONFIG_INITRAMFS_SOURCE`
- Identifies the initial RAM filesystem (initramfs) source files. The
+ Identifies the initial RAM filesystem (:term:`Initramfs`) source files. The
OpenEmbedded build system receives and uses this kernel Kconfig
variable as an environment variable. By default, the variable is set
to null ("").
The :term:`CONFIG_INITRAMFS_SOURCE` can be either a single cpio archive
with a ``.cpio`` suffix or a space-separated list of directories and
- files for building the initramfs image. A cpio archive should contain
- a filesystem archive to be used as an initramfs image. Directories
- should contain a filesystem layout to be included in the initramfs
+ files for building the :term:`Initramfs` image. A cpio archive should contain
+ a filesystem archive to be used as an :term:`Initramfs` image. Directories
+ should contain a filesystem layout to be included in the :term:`Initramfs`
image. Files should contain entries according to the format described
by the ``usr/gen_init_cpio`` program in the kernel tree.
- If you specify multiple directories and files, the initramfs image
+ If you specify multiple directories and files, the :term:`Initramfs` image
will be the aggregate of all of them.
- For information on creating an initramfs, see the
- ":ref:`dev-manual/common-tasks:building an initial ram filesystem (initramfs) image`" section
+ For information on creating an :term:`Initramfs`, see the
+ ":ref:`dev-manual/building:building an initial ram filesystem (Initramfs) image`" section
in the Yocto Project Development Tasks Manual.
:term:`CONFIG_SITE`
@@ -1297,8 +1496,7 @@ system and gives an overview of their function and contents.
The minimal arguments for GNU configure.
:term:`CONFLICT_DISTRO_FEATURES`
- When inheriting the
- :ref:`features_check <ref-classes-features_check>`
+ When inheriting the :ref:`ref-classes-features_check`
class, this variable identifies distribution features that would be
in conflict should the recipe be built. In other words, if the
:term:`CONFLICT_DISTRO_FEATURES` variable lists a feature that also
@@ -1306,11 +1504,57 @@ system and gives an overview of their function and contents.
the recipe will be skipped, and if the build system attempts to build
the recipe then an error will be triggered.
+ :term:`CONVERSION_CMD`
+ This variable is used for storing image conversion commands.
+ Image conversion can convert an image into different objects like:
+
+ - Compressed version of the image
+
+ - Checksums for the image
+
+ An example of :term:`CONVERSION_CMD` from :ref:`ref-classes-image_types`
+ class is::
+
+ CONVERSION_CMD:lzo = "lzop -9 ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}"
+
+ :term:`COPY_LIC_DIRS`
+ If set to "1" along with the
+ :term:`COPY_LIC_MANIFEST` variable, the
+ OpenEmbedded build system copies into the image the license files,
+ which are located in ``/usr/share/common-licenses``, for each
+ package. The license files are placed in directories within the image
+ itself during build time.
+
+ .. note::
+
+ The :term:`COPY_LIC_DIRS` does not offer a path for adding licenses for
+ newly installed packages to an image, which might be most suitable for
+ read-only filesystems that cannot be upgraded. See the
+ :term:`LICENSE_CREATE_PACKAGE` variable for additional information.
+ You can also reference the ":ref:`dev-manual/licenses:providing license text`"
+ section in the Yocto Project Development Tasks Manual for
+ information on providing license text.
+
+ :term:`COPY_LIC_MANIFEST`
+ If set to "1", the OpenEmbedded build system copies the license
+ manifest for the image to
+ ``/usr/share/common-licenses/license.manifest`` within the image
+ itself during build time.
+
+ .. note::
+
+ The :term:`COPY_LIC_MANIFEST` does not offer a path for adding licenses for
+ newly installed packages to an image, which might be most suitable for
+ read-only filesystems that cannot be upgraded. See the
+ :term:`LICENSE_CREATE_PACKAGE` variable for additional information.
+ You can also reference the ":ref:`dev-manual/licenses:providing license text`"
+ section in the Yocto Project Development Tasks Manual for
+ information on providing license text.
+
:term:`COPYLEFT_LICENSE_EXCLUDE`
- A space-separated list of licenses to exclude from the source
- archived by the :ref:`archiver <ref-classes-archiver>` class. In
- other words, if a license in a recipe's
- :term:`LICENSE` value is in the value of
+ A space-separated list of licenses to exclude from the source archived by
+ the :ref:`ref-classes-archiver` class. In other words, if a license in a
+ recipe's :term:`LICENSE` value is in the value of
:term:`COPYLEFT_LICENSE_EXCLUDE`, then its source is not archived by the
class.
@@ -1321,92 +1565,54 @@ system and gives an overview of their function and contents.
The default value, which is "CLOSED Proprietary", for
:term:`COPYLEFT_LICENSE_EXCLUDE` is set by the
- :ref:`copyleft_filter <ref-classes-copyleft_filter>` class, which
- is inherited by the :ref:`archiver <ref-classes-archiver>` class.
+ :ref:`ref-classes-copyleft_filter` class, which
+ is inherited by the :ref:`ref-classes-archiver` class.
:term:`COPYLEFT_LICENSE_INCLUDE`
A space-separated list of licenses to include in the source archived
- by the :ref:`archiver <ref-classes-archiver>` class. In other
+ by the :ref:`ref-classes-archiver` class. In other
words, if a license in a recipe's :term:`LICENSE`
value is in the value of :term:`COPYLEFT_LICENSE_INCLUDE`, then its
source is archived by the class.
- The default value is set by the
- :ref:`copyleft_filter <ref-classes-copyleft_filter>` class, which
- is inherited by the :ref:`archiver <ref-classes-archiver>` class. The default value includes
- "GPL*", "LGPL*", and "AGPL*".
+ The default value is set by the :ref:`ref-classes-copyleft_filter` class,
+ which is inherited by the :ref:`ref-classes-archiver` class. The default
+ value includes "GPL*", "LGPL*", and "AGPL*".
:term:`COPYLEFT_PN_EXCLUDE`
A list of recipes to exclude in the source archived by the
- :ref:`archiver <ref-classes-archiver>` class. The
- :term:`COPYLEFT_PN_EXCLUDE` variable overrides the license inclusion and
- exclusion caused through the
- :term:`COPYLEFT_LICENSE_INCLUDE` and
- :term:`COPYLEFT_LICENSE_EXCLUDE`
+ :ref:`ref-classes-archiver` class. The :term:`COPYLEFT_PN_EXCLUDE`
+ variable overrides the license inclusion and exclusion caused through the
+ :term:`COPYLEFT_LICENSE_INCLUDE` and :term:`COPYLEFT_LICENSE_EXCLUDE`
variables, respectively.
The default value, which is "" indicating to not explicitly exclude
any recipes by name, for :term:`COPYLEFT_PN_EXCLUDE` is set by the
- :ref:`copyleft_filter <ref-classes-copyleft_filter>` class, which
- is inherited by the :ref:`archiver <ref-classes-archiver>` class.
+ :ref:`ref-classes-copyleft_filter` class, which is inherited by the
+ :ref:`ref-classes-archiver` class.
:term:`COPYLEFT_PN_INCLUDE`
A list of recipes to include in the source archived by the
- :ref:`archiver <ref-classes-archiver>` class. The
- :term:`COPYLEFT_PN_INCLUDE` variable overrides the license inclusion and
- exclusion caused through the
- :term:`COPYLEFT_LICENSE_INCLUDE` and
- :term:`COPYLEFT_LICENSE_EXCLUDE`
+ :ref:`ref-classes-archiver` class. The :term:`COPYLEFT_PN_INCLUDE`
+ variable overrides the license inclusion and exclusion caused through the
+ :term:`COPYLEFT_LICENSE_INCLUDE` and :term:`COPYLEFT_LICENSE_EXCLUDE`
variables, respectively.
The default value, which is "" indicating to not explicitly include
any recipes by name, for :term:`COPYLEFT_PN_INCLUDE` is set by the
- :ref:`copyleft_filter <ref-classes-copyleft_filter>` class, which
- is inherited by the :ref:`archiver <ref-classes-archiver>` class.
+ :ref:`ref-classes-copyleft_filter` class, which is inherited by the
+ :ref:`ref-classes-archiver` class.
:term:`COPYLEFT_RECIPE_TYPES`
A space-separated list of recipe types to include in the source
archived by the :ref:`archiver <ref-classes-archiver>` class.
- Recipe types are ``target``, ``native``, ``nativesdk``, ``cross``,
- ``crosssdk``, and ``cross-canadian``.
+ Recipe types are ``target``, :ref:`ref-classes-native`,
+ :ref:`ref-classes-nativesdk`, :ref:`ref-classes-cross`,
+ :ref:`ref-classes-crosssdk`, and :ref:`ref-classes-cross-canadian`.
The default value, which is "target*", for :term:`COPYLEFT_RECIPE_TYPES`
- is set by the :ref:`copyleft_filter <ref-classes-copyleft_filter>`
- class, which is inherited by the :ref:`archiver <ref-classes-archiver>` class.
-
- :term:`COPY_LIC_DIRS`
- If set to "1" along with the
- :term:`COPY_LIC_MANIFEST` variable, the
- OpenEmbedded build system copies into the image the license files,
- which are located in ``/usr/share/common-licenses``, for each
- package. The license files are placed in directories within the image
- itself during build time.
-
- .. note::
-
- The :term:`COPY_LIC_DIRS` does not offer a path for adding licenses for
- newly installed packages to an image, which might be most suitable for
- read-only filesystems that cannot be upgraded. See the
- :term:`LICENSE_CREATE_PACKAGE` variable for additional information.
- You can also reference the ":ref:`dev-manual/common-tasks:providing license text`"
- section in the Yocto Project Development Tasks Manual for
- information on providing license text.
-
- :term:`COPY_LIC_MANIFEST`
- If set to "1", the OpenEmbedded build system copies the license
- manifest for the image to
- ``/usr/share/common-licenses/license.manifest`` within the image
- itself during build time.
-
- .. note::
-
- The :term:`COPY_LIC_MANIFEST` does not offer a path for adding licenses for
- newly installed packages to an image, which might be most suitable for
- read-only filesystems that cannot be upgraded. See the
- :term:`LICENSE_CREATE_PACKAGE` variable for additional information.
- You can also reference the ":ref:`dev-manual/common-tasks:providing license text`"
- section in the Yocto Project Development Tasks Manual for
- information on providing license text.
+ is set by the :ref:`ref-classes-copyleft_filter` class, which is
+ inherited by the :ref:`ref-classes-archiver` class.
:term:`CORE_IMAGE_EXTRA_INSTALL`
Specifies the list of packages to be added to the image. You should
@@ -1472,22 +1678,39 @@ system and gives an overview of their function and contents.
variable only in certain contexts (e.g. when building for kernel
and kernel module recipes).
- :term:`CVE_CHECK_PN_WHITELIST`
+ :term:`CVE_CHECK_IGNORE`
+ This variable is deprecated and should be replaced by :term:`CVE_STATUS`.
+
+ :term:`CVE_CHECK_SHOW_WARNINGS`
+ Specifies whether or not the :ref:`ref-classes-cve-check`
+ class should generate warning messages on the console when unpatched
+ CVEs are found. The default is "1", but you may wish to set it to "0" if
+ you are already examining/processing the logs after the build has
+ completed and thus do not need the warning messages.
+
+ :term:`CVE_CHECK_SKIP_RECIPE`
The list of package names (:term:`PN`) for which
CVEs (Common Vulnerabilities and Exposures) are ignored.
- :term:`CVE_CHECK_WHITELIST`
- The list of CVE IDs which are ignored. Here is
- an example from the :oe_layerindex:`Python3 recipe</layerindex/recipe/23823>`::
+ :term:`CVE_DB_INCR_UPDATE_AGE_THRES`
+ Specifies the maximum age of the CVE database in seconds for an
+ incremental update (instead of a full-download). Use "0" to force a
+ full-download.
- # This is windows only issue.
- CVE_CHECK_WHITELIST += "CVE-2020-15523"
+ :term:`CVE_DB_UPDATE_INTERVAL`
+ Specifies the CVE database update interval in seconds, as used by
+ ``cve-update-db-native``. The default value is "86400" i.e. once a day
+ (24*60*60). If the value is set to "0" then the update will be forced
+ every time. Alternatively, a negative value e.g. "-1" will disable
+ updates entirely.
:term:`CVE_PRODUCT`
In a recipe, defines the name used to match the recipe name
against the name in the upstream `NIST CVE database <https://nvd.nist.gov/>`__.
- The default is ${:term:`BPN`}. If it does not match the name in the NIST CVE
+ The default is ${:term:`BPN`} (except for recipes that inherit the
+ :ref:`ref-classes-pypi` class where it is set based upon
+ :term:`PYPI_PACKAGE`). If it does not match the name in the NIST CVE
database or matches with multiple entries in the database, the default
value needs to be changed.
@@ -1495,6 +1718,54 @@ system and gives an overview of their function and contents.
CVE_PRODUCT = "oracle_berkeley_db berkeley_db"
+ Sometimes the product name is not specific enough, for example
+ "tar" has been matching CVEs for the GNU ``tar`` package and also
+ the ``node-tar`` node.js extension. To avoid this problem, use the
+ vendor name as a prefix. The syntax for this is::
+
+ CVE_PRODUCT = "vendor:package"
+
+ :term:`CVE_STATUS`
+ The CVE ID which is patched or should be ignored. Here is
+ an example from the :oe_layerindex:`Python3 recipe</layerindex/recipe/23823>`::
+
+ CVE_STATUS[CVE-2020-15523] = "not-applicable-platform: Issue only applies on Windows"
+
+ It has the format "reason: description" and the description is optional.
+ The Reason is mapped to the final CVE state by mapping via
+ :term:`CVE_CHECK_STATUSMAP`. See :ref:`dev-manual/vulnerabilities:fixing vulnerabilities in recipes`
+ for details.
+
+ :term:`CVE_STATUS_GROUPS`
+ If there are many CVEs with the same status and reason, they can by simplified by using this
+ variable instead of many similar lines with :term:`CVE_STATUS`::
+
+ CVE_STATUS_GROUPS = "CVE_STATUS_WIN CVE_STATUS_PATCHED"
+
+ CVE_STATUS_WIN = "CVE-1234-0001 CVE-1234-0002"
+ CVE_STATUS_WIN[status] = "not-applicable-platform: Issue only applies on Windows"
+ CVE_STATUS_PATCHED = "CVE-1234-0003 CVE-1234-0004"
+ CVE_STATUS_PATCHED[status] = "fixed-version: Fixed externally"
+
+ :term:`CVE_CHECK_STATUSMAP`
+ Mapping variable for all possible reasons of :term:`CVE_STATUS`:
+ ``Patched``, ``Unpatched`` and ``Ignored``.
+ See :ref:`ref-classes-cve-check` or ``meta/conf/cve-check-map.conf`` for more details::
+
+ CVE_CHECK_STATUSMAP[cpe-incorrect] = "Ignored"
+
+ :term:`CVE_VERSION`
+ In a recipe, defines the version used to match the recipe version
+ against the version in the `NIST CVE database <https://nvd.nist.gov/>`__
+ when usign :ref:`ref-classes-cve-check`.
+
+ The default is ${:term:`PV`} but if recipes use custom version numbers
+ which do not map to upstream software component release versions and the versions
+ used in the CVE database, then this variable can be used to set the
+ version number for :ref:`ref-classes-cve-check`. Example::
+
+ CVE_VERSION = "2.39"
+
:term:`CVSDIR`
The directory in which files checked out under the CVS system are
stored.
@@ -1541,7 +1812,7 @@ system and gives an overview of their function and contents.
suitable for timestamps.
:term:`DEBIAN_NOAUTONAME`
- When the :ref:`debian <ref-classes-debian>` class is inherited,
+ When the :ref:`ref-classes-debian` class is inherited,
which is the default behavior, :term:`DEBIAN_NOAUTONAME` specifies a
particular package should not be renamed according to Debian library
package naming. You must use the package name as an override when you
@@ -1550,7 +1821,7 @@ system and gives an overview of their function and contents.
DEBIAN_NOAUTONAME:fontconfig-utils = "1"
:term:`DEBIANNAME`
- When the :ref:`debian <ref-classes-debian>` class is inherited,
+ When the :ref:`ref-classes-debian` class is inherited,
which is the default behavior, :term:`DEBIANNAME` allows you to override
the library name for an individual package. Overriding the library
name in these cases is rare. You must use the package name as an
@@ -1568,21 +1839,6 @@ system and gives an overview of their function and contents.
compiling a system for debugging. This variable defaults to "-O
-fno-omit-frame-pointer ${DEBUG_FLAGS} -pipe".
- :term:`DEFAULT_PREFERENCE`
- Specifies a weak bias for recipe selection priority.
-
- The most common usage of this is variable is to set it to "-1" within
- a recipe for a development version of a piece of software. Using the
- variable in this way causes the stable version of the recipe to build
- by default in the absence of :term:`PREFERRED_VERSION` being used to
- build the development version.
-
- .. note::
-
- The bias provided by :term:`DEFAULT_PREFERENCE` is weak and is overridden
- by :term:`BBFILE_PRIORITY` if that variable is different between two
- layers that contain different versions of the same recipe.
-
:term:`DEBUG_PREFIX_MAP`
Allows to set C compiler options, such as ``-fdebug-prefix-map``,
``-fmacro-prefix-map``, and ``-ffile-prefix-map``, which allow to
@@ -1600,6 +1856,21 @@ system and gives an overview of their function and contents.
This variable is set in the ``meta/conf/bitbake.conf`` file. It is
not intended to be user-configurable.
+ :term:`DEFAULT_PREFERENCE`
+ Specifies a weak bias for recipe selection priority.
+
+ The most common usage of this is variable is to set it to "-1" within
+ a recipe for a development version of a piece of software. Using the
+ variable in this way causes the stable version of the recipe to build
+ by default in the absence of :term:`PREFERRED_VERSION` being used to
+ build the development version.
+
+ .. note::
+
+ The bias provided by :term:`DEFAULT_PREFERENCE` is weak and is overridden
+ by :term:`BBFILE_PRIORITY` if that variable is different between two
+ layers that contain different versions of the same recipe.
+
:term:`DEFAULTTUNE`
The default CPU and Application Binary Interface (ABI) tunings (i.e.
the "tune") used by the OpenEmbedded build system. The
@@ -1621,16 +1892,15 @@ system and gives an overview of their function and contents.
DEPENDS = "bar"
- The practical effect of the previous
- assignment is that all files installed by bar will be available in
- the appropriate staging sysroot, given by the
- :term:`STAGING_DIR* <STAGING_DIR>` variables, by the time the
- :ref:`ref-tasks-configure` task for ``foo`` runs.
- This mechanism is implemented by having ``do_configure`` depend on
- the :ref:`ref-tasks-populate_sysroot` task of
- each recipe listed in :term:`DEPENDS`, through a
- ``[``\ :ref:`deptask <bitbake:bitbake-user-manual/bitbake-user-manual-metadata:variable flags>`\ ``]``
- declaration in the :ref:`base <ref-classes-base>` class.
+ The practical effect of the previous assignment is that all files
+ installed by bar will be available in the appropriate staging sysroot,
+ given by the :term:`STAGING_DIR* <STAGING_DIR>` variables, by the time
+ the :ref:`ref-tasks-configure` task for ``foo`` runs. This mechanism is
+ implemented by having :ref:`ref-tasks-configure` depend on the
+ :ref:`ref-tasks-populate_sysroot` task of each recipe listed in
+ :term:`DEPENDS`, through a
+ ``[``\ :ref:`deptask <bitbake-user-manual/bitbake-user-manual-metadata:variable flags>`\ ``]``
+ declaration in the :ref:`ref-classes-base` class.
.. note::
@@ -1646,7 +1916,7 @@ system and gives an overview of their function and contents.
DEPENDS = "codegen-native"
For more
- information, see the :ref:`native <ref-classes-native>` class and
+ information, see the :ref:`ref-classes-native` class and
the :term:`EXTRANATIVEPATH` variable.
.. note::
@@ -1676,22 +1946,21 @@ system and gives an overview of their function and contents.
to the recipe that installs ``libbar``, other recipes might
fail to link against ``libfoo``.
- For information on runtime dependencies, see the
- :term:`RDEPENDS` variable. You can also see the
- ":ref:`bitbake:bitbake-user-manual/bitbake-user-manual-metadata:tasks`" and
- ":ref:`bitbake:bitbake-user-manual/bitbake-user-manual-execution:dependencies`" sections in the
- BitBake User Manual for additional information on tasks and
- dependencies.
+ For information on runtime dependencies, see the :term:`RDEPENDS`
+ variable. You can also see the
+ ":ref:`bitbake-user-manual/bitbake-user-manual-metadata:tasks`" and
+ ":ref:`bitbake-user-manual/bitbake-user-manual-execution:dependencies`"
+ sections in the BitBake User Manual for additional information on tasks
+ and dependencies.
:term:`DEPLOY_DIR`
Points to the general area that the OpenEmbedded build system uses to
place images, packages, SDKs, and other output files that are ready
to be used outside of the build system. By default, this directory
- resides within the :term:`Build Directory` as
- ``${TMPDIR}/deploy``.
+ resides within the :term:`Build Directory` as ``${TMPDIR}/deploy``.
For more information on the structure of the Build Directory, see
- ":ref:`ref-manual/structure:the build directory - \`\`build/\`\``" section.
+ ":ref:`ref-manual/structure:the build directory --- \`\`build/\`\``" section.
For more detail on the contents of the ``deploy`` directory, see the
":ref:`overview-manual/concepts:images`",
":ref:`overview-manual/concepts:package feeds`", and
@@ -1701,9 +1970,8 @@ system and gives an overview of their function and contents.
:term:`DEPLOY_DIR_DEB`
Points to the area that the OpenEmbedded build system uses to place
Debian packages that are ready to be used outside of the build
- system. This variable applies only when
- :term:`PACKAGE_CLASSES` contains
- "package_deb".
+ system. This variable applies only when :term:`PACKAGE_CLASSES` contains
+ ":ref:`ref-classes-package_deb`".
The BitBake configuration file initially defines the
:term:`DEPLOY_DIR_DEB` variable as a sub-folder of
@@ -1711,7 +1979,7 @@ system and gives an overview of their function and contents.
DEPLOY_DIR_DEB = "${DEPLOY_DIR}/deb"
- The :ref:`package_deb <ref-classes-package_deb>` class uses the
+ The :ref:`ref-classes-package_deb` class uses the
:term:`DEPLOY_DIR_DEB` variable to make sure the
:ref:`ref-tasks-package_write_deb` task
writes Debian packages into the appropriate folder. For more
@@ -1730,12 +1998,11 @@ system and gives an overview of their function and contents.
It must not be used directly in recipes when deploying files. Instead,
it's only useful when a recipe needs to "read" a file already deployed
by a dependency. So, it should be filled with the contents of
- :term:`DEPLOYDIR` by the :ref:`deploy <ref-classes-deploy>` class or
- with the contents of :term:`IMGDEPLOYDIR` by the :ref:`image
- <ref-classes-image>` class.
+ :term:`DEPLOYDIR` by the :ref:`ref-classes-deploy` class or with the
+ contents of :term:`IMGDEPLOYDIR` by the :ref:`ref-classes-image` class.
- For more information on the structure of the Build Directory, see
- ":ref:`ref-manual/structure:the build directory - \`\`build/\`\``" section.
+ For more information on the structure of the :term:`Build Directory`, see
+ ":ref:`ref-manual/structure:the build directory --- \`\`build/\`\``" section.
For more detail on the contents of the ``deploy`` directory, see the
":ref:`overview-manual/concepts:images`" and
":ref:`overview-manual/concepts:application development sdk`" sections both in
@@ -1744,18 +2011,16 @@ system and gives an overview of their function and contents.
:term:`DEPLOY_DIR_IPK`
Points to the area that the OpenEmbedded build system uses to place
IPK packages that are ready to be used outside of the build system.
- This variable applies only when
- :term:`PACKAGE_CLASSES` contains
- "package_ipk".
+ This variable applies only when :term:`PACKAGE_CLASSES` contains
+ ":ref:`ref-classes-package_ipk`".
The BitBake configuration file initially defines this variable as a
sub-folder of :term:`DEPLOY_DIR`::
DEPLOY_DIR_IPK = "${DEPLOY_DIR}/ipk"
- The :ref:`package_ipk <ref-classes-package_ipk>` class uses the
- :term:`DEPLOY_DIR_IPK` variable to make sure the
- :ref:`ref-tasks-package_write_ipk` task
+ The :ref:`ref-classes-package_ipk` class uses the :term:`DEPLOY_DIR_IPK`
+ variable to make sure the :ref:`ref-tasks-package_write_ipk` task
writes IPK packages into the appropriate folder. For more information
on how packaging works, see the
":ref:`overview-manual/concepts:package feeds`" section
@@ -1764,16 +2029,15 @@ system and gives an overview of their function and contents.
:term:`DEPLOY_DIR_RPM`
Points to the area that the OpenEmbedded build system uses to place
RPM packages that are ready to be used outside of the build system.
- This variable applies only when
- :term:`PACKAGE_CLASSES` contains
- "package_rpm".
+ This variable applies only when :term:`PACKAGE_CLASSES` contains
+ ":ref:`ref-classes-package_rpm`".
The BitBake configuration file initially defines this variable as a
sub-folder of :term:`DEPLOY_DIR`::
DEPLOY_DIR_RPM = "${DEPLOY_DIR}/rpm"
- The :ref:`package_rpm <ref-classes-package_rpm>` class uses the
+ The :ref:`ref-classes-package_rpm` class uses the
:term:`DEPLOY_DIR_RPM` variable to make sure the
:ref:`ref-tasks-package_write_rpm` task
writes RPM packages into the appropriate folder. For more information
@@ -1781,34 +2045,14 @@ system and gives an overview of their function and contents.
":ref:`overview-manual/concepts:package feeds`" section
in the Yocto Project Overview and Concepts Manual.
- :term:`DEPLOY_DIR_TAR`
- Points to the area that the OpenEmbedded build system uses to place
- tarballs that are ready to be used outside of the build system. This
- variable applies only when
- :term:`PACKAGE_CLASSES` contains
- "package_tar".
-
- The BitBake configuration file initially defines this variable as a
- sub-folder of :term:`DEPLOY_DIR`::
-
- DEPLOY_DIR_TAR = "${DEPLOY_DIR}/tar"
-
- The :ref:`package_tar <ref-classes-package_tar>` class uses the
- :term:`DEPLOY_DIR_TAR` variable to make sure the
- :ref:`ref-tasks-package_write_tar` task
- writes TAR packages into the appropriate folder. For more information
- on how packaging works, see the
- ":ref:`overview-manual/concepts:package feeds`" section
- in the Yocto Project Overview and Concepts Manual.
-
:term:`DEPLOYDIR`
- When inheriting the :ref:`deploy <ref-classes-deploy>` class, the
+ When inheriting the :ref:`ref-classes-deploy` class, the
:term:`DEPLOYDIR` points to a temporary work area for deployed files that
- is set in the :ref:`deploy <ref-classes-deploy>` class as follows::
+ is set in the :ref:`ref-classes-deploy` class as follows::
DEPLOYDIR = "${WORKDIR}/deploy-${PN}"
- Recipes inheriting the :ref:`deploy <ref-classes-deploy>` class should copy files to be
+ Recipes inheriting the :ref:`ref-classes-deploy` class should copy files to be
deployed into :term:`DEPLOYDIR`, and the class will take care of copying
them into :term:`DEPLOY_DIR_IMAGE`
afterwards.
@@ -1818,6 +2062,23 @@ system and gives an overview of their function and contents.
:term:`DESCRIPTION` takes the value of the :term:`SUMMARY`
variable.
+ :term:`DEV_PKG_DEPENDENCY`
+ Provides an easy way for recipes to disable or adjust the runtime recommendation
+ (:term:`RRECOMMENDS`) of the ``${PN}-dev`` package on the main
+ (``${PN}``) package.
+
+ :term:`DISABLE_STATIC`
+ Used in order to disable static linking by default (in order to save
+ space, since static libraries are often unused in embedded systems.)
+ The default value is " --disable-static", however it can be set to ""
+ in order to enable static linking if desired. Certain recipes do this
+ individually, and also there is a
+ ``meta/conf/distro/include/no-static-libs.inc`` include file that
+ disables static linking for a number of recipes. Some software
+ packages or build tools (such as CMake) have explicit support for
+ enabling / disabling static linking, and in those cases
+ :term:`DISABLE_STATIC` is not used.
+
:term:`DISTRO`
The short name of the distribution. For information on the long name
of the distribution, see the :term:`DISTRO_NAME`
@@ -1877,24 +2138,39 @@ system and gives an overview of their function and contents.
target that can optionally support X11 to have its X11 support
enabled.
+ .. note::
+
+ Just enabling :term:`DISTRO_FEATURES` alone doesn't
+ enable feature support for packages. Mechanisms such as making
+ :term:`PACKAGECONFIG` track :term:`DISTRO_FEATURES` are used
+ to enable/disable package features.
+
Two more examples are Bluetooth and NFS support. For a more complete
list of features that ships with the Yocto Project and that you can
provide with this variable, see the ":ref:`ref-features-distro`" section.
:term:`DISTRO_FEATURES_BACKFILL`
- Features to be added to :term:`DISTRO_FEATURES` if not also present in
- :term:`DISTRO_FEATURES_BACKFILL_CONSIDERED`.
+ A space-separated list of features to be added to :term:`DISTRO_FEATURES`
+ if not also present in :term:`DISTRO_FEATURES_BACKFILL_CONSIDERED`.
This variable is set in the ``meta/conf/bitbake.conf`` file. It is
not intended to be user-configurable. It is best to just reference
- the variable to see which distro features are being backfilled for
- all distro configurations. See the ":ref:`ref-features-backfill`" section
- for more information.
+ the variable to see which distro features are being
+ :ref:`backfilled <ref-features-backfill>` for all distro configurations.
:term:`DISTRO_FEATURES_BACKFILL_CONSIDERED`
- Features from :term:`DISTRO_FEATURES_BACKFILL` that should not be
- backfilled (i.e. added to :term:`DISTRO_FEATURES`) during the build. See
- the ":ref:`ref-features-backfill`" section for more information.
+ A space-separated list of features from :term:`DISTRO_FEATURES_BACKFILL`
+ that should not be :ref:`backfilled <ref-features-backfill>` (i.e. added
+ to :term:`DISTRO_FEATURES`) during the build.
+
+ This corresponds to an opt-out mechanism. When new default distro
+ features are introduced, distribution maintainers can review (`consider`)
+ them and decide to exclude them from the
+ :ref:`backfilled <ref-features-backfill>` features. Therefore, the
+ combination of :term:`DISTRO_FEATURES_BACKFILL` and
+ :term:`DISTRO_FEATURES_BACKFILL_CONSIDERED` makes it possible to
+ add new default features without breaking existing distributions.
+
:term:`DISTRO_FEATURES_DEFAULT`
A convenience variable that gives you the default list of distro
@@ -1919,11 +2195,10 @@ system and gives an overview of their function and contents.
:term:`DISTRO_FEATURES_FILTER_NATIVESDK`
Specifies a list of features that if present in the target
- :term:`DISTRO_FEATURES` value should be
- included in :term:`DISTRO_FEATURES` when building nativesdk recipes. This
- variable is used in addition to the features filtered using the
- :term:`DISTRO_FEATURES_NATIVESDK`
- variable.
+ :term:`DISTRO_FEATURES` value should be included in
+ :term:`DISTRO_FEATURES` when building :ref:`ref-classes-nativesdk`
+ recipes. This variable is used in addition to the features filtered using
+ the :term:`DISTRO_FEATURES_NATIVESDK` variable.
:term:`DISTRO_FEATURES_NATIVE`
Specifies a list of features that should be included in
@@ -1936,10 +2211,9 @@ system and gives an overview of their function and contents.
:term:`DISTRO_FEATURES_NATIVESDK`
Specifies a list of features that should be included in
:term:`DISTRO_FEATURES` when building
- nativesdk recipes. This variable is used in addition to the features
- filtered using the
- :term:`DISTRO_FEATURES_FILTER_NATIVESDK`
- variable.
+ :ref:`ref-classes-nativesdk` recipes. This variable is used
+ in addition to the features filtered using the
+ :term:`DISTRO_FEATURES_FILTER_NATIVESDK` variable.
:term:`DISTRO_NAME`
The long name of the distribution. For information on the short name
@@ -1982,24 +2256,10 @@ system and gives an overview of their function and contents.
is included in the default value of
:term:`OVERRIDES`.
- :term:`DISTUTILS_SETUP_PATH`
- When used by recipes that inherit the
- :ref:`distutils3 <ref-classes-distutils3>` class, this variable should
- be used to specify the directory in which the ``setup.py`` file is
- located if it is not at the root of the source tree (as specified by
- :term:`S`). For example, in a recipe where the sources are fetched from
- a Git repository and ``setup.py`` is in a ``python/pythonmodule``
- subdirectory, you would have this::
+ Here is an example from :yocto_git:`meta-poky/conf/distro/poky-tiny.conf
+ </poky/tree/meta-poky/conf/distro/poky-tiny.conf>`::
- S = "${WORKDIR}/git"
- DISTUTILS_SETUP_PATH = "${S}/python/pythonmodule"
-
- .. note::
-
- ``distutils`` has been deprecated in Python 3.10 and will be removed
- in Python 3.12. For this reason, the use of :ref:`distutils3 <ref-classes-distutils3>`
- is deprecated. Instead use :ref:`setuptools3 <ref-classes-setuptools3>` and the
- :term:`SETUPTOOLS_SETUP_PATH` variable.
+ DISTROOVERRIDES = "poky:poky-tiny"
:term:`DL_DIR`
The central download directory used by the build process to store
@@ -2012,8 +2272,7 @@ system and gives an overview of their function and contents.
You can set this directory by defining the :term:`DL_DIR` variable in the
``conf/local.conf`` file. This directory is self-maintaining and you
should not have to touch it. By default, the directory is
- ``downloads`` in the :term:`Build Directory`.
- ::
+ ``downloads`` in the :term:`Build Directory`::
#DL_DIR ?= "${TOPDIR}/downloads"
@@ -2040,14 +2299,36 @@ system and gives an overview of their function and contents.
Wiki page.
:term:`DOC_COMPRESS`
- When inheriting the :ref:`compress_doc <ref-classes-compress_doc>`
+ When inheriting the :ref:`ref-classes-compress_doc`
class, this variable sets the compression policy used when the
- OpenEmbedded build system compresses man pages and info pages. By
+ OpenEmbedded build system compresses manual and info pages. By
default, the compression method used is gz (gzip). Other policies
available are xz and bz2.
For information on policies and on how to use this variable, see the
- comments in the ``meta/classes/compress_doc.bbclass`` file.
+ comments in the ``meta/classes-recipe/compress_doc.bbclass`` file.
+
+ :term:`DT_FILES`
+ Space-separated list of device tree source files to compile using
+ a recipe that inherits the :ref:`ref-classes-devicetree` class. These
+ are relative to the :term:`DT_FILES_PATH`.
+
+ For convenience, both ``.dts`` and ``.dtb`` extensions can be used.
+
+ Use an empty string (default) to build all device tree sources within
+ the :term:`DT_FILES_PATH` directory.
+
+ :term:`DT_FILES_PATH`
+ When compiling out-of-tree device tree sources using a recipe that
+ inherits the :ref:`ref-classes-devicetree` class, this variable specifies
+ the path to the directory containing dts files to build.
+
+ Defaults to the :term:`S` directory.
+
+ :term:`DT_PADDING_SIZE`
+ When inheriting the :ref:`ref-classes-devicetree` class, this variable
+ specifies the size of padding appended to the device tree blob, used as
+ extra space typically for additional properties during boot.
:term:`EFI_PROVIDER`
When building bootable images (i.e. where ``hddimg``, ``iso``, or
@@ -2055,9 +2336,14 @@ system and gives an overview of their function and contents.
:term:`EFI_PROVIDER` variable specifies the EFI bootloader to use. The
default is "grub-efi", but "systemd-boot" can be used instead.
- See the :ref:`systemd-boot <ref-classes-systemd-boot>` and
- :ref:`image-live <ref-classes-image-live>` classes for more
- information.
+ See the :ref:`ref-classes-systemd-boot` and :ref:`ref-classes-image-live`
+ classes for more information.
+
+ :term:`EFI_UKI_DIR`
+ The primary place for the UKI image inside the EFI System Partition.
+
+ :term:`EFI_UKI_PATH`
+ The path for the UKI image inside the root filesystem.
:term:`ENABLE_BINARY_LOCALE_GENERATION`
Variable that controls which locales for ``glibc`` are generated
@@ -2065,11 +2351,10 @@ system and gives an overview of their function and contents.
less).
:term:`ERR_REPORT_DIR`
- When used with the :ref:`report-error <ref-classes-report-error>`
- class, specifies the path used for storing the debug files created by
- the :ref:`error reporting
- tool <dev-manual/common-tasks:using the error reporting tool>`, which
- allows you to submit build errors you encounter to a central
+ When used with the :ref:`ref-classes-report-error` class, specifies the
+ path used for storing the debug files created by the :ref:`error reporting
+ tool <dev-manual/error-reporting-tool:using the error reporting tool>`,
+ which allows you to submit build errors you encounter to a central
database. By default, the value of this variable is
``${``\ :term:`LOG_DIR`\ ``}/error-report``.
@@ -2086,6 +2371,68 @@ system and gives an overview of their function and contents.
can control with this variable, see the
":ref:`ref-classes-insane`" section.
+ :term:`ESDK_CLASS_INHERIT_DISABLE`
+ A list of classes to remove from the :term:`INHERIT`
+ value globally within the extensible SDK configuration. The
+ :ref:`populate-sdk-ext <ref-classes-populate-sdk-*>` class sets the
+ default value::
+
+ ESDK_CLASS_INHERIT_DISABLE ?= "buildhistory icecc"
+
+ Some classes are not generally applicable within the extensible SDK
+ context. You can use this variable to disable those classes.
+
+ For additional information on how to customize the extensible SDK's
+ configuration, see the
+ ":ref:`sdk-manual/appendix-customizing:configuring the extensible sdk`"
+ section in the Yocto Project Application Development and the
+ Extensible Software Development Kit (eSDK) manual.
+
+ :term:`ESDK_LOCALCONF_ALLOW`
+ A list of variables allowed through from the OpenEmbedded build
+ system configuration into the extensible SDK configuration. By
+ default, the list of variables is empty and is set in the
+ :ref:`populate-sdk-ext <ref-classes-populate-sdk-*>` class.
+
+ This list overrides the variables specified using the
+ :term:`ESDK_LOCALCONF_REMOVE` variable as well as
+ other variables automatically added due to the "/" character
+ being found at the start of the
+ value, which is usually indicative of being a path and thus might not
+ be valid on the system where the SDK is installed.
+
+ For additional information on how to customize the extensible SDK's
+ configuration, see the
+ ":ref:`sdk-manual/appendix-customizing:configuring the extensible sdk`"
+ section in the Yocto Project Application Development and the
+ Extensible Software Development Kit (eSDK) manual.
+
+ :term:`ESDK_LOCALCONF_REMOVE`
+ A list of variables not allowed through from the OpenEmbedded build
+ system configuration into the extensible SDK configuration. Usually,
+ these are variables that are specific to the machine on which the
+ build system is running and thus would be potentially problematic
+ within the extensible SDK.
+
+ By default, :term:`ESDK_LOCALCONF_REMOVE` is set in the
+ :ref:`populate-sdk-ext <ref-classes-populate-sdk-*>` class and
+ excludes the following variables:
+
+ - :term:`CONF_VERSION`
+ - :term:`BB_NUMBER_THREADS`
+ - :term:`BB_NUMBER_PARSE_THREADS`
+ - :term:`PARALLEL_MAKE`
+ - :term:`PRSERV_HOST`
+ - :term:`SSTATE_MIRRORS` :term:`DL_DIR`
+ - :term:`SSTATE_DIR` :term:`TMPDIR`
+ - :term:`BB_SERVER_TIMEOUT`
+
+ For additional information on how to customize the extensible SDK's
+ configuration, see the
+ ":ref:`sdk-manual/appendix-customizing:configuring the extensible sdk`"
+ section in the Yocto Project Application Development and the
+ Extensible Software Development Kit (eSDK) manual.
+
:term:`EXCLUDE_FROM_SHLIBS`
Triggers the OpenEmbedded build system's shared libraries resolver to
exclude an entire package when scanning for shared libraries.
@@ -2151,39 +2498,52 @@ system and gives an overview of their function and contents.
When kernel tools are available in the tree, they are preferred over
any externally installed tools. Setting the :term:`EXTERNAL_KERNEL_TOOLS`
variable tells the OpenEmbedded build system to prefer the installed
- external tools. See the
- :ref:`kernel-yocto <ref-classes-kernel-yocto>` class in
- ``meta/classes`` to see how the variable is used.
+ external tools. See the :ref:`ref-classes-kernel-yocto` class in
+ ``meta/classes-recipe`` to see how the variable is used.
+
+ :term:`KERNEL_LOCALVERSION`
+ This variable allows to append a string to the version
+ of the kernel image. This corresponds to the ``CONFIG_LOCALVERSION``
+ kernel configuration parameter.
+
+ Using this variable is only useful when you are using a kernel recipe
+ inheriting the :ref:`ref-classes-kernel` class, and which doesn't
+ already set a local version. Therefore, setting this variable has no
+ impact on ``linux-yocto`` kernels.
+
+ :term:`EXTERNAL_TOOLCHAIN`
+ When you intend to use an
+ :ref:`external toolchain <dev-manual/external-toolchain:optionally using an external toolchain>`,
+ this variable allows to specify the directory where this toolchain was
+ installed.
:term:`EXTERNALSRC`
- When inheriting the :ref:`externalsrc <ref-classes-externalsrc>`
+ When inheriting the :ref:`ref-classes-externalsrc`
class, this variable points to the source tree, which is outside of
the OpenEmbedded build system. When set, this variable sets the
:term:`S` variable, which is what the OpenEmbedded build
system uses to locate unpacked recipe source code.
- For more information on ``externalsrc.bbclass``, see the
- ":ref:`ref-classes-externalsrc`" section. You
+ See the ":ref:`ref-classes-externalsrc`" section for details. You
can also find information on how to use this variable in the
- ":ref:`dev-manual/common-tasks:building software from an external source`"
+ ":ref:`dev-manual/building:building software from an external source`"
section in the Yocto Project Development Tasks Manual.
:term:`EXTERNALSRC_BUILD`
- When inheriting the :ref:`externalsrc <ref-classes-externalsrc>`
+ When inheriting the :ref:`ref-classes-externalsrc`
class, this variable points to the directory in which the recipe's
source code is built, which is outside of the OpenEmbedded build
system. When set, this variable sets the :term:`B` variable,
- which is what the OpenEmbedded build system uses to locate the Build
- Directory.
+ which is what the OpenEmbedded build system uses to locate the
+ :term:`Build Directory`.
- For more information on ``externalsrc.bbclass``, see the
- ":ref:`ref-classes-externalsrc`" section. You
+ See the ":ref:`ref-classes-externalsrc`" section for details. You
can also find information on how to use this variable in the
- ":ref:`dev-manual/common-tasks:building software from an external source`"
+ ":ref:`dev-manual/building:building software from an external source`"
section in the Yocto Project Development Tasks Manual.
:term:`EXTRA_AUTORECONF`
- For recipes inheriting the :ref:`autotools <ref-classes-autotools>`
+ For recipes inheriting the :ref:`ref-classes-autotools`
class, you can use :term:`EXTRA_AUTORECONF` to specify extra options to
pass to the ``autoreconf`` command that is executed during the
:ref:`ref-tasks-configure` task.
@@ -2195,9 +2555,8 @@ system and gives an overview of their function and contents.
more than one feature, separate them with a space.
Typically, you configure this variable in your ``local.conf`` file,
- which is found in the :term:`Build Directory`.
- Although you can use this variable from within a recipe, best
- practices dictate that you do not.
+ which is found in the :term:`Build Directory`. Although you can use this
+ variable from within a recipe, best practices dictate that you do not.
.. note::
@@ -2206,31 +2565,31 @@ system and gives an overview of their function and contents.
Here are some examples of features you can add:
- - "dbg-pkgs" - Adds -dbg packages for all installed packages including
+ - "dbg-pkgs" --- adds -dbg packages for all installed packages including
symbol information for debugging and profiling.
- - "debug-tweaks" - Makes an image suitable for debugging. For example, allows root logins without passwords and
+ - "debug-tweaks" --- makes an image suitable for debugging. For example, allows root logins without passwords and
enables post-installation logging. See the 'allow-empty-password' and
'post-install-logging' features in the ":ref:`ref-features-image`"
section for more information.
- - "dev-pkgs" - Adds -dev packages for all installed packages. This is
+ - "dev-pkgs" --- adds -dev packages for all installed packages. This is
useful if you want to develop against the libraries in the image.
- - "read-only-rootfs" - Creates an image whose root filesystem is
+ - "read-only-rootfs" --- creates an image whose root filesystem is
read-only. See the
- ":ref:`dev-manual/common-tasks:creating a read-only root filesystem`"
+ ":ref:`dev-manual/read-only-rootfs:creating a read-only root filesystem`"
section in the Yocto Project Development Tasks Manual for more
information
- - "tools-debug" - Adds debugging tools such as gdb and strace.
- - "tools-sdk" - Adds development tools such as gcc, make,
+ - "tools-debug" --- adds debugging tools such as gdb and strace.
+ - "tools-sdk" --- adds development tools such as gcc, make,
pkgconfig and so forth.
- - "tools-testapps" - Adds useful testing tools
+ - "tools-testapps" --- adds useful testing tools
such as ts_print, aplay, arecord and so forth.
For a complete list of image features that ships with the Yocto
Project, see the ":ref:`ref-features-image`" section.
For an example that shows how to customize your image by using this
- variable, see the ":ref:`dev-manual/common-tasks:customizing images using custom \`\`image_features\`\` and \`\`extra_image_features\`\``"
+ variable, see the ":ref:`dev-manual/customizing-images:customizing images using custom \`\`image_features\`\` and \`\`extra_image_features\`\``"
section in the Yocto Project Development Tasks Manual.
:term:`EXTRA_IMAGECMD`
@@ -2255,19 +2614,9 @@ system and gives an overview of their function and contents.
To add packages to the root filesystem, see the various
:term:`RDEPENDS` and :term:`RRECOMMENDS` variables.
- :term:`EXTRANATIVEPATH`
- A list of subdirectories of
- ``${``\ :term:`STAGING_BINDIR_NATIVE`\ ``}``
- added to the beginning of the environment variable ``PATH``. As an
- example, the following prepends
- "${STAGING_BINDIR_NATIVE}/foo:${STAGING_BINDIR_NATIVE}/bar:" to
- ``PATH``::
-
- EXTRANATIVEPATH = "foo bar"
-
:term:`EXTRA_OECMAKE`
Additional `CMake <https://cmake.org/overview/>`__ options. See the
- :ref:`cmake <ref-classes-cmake>` class for additional information.
+ :ref:`ref-classes-cmake` class for additional information.
:term:`EXTRA_OECONF`
Additional ``configure`` script options. See
@@ -2285,21 +2634,36 @@ system and gives an overview of their function and contents.
:term:`EXTRA_OEMAKE` to pass the required flags.
:term:`EXTRA_OESCONS`
- When inheriting the :ref:`scons <ref-classes-scons>` class, this
+ When inheriting the :ref:`ref-classes-scons` class, this
variable specifies additional configuration options you want to pass
to the ``scons`` command line.
+ :term:`EXTRA_OEMESON`
+ Additional `Meson <https://mesonbuild.com/>`__ options. See the
+ :ref:`ref-classes-meson` class for additional information.
+
+ In addition to standard Meson options, such options correspond to
+ `Meson build options <https://mesonbuild.com/Build-options.html>`__
+ defined in the ``meson_options.txt`` file in the sources to build.
+ Here is an example::
+
+ EXTRA_OEMESON = "-Dpython=disabled -Dvalgrind=disabled"
+
+ Note that any custom value for the Meson ``--buildtype`` option
+ should be set through the :term:`MESON_BUILDTYPE` variable.
+
:term:`EXTRA_USERS_PARAMS`
- When inheriting the :ref:`extrausers <ref-classes-extrausers>`
+ When inheriting the :ref:`ref-classes-extrausers`
class, this variable provides image level user and group operations.
This is a more global method of providing user and group
configuration as compared to using the
- :ref:`useradd <ref-classes-useradd>` class, which ties user and
+ :ref:`ref-classes-useradd` class, which ties user and
group configurations to a specific recipe.
The set list of commands you can configure using the
- :term:`EXTRA_USERS_PARAMS` is shown in the :ref:`extrausers <ref-classes-extrausers>` class. These
- commands map to the normal Unix commands of the same names::
+ :term:`EXTRA_USERS_PARAMS` is shown in the
+ :ref:`ref-classes-extrausers` class. These commands map to the normal
+ Unix commands of the same names::
# EXTRA_USERS_PARAMS = "\
# useradd -p '' tester; \
@@ -2310,6 +2674,37 @@ system and gives an overview of their function and contents.
# usermod -s /bin/sh tester; \
# "
+ Hardcoded passwords are supported via the ``-p`` parameters for
+ ``useradd`` or ``usermod``, but only hashed.
+
+ Here is an example that adds two users named "tester-jim" and "tester-sue" and assigns
+ passwords. First on host, create the (escaped) password hash::
+
+ printf "%q" $(mkpasswd -m sha256crypt tester01)
+
+ The resulting hash is set to a variable and used in ``useradd`` command parameters::
+
+ inherit extrausers
+ PASSWD = "\$X\$ABC123\$A-Long-Hash"
+ EXTRA_USERS_PARAMS = "\
+ useradd -p '${PASSWD}' tester-jim; \
+ useradd -p '${PASSWD}' tester-sue; \
+ "
+
+ Finally, here is an example that sets the root password::
+
+ inherit extrausers
+ EXTRA_USERS_PARAMS = "\
+ usermod -p '${PASSWD}' root; \
+ "
+
+ .. note::
+
+ From a security perspective, hardcoding a default password is not
+ generally a good idea or even legal in some jurisdictions. It is
+ recommended that you do not do this if you are building a production
+ image.
+
Additionally there is a special ``passwd-expire`` command that will
cause the password for a user to be expired and thus force changing it
on first login, for example::
@@ -2321,6 +2716,34 @@ system and gives an overview of their function and contents.
At present, ``passwd-expire`` may only work for remote logins when
using OpenSSH and not dropbear as an SSH server.
+ :term:`EXTRANATIVEPATH`
+ A list of subdirectories of
+ ``${``\ :term:`STAGING_BINDIR_NATIVE`\ ``}``
+ added to the beginning of the environment variable ``PATH``. As an
+ example, the following prepends
+ "${STAGING_BINDIR_NATIVE}/foo:${STAGING_BINDIR_NATIVE}/bar:" to
+ ``PATH``::
+
+ EXTRANATIVEPATH = "foo bar"
+
+ :term:`FAKEROOT`
+ See :term:`bitbake:FAKEROOT` in the BitBake manual.
+
+ :term:`FAKEROOTBASEENV`
+ See :term:`bitbake:FAKEROOTBASEENV` in the BitBake manual.
+
+ :term:`FAKEROOTCMD`
+ See :term:`bitbake:FAKEROOTCMD` in the BitBake manual.
+
+ :term:`FAKEROOTDIRS`
+ See :term:`bitbake:FAKEROOTDIRS` in the BitBake manual.
+
+ :term:`FAKEROOTENV`
+ See :term:`bitbake:FAKEROOTENV` in the BitBake manual.
+
+ :term:`FAKEROOTNOENV`
+ See :term:`bitbake:FAKEROOTNOENV` in the BitBake manual.
+
:term:`FEATURE_PACKAGES`
Defines one or more packages to include in an image when a specific
item is included in :term:`IMAGE_FEATURES`.
@@ -2356,6 +2779,12 @@ system and gives an overview of their function and contents.
a set of configuration files for you in your target that work with
the feed.
+ :term:`FETCHCMD`
+ See :term:`bitbake:FETCHCMD` in the BitBake manual.
+
+ :term:`FILE`
+ See :term:`bitbake:FILE` in the BitBake manual.
+
:term:`FILES`
The list of files and directories that are placed in a package. The
:term:`PACKAGES` variable lists the packages
@@ -2372,7 +2801,7 @@ system and gives an overview of their function and contents.
- When specifying files or paths, you can pattern match using
Python's
- `glob <https://docs.python.org/3/library/glob.html>`_
+ `glob <https://docs.python.org/3/library/glob.html>`__
syntax. For details on the syntax, see the documentation by
following the previous link.
@@ -2404,12 +2833,11 @@ system and gives an overview of their function and contents.
FILES_SOLIBSDEV ?= "${base_libdir}/lib*${SOLIBSDEV} ${libdir}/lib*${SOLIBSDEV}"
:term:`FILESEXTRAPATHS`
- Extends the search path the OpenEmbedded build system uses when
- looking for files and patches as it processes recipes and append
- files. The default directories BitBake uses when it processes recipes
- are initially defined by the :term:`FILESPATH`
- variable. You can extend :term:`FILESPATH` variable by using
- :term:`FILESEXTRAPATHS`.
+ A colon-separated list to extend the search path the OpenEmbedded build
+ system uses when looking for files and patches as it processes recipes
+ and append files. The default directories BitBake uses when it processes
+ recipes are initially defined by the :term:`FILESPATH` variable. You can
+ extend :term:`FILESPATH` variable by using :term:`FILESEXTRAPATHS`.
Best practices dictate that you accomplish this by using
:term:`FILESEXTRAPATHS` from within a ``.bbappend`` file and that you
@@ -2470,15 +2898,13 @@ system and gives an overview of their function and contents.
recipe to correctly extend the path.
:term:`FILESOVERRIDES`
- A subset of :term:`OVERRIDES` used by the
- OpenEmbedded build system for creating
- :term:`FILESPATH`. The :term:`FILESOVERRIDES` variable
- uses overrides to automatically extend the
- :term:`FILESPATH` variable. For an example of how
- that works, see the :term:`FILESPATH` variable
- description. Additionally, you find more information on how overrides
- are handled in the
- ":ref:`bitbake:bitbake-user-manual/bitbake-user-manual-metadata:conditional syntax (overrides)`"
+ A colon-separated list to specify a subset of :term:`OVERRIDES` used by
+ the OpenEmbedded build system for creating :term:`FILESPATH`. The
+ :term:`FILESOVERRIDES` variable uses overrides to automatically extend
+ the :term:`FILESPATH` variable. For an example of how that works, see the
+ :term:`FILESPATH` variable description. Additionally, you find more
+ information on how overrides are handled in the
+ ":ref:`bitbake-user-manual/bitbake-user-manual-metadata:conditional syntax (overrides)`"
section of the BitBake User Manual.
By default, the :term:`FILESOVERRIDES` variable is defined as::
@@ -2492,8 +2918,8 @@ system and gives an overview of their function and contents.
build system.
:term:`FILESPATH`
- The default set of directories the OpenEmbedded build system uses
- when searching for patches and files.
+ A colon-separated list specifying the default set of directories the
+ OpenEmbedded build system uses when searching for patches and files.
During the build process, BitBake searches each directory in
:term:`FILESPATH` in the specified order when looking for files and
@@ -2501,7 +2927,7 @@ system and gives an overview of their function and contents.
:term:`SRC_URI` statements.
The default value for the :term:`FILESPATH` variable is defined in the
- ``base.bbclass`` class found in ``meta/classes`` in the
+ :ref:`ref-classes-base` class found in ``meta/classes-global`` in the
:term:`Source Directory`::
FILESPATH = "${@base_set_filespath(["${FILE_DIRNAME}/${BP}", \
@@ -2544,7 +2970,7 @@ system and gives an overview of their function and contents.
You can find out more about the patching process in the
":ref:`overview-manual/concepts:patching`" section
in the Yocto Project Overview and Concepts Manual and the
- ":ref:`dev-manual/common-tasks:patching code`" section in
+ ":ref:`dev-manual/new-recipe:patching code`" section in
the Yocto Project Development Tasks Manual. See the
:ref:`ref-tasks-patch` task as well.
@@ -2563,77 +2989,119 @@ system and gives an overview of their function and contents.
You define the :term:`FILESYSTEM_PERMS_TABLES` variable in the
``conf/local.conf`` file, which is found in the :term:`Build Directory`,
- to point to your custom
- ``fs-perms.txt``. You can specify more than a single file permissions
- setting table. The paths you specify to these files must be defined
- within the :term:`BBPATH` variable.
+ to point to your custom ``fs-perms.txt``. You can specify more than a
+ single file permissions setting table. The paths you specify to these
+ files must be defined within the :term:`BBPATH` variable.
For guidance on how to create your own file permissions settings
table file, examine the existing ``fs-perms.txt``.
+ :term:`FIT_ADDRESS_CELLS`
+ Specifies the value of the ``#address-cells`` value for the
+ description of the FIT image.
+
+ The default value is set to "1" by the :ref:`ref-classes-kernel-fitimage`
+ class, which corresponds to 32 bit addresses.
+
+ For platforms that need to set 64 bit addresses, for example in
+ :term:`UBOOT_LOADADDRESS` and :term:`UBOOT_ENTRYPOINT`, you need to
+ set this value to "2", as two 32 bit values (cells) will be needed
+ to represent such addresses.
+
+ Here is an example setting "0x400000000" as a load address::
+
+ FIT_ADDRESS_CELLS = "2"
+ UBOOT_LOADADDRESS= "0x04 0x00000000"
+
+ See `more details about #address-cells <https://elinux.org/Device_Tree_Usage#How_Addressing_Works>`__.
+
+ :term:`FIT_CONF_DEFAULT_DTB`
+ Specifies the default device tree binary (dtb) file for a FIT image
+ when multiple ones are provided.
+
+ This variable is used in the :ref:`ref-classes-kernel-fitimage` class.
+
:term:`FIT_DESC`
- Specifies the description string encoded into a fitImage. The default
- value is set by the :ref:`kernel-fitimage <ref-classes-kernel-fitimage>`
- class as follows::
+ Specifies the description string encoded into a FIT image. The
+ default value is set by the :ref:`ref-classes-kernel-fitimage` class as
+ follows::
FIT_DESC ?= "U-Boot fitImage for ${DISTRO_NAME}/${PV}/${MACHINE}"
:term:`FIT_GENERATE_KEYS`
- Decides whether to generate the keys for signing fitImage if they
- don't already exist. The keys are created in :term:`UBOOT_SIGN_KEYDIR`.
- The default value is 0.
+ Decides whether to generate the keys for signing the FIT image if
+ they don't already exist. The keys are created in
+ :term:`UBOOT_SIGN_KEYDIR`. The default value is set to "0"
+ by the :ref:`ref-classes-kernel-fitimage` class.
:term:`FIT_HASH_ALG`
- Specifies the hash algorithm used in creating the FIT Image. For e.g. sha256.
+ Specifies the hash algorithm used in creating the FIT Image.
+ This variable is set by default to "sha256" by the
+ :ref:`ref-classes-kernel-fitimage` class.
:term:`FIT_KERNEL_COMP_ALG`
- Compression algorithm to use for the kernel image inside the FIT Image.
- At present, the only supported values are "gzip" (default) or "none"
+ The compression algorithm to use for the kernel image inside the FIT Image.
+ At present, the only supported values are "gzip" (default), "lzo" or "none".
If you set this variable to anything other than "none" you may also need
to set :term:`FIT_KERNEL_COMP_ALG_EXTENSION`.
+ This variable is used in the :ref:`ref-classes-kernel-uboot` class.
+
:term:`FIT_KERNEL_COMP_ALG_EXTENSION`
File extension corresponding to :term:`FIT_KERNEL_COMP_ALG`. The default
- value is ".gz".
+ value is set ".gz" by the :ref:`ref-classes-kernel-uboot` class. If you
+ set :term:`FIT_KERNEL_COMP_ALG` to "lzo", you may want to set this
+ variable to ".lzo".
:term:`FIT_KEY_GENRSA_ARGS`
- Arguments to openssl genrsa for generating RSA private key for signing
- fitImage. The default value is "-F4". i.e. the public exponent 65537 to
- use.
+ Arguments to ``openssl genrsa`` for generating a RSA private key for
+ signing the FIT image. The default value is set to "-F4" by the
+ :ref:`ref-classes-kernel-fitimage` class.
:term:`FIT_KEY_REQ_ARGS`
- Arguments to openssl req for generating certificate for signing fitImage.
- The default value is "-batch -new". batch for non interactive mode
- and new for generating new keys.
+ Arguments to ``openssl req`` for generating a certificate for signing
+ the FIT image. The default value is "-batch -new" by the
+ :ref:`ref-classes-kernel-fitimage` class, "batch" for
+ non interactive mode and "new" for generating new keys.
:term:`FIT_KEY_SIGN_PKCS`
- Format for public key certificate used in signing fitImage.
- The default value is "x509".
+ Format for the public key certificate used for signing the FIT image.
+ The default value is set to "x509" by the
+ :ref:`ref-classes-kernel-fitimage` class.
:term:`FIT_SIGN_ALG`
Specifies the signature algorithm used in creating the FIT Image.
- For e.g. rsa2048.
+ This variable is set by default to "rsa2048" by the
+ :ref:`ref-classes-kernel-fitimage` class.
- :term:`FIT_SIGN_NUMBITS`
- Size of private key in number of bits used in fitImage. The default
- value is "2048".
+ :term:`FIT_PAD_ALG`
+ Specifies the padding algorithm used in creating the FIT Image.
+ The default value is set to "pkcs-1.5" by the
+ :ref:`ref-classes-kernel-fitimage` class.
:term:`FIT_SIGN_INDIVIDUAL`
- If set to "1", then the :ref:`kernel-fitimage <ref-classes-kernel-fitimage>`
+ If set to "1", then the :ref:`ref-classes-kernel-fitimage`
class will sign the kernel, dtb and ramdisk images individually in addition
- to signing the fitImage itself. This could be useful if you are
+ to signing the FIT image itself. This could be useful if you are
intending to verify signatures in another context than booting via
U-Boot.
+ This variable is set to "0" by default.
+
+ :term:`FIT_SIGN_NUMBITS`
+ Size of the private key used in the FIT image, in number of bits.
+ The default value for this variable is set to "2048"
+ by the :ref:`ref-classes-kernel-fitimage` class.
+
:term:`FONT_EXTRA_RDEPENDS`
- When inheriting the :ref:`fontcache <ref-classes-fontcache>` class,
+ When inheriting the :ref:`ref-classes-fontcache` class,
this variable specifies the runtime dependencies for font packages.
By default, the :term:`FONT_EXTRA_RDEPENDS` is set to "fontconfig-utils".
:term:`FONT_PACKAGES`
- When inheriting the :ref:`fontcache <ref-classes-fontcache>` class,
- this variable identifies packages containing font files that need to
- be cached by Fontconfig. By default, the :ref:`fontcache <ref-classes-fontcache>` class assumes
+ When inheriting the :ref:`ref-classes-fontcache` class, this variable
+ identifies packages containing font files that need to be cached by
+ Fontconfig. By default, the :ref:`ref-classes-fontcache` class assumes
that fonts are in the recipe's main package (i.e.
``${``\ :term:`PN`\ ``}``). Use this variable if fonts you
need are in a package other than that main package.
@@ -2676,13 +3144,20 @@ system and gives an overview of their function and contents.
Allows to specify an extra search path for ``.so`` files
in GLib related recipes using GObject introspection,
and which do not compile without this setting.
- See the ":ref:`dev-manual/common-tasks:enabling gobject introspection support`"
+ See the ":ref:`dev-manual/gobject-introspection:enabling gobject introspection support`"
section for details.
:term:`GITDIR`
The directory in which a local copy of a Git repository is stored
when it is cloned.
+ :term:`GITHUB_BASE_URI`
+ When inheriting the :ref:`ref-classes-github-releases`
+ class, specifies the base URL for fetching releases for the github
+ project you wish to fetch sources from. The default value is as follows::
+
+ GITHUB_BASE_URI ?= "https://github.com/${BPN}/${BPN}/releases/"
+
:term:`GLIBC_GENERATE_LOCALES`
Specifies the list of GLIBC locales to generate should you not wish
to generate all LIBC locals, which can be time consuming.
@@ -2693,13 +3168,79 @@ system and gives an overview of their function and contents.
:term:`IMAGE_LINGUAS` appropriately.
You can set :term:`GLIBC_GENERATE_LOCALES` in your ``local.conf`` file.
- By default, all locales are generated.
- ::
+ By default, all locales are generated::
GLIBC_GENERATE_LOCALES = "en_GB.UTF-8 en_US.UTF-8"
+ :term:`GO_IMPORT`
+ When inheriting the :ref:`ref-classes-go` class, this mandatory variable
+ sets the import path for the Go package that will be created for the code
+ to build. If you have a ``go.mod`` file in the source directory, this
+ typically matches the path in the ``module`` line in this file.
+
+ Other Go programs importing this package will use this path.
+
+ Here is an example setting from the
+ :yocto_git:`go-helloworld_0.1.bb </poky/tree/meta/recipes-extended/go-examples/go-helloworld_0.1.bb>`
+ recipe::
+
+ GO_IMPORT = "golang.org/x/example"
+
+ :term:`GO_INSTALL`
+ When inheriting the :ref:`ref-classes-go` class, this optional variable
+ specifies which packages in the sources should be compiled and
+ installed in the Go build space by the
+ `go install <https://go.dev/ref/mod#go-install>`__ command.
+
+ Here is an example setting from the
+ :oe_git:`crucible </meta-openembedded/tree/meta-oe/recipes-support/crucible/>`
+ recipe::
+
+ GO_INSTALL = "\
+ ${GO_IMPORT}/cmd/crucible \
+ ${GO_IMPORT}/cmd/habtool \
+ "
+
+ By default, :term:`GO_INSTALL` is defined as::
+
+ GO_INSTALL ?= "${GO_IMPORT}/..."
+
+ The ``...`` wildcard means that it will catch all
+ packages found in the sources.
+
+ See the :term:`GO_INSTALL_FILTEROUT` variable for
+ filtering out unwanted packages from the ones
+ found from the :term:`GO_INSTALL` value.
+
+ :term:`GO_INSTALL_FILTEROUT`
+ When using the Go "vendor" mechanism to bring in dependencies for a Go
+ package, the default :term:`GO_INSTALL` setting, which uses the ``...``
+ wildcard, will include the vendored packages in the build, which produces
+ incorrect results.
+
+ There are also some Go packages that are structured poorly, so that the
+ ``...`` wildcard results in building example or test code that should not
+ be included in the build, or could fail to build.
+
+ This optional variable allows for filtering out a subset of the sources.
+ It defaults to excluding everything under the ``vendor`` subdirectory
+ under package's main directory. This is the normal location for vendored
+ packages, but it can be overridden by a recipe to filter out other
+ subdirectories if needed.
+
+ :term:`GO_WORKDIR`
+ When using Go Modules, the current working directory must be the directory
+ containing the ``go.mod`` file, or one of its subdirectories. When the
+ ``go`` tool is used, it will automatically look for the ``go.mod`` file
+ in the Go working directory or in any parent directory, but not in
+ subdirectories.
+
+ When using the :ref:`ref-classes-go-mod` class to use Go modules,
+ the optional :term:`GO_WORKDIR` variable, defaulting to the value
+ of :term:`GO_IMPORT`, allows to specify a different Go working directory.
+
:term:`GROUPADD_PARAM`
- When inheriting the :ref:`useradd <ref-classes-useradd>` class,
+ When inheriting the :ref:`ref-classes-useradd` class,
this variable specifies for a package what parameters should be
passed to the ``groupadd`` command if you wish to add a group to the
system when the package is installed.
@@ -2708,11 +3249,19 @@ system and gives an overview of their function and contents.
GROUPADD_PARAM:${PN} = "-r netdev"
+ More than one group can be added by separating each set of different
+ groups' parameters with a semicolon.
+
+ Here is an example adding multiple groups from the ``useradd-example.bb``
+ file in the ``meta-skeleton`` layer::
+
+ GROUPADD_PARAM:${PN} = "-g 880 group1; -g 890 group2"
+
For information on the standard Linux shell command
``groupadd``, see https://linux.die.net/man/8/groupadd.
:term:`GROUPMEMS_PARAM`
- When inheriting the :ref:`useradd <ref-classes-useradd>` class,
+ When inheriting the :ref:`ref-classes-useradd` class,
this variable specifies for a package what parameters should be
passed to the ``groupmems`` command if you wish to modify the members
of a group when the package is installed.
@@ -2726,7 +3275,7 @@ system and gives an overview of their function and contents.
``local.conf`` or distribution configuration file to enable graphics
and serial in the menu.
- See the :ref:`grub-efi <ref-classes-grub-efi>` class for more
+ See the :ref:`ref-classes-grub-efi` class for more
information on how this variable is used.
:term:`GRUB_OPTS`
@@ -2735,7 +3284,7 @@ system and gives an overview of their function and contents.
multiple options.
The :term:`GRUB_OPTS` variable is optional. See the
- :ref:`grub-efi <ref-classes-grub-efi>` class for more information
+ :ref:`ref-classes-grub-efi` class for more information
on how this variable is used.
:term:`GRUB_TIMEOUT`
@@ -2743,16 +3292,18 @@ system and gives an overview of their function and contents.
GNU GRand Unified Bootloader (GRUB).
The :term:`GRUB_TIMEOUT` variable is optional. See the
- :ref:`grub-efi <ref-classes-grub-efi>` class for more information
+ :ref:`ref-classes-grub-efi` class for more information
on how this variable is used.
:term:`GTKIMMODULES_PACKAGES`
- When inheriting the
- :ref:`gtk-immodules-cache <ref-classes-gtk-immodules-cache>` class,
+ When inheriting the :ref:`ref-classes-gtk-immodules-cache` class,
this variable specifies the packages that contain the GTK+ input
method modules being installed when the modules are in packages other
than the main package.
+ :term:`HGDIR`
+ See :term:`bitbake:HGDIR` in the BitBake manual.
+
:term:`HOMEPAGE`
Website where more information about the software the recipe is
building can be found.
@@ -2821,6 +3372,10 @@ system and gives an overview of their function and contents.
- Given a recipe being built for a little-endian MIPS target running
Linux, the value might be "mipsel-linux".
+ :term:`HOST_VENDOR`
+ Specifies the name of the vendor. :term:`HOST_VENDOR` is normally the
+ same as :term:`TARGET_VENDOR`.
+
:term:`HOSTTOOLS`
A space-separated list (filter) of tools on the build host that
should be allowed to be called from within build tasks. Using this
@@ -2841,9 +3396,15 @@ system and gives an overview of their function and contents.
:term:`HOSTTOOLS_NONFATAL` is not found on the build host. Thus, you can
use :term:`HOSTTOOLS_NONFATAL` to filter optional host tools.
- :term:`HOST_VENDOR`
- Specifies the name of the vendor. :term:`HOST_VENDOR` is normally the
- same as :term:`TARGET_VENDOR`.
+ :term:`ICECC_CLASS_DISABLE`
+ Identifies user classes that you do not want the Icecream distributed
+ compile support to consider. This variable is used by the
+ :ref:`ref-classes-icecc` class. You set this variable in
+ your ``local.conf`` file.
+
+ When you list classes using this variable, the recipes inheriting
+ those classes will not benefit from distributed compilation across
+ remote hosts. Instead they will be built locally.
:term:`ICECC_DISABLED`
Disables or enables the ``icecc`` (Icecream) function. For more
@@ -2862,13 +3423,15 @@ system and gives an overview of their function and contents.
:term:`ICECC_ENV_EXEC`
Points to the ``icecc-create-env`` script that you provide. This
- variable is used by the :ref:`icecc <ref-classes-icecc>` class. You
+ variable is used by the :ref:`ref-classes-icecc` class. You
set this variable in your ``local.conf`` file.
If you do not point to a script that you provide, the OpenEmbedded
build system uses the default script provided by the
- ``icecc-create-env.bb`` recipe, which is a modified version and not
- the one that comes with ``icecc``.
+ :oe_git:`icecc-create-env_0.1.bb
+ </openembedded-core/tree/meta/recipes-devtools/icecc-create-env/icecc-create-env_0.1.bb>`
+ recipe, which is a modified version and not the one that comes with
+ ``icecream``.
:term:`ICECC_PARALLEL_MAKE`
Extra options passed to the ``make`` command during the
@@ -2897,75 +3460,31 @@ system and gives an overview of their function and contents.
:term:`ICECC_PATH`
The location of the ``icecc`` binary. You can set this variable in
your ``local.conf`` file. If your ``local.conf`` file does not define
- this variable, the :ref:`icecc <ref-classes-icecc>` class attempts
+ this variable, the :ref:`ref-classes-icecc` class attempts
to define it by locating ``icecc`` using ``which``.
- :term:`ICECC_USER_CLASS_BL`
- Identifies user classes that you do not want the Icecream distributed
- compile support to consider. This variable is used by the
- :ref:`icecc <ref-classes-icecc>` class. You set this variable in
- your ``local.conf`` file.
-
- When you list classes using this variable, the recipes inheriting
- those classes will not benefit from distributed compilation across
- remote hosts. Instead they will be built locally.
-
- :term:`ICECC_USER_PACKAGE_BL`
+ :term:`ICECC_RECIPE_DISABLE`
Identifies user recipes that you do not want the Icecream distributed
compile support to consider. This variable is used by the
- :ref:`icecc <ref-classes-icecc>` class. You set this variable in
+ :ref:`ref-classes-icecc` class. You set this variable in
your ``local.conf`` file.
When you list recipes using this variable, you are excluding them
from distributed compilation across remote hosts. Instead they will
be built locally.
- :term:`ICECC_USER_PACKAGE_WL`
+ :term:`ICECC_RECIPE_ENABLE`
Identifies user recipes that use an empty
:term:`PARALLEL_MAKE` variable that you want to
force remote distributed compilation on using the Icecream
distributed compile support. This variable is used by the
- :ref:`icecc <ref-classes-icecc>` class. You set this variable in
+ :ref:`ref-classes-icecc` class. You set this variable in
your ``local.conf`` file.
:term:`IMAGE_BASENAME`
The base name of image output files. This variable defaults to the
recipe name (``${``\ :term:`PN`\ ``}``).
- :term:`IMAGE_EFI_BOOT_FILES`
- A space-separated list of files installed into the boot partition
- when preparing an image using the Wic tool with the
- ``bootimg-efi`` source plugin. By default,
- the files are
- installed under the same name as the source files. To change the
- installed name, separate it from the original name with a semi-colon
- (;). Source files need to be located in
- :term:`DEPLOY_DIR_IMAGE`. Here are two
- examples::
-
- IMAGE_EFI_BOOT_FILES = "${KERNEL_IMAGETYPE};bz2"
- IMAGE_EFI_BOOT_FILES = "${KERNEL_IMAGETYPE} microcode.cpio"
-
- Alternatively, source files can be picked up using a glob pattern. In
- this case, the destination file must have the same name as the base
- name of the source file path. To install files into a directory
- within the target location, pass its name after a semi-colon (;).
- Here are two examples::
-
- IMAGE_EFI_BOOT_FILES = "boot/loader/*"
- IMAGE_EFI_BOOT_FILES = "boot/loader/*;boot/"
-
- The first example
- installs all files from ``${DEPLOY_DIR_IMAGE}/boot/loader/``
- into the root of the target partition. The second example installs
- the same files into a ``boot`` directory within the target partition.
-
- You can find information on how to use the Wic tool in the
- ":ref:`dev-manual/common-tasks:creating partitioned images using wic`"
- section of the Yocto Project Development Tasks Manual. Reference
- material for Wic is located in the
- ":doc:`/ref-manual/kickstart`" chapter.
-
:term:`IMAGE_BOOT_FILES`
A space-separated list of files installed into the boot partition
when preparing an image using the Wic tool with the
@@ -2995,22 +3514,28 @@ system and gives an overview of their function and contents.
the same files into a ``boot`` directory within the target partition.
You can find information on how to use the Wic tool in the
- ":ref:`dev-manual/common-tasks:creating partitioned images using wic`"
+ ":ref:`dev-manual/wic:creating partitioned images using wic`"
section of the Yocto Project Development Tasks Manual. Reference
material for Wic is located in the
":doc:`/ref-manual/kickstart`" chapter.
- :term:`IMAGE_CLASSES`
- A list of classes that all images should inherit. You typically use
- this variable to specify the list of classes that register the
- different types of images the OpenEmbedded build system creates.
+ :term:`IMAGE_BUILDINFO_FILE`
+ When using the :ref:`ref-classes-image-buildinfo` class,
+ specifies the file in the image to write the build information into. The
+ default value is "``${sysconfdir}/buildinfo``".
- The default value for :term:`IMAGE_CLASSES` is ``image_types``. You can
- set this variable in your ``local.conf`` or in a distribution
- configuration file.
+ :term:`IMAGE_BUILDINFO_VARS`
+ When using the :ref:`ref-classes-image-buildinfo` class,
+ specifies the list of variables to include in the `Build Configuration`
+ section of the output file (as a space-separated list). Defaults to
+ ":term:`DISTRO` :term:`DISTRO_VERSION`".
- For more information, see ``meta/classes/image_types.bbclass`` in the
- :term:`Source Directory`.
+ :term:`IMAGE_CLASSES`
+ A list of classes that all images should inherit. This is typically used
+ to enable functionality across all image recipes.
+
+ Classes specified in :term:`IMAGE_CLASSES` must be located in the
+ ``classes-recipe/`` or ``classes/`` subdirectories.
:term:`IMAGE_CMD`
Specifies the command to create the image file for a specific image
@@ -3025,8 +3550,8 @@ system and gives an overview of their function and contents.
You typically do not need to set this variable unless you are adding
support for a new image type. For more examples on how to set this
- variable, see the :ref:`image_types <ref-classes-image_types>`
- class file, which is ``meta/classes/image_types.bbclass``.
+ variable, see the :ref:`ref-classes-image_types`
+ class file, which is ``meta/classes-recipe/image_types.bbclass``.
:term:`IMAGE_DEVICE_TABLES`
Specifies one or more files that contain custom device tables that
@@ -3038,6 +3563,40 @@ system and gives an overview of their function and contents.
device table files, see ``meta/files/device_table-minimal.txt`` as an
example.
+ :term:`IMAGE_EFI_BOOT_FILES`
+ A space-separated list of files installed into the boot partition
+ when preparing an image using the Wic tool with the
+ ``bootimg-efi`` source plugin. By default,
+ the files are
+ installed under the same name as the source files. To change the
+ installed name, separate it from the original name with a semi-colon
+ (;). Source files need to be located in
+ :term:`DEPLOY_DIR_IMAGE`. Here are two
+ examples::
+
+ IMAGE_EFI_BOOT_FILES = "${KERNEL_IMAGETYPE};bz2"
+ IMAGE_EFI_BOOT_FILES = "${KERNEL_IMAGETYPE} microcode.cpio"
+
+ Alternatively, source files can be picked up using a glob pattern. In
+ this case, the destination file must have the same name as the base
+ name of the source file path. To install files into a directory
+ within the target location, pass its name after a semi-colon (;).
+ Here are two examples::
+
+ IMAGE_EFI_BOOT_FILES = "boot/loader/*"
+ IMAGE_EFI_BOOT_FILES = "boot/loader/*;boot/"
+
+ The first example
+ installs all files from ``${DEPLOY_DIR_IMAGE}/boot/loader/``
+ into the root of the target partition. The second example installs
+ the same files into a ``boot`` directory within the target partition.
+
+ You can find information on how to use the Wic tool in the
+ ":ref:`dev-manual/wic:creating partitioned images using wic`"
+ section of the Yocto Project Development Tasks Manual. Reference
+ material for Wic is located in the
+ ":doc:`/ref-manual/kickstart`" chapter.
+
:term:`IMAGE_FEATURES`
The primary list of features to include in an image. Typically, you
configure this variable in an image recipe. Although you can use this
@@ -3054,7 +3613,7 @@ system and gives an overview of their function and contents.
the ":ref:`ref-features-image`" section.
For an example that shows how to customize your image by using this
- variable, see the ":ref:`dev-manual/common-tasks:customizing images using custom \`\`image_features\`\` and \`\`extra_image_features\`\``"
+ variable, see the ":ref:`dev-manual/customizing-images:customizing images using custom \`\`image_features\`\` and \`\`extra_image_features\`\``"
section in the Yocto Project Development Tasks Manual.
:term:`IMAGE_FSTYPES`
@@ -3081,16 +3640,15 @@ system and gives an overview of their function and contents.
:term:`IMAGE_INSTALL`
Used by recipes to specify the packages to install into an image
- through the :ref:`image <ref-classes-image>` class. Use the
+ through the :ref:`ref-classes-image` class. Use the
:term:`IMAGE_INSTALL` variable with care to avoid ordering issues.
Image recipes set :term:`IMAGE_INSTALL` to specify the packages to
- install into an image through ``image.bbclass``. Additionally,
- there are "helper" classes such as the
- :ref:`core-image <ref-classes-core-image>` class which can
- take lists used with :term:`IMAGE_FEATURES` and turn them into
- auto-generated entries in :term:`IMAGE_INSTALL` in addition to its
- default contents.
+ install into an image through :ref:`ref-classes-image`. Additionally,
+ there are "helper" classes such as the :ref:`ref-classes-core-image`
+ class which can take lists used with :term:`IMAGE_FEATURES` and turn
+ them into auto-generated entries in :term:`IMAGE_INSTALL` in addition
+ to its default contents.
When you use this variable, it is best to use it as follows::
@@ -3107,26 +3665,26 @@ system and gives an overview of their function and contents.
image, do not use the :term:`IMAGE_INSTALL` variable to specify
packages for installation. Instead, use the
:term:`PACKAGE_INSTALL` variable, which
- allows the initial RAM filesystem (initramfs) recipe to use a
+ allows the initial RAM filesystem (:term:`Initramfs`) recipe to use a
fixed set of packages and not be affected by :term:`IMAGE_INSTALL`.
- For information on creating an initramfs, see the
- ":ref:`dev-manual/common-tasks:building an initial ram filesystem (initramfs) image`"
+ For information on creating an :term:`Initramfs`, see the
+ ":ref:`dev-manual/building:building an initial ram filesystem (Initramfs) image`"
section in the Yocto Project Development Tasks Manual.
- Using :term:`IMAGE_INSTALL` with the
- :ref:`+= <bitbake:bitbake-user-manual/bitbake-user-manual-metadata:appending (+=) and prepending (=+) with spaces>`
+ :ref:`+= <bitbake-user-manual/bitbake-user-manual-metadata:appending (+=) and prepending (=+) with spaces>`
BitBake operator within the ``/conf/local.conf`` file or from
- within an image recipe is not recommended. Use of this operator
- in these ways can cause ordering issues. Since
- ``core-image.bbclass`` sets :term:`IMAGE_INSTALL` to a default
- value using the
- :ref:`?= <bitbake:bitbake-user-manual/bitbake-user-manual-metadata:setting a default value (?=)>`
+ within an image recipe is not recommended. Use of this operator in
+ these ways can cause ordering issues. Since
+ :ref:`ref-classes-core-image` sets :term:`IMAGE_INSTALL` to a
+ default value using the
+ :ref:`?= <bitbake-user-manual/bitbake-user-manual-metadata:setting a default value (?=)>`
operator, using a ``+=`` operation against :term:`IMAGE_INSTALL`
results in unexpected behavior when used within
- ``conf/local.conf``. Furthermore, the same operation from
- within an image recipe may or may not succeed depending on the
- specific situation. In both these cases, the behavior is
- contrary to how most users expect the ``+=`` operator to work.
+ ``conf/local.conf``. Furthermore, the same operation from within an
+ image recipe may or may not succeed depending on the specific
+ situation. In both these cases, the behavior is contrary to how
+ most users expect the ``+=`` operator to work.
:term:`IMAGE_LINGUAS`
Specifies the list of locales to install into the image during the
@@ -3153,11 +3711,34 @@ system and gives an overview of their function and contents.
:term:`IMAGE_LINK_NAME`
The name of the output image symlink (which does not include
the version part as :term:`IMAGE_NAME` does). The default value
- is derived using the :term:`IMAGE_BASENAME` and :term:`MACHINE`
- variables::
+ is derived using the :term:`IMAGE_BASENAME` and
+ :term:`IMAGE_MACHINE_SUFFIX` variables::
+
+ IMAGE_LINK_NAME ?= "${IMAGE_BASENAME}${IMAGE_MACHINE_SUFFIX}"
+
+ .. note::
+
+ It is possible to set this to "" to disable symlink creation,
+ however, you also need to set :term:`IMAGE_NAME` to still have
+ a reasonable value e.g.::
+
+ IMAGE_LINK_NAME = ""
+ IMAGE_NAME = "${IMAGE_BASENAME}${IMAGE_MACHINE_SUFFIX}${IMAGE_VERSION_SUFFIX}"
- IMAGE_LINK_NAME ?= "${IMAGE_BASENAME}-${MACHINE}"
+ :term:`IMAGE_MACHINE_SUFFIX`
+ Specifies the by default machine-specific suffix for image file names
+ (before the extension). The default value is set as follows::
+ IMAGE_MACHINE_SUFFIX ??= "-${MACHINE}"
+
+ The default :term:`DEPLOY_DIR_IMAGE` already has a :term:`MACHINE`
+ subdirectory, so you may find it unnecessary to also include this suffix
+ in the name of every image file. If you prefer to remove the suffix you
+ can set this variable to an empty string::
+
+ IMAGE_MACHINE_SUFFIX = ""
+
+ (Not to be confused with :term:`IMAGE_NAME_SUFFIX`.)
:term:`IMAGE_MANIFEST`
The manifest file for the image. This file lists all the installed
@@ -3178,19 +3759,18 @@ system and gives an overview of their function and contents.
section in the Yocto Project Overview and Concepts Manual.
:term:`IMAGE_NAME`
- The name of the output image files minus the extension. This variable
- is derived using the :term:`IMAGE_BASENAME`,
- :term:`MACHINE`, and :term:`IMAGE_VERSION_SUFFIX`
- variables::
+ The name of the output image files minus the extension. By default
+ this variable is set using the :term:`IMAGE_LINK_NAME`, and
+ :term:`IMAGE_VERSION_SUFFIX` variables::
- IMAGE_NAME ?= "${IMAGE_BASENAME}-${MACHINE}${IMAGE_VERSION_SUFFIX}"
+ IMAGE_NAME ?= "${IMAGE_LINK_NAME}${IMAGE_VERSION_SUFFIX}"
:term:`IMAGE_NAME_SUFFIX`
- Suffix used for the image output filename - defaults to ``".rootfs"``
+ Suffix used for the image output filename --- defaults to ``".rootfs"``
to distinguish the image file from other files created during image
building; however if this suffix is redundant or not desired you can
clear the value of this variable (set the value to ""). For example,
- this is typically cleared in initramfs image recipes.
+ this is typically cleared in :term:`Initramfs` image recipes.
:term:`IMAGE_OVERHEAD_FACTOR`
Defines a multiplier that the build system applies to the initial
@@ -3223,19 +3803,11 @@ system and gives an overview of their function and contents.
:term:`IMAGE_PKGTYPE`
Defines the package type (i.e. DEB, RPM, IPK, or TAR) used by the
OpenEmbedded build system. The variable is defined appropriately by
- the :ref:`package_deb <ref-classes-package_deb>`,
- :ref:`package_rpm <ref-classes-package_rpm>`,
- :ref:`package_ipk <ref-classes-package_ipk>`, or
- :ref:`package_tar <ref-classes-package_tar>` class.
+ the :ref:`ref-classes-package_deb`, :ref:`ref-classes-package_rpm`,
+ or :ref:`ref-classes-package_ipk` class.
- .. note::
-
- The ``package_tar`` class is broken and is not supported. It is
- recommended that you do not use it.
-
- The :ref:`populate_sdk_* <ref-classes-populate-sdk-*>` and
- :ref:`image <ref-classes-image>` classes use the :term:`IMAGE_PKGTYPE`
- for packaging up images and SDKs.
+ The :ref:`ref-classes-populate-sdk-*` and :ref:`ref-classes-image`
+ classes use the :term:`IMAGE_PKGTYPE` for packaging up images and SDKs.
You should not set the :term:`IMAGE_PKGTYPE` manually. Rather, the
variable is set indirectly through the appropriate
@@ -3253,9 +3825,9 @@ system and gives an overview of their function and contents.
:term:`IMAGE_POSTPROCESS_COMMAND`
Specifies a list of functions to call once the OpenEmbedded build
system creates the final image output files. You can specify
- functions separated by semicolons::
+ functions separated by spaces::
- IMAGE_POSTPROCESS_COMMAND += "function; ... "
+ IMAGE_POSTPROCESS_COMMAND += "function"
If you need to pass the root filesystem path to a command within the
function, you can use ``${IMAGE_ROOTFS}``, which points to the
@@ -3266,9 +3838,9 @@ system and gives an overview of their function and contents.
:term:`IMAGE_PREPROCESS_COMMAND`
Specifies a list of functions to call before the OpenEmbedded build
system creates the final image output files. You can specify
- functions separated by semicolons::
+ functions separated by spaces::
- IMAGE_PREPROCESS_COMMAND += "function; ... "
+ IMAGE_PREPROCESS_COMMAND += "function"
If you need to pass the root filesystem path to a command within the
function, you can use ``${IMAGE_ROOTFS}``, which points to the
@@ -3332,7 +3904,7 @@ system and gives an overview of their function and contents.
:term:`IMAGE_TYPEDEP`
Specifies a dependency from one image type on another. Here is an
- example from the :ref:`image-live <ref-classes-image-live>` class::
+ example from the :ref:`ref-classes-image-live` class::
IMAGE_TYPEDEP:live = "ext3"
@@ -3388,7 +3960,7 @@ system and gives an overview of their function and contents.
- wic.lzma
For more information about these types of images, see
- ``meta/classes/image_types*.bbclass`` in the :term:`Source Directory`.
+ ``meta/classes-recipe/image_types*.bbclass`` in the :term:`Source Directory`.
:term:`IMAGE_VERSION_SUFFIX`
Version suffix that is part of the default :term:`IMAGE_NAME` and
@@ -3399,106 +3971,84 @@ system and gives an overview of their function and contents.
the build artifacts.
:term:`IMGDEPLOYDIR`
- When inheriting the :ref:`image <ref-classes-image>` class directly or
- through the :ref:`core-image <ref-classes-core-image>` class, the
+ When inheriting the :ref:`ref-classes-image` class directly or
+ through the :ref:`ref-classes-core-image` class, the
:term:`IMGDEPLOYDIR` points to a temporary work area for deployed files
that is set in the ``image`` class as follows::
IMGDEPLOYDIR = "${WORKDIR}/deploy-${PN}-image-complete"
- Recipes inheriting the ``image`` class should copy files to be
- deployed into :term:`IMGDEPLOYDIR`, and the class will take care of
- copying them into :term:`DEPLOY_DIR_IMAGE` afterwards.
-
- :term:`INC_PR`
- Helps define the recipe revision for recipes that share a common
- ``include`` file. You can think of this variable as part of the
- recipe revision as set from within an include file.
-
- Suppose, for example, you have a set of recipes that are used across
- several projects. And, within each of those recipes the revision (its
- :term:`PR` value) is set accordingly. In this case, when
- the revision of those recipes changes, the burden is on you to find
- all those recipes and be sure that they get changed to reflect the
- updated version of the recipe. In this scenario, it can get
- complicated when recipes that are used in many places and provide
- common functionality are upgraded to a new revision.
-
- A more efficient way of dealing with this situation is to set the
- :term:`INC_PR` variable inside the ``include`` files that the recipes
- share and then expand the :term:`INC_PR` variable within the recipes to
- help define the recipe revision.
-
- The following provides an example that shows how to use the
- :term:`INC_PR` variable given a common ``include`` file that defines the
- variable. Once the variable is defined in the ``include`` file, you
- can use the variable to set the :term:`PR` values in each recipe. You
- will notice that when you set a recipe's :term:`PR` you can provide more
- granular revisioning by appending values to the :term:`INC_PR` variable::
-
- recipes-graphics/xorg-font/xorg-font-common.inc:INC_PR = "r2"
- recipes-graphics/xorg-font/encodings_1.0.4.bb:PR = "${INC_PR}.1"
- recipes-graphics/xorg-font/font-util_1.3.0.bb:PR = "${INC_PR}.0"
- recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
-
- The
- first line of the example establishes the baseline revision to be
- used for all recipes that use the ``include`` file. The remaining
- lines in the example are from individual recipes and show how the
- :term:`PR` value is set.
+ Recipes inheriting the :ref:`ref-classes-image` class should copy
+ files to be deployed into :term:`IMGDEPLOYDIR`, and the class will take
+ care of copying them into :term:`DEPLOY_DIR_IMAGE` afterwards.
:term:`INCOMPATIBLE_LICENSE`
Specifies a space-separated list of license names (as they would
appear in :term:`LICENSE`) that should be excluded
- from the build. Recipes that provide no alternatives to listed
+ from the build (if set globally), or from an image (if set locally
+ in an image recipe).
+
+ When the variable is set globally, recipes that provide no alternatives to listed
incompatible licenses are not built. Packages that are individually
licensed with the specified incompatible licenses will be deleted.
+ Most of the time this does not allow a feasible build (because it becomes impossible
+ to satisfy build time dependencies), so the recommended way to
+ implement license restrictions is to set the variable in specific
+ image recipes where the restrictions must apply. That way there
+ are no build time restrictions, but the license check is still
+ performed when the image's filesystem is assembled from packages.
+
+ There is some support for wildcards in this variable's value,
+ however it is restricted to specific licenses. Currently only
+ these wildcards are allowed and expand as follows:
+
+ - ``AGPL-3.0*"``: ``AGPL-3.0-only``, ``AGPL-3.0-or-later``
+ - ``GPL-3.0*``: ``GPL-3.0-only``, ``GPL-3.0-or-later``
+ - ``LGPL-3.0*``: ``LGPL-3.0-only``, ``LGPL-3.0-or-later``
.. note::
This functionality is only regularly tested using the following
setting::
- INCOMPATIBLE_LICENSE = "GPL-3.0 LGPL-3.0 AGPL-3.0"
+ INCOMPATIBLE_LICENSE = "GPL-3.0* LGPL-3.0* AGPL-3.0*"
Although you can use other settings, you might be required to
- remove dependencies on or provide alternatives to components that
+ remove dependencies on (or provide alternatives to) components that
are required to produce a functional system image.
- .. note::
-
- It is possible to define a list of licenses that are allowed to be
- used instead of the licenses that are excluded. To do this, define
- a variable ``COMPATIBLE_LICENSES`` with the names of the licenses
- that are allowed. Then define :term:`INCOMPATIBLE_LICENSE` as::
-
- INCOMPATIBLE_LICENSE = "${@' '.join(sorted(set(d.getVar('AVAILABLE_LICENSES').split()) - set(d.getVar('COMPATIBLE_LICENSES').split())))}"
+ :term:`INCOMPATIBLE_LICENSE_EXCEPTIONS`
+ Specifies a space-separated list of package and license pairs that
+ are allowed to be used even if the license is specified in
+ :term:`INCOMPATIBLE_LICENSE`. The package and license pairs are
+ separated using a colon. Example::
-
- This will result in :term:`INCOMPATIBLE_LICENSE` containing the names of
- all licenses from :term:`AVAILABLE_LICENSES` except the ones specified
- in ``COMPATIBLE_LICENSES``, thus only allowing the latter licenses to
- be used.
+ INCOMPATIBLE_LICENSE_EXCEPTIONS = "gdbserver:GPL-3.0-only gdbserver:LGPL-3.0-only"
:term:`INHERIT`
Causes the named class or classes to be inherited globally. Anonymous
functions in the class or classes are not executed for the base
configuration and in each individual recipe. The OpenEmbedded build
system ignores changes to :term:`INHERIT` in individual recipes.
+ Classes inherited using :term:`INHERIT` must be located in the
+ ``classes-global/`` or ``classes/`` subdirectories.
For more information on :term:`INHERIT`, see the
- :ref:`bitbake:bitbake-user-manual/bitbake-user-manual-metadata:\`\`inherit\`\` configuration directive`"
- section in the Bitbake User Manual.
+ :ref:`bitbake-user-manual/bitbake-user-manual-metadata:\`\`inherit\`\` configuration directive`"
+ section in the BitBake User Manual.
:term:`INHERIT_DISTRO`
Lists classes that will be inherited at the distribution level. It is
unlikely that you want to edit this variable.
+ Classes specified in :term:`INHERIT_DISTRO` must be located in the
+ ``classes-global/`` or ``classes/`` subdirectories.
+
The default value of the variable is set as follows in the
``meta/conf/distro/defaultsetup.conf`` file::
- INHERIT_DISTRO ?= "debian devshell sstate license"
+ INHERIT_DISTRO ?= "debian devshell sstate license remove-libtool create-spdx"
:term:`INHIBIT_DEFAULT_DEPS`
Prevents the default dependencies, namely the C compiler and standard
@@ -3543,10 +4093,9 @@ system and gives an overview of their function and contents.
:term:`INHIBIT_SYSROOT_STRIP` variable to "1" in your recipe, you inhibit
this stripping.
- If you want to use this variable, include the
- :ref:`staging <ref-classes-staging>` class. This class uses a
- ``sys_strip()`` function to test for the variable and acts
- accordingly.
+ If you want to use this variable, include the :ref:`ref-classes-staging`
+ class. This class uses a ``sys_strip()`` function to test for the variable
+ and acts accordingly.
.. note::
@@ -3556,30 +4105,65 @@ system and gives an overview of their function and contents.
even if the toolchain's binaries are strippable, there are other files
needed for the build that are not strippable.
+ :term:`INIT_MANAGER`
+ Specifies the system init manager to use. Available options are:
+
+ - ``sysvinit``
+ - ``systemd``
+ - ``mdev-busybox``
+
+ With ``sysvinit``, the init manager is set to
+ :wikipedia:`SysVinit <Init#SysV-style>`, the traditional UNIX init
+ system. This is the default choice in the Poky distribution, together with
+ the Udev device manager (see the ":ref:`device-manager`" section).
+
+ With ``systemd``, the init manager becomes :wikipedia:`systemd <Systemd>`,
+ which comes with the :wikipedia:`udev <Udev>` device manager.
+
+ With ``mdev-busybox``, the init manager becomes the much simpler BusyBox
+ init, together with the BusyBox mdev device manager. This is the simplest
+ and lightest solution, and probably the best choice for low-end systems
+ with a rather slow CPU and a limited amount of RAM.
+
+ More concretely, this is used to include
+ ``conf/distro/include/init-manager-${INIT_MANAGER}.inc`` into the global
+ configuration. You can have a look at the
+ :yocto_git:`meta/conf/distro/include/init-manager-*.inc </poky/tree/meta/conf/distro/include>`
+ files for more information, and also the ":ref:`init-manager`"
+ section in the Yocto Project Development Tasks Manual.
+
+ :term:`INITRAMFS_DEPLOY_DIR_IMAGE`
+ Indicates the deploy directory used by :ref:`ref-tasks-bundle_initramfs`
+ where the :term:`INITRAMFS_IMAGE` will be fetched from. This variable is
+ set by default to ``${DEPLOY_DIR_IMAGE}`` in the
+ :ref:`ref-classes-kernel` class and it's only meant to be changed when
+ building an :term:`Initramfs` image from a separate multiconfig via
+ :term:`INITRAMFS_MULTICONFIG`.
+
:term:`INITRAMFS_FSTYPES`
Defines the format for the output image of an initial RAM filesystem
- (initramfs), which is used during boot. Supported formats are the
+ (:term:`Initramfs`), which is used during boot. Supported formats are the
same as those supported by the
:term:`IMAGE_FSTYPES` variable.
The default value of this variable, which is set in the
``meta/conf/bitbake.conf`` configuration file in the
:term:`Source Directory`, is "cpio.gz". The Linux kernel's
- initramfs mechanism, as opposed to the initial RAM filesystem
- `initrd <https://en.wikipedia.org/wiki/Initrd>`__ mechanism, expects
+ :term:`Initramfs` mechanism, as opposed to the initial RAM filesystem
+ :wikipedia:`initrd <Initrd>` mechanism, expects
an optionally compressed cpio archive.
:term:`INITRAMFS_IMAGE`
Specifies the :term:`PROVIDES` name of an image
- recipe that is used to build an initial RAM filesystem (initramfs)
+ recipe that is used to build an initial RAM filesystem (:term:`Initramfs`)
image. In other words, the :term:`INITRAMFS_IMAGE` variable causes an
additional recipe to be built as a dependency to whatever root
filesystem recipe you might be using (e.g. ``core-image-sato``). The
- initramfs image recipe you provide should set
+ :term:`Initramfs` image recipe you provide should set
:term:`IMAGE_FSTYPES` to
:term:`INITRAMFS_FSTYPES`.
- An initramfs image provides a temporary root filesystem used for
+ An :term:`Initramfs` image provides a temporary root filesystem used for
early system initialization (e.g. loading of modules needed to locate
and mount the "real" root filesystem).
@@ -3587,24 +4171,24 @@ system and gives an overview of their function and contents.
See the ``meta/recipes-core/images/core-image-minimal-initramfs.bb``
recipe in the :term:`Source Directory`
- for an example initramfs recipe. To select this sample recipe as
- the one built to provide the initramfs image, set :term:`INITRAMFS_IMAGE`
+ for an example :term:`Initramfs` recipe. To select this sample recipe as
+ the one built to provide the :term:`Initramfs` image, set :term:`INITRAMFS_IMAGE`
to "core-image-minimal-initramfs".
You can also find more information by referencing the
- ``meta-poky/conf/local.conf.sample.extended`` configuration file in
- the Source Directory, the :ref:`image <ref-classes-image>` class,
- and the :ref:`kernel <ref-classes-kernel>` class to see how to use
- the :term:`INITRAMFS_IMAGE` variable.
+ ``meta-poky/conf/templates/default/local.conf.sample.extended``
+ configuration file in the Source Directory, the :ref:`ref-classes-image`
+ class, and the :ref:`ref-classes-kernel` class to see how to use the
+ :term:`INITRAMFS_IMAGE` variable.
If :term:`INITRAMFS_IMAGE` is empty, which is the default, then no
- initramfs image is built.
+ :term:`Initramfs` image is built.
For more information, you can also see the
:term:`INITRAMFS_IMAGE_BUNDLE`
variable, which allows the generated image to be bundled inside the
- kernel image. Additionally, for information on creating an initramfs
- image, see the ":ref:`dev-manual/common-tasks:building an initial ram filesystem (initramfs) image`" section
+ kernel image. Additionally, for information on creating an :term:`Initramfs`
+ image, see the ":ref:`dev-manual/building:building an initial ram filesystem (Initramfs) image`" section
in the Yocto Project Development Tasks Manual.
:term:`INITRAMFS_IMAGE_BUNDLE`
@@ -3613,37 +4197,36 @@ system and gives an overview of their function and contents.
extra pass
(:ref:`ref-tasks-bundle_initramfs`) during
kernel compilation in order to build a single binary that contains
- both the kernel image and the initial RAM filesystem (initramfs)
+ both the kernel image and the initial RAM filesystem (:term:`Initramfs`)
image. This makes use of the
:term:`CONFIG_INITRAMFS_SOURCE` kernel
feature.
.. note::
- Bundling the initramfs with the kernel conflates the code in the
- initramfs with the GPLv2 licensed Linux kernel binary. Thus only GPLv2
- compatible software may be part of a bundled initramfs.
+ Bundling the :term:`Initramfs` with the kernel conflates the code in the
+ :term:`Initramfs` with the GPLv2 licensed Linux kernel binary. Thus only GPLv2
+ compatible software may be part of a bundled :term:`Initramfs`.
.. note::
- Using an extra compilation pass to bundle the initramfs avoids a
- circular dependency between the kernel recipe and the initramfs
- recipe should the initramfs include kernel modules. Should that be
- the case, the initramfs recipe depends on the kernel for the
- kernel modules, and the kernel depends on the initramfs recipe
- since the initramfs is bundled inside the kernel image.
+ Using an extra compilation pass to bundle the :term:`Initramfs` avoids a
+ circular dependency between the kernel recipe and the :term:`Initramfs`
+ recipe should the :term:`Initramfs` include kernel modules. Should that be
+ the case, the :term:`Initramfs` recipe depends on the kernel for the
+ kernel modules, and the kernel depends on the :term:`Initramfs` recipe
+ since the :term:`Initramfs` is bundled inside the kernel image.
The combined binary is deposited into the ``tmp/deploy`` directory,
which is part of the :term:`Build Directory`.
Setting the variable to "1" in a configuration file causes the
OpenEmbedded build system to generate a kernel image with the
- initramfs specified in :term:`INITRAMFS_IMAGE` bundled within::
+ :term:`Initramfs` specified in :term:`INITRAMFS_IMAGE` bundled within::
INITRAMFS_IMAGE_BUNDLE = "1"
- By default, the
- :ref:`kernel <ref-classes-kernel>` class sets this variable to a
+ By default, the :ref:`ref-classes-kernel` class sets this variable to a
null string as follows::
INITRAMFS_IMAGE_BUNDLE ?= ""
@@ -3654,14 +4237,27 @@ system and gives an overview of their function and contents.
configuration file. You cannot set the variable in a recipe file.
See the
- :yocto_git:`local.conf.sample.extended </poky/tree/meta-poky/conf/local.conf.sample.extended>`
+ :yocto_git:`local.conf.sample.extended </poky/tree/meta-poky/conf/templates/default/local.conf.sample.extended>`
file for additional information. Also, for information on creating an
- initramfs, see the ":ref:`dev-manual/common-tasks:building an initial ram filesystem (initramfs) image`" section
+ :term:`Initramfs`, see the ":ref:`dev-manual/building:building an initial ram filesystem (Initramfs) image`" section
in the Yocto Project Development Tasks Manual.
+ :term:`INITRAMFS_IMAGE_NAME`
+
+ This value needs to stay in sync with :term:`IMAGE_LINK_NAME`, but with
+ :term:`INITRAMFS_IMAGE` instead of :term:`IMAGE_BASENAME`. The default value
+ is set as follows:
+
+ INITRAMFS_IMAGE_NAME ?= "${@['${INITRAMFS_IMAGE}${IMAGE_MACHINE_SUFFIX}', ''][d.getVar('INITRAMFS_IMAGE') == '']}"
+
+ That is, if :term:`INITRAMFS_IMAGE` is set, the value of
+ :term:`INITRAMFS_IMAGE_NAME` will be set based upon
+ :term:`INITRAMFS_IMAGE` and :term:`IMAGE_MACHINE_SUFFIX`.
+
+
:term:`INITRAMFS_LINK_NAME`
The link name of the initial RAM filesystem image. This variable is
- set in the ``meta/classes/kernel-artifact-names.bbclass`` file as
+ set in the ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as
follows::
INITRAMFS_LINK_NAME ?= "initramfs-${KERNEL_ARTIFACT_LINK_NAME}"
@@ -3675,24 +4271,32 @@ system and gives an overview of their function and contents.
See the :term:`MACHINE` variable for additional
information.
+ :term:`INITRAMFS_MULTICONFIG`
+ Defines the multiconfig to create a multiconfig dependency to be used by
+ the :ref:`ref-classes-kernel` class.
+
+ This allows the kernel to bundle an :term:`INITRAMFS_IMAGE` coming from
+ a separate multiconfig, this is meant to be used in addition to :term:`INITRAMFS_DEPLOY_DIR_IMAGE`.
+
+ For more information on how to bundle an :term:`Initramfs` image from a separate
+ multiconfig see the ":ref:`dev-manual/building:Bundling an Initramfs Image From a Separate Multiconfig`"
+ section in the Yocto Project Development Tasks Manual.
+
:term:`INITRAMFS_NAME`
The base name of the initial RAM filesystem image. This variable is
- set in the ``meta/classes/kernel-artifact-names.bbclass`` file as
+ set in the ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as
follows::
INITRAMFS_NAME ?= "initramfs-${KERNEL_ARTIFACT_NAME}"
- The value of the :term:`KERNEL_ARTIFACT_NAME`
- variable, which is set in the same file, has the following value::
-
- KERNEL_ARTIFACT_NAME ?= "${PKGE}-${PKGV}-${PKGR}-${MACHINE}${IMAGE_VERSION_SUFFIX}"
+ See :term:`KERNEL_ARTIFACT_NAME` for additional information.
:term:`INITRD`
Indicates list of filesystem images to concatenate and use as an
initial RAM disk (``initrd``).
The :term:`INITRD` variable is an optional variable used with the
- :ref:`image-live <ref-classes-image-live>` class.
+ :ref:`ref-classes-image-live` class.
:term:`INITRD_IMAGE`
When building a "live" bootable image (i.e. when
@@ -3701,14 +4305,13 @@ system and gives an overview of their function and contents.
provide the initial RAM disk image. The default value is
"core-image-minimal-initramfs".
- See the :ref:`image-live <ref-classes-image-live>` class for more
- information.
+ See the :ref:`ref-classes-image-live` class for more information.
:term:`INITSCRIPT_NAME`
The filename of the initialization script as installed to
``${sysconfdir}/init.d``.
- This variable is used in recipes when using ``update-rc.d.bbclass``.
+ This variable is used in recipes when using :ref:`ref-classes-update-rc.d`.
The variable is mandatory.
:term:`INITSCRIPT_PACKAGES`
@@ -3716,7 +4319,7 @@ system and gives an overview of their function and contents.
are specified, you need to append the package name to the other
``INITSCRIPT_*`` as an override.
- This variable is used in recipes when using ``update-rc.d.bbclass``.
+ This variable is used in recipes when using :ref:`ref-classes-update-rc.d`.
The variable is optional and defaults to the :term:`PN`
variable.
@@ -3729,7 +4332,7 @@ system and gives an overview of their function and contents.
in initlevels 2 and 5, and stops the script in levels 0, 1 and 6.
The variable's default value is "defaults", which is set in the
- :ref:`update-rc.d <ref-classes-update-rc.d>` class.
+ :ref:`ref-classes-update-rc.d` class.
The value in :term:`INITSCRIPT_PARAMS` is passed through to the
``update-rc.d`` command. For more information on valid parameters,
@@ -3790,24 +4393,23 @@ system and gives an overview of their function and contents.
This variable is also used from the kernel's append file to identify
the kernel branch specific to a particular machine or target
hardware. Continuing with the previous kernel example, the kernel's
- append file (i.e. ``linux-yocto_4.12.bbappend``) is located in the
+ append file is located in the
BSP layer for a given machine. For example, the append file for the
- Beaglebone, EdgeRouter, and generic versions of both 32 and 64-bit IA
+ Beaglebone and generic versions of both 32 and 64-bit IA
machines (``meta-yocto-bsp``) is named
- ``meta-yocto-bsp/recipes-kernel/linux/linux-yocto_4.12.bbappend``.
+ ``meta-yocto-bsp/recipes-kernel/linux/linux-yocto_6.1.bbappend``.
Here are the related statements from that append file::
- KBRANCH:genericx86 = "standard/base"
- KBRANCH:genericx86-64 = "standard/base"
- KBRANCH:edgerouter = "standard/edgerouter"
- KBRANCH:beaglebone = "standard/beaglebone"
+ KBRANCH:genericx86 = "v6.1/standard/base"
+ KBRANCH:genericx86-64 = "v6.1/standard/base"
+ KBRANCH:beaglebone-yocto = "v6.1/standard/beaglebone"
The :term:`KBRANCH` statements
identify the kernel branch to use when building for each supported
BSP.
:term:`KBUILD_DEFCONFIG`
- When used with the :ref:`kernel-yocto <ref-classes-kernel-yocto>`
+ When used with the :ref:`ref-classes-kernel-yocto`
class, specifies an "in-tree" kernel configuration file for use
during a kernel build.
@@ -3823,9 +4425,9 @@ system and gives an overview of their function and contents.
To use the variable, set it in the append file for your kernel recipe
using the following form::
- KBUILD_DEFCONFIG_KMACHINE ?= defconfig_file
+ KBUILD_DEFCONFIG:<machine> ?= "defconfig_file"
- Here is an example from a "raspberrypi2" :term:`KMACHINE` build that uses
+ Here is an example from a "raspberrypi2" :term:`MACHINE` build that uses
a ``defconfig`` file named "bcm2709_defconfig"::
KBUILD_DEFCONFIG:raspberrypi2 = "bcm2709_defconfig"
@@ -3840,7 +4442,7 @@ system and gives an overview of their function and contents.
section in the Yocto Project Linux Kernel Development Manual.
:term:`KCONFIG_MODE`
- When used with the :ref:`kernel-yocto <ref-classes-kernel-yocto>`
+ When used with the :ref:`ref-classes-kernel-yocto`
class, specifies the kernel configuration values to use for options
not specified in the provided ``defconfig`` file. Valid options are::
@@ -3876,11 +4478,10 @@ system and gives an overview of their function and contents.
KCONFIG_MODE = "alldefconfig"
-
:term:`KERNEL_ALT_IMAGETYPE`
Specifies an alternate kernel image type for creation in addition to
- the kernel image type specified using the
- :term:`KERNEL_IMAGETYPE` variable.
+ the kernel image type specified using the :term:`KERNEL_IMAGETYPE` and
+ :term:`KERNEL_IMAGETYPES` variables.
:term:`KERNEL_ARTIFACT_NAME`
Specifies the name of all of the build artifacts. You can change the
@@ -3888,22 +4489,47 @@ system and gives an overview of their function and contents.
variable.
The value of :term:`KERNEL_ARTIFACT_NAME`, which is set in the
- ``meta/classes/kernel-artifact-names.bbclass`` file, has the
+ ``meta/classes-recipe/kernel-artifact-names.bbclass`` file, has the
following default value::
- KERNEL_ARTIFACT_NAME ?= "${PKGE}-${PKGV}-${PKGR}-${MACHINE}${IMAGE_VERSION_SUFFIX}"
+ KERNEL_ARTIFACT_NAME ?= "${PKGE}-${PKGV}-${PKGR}${IMAGE_MACHINE_SUFFIX}${IMAGE_VERSION_SUFFIX}"
- See the :term:`PKGE`, :term:`PKGV`, :term:`PKGR`, :term:`MACHINE`
+ See the :term:`PKGE`, :term:`PKGV`, :term:`PKGR`, :term:`IMAGE_MACHINE_SUFFIX`
and :term:`IMAGE_VERSION_SUFFIX` variables for additional information.
:term:`KERNEL_CLASSES`
A list of classes defining kernel image types that the
- :ref:`kernel <ref-classes-kernel>` class should inherit. You
- typically append this variable to enable extended image types. An
- example is the "kernel-fitimage", which enables fitImage support and
- resides in ``meta/classes/kernel-fitimage.bbclass``. You can register
- custom kernel image types with the :ref:`kernel <ref-classes-kernel>` class using this
- variable.
+ :ref:`ref-classes-kernel` class should inherit. You typically
+ append this variable to enable extended image types. An example is
+ ":ref:`ref-classes-kernel-fitimage`", which enables
+ FIT image support and resides in ``meta/classes-recipe/kernel-fitimage.bbclass``.
+ You can register custom kernel image types with the
+ :ref:`ref-classes-kernel` class using this variable.
+
+ :term:`KERNEL_DANGLING_FEATURES_WARN_ONLY`
+ When kernel configuration fragments are missing for some
+ :term:`KERNEL_FEATURES` specified by layers or BSPs,
+ building and configuring the kernel stops with an error.
+
+ You can turn these errors into warnings by setting the
+ following in ``conf/local.conf``::
+
+ KERNEL_DANGLING_FEATURES_WARN_ONLY = "1"
+
+ You will still be warned that runtime issues may occur,
+ but at least the kernel configuration and build process will
+ be allowed to continue.
+
+ :term:`KERNEL_DEBUG_TIMESTAMPS`
+ If set to "1", enables timestamping functionality during building
+ the kernel. The default is "0" to disable this for reproducibility
+ reasons.
+
+ :term:`KERNEL_DEPLOY_DEPEND`
+ Provides a means of controlling the dependency of an image recipe
+ on the kernel. The default value is "virtual/kernel:do_deploy",
+ however for a small initramfs image or other images that do not
+ need the kernel, this can be set to "" in the image recipe.
:term:`KERNEL_DEVICETREE`
Specifies the name of the generated Linux kernel device tree (i.e.
@@ -3914,13 +4540,22 @@ system and gives an overview of their function and contents.
There is legacy support for specifying the full path to the device
tree. However, providing just the ``.dtb`` file is preferred.
- In order to use this variable, the
- :ref:`kernel-devicetree <ref-classes-kernel-devicetree>` class must
- be inherited.
+ In order to use this variable, the :ref:`ref-classes-kernel-devicetree`
+ class must be inherited.
+
+ :term:`KERNEL_DEVICETREE_BUNDLE`
+ When set to "1", this variable allows to bundle the Linux kernel
+ and the Device Tree Binary together in a single file.
+
+ This feature is currently only supported on the "arm" (32 bit)
+ architecture.
+
+ This variable is set to "0" by default by the
+ :ref:`ref-classes-kernel-devicetree` class.
:term:`KERNEL_DTB_LINK_NAME`
The link name of the kernel device tree binary (DTB). This variable
- is set in the ``meta/classes/kernel-artifact-names.bbclass`` file as
+ is set in the ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as
follows::
KERNEL_DTB_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}"
@@ -3936,24 +4571,37 @@ system and gives an overview of their function and contents.
:term:`KERNEL_DTB_NAME`
The base name of the kernel device tree binary (DTB). This variable
- is set in the ``meta/classes/kernel-artifact-names.bbclass`` file as
+ is set in the ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as
follows::
KERNEL_DTB_NAME ?= "${KERNEL_ARTIFACT_NAME}"
- The value of the :term:`KERNEL_ARTIFACT_NAME`
- variable, which is set in the same file, has the following value::
+ See :term:`KERNEL_ARTIFACT_NAME` for additional information.
+
+ :term:`KERNEL_DTBDEST`
+ This variable, used by the :ref:`ref-classes-kernel-devicetree`
+ class, allows to change the installation directory of the DTB
+ (Device Tree Binary) files.
- KERNEL_ARTIFACT_NAME ?= "${PKGE}-${PKGV}-${PKGR}-${MACHINE}${IMAGE_VERSION_SUFFIX}"
+ It is set by default to "${KERNEL_IMAGEDEST}" by the
+ :ref:`ref-classes-kernel` class.
+
+ :term:`KERNEL_DTBVENDORED`
+ This variable, used by the :ref:`ref-classes-kernel-devicetree`,
+ allows to ignore vendor subdirectories when installing DTB
+ (Device Tree Binary) files, when it is set to "false".
+
+ To keep vendor subdirectories, set this variable to "true".
+
+ It is set by default to "false" by the :ref:`ref-classes-kernel` class.
:term:`KERNEL_DTC_FLAGS`
Specifies the ``dtc`` flags that are passed to the Linux kernel build
system when generating the device trees (via ``DTC_FLAGS`` environment
variable).
- In order to use this variable, the
- :ref:`kernel-devicetree <ref-classes-kernel-devicetree>` class must
- be inherited.
+ In order to use this variable, the :ref:`ref-classes-kernel-devicetree`
+ class must be inherited.
:term:`KERNEL_EXTRA_ARGS`
Specifies additional ``make`` command-line arguments the OpenEmbedded
@@ -3980,14 +4628,14 @@ system and gives an overview of their function and contents.
statements add specific configurations to targeted machine types::
KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc features/taskstats/taskstats.scc"
- KERNEL_FEATURES:append = "${KERNEL_EXTRA_FEATURES}"
- KERNEL_FEATURES:append:qemuall = "cfg/virtio.scc"
- KERNEL_FEATURES:append:qemux86 = " cfg/sound.scc cfg/paravirt_kvm.scc"
- KERNEL_FEATURES:append:qemux86-64 = "cfg/sound.scc"
+ KERNEL_FEATURES:append = " ${KERNEL_EXTRA_FEATURES}"
+ KERNEL_FEATURES:append:qemuall = " cfg/virtio.scc"
+ KERNEL_FEATURES:append:qemux86 = " cfg/sound.scc cfg/paravirt_kvm.scc"
+ KERNEL_FEATURES:append:qemux86-64 = " cfg/sound.scc"
:term:`KERNEL_FIT_LINK_NAME`
The link name of the kernel flattened image tree (FIT) image. This
- variable is set in the ``meta/classes/kernel-artifact-names.bbclass``
+ variable is set in the ``meta/classes-recipe/kernel-artifact-names.bbclass``
file as follows::
KERNEL_FIT_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}"
@@ -4003,19 +4651,16 @@ system and gives an overview of their function and contents.
:term:`KERNEL_FIT_NAME`
The base name of the kernel flattened image tree (FIT) image. This
- variable is set in the ``meta/classes/kernel-artifact-names.bbclass``
+ variable is set in the ``meta/classes-recipe/kernel-artifact-names.bbclass``
file as follows::
KERNEL_FIT_NAME ?= "${KERNEL_ARTIFACT_NAME}"
- The value of the :term:`KERNEL_ARTIFACT_NAME`
- variable, which is set in the same file, has the following value::
-
- KERNEL_ARTIFACT_NAME ?= "${PKGE}-${PKGV}-${PKGR}-${MACHINE}${IMAGE_VERSION_SUFFIX}"
+ See :term:`KERNEL_ARTIFACT_NAME` for additional information.
:term:`KERNEL_IMAGE_LINK_NAME`
The link name for the kernel image. This variable is set in the
- ``meta/classes/kernel-artifact-names.bbclass`` file as follows::
+ ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as follows::
KERNEL_IMAGE_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}"
@@ -4043,15 +4688,11 @@ system and gives an overview of their function and contents.
:term:`KERNEL_IMAGE_NAME`
The base name of the kernel image. This variable is set in the
- ``meta/classes/kernel-artifact-names.bbclass`` file as follows::
+ ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as follows::
KERNEL_IMAGE_NAME ?= "${KERNEL_ARTIFACT_NAME}"
- The value of the
- :term:`KERNEL_ARTIFACT_NAME` variable,
- which is set in the same file, has the following value::
-
- KERNEL_ARTIFACT_NAME ?= "${PKGE}-${PKGV}-${PKGR}-${MACHINE}${IMAGE_VERSION_SUFFIX}"
+ See :term:`KERNEL_ARTIFACT_NAME` for additional information.
:term:`KERNEL_IMAGETYPE`
The type of kernel to build for a device, usually set by the machine
@@ -4059,9 +4700,12 @@ system and gives an overview of their function and contents.
when building the kernel and is passed to ``make`` as the target to
build.
- If you want to build an alternate kernel image type in addition to that
- specified by :term:`KERNEL_IMAGETYPE`, use the :term:`KERNEL_ALT_IMAGETYPE`
- variable.
+ To build additional kernel image types, use :term:`KERNEL_IMAGETYPES`.
+
+ :term:`KERNEL_IMAGETYPES`
+ Lists additional types of kernel images to build for a device in addition
+ to image type specified in :term:`KERNEL_IMAGETYPE`. Usually set by the
+ machine configuration files.
:term:`KERNEL_MODULE_AUTOLOAD`
Lists kernel modules that need to be auto-loaded during boot.
@@ -4099,11 +4743,18 @@ system and gives an overview of their function and contents.
provide those module configurations, see the
:term:`module_conf_* <module_conf>` variable.
+ :term:`KERNEL_PACKAGE_NAME`
+ Specifies the base name of the kernel packages, such as "kernel"
+ in the kernel packages such as "kernel-modules", "kernel-image" and
+ "kernel-dbg".
+
+ The default value for this variable is set to "kernel" by the
+ :ref:`ref-classes-kernel` class.
+
:term:`KERNEL_PATH`
The location of the kernel sources. This variable is set to the value
- of the :term:`STAGING_KERNEL_DIR` within
- the :ref:`module <ref-classes-module>` class. For information on
- how this variable is used, see the
+ of the :term:`STAGING_KERNEL_DIR` within the :ref:`ref-classes-module`
+ class. For information on how this variable is used, see the
":ref:`kernel-dev/common:incorporating out-of-tree modules`"
section in the Yocto Project Linux Kernel Development Manual.
@@ -4115,9 +4766,8 @@ system and gives an overview of their function and contents.
:term:`KERNEL_SRC`
The location of the kernel sources. This variable is set to the value
- of the :term:`STAGING_KERNEL_DIR` within
- the :ref:`module <ref-classes-module>` class. For information on
- how this variable is used, see the
+ of the :term:`STAGING_KERNEL_DIR` within the :ref:`ref-classes-module`
+ class. For information on how this variable is used, see the
":ref:`kernel-dev/common:incorporating out-of-tree modules`"
section in the Yocto Project Linux Kernel Development Manual.
@@ -4127,6 +4777,10 @@ system and gives an overview of their function and contents.
to the :term:`KERNEL_SRC` variable. Both variables are common variables
used by external Makefiles to point to the kernel source directory.
+ :term:`KERNEL_STRIP`
+ Allows to specific which ``strip`` command to use to strip the kernel
+ binary, typically either GNU binutils ``strip`` or ``llvm-strip``.
+
:term:`KERNEL_VERSION`
Specifies the version of the kernel as extracted from ``version.h``
or ``utsrelease.h`` within the kernel sources. Effects of setting
@@ -4140,7 +4794,7 @@ system and gives an overview of their function and contents.
:term:`KERNELDEPMODDEPEND` does not control whether or not that data
exists, but simply whether or not it is used. If you do not need to
use the data, set the :term:`KERNELDEPMODDEPEND` variable in your
- ``initramfs`` recipe. Setting the variable there when the data is not
+ :term:`Initramfs` recipe. Setting the variable there when the data is not
needed avoids a potential dependency loop.
:term:`KFEATURE_DESCRIPTION`
@@ -4171,7 +4825,7 @@ system and gives an overview of their function and contents.
SRCREV_machine:core2-32-intel-common = "43b9eced9ba8a57add36af07736344dcc383f711"
KMACHINE:core2-32-intel-common = "intel-core2-32"
KBRANCH:core2-32-intel-common = "standard/base"
- KERNEL_FEATURES:append:core2-32-intel-common = "${KERNEL_FEATURES_INTEL_COMMON}"
+ KERNEL_FEATURES:append:core2-32-intel-common = " ${KERNEL_FEATURES_INTEL_COMMON}"
The :term:`KMACHINE` statement says
that the kernel understands the machine name as "intel-core2-32".
@@ -4195,7 +4849,7 @@ system and gives an overview of their function and contents.
:term:`LABELS`
Provides a list of targets for automatic configuration.
- See the :ref:`grub-efi <ref-classes-grub-efi>` class for more
+ See the :ref:`ref-classes-grub-efi` class for more
information on how this variable is used.
:term:`LAYERDEPENDS`
@@ -4220,6 +4874,9 @@ system and gives an overview of their function and contents.
available outside of ``layer.conf`` and references are expanded
immediately when parsing of the file completes.
+ :term:`LAYERDIR_RE`
+ See :term:`bitbake:LAYERDIR_RE` in the BitBake manual.
+
:term:`LAYERRECOMMENDS`
Lists the layers, separated by spaces, recommended for use with this
layer.
@@ -4238,31 +4895,7 @@ system and gives an overview of their function and contents.
``LAYERRECOMMENDS_mylayer``).
:term:`LAYERSERIES_COMPAT`
- Lists the versions of the :term:`OpenEmbedded-Core (OE-Core)` for which
- a layer is compatible. Using the :term:`LAYERSERIES_COMPAT` variable
- allows the layer maintainer to indicate which combinations of the
- layer and OE-Core can be expected to work. The variable gives the
- system a way to detect when a layer has not been tested with new
- releases of OE-Core (e.g. the layer is not maintained).
-
- To specify the OE-Core versions for which a layer is compatible, use
- this variable in your layer's ``conf/layer.conf`` configuration file.
- For the list, use the Yocto Project
- :yocto_wiki:`Release Name </Releases>` (e.g.
- &DISTRO_NAME_NO_CAP;). To specify multiple OE-Core versions for the
- layer, use a space-separated list::
-
- LAYERSERIES_COMPAT_layer_root_name = "&DISTRO_NAME_NO_CAP; &DISTRO_NAME_NO_CAP_MINUS_ONE;"
-
- .. note::
-
- Setting :term:`LAYERSERIES_COMPAT` is required by the Yocto Project
- Compatible version 2 standard.
- The OpenEmbedded build system produces a warning if the variable
- is not set for any given layer.
-
- See the ":ref:`dev-manual/common-tasks:creating your own layer`"
- section in the Yocto Project Development Tasks Manual.
+ See :term:`bitbake:LAYERSERIES_COMPAT` in the BitBake manual.
:term:`LAYERVERSION`
Optionally specifies the version of a layer as a single number. You
@@ -4294,10 +4927,11 @@ system and gives an overview of their function and contents.
:term:`LEAD_SONAME`
Specifies the lead (or primary) compiled library file (i.e. ``.so``)
- that the :ref:`debian <ref-classes-debian>` class applies its
+ that the :ref:`ref-classes-debian` class applies its
naming policy to given a recipe that packages multiple libraries.
- This variable works in conjunction with the :ref:`debian <ref-classes-debian>` class.
+ This variable works in conjunction with the :ref:`ref-classes-debian`
+ class.
:term:`LIC_FILES_CHKSUM`
Checksums of the license text in the recipe source code.
@@ -4310,7 +4944,7 @@ system and gives an overview of their function and contents.
This variable must be defined for all recipes (unless
:term:`LICENSE` is set to "CLOSED").
- For more information, see the ":ref:`dev-manual/common-tasks:tracking license changes`"
+ For more information, see the ":ref:`dev-manual/licenses:tracking license changes`"
section in the Yocto Project Development Tasks Manual.
:term:`LICENSE`
@@ -4333,9 +4967,9 @@ system and gives an overview of their function and contents.
Here are some examples::
- LICENSE = "LGPLv2.1 | GPLv3"
- LICENSE = "MPL-1 & LGPLv2.1"
- LICENSE = "GPLv2+"
+ LICENSE = "LGPL-2.1-only | GPL-3.0-only"
+ LICENSE = "MPL-1.0 & LGPL-2.1-only"
+ LICENSE = "GPL-2.0-or-later"
The first example is from the
recipes for Qt, which the user may choose to distribute under either
@@ -4350,8 +4984,8 @@ system and gives an overview of their function and contents.
but has accompanying documentation licensed under the GNU Free
Documentation License 1.2 could be specified as follows::
- LICENSE = "GFDL-1.2 & GPLv2"
- LICENSE:${PN} = "GPLv2"
+ LICENSE = "GFDL-1.2 & GPL-2.0-only"
+ LICENSE:${PN} = "GPL-2.0.only"
LICENSE:${PN}-doc = "GFDL-1.2"
:term:`LICENSE_CREATE_PACKAGE`
@@ -4374,12 +5008,12 @@ system and gives an overview of their function and contents.
For related information on providing license text, see the
:term:`COPY_LIC_DIRS` variable, the
:term:`COPY_LIC_MANIFEST` variable, and the
- ":ref:`dev-manual/common-tasks:providing license text`"
+ ":ref:`dev-manual/licenses:providing license text`"
section in the Yocto Project Development Tasks Manual.
:term:`LICENSE_FLAGS`
Specifies additional flags for a recipe you must allow through
- :term:`LICENSE_FLAGS_WHITELIST` in
+ :term:`LICENSE_FLAGS_ACCEPTED` in
order for the recipe to be built. When providing multiple flags,
separate them with spaces.
@@ -4387,16 +5021,33 @@ system and gives an overview of their function and contents.
typically used to mark recipes that might require additional licenses
in order to be used in a commercial product. For more information,
see the
- ":ref:`dev-manual/common-tasks:enabling commercially licensed recipes`"
+ ":ref:`dev-manual/licenses:enabling commercially licensed recipes`"
section in the Yocto Project Development Tasks Manual.
- :term:`LICENSE_FLAGS_WHITELIST`
+ :term:`LICENSE_FLAGS_ACCEPTED`
Lists license flags that when specified in
:term:`LICENSE_FLAGS` within a recipe should not
prevent that recipe from being built. For more information, see the
- ":ref:`dev-manual/common-tasks:enabling commercially licensed recipes`"
+ ":ref:`dev-manual/licenses:enabling commercially licensed recipes`"
section in the Yocto Project Development Tasks Manual.
+ :term:`LICENSE_FLAGS_DETAILS`
+ Adds details about a flag in :term:`LICENSE_FLAGS`. This way,
+ if such a flag is not accepted through :term:`LICENSE_FLAGS_ACCEPTED`,
+ the error message will be more informative, containing the specified
+ extra details.
+
+ For example, a recipe with an EULA may set::
+
+ LICENSE_FLAGS = "FooBar-EULA"
+ LICENSE_FLAGS_DETAILS[FooBar-EULA] = "For further details, see https://example.com/eula."
+
+ If ``Foobar-EULA`` isn't in :term:`LICENSE_FLAGS_ACCEPTED`, the
+ error message is more useful::
+
+ Has a restricted license 'FooBar-EULA' which is not listed in your LICENSE_FLAGS_ACCEPTED.
+ For further details, see https://example.com/eula.
+
:term:`LICENSE_PATH`
Path to additional licenses used during the build. By default, the
OpenEmbedded build system uses :term:`COMMON_LICENSE_DIR` to define the
@@ -4487,7 +5138,6 @@ system and gives an overview of their function and contents.
MACHINE ?= "genericx86"
MACHINE ?= "genericx86-64"
MACHINE ?= "beaglebone"
- MACHINE ?= "edgerouter"
The last five are Yocto Project reference hardware
boards, which are provided in the ``meta-yocto-bsp`` layer.
@@ -4630,19 +5280,27 @@ system and gives an overview of their function and contents.
shipped, see the ":ref:`ref-features-machine`" section.
:term:`MACHINE_FEATURES_BACKFILL`
- Features to be added to :term:`MACHINE_FEATURES` if not also present in
+ A list of space-separated features to be added to
+ :term:`MACHINE_FEATURES` if not also present in
:term:`MACHINE_FEATURES_BACKFILL_CONSIDERED`.
- This variable is set in the ``meta/conf/bitbake.conf`` file. It is
- not intended to be user-configurable. It is best to just reference
- the variable to see which machine features are being backfilled for
- all machine configurations. See the ":ref:`ref-features-backfill`"
- section for more information.
+ This variable is set in the ``meta/conf/bitbake.conf`` file. It is not
+ intended to be user-configurable. It is best to just reference the
+ variable to see which machine features are being
+ :ref:`backfilled <ref-features-backfill>` for all machine configurations.
:term:`MACHINE_FEATURES_BACKFILL_CONSIDERED`
- Features from :term:`MACHINE_FEATURES_BACKFILL` that should not be
- backfilled (i.e. added to :term:`MACHINE_FEATURES`) during the build. See
- the ":ref:`ref-features-backfill`" section for more information.
+ A list of space-separated features from :term:`MACHINE_FEATURES_BACKFILL`
+ that should not be :ref:`backfilled <ref-features-backfill>` (i.e. added
+ to :term:`MACHINE_FEATURES`) during the build.
+
+ This corresponds to an opt-out mechanism. When new default machine
+ features are introduced, machine definition maintainers can review
+ (`consider`) them and decide to exclude them from the
+ :ref:`backfilled <ref-features-backfill>` features. Therefore, the
+ combination of :term:`MACHINE_FEATURES_BACKFILL` and
+ :term:`MACHINE_FEATURES_BACKFILL_CONSIDERED` makes it possible to
+ add new default features without breaking existing machine definitions.
:term:`MACHINEOVERRIDES`
A colon-separated list of overrides that apply to the current
@@ -4673,6 +5331,22 @@ system and gives an overview of their function and contents.
:term:`MAINTAINER`
The email address of the distribution maintainer.
+ :term:`MESON_BUILDTYPE`
+ Value of the Meson ``--buildtype`` argument used by the
+ :ref:`ref-classes-meson` class. It defaults to ``debug`` if
+ :term:`DEBUG_BUILD` is set to "1", and ``plain`` otherwise.
+
+ See `Meson build options <https://mesonbuild.com/Builtin-options.html>`__
+ for the values you could set in a recipe. Values such as ``plain``,
+ ``debug``, ``debugoptimized``, ``release`` and ``minsize`` allow
+ you to specify the inclusion of debugging symbols and the compiler
+ optimizations (none, performance or size).
+
+ :term:`MESON_TARGET`
+ A variable for the :ref:`ref-classes-meson` class, allowing to choose
+ a Meson target to build in :ref:`ref-tasks-compile`. Otherwise, the
+ default targets are built.
+
:term:`METADATA_BRANCH`
The branch currently checked out for the OpenEmbedded-Core layer (path
determined by :term:`COREBASE`).
@@ -4681,6 +5355,13 @@ system and gives an overview of their function and contents.
The revision currently checked out for the OpenEmbedded-Core layer (path
determined by :term:`COREBASE`).
+ :term:`MIME_XDG_PACKAGES`
+ The current implementation of the :ref:`ref-classes-mime-xdg`
+ class cannot detect ``.desktop`` files installed through absolute
+ symbolic links. Use this setting to make the class create post-install
+ and post-remove scripts for these packages anyway, to invoke the
+ ``update-destop-database`` command.
+
:term:`MIRRORS`
Specifies additional paths from which the OpenEmbedded build system
gets source code. When the build system searches for source code, it
@@ -4689,32 +5370,31 @@ system and gives an overview of their function and contents.
:term:`PREMIRRORS`, the upstream source, and then
locations specified by :term:`MIRRORS` in that order.
- Assuming your distribution (:term:`DISTRO`) is "poky",
- the default value for :term:`MIRRORS` is defined in the
- ``conf/distro/poky.conf`` file in the ``meta-poky`` Git repository.
+ The default value for :term:`MIRRORS` is defined in the
+ ``meta/classes-global/mirrors.bbclass`` file in the core metadata layer.
:term:`MLPREFIX`
Specifies a prefix has been added to :term:`PN` to create a
special version of a recipe or package (i.e. a Multilib version). The
variable is used in places where the prefix needs to be added to or
- removed from a the name (e.g. the :term:`BPN` variable).
+ removed from a name (e.g. the :term:`BPN` variable).
:term:`MLPREFIX` gets set when a prefix has been added to :term:`PN`.
.. note::
- The "ML" in :term:`MLPREFIX` stands for "MultiLib". This representation is
- historical and comes from a time when ``nativesdk`` was a suffix
- rather than a prefix on the recipe name. When ``nativesdk`` was turned
- into a prefix, it made sense to set :term:`MLPREFIX` for it as well.
+ The "ML" in :term:`MLPREFIX` stands for "MultiLib". This representation
+ is historical and comes from a time when ":ref:`ref-classes-nativesdk`"
+ was a suffix rather than a prefix on the recipe name. When
+ ":ref:`ref-classes-nativesdk`" was turned into a prefix, it made sense
+ to set :term:`MLPREFIX` for it as well.
To help understand when :term:`MLPREFIX` might be needed, consider when
- :term:`BBCLASSEXTEND` is used to provide a
- ``nativesdk`` version of a recipe in addition to the target version.
- If that recipe declares build-time dependencies on tasks in other
- recipes by using :term:`DEPENDS`, then a dependency on
- "foo" will automatically get rewritten to a dependency on
- "nativesdk-foo". However, dependencies like the following will not
- get rewritten automatically::
+ :term:`BBCLASSEXTEND` is used to provide a :ref:`ref-classes-nativesdk`
+ version of a recipe in addition to the target version. If that recipe
+ declares build-time dependencies on tasks in other recipes by using
+ :term:`DEPENDS`, then a dependency on "foo" will automatically get
+ rewritten to a dependency on "nativesdk-foo". However, dependencies like
+ the following will not get rewritten automatically::
do_foo[depends] += "recipe:do_foo"
@@ -4737,7 +5417,7 @@ system and gives an overview of their function and contents.
See the :term:`KERNEL_MODULE_AUTOLOAD` variable for more information.
:term:`module_conf`
- Specifies `modprobe.d <https://linux.die.net/man/5/modprobe.d>`_
+ Specifies `modprobe.d <https://linux.die.net/man/5/modprobe.d>`__
syntax lines for inclusion in the ``/etc/modprobe.d/modname.conf``
file.
@@ -4775,7 +5455,7 @@ system and gives an overview of their function and contents.
:term:`MODULE_TARBALL_LINK_NAME`
The link name of the kernel module tarball. This variable is set in
- the ``meta/classes/kernel-artifact-names.bbclass`` file as follows::
+ the ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as follows::
MODULE_TARBALL_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}"
@@ -4789,14 +5469,16 @@ system and gives an overview of their function and contents.
:term:`MODULE_TARBALL_NAME`
The base name of the kernel module tarball. This variable is set in
- the ``meta/classes/kernel-artifact-names.bbclass`` file as follows::
+ the ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as follows::
MODULE_TARBALL_NAME ?= "${KERNEL_ARTIFACT_NAME}"
- The value of the :term:`KERNEL_ARTIFACT_NAME` variable,
- which is set in the same file, has the following value::
+ See :term:`KERNEL_ARTIFACT_NAME` for additional information.
- KERNEL_ARTIFACT_NAME ?= "${PKGE}-${PKGV}-${PKGR}-${MACHINE}${IMAGE_VERSION_SUFFIX}"
+ :term:`MOUNT_BASE`
+ On non-systemd systems (where ``udev-extraconf`` is being used),
+ specifies the base directory for auto-mounting filesystems. The
+ default value is "/run/media".
:term:`MULTIMACH_TARGET_SYS`
Uniquely identifies the type of the target system for which packages
@@ -4808,8 +5490,7 @@ system and gives an overview of their function and contents.
${PACKAGE_ARCH}${TARGET_VENDOR}-${TARGET_OS}
- Some classes (e.g.
- :ref:`cross-canadian <ref-classes-cross-canadian>`) modify the
+ Some classes (e.g. :ref:`ref-classes-cross-canadian`) modify the
:term:`MULTIMACH_TARGET_SYS` value.
See the :term:`STAMP` variable for an example. See the
@@ -4911,7 +5592,7 @@ system and gives an overview of their function and contents.
The minimal command and arguments to run ``objdump``.
:term:`OE_BINCONFIG_EXTRA_MANGLE`
- When inheriting the :ref:`binconfig <ref-classes-binconfig>` class,
+ When inheriting the :ref:`ref-classes-binconfig` class,
this variable specifies additional arguments passed to the "sed"
command. The sed command alters any paths in configuration scripts
that have been set up during compilation. Inheriting this class
@@ -4919,10 +5600,20 @@ system and gives an overview of their function and contents.
``sysroots/`` directory so that all builds that use the script will
use the correct directories for the cross compiling layout.
- See the ``meta/classes/binconfig.bbclass`` in the
+ See the ``meta/classes-recipe/binconfig.bbclass`` in the
:term:`Source Directory` for details on how this class
applies these additional sed command arguments.
+ :term:`OECMAKE_GENERATOR`
+ A variable for the :ref:`ref-classes-cmake` class, allowing to choose
+ which back-end will be generated by CMake to build an application.
+
+ By default, this variable is set to ``Ninja``, which is faster than GNU
+ make, but if building is broken with Ninja, a recipe can use this
+ variable to use GNU make instead::
+
+ OECMAKE_GENERATOR = "Unix Makefiles"
+
:term:`OE_IMPORTS`
An internal variable used to tell the OpenEmbedded build system what
Python modules to import for every Python function run by the system.
@@ -4943,7 +5634,7 @@ system and gives an overview of their function and contents.
Controls how the OpenEmbedded build system spawns interactive
terminals on the host development system (e.g. using the BitBake
command with the ``-c devshell`` command-line option). For more
- information, see the ":ref:`dev-manual/common-tasks:using a development shell`" section in
+ information, see the ":ref:`dev-manual/development-shell:using a development shell`" section in
the Yocto Project Development Tasks Manual.
You can use the following values for the :term:`OE_TERMINAL` variable:
@@ -4966,6 +5657,20 @@ system and gives an overview of their function and contents.
For additional information on how this variable is used, see the
initialization script.
+ :term:`OEQA_REPRODUCIBLE_TEST_PACKAGE`
+ Set the package manager(s) for build reproducibility testing.
+ See :yocto_git:`reproducible.py </poky/tree/meta/lib/oeqa/selftest/cases/reproducible.py>`
+ and :doc:`/test-manual/reproducible-builds`.
+
+ :term:`OEQA_REPRODUCIBLE_TEST_TARGET`
+ Set build target for build reproducibility testing. By default
+ all available recipes are compiled with "bitbake world", see also :term:`EXCLUDE_FROM_WORLD`
+ and :doc:`/test-manual/reproducible-builds`.
+
+ :term:`OEQA_REPRODUCIBLE_TEST_SSTATE_TARGETS`
+ Set build targets which can be rebuilt using :ref:`shared state <overview-manual/concepts:shared state cache>`
+ when running build reproducibility tests. See :doc:`/test-manual/reproducible-builds`.
+
:term:`OLDEST_KERNEL`
Declares the oldest version of the Linux kernel that the produced
binaries must support. This variable is passed into the build of the
@@ -4976,6 +5681,89 @@ system and gives an overview of their function and contents.
default by setting the variable in a custom distribution
configuration file.
+ :term:`OPKG_MAKE_INDEX_EXTRA_PARAMS`
+ Specifies extra parameters for the ``opkg-make-index`` command.
+
+ :term:`OVERLAYFS_ETC_DEVICE`
+ When the :ref:`ref-classes-overlayfs-etc` class is
+ inherited, specifies the device to be mounted for the read/write
+ layer of ``/etc``. There is no default, so you must set this if you
+ wish to enable :ref:`ref-classes-overlayfs-etc`, for
+ example, assuming ``/dev/mmcblk0p2`` was the desired device::
+
+ OVERLAYFS_ETC_DEVICE = "/dev/mmcblk0p2"
+
+ :term:`OVERLAYFS_ETC_EXPOSE_LOWER`
+ When the :ref:`ref-classes-overlayfs-etc` class is
+ inherited, if set to "1" then a read-only access to the original
+ ``/etc`` content will be provided as a ``lower/`` subdirectory of
+ :term:`OVERLAYFS_ETC_MOUNT_POINT`. The default value is "0".
+
+ :term:`OVERLAYFS_ETC_FSTYPE`
+ When the :ref:`ref-classes-overlayfs-etc` class is
+ inherited, specifies the file system type for the read/write
+ layer of ``/etc``. There is no default, so you must set this if you
+ wish to enable :ref:`ref-classes-overlayfs-etc`,
+ for example, assuming the file system is ext4::
+
+ OVERLAYFS_ETC_FSTYPE = "ext4"
+
+ :term:`OVERLAYFS_ETC_MOUNT_OPTIONS`
+ When the :ref:`ref-classes-overlayfs-etc` class is
+ inherited, specifies the mount options for the read-write layer.
+ The default value is "defaults".
+
+ :term:`OVERLAYFS_ETC_MOUNT_POINT`
+ When the :ref:`ref-classes-overlayfs-etc` class is
+ inherited, specifies the parent mount path for the filesystem layers.
+ There is no default, so you must set this if you wish to enable
+ :ref:`ref-classes-overlayfs-etc`, for example if the desired path is
+ "/data"::
+
+ OVERLAYFS_ETC_MOUNT_POINT = "/data"
+
+ :term:`OVERLAYFS_ETC_USE_ORIG_INIT_NAME`
+ When the :ref:`ref-classes-overlayfs-etc` class is inherited, controls
+ how the generated init will be named. For more information, see the
+ :ref:`ref-classes-overlayfs-etc` class documentation. The default value
+ is "1".
+
+ :term:`OVERLAYFS_MOUNT_POINT`
+ When inheriting the :ref:`ref-classes-overlayfs` class,
+ specifies mount point(s) to be used. For example::
+
+ OVERLAYFS_MOUNT_POINT[data] = "/data"
+
+ The assumes you have a ``data.mount`` systemd unit defined elsewhere in
+ your BSP (e.g. in ``systemd-machine-units`` recipe) and it is installed
+ into the image. For more information see :ref:`ref-classes-overlayfs`.
+
+ .. note::
+
+ Although the :ref:`ref-classes-overlayfs` class is
+ inherited by individual recipes, :term:`OVERLAYFS_MOUNT_POINT`
+ should be set in your machine configuration.
+
+ :term:`OVERLAYFS_QA_SKIP`
+ When inheriting the :ref:`ref-classes-overlayfs` class,
+ provides the ability to disable QA checks for particular overlayfs
+ mounts. For example::
+
+ OVERLAYFS_QA_SKIP[data] = "mount-configured"
+
+ .. note::
+
+ Although the :ref:`ref-classes-overlayfs` class is
+ inherited by individual recipes, :term:`OVERLAYFS_QA_SKIP`
+ should be set in your machine configuration.
+
+ :term:`OVERLAYFS_WRITABLE_PATHS`
+ When inheriting the :ref:`ref-classes-overlayfs` class,
+ specifies writable paths used at runtime for the recipe. For
+ example::
+
+ OVERLAYFS_WRITABLE_PATHS[data] = "/usr/share/my-custom-application"
+
:term:`OVERRIDES`
A colon-separated list of overrides that currently apply. Overrides
are a BitBake mechanism that allows variables to be selectively
@@ -4992,7 +5780,7 @@ system and gives an overview of their function and contents.
FOO:an-override = "overridden"
See the
- ":ref:`bitbake:bitbake-user-manual/bitbake-user-manual-metadata:conditional syntax (overrides)`"
+ ":ref:`bitbake-user-manual/bitbake-user-manual-metadata:conditional syntax (overrides)`"
section in the BitBake User Manual for more information on the
overrides mechanism.
@@ -5010,7 +5798,7 @@ system and gives an overview of their function and contents.
An easy way to see what overrides apply is to search for :term:`OVERRIDES`
in the output of the ``bitbake -e`` command. See the
- ":ref:`dev-manual/common-tasks:viewing variable values`" section in the Yocto
+ ":ref:`dev-manual/debugging:viewing variable values`" section in the Yocto
Project Development Tasks Manual for more information.
:term:`P`
@@ -5018,6 +5806,9 @@ system and gives an overview of their function and contents.
${PN}-${PV}
+ :term:`P4DIR`
+ See :term:`bitbake:P4DIR` in the BitBake manual.
+
:term:`PACKAGE_ADD_METADATA`
This variable defines additional metadata to add to packages.
@@ -5031,7 +5822,7 @@ system and gives an overview of their function and contents.
specific by using the package name as a suffix.
You can find out more about applying this variable in the
- ":ref:`dev-manual/common-tasks:adding custom metadata to packages`"
+ ":ref:`dev-manual/packages:adding custom metadata to packages`"
section in the Yocto Project Development Tasks Manual.
:term:`PACKAGE_ARCH`
@@ -5073,15 +5864,9 @@ system and gives an overview of their function and contents.
OpenEmbedded build system uses when packaging data.
You can provide one or more of the following arguments for the
- variable: PACKAGE_CLASSES ?= "package_rpm package_deb package_ipk
- package_tar"
+ variable::
- .. note::
-
- While it is a legal option, the ``package_tar``
- class has limited functionality due to no support for package
- dependencies by that backend. Therefore, it is recommended that
- you do not use it.
+ PACKAGE_CLASSES ?= "package_rpm package_deb package_ipk"
The build system uses only the first argument in the list as the
package manager when creating your image or SDK. However, packages
@@ -5138,21 +5923,9 @@ system and gives an overview of their function and contents.
use of the :term:`INHIBIT_PACKAGE_DEBUG_SPLIT` variable.
You can find out more about debugging using GDB by reading the
- ":ref:`dev-manual/common-tasks:debugging with the gnu project debugger (gdb) remotely`" section
+ ":ref:`dev-manual/debugging:debugging with the gnu project debugger (gdb) remotely`" section
in the Yocto Project Development Tasks Manual.
- :term:`PACKAGE_EXCLUDE_COMPLEMENTARY`
- Prevents specific packages from being installed when you are
- installing complementary packages.
-
- You might find that you want to prevent installing certain packages
- when you are installing complementary packages. For example, if you
- are using :term:`IMAGE_FEATURES` to install
- ``dev-pkgs``, you might not want to install all packages from a
- particular multilib. If you find yourself in this situation, you can
- use the :term:`PACKAGE_EXCLUDE_COMPLEMENTARY` variable to specify regular
- expressions to match the packages you want to exclude.
-
:term:`PACKAGE_EXCLUDE`
Lists packages that should not be installed into an image. For
example::
@@ -5180,6 +5953,18 @@ system and gives an overview of their function and contents.
:term:`BAD_RECOMMENDATIONS` variables for
related information.
+ :term:`PACKAGE_EXCLUDE_COMPLEMENTARY`
+ Prevents specific packages from being installed when you are
+ installing complementary packages.
+
+ You might find that you want to prevent installing certain packages
+ when you are installing complementary packages. For example, if you
+ are using :term:`IMAGE_FEATURES` to install
+ ``dev-pkgs``, you might not want to install all packages from a
+ particular multilib. If you find yourself in this situation, you can
+ use the :term:`PACKAGE_EXCLUDE_COMPLEMENTARY` variable to specify regular
+ expressions to match the packages you want to exclude.
+
:term:`PACKAGE_EXTRA_ARCHS`
Specifies the list of architectures compatible with the device CPU.
This variable is useful when you build for several different devices
@@ -5295,9 +6080,9 @@ system and gives an overview of their function and contents.
:term:`IMAGE_INSTALL` variable to specify
packages for installation. The exception to this is when working with
the :ref:`core-image-minimal-initramfs <ref-manual/images:images>`
- image. When working with an initial RAM filesystem (initramfs) image,
+ image. When working with an initial RAM filesystem (:term:`Initramfs`) image,
use the :term:`PACKAGE_INSTALL` variable. For information on creating an
- initramfs, see the ":ref:`dev-manual/common-tasks:building an initial ram filesystem (initramfs) image`" section
+ :term:`Initramfs`, see the ":ref:`dev-manual/building:building an initial ram filesystem (Initramfs) image`" section
in the Yocto Project Development Tasks Manual.
:term:`PACKAGE_INSTALL_ATTEMPTONLY`
@@ -5320,7 +6105,7 @@ system and gives an overview of their function and contents.
:term:`PACKAGE_WRITE_DEPS`.
For information on running post-installation scripts, see the
- ":ref:`dev-manual/common-tasks:post-installation scripts`"
+ ":ref:`dev-manual/new-recipe:post-installation scripts`"
section in the Yocto Project Development Tasks Manual.
:term:`PACKAGECONFIG`
@@ -5348,31 +6133,28 @@ system and gives an overview of their function and contents.
omit any argument you like but must retain the separating commas. The
order is important and specifies the following:
- 1. Extra arguments that should be added to the configure script
- argument list (:term:`EXTRA_OECONF` or
- :term:`PACKAGECONFIG_CONFARGS`) if
- the feature is enabled.
+ #. Extra arguments that should be added to :term:`PACKAGECONFIG_CONFARGS`
+ if the feature is enabled.
- 2. Extra arguments that should be added to :term:`EXTRA_OECONF` or
- :term:`PACKAGECONFIG_CONFARGS` if the feature is disabled.
+ #. Extra arguments that should be added to :term:`PACKAGECONFIG_CONFARGS`
+ if the feature is disabled.
- 3. Additional build dependencies (:term:`DEPENDS`)
+ #. Additional build dependencies (:term:`DEPENDS`)
that should be added if the feature is enabled.
- 4. Additional runtime dependencies (:term:`RDEPENDS`)
+ #. Additional runtime dependencies (:term:`RDEPENDS`)
that should be added if the feature is enabled.
- 5. Additional runtime recommendations
+ #. Additional runtime recommendations
(:term:`RRECOMMENDS`) that should be added if
the feature is enabled.
- 6. Any conflicting (that is, mutually exclusive) :term:`PACKAGECONFIG`
+ #. Any conflicting (that is, mutually exclusive) :term:`PACKAGECONFIG`
settings for this feature.
Consider the following :term:`PACKAGECONFIG` block taken from the
``librsvg`` recipe. In this example the feature is ``gtk``, which has
- three arguments that determine the feature's behavior.
- ::
+ three arguments that determine the feature's behavior::
PACKAGECONFIG[gtk] = "--with-gtk3,--without-gtk3,gtk+3"
@@ -5413,20 +6195,51 @@ system and gives an overview of their function and contents.
PACKAGECONFIG:append:pn-recipename = " f4"
+ Consider the following example of a :ref:`ref-classes-cmake` recipe with a systemd service
+ in which :term:`PACKAGECONFIG` is used to transform the systemd service
+ into a feature that can be easily enabled or disabled via :term:`PACKAGECONFIG`::
+
+ example.c
+ example.service
+ CMakeLists.txt
+
+ The ``CMakeLists.txt`` file contains::
+
+ if(WITH_SYSTEMD)
+ install(FILES ${PROJECT_SOURCE_DIR}/example.service DESTINATION /etc/systemd/systemd)
+ endif(WITH_SYSTEMD)
+
+ In order to enable the installation of ``example.service`` we need to
+ ensure that ``-DWITH_SYSTEMD=ON`` is passed to the ``cmake`` command
+ execution. Recipes that have ``CMakeLists.txt`` generally inherit the
+ :ref:`ref-classes-cmake` class, that runs ``cmake`` with
+ :term:`EXTRA_OECMAKE`, which :term:`PACKAGECONFIG_CONFARGS` will be
+ appended to. Now, knowing that :term:`PACKAGECONFIG_CONFARGS` is
+ automatically filled with either the first or second element of
+ :term:`PACKAGECONFIG` flag value, the recipe would be like::
+
+ inherit cmake
+ PACKAGECONFIG = "systemd"
+ PACKAGECONFIG[systemd] = "-DWITH_SYSTEMD=ON,-DWITH_SYSTEMD=OFF"
+
+ A side note to this recipe is to check if ``systemd`` is in fact the used :term:`INIT_MANAGER`
+ or not::
+
+ PACKAGECONFIG = "${@'systemd' if d.getVar('INIT_MANAGER') == 'systemd' else ''}"
+
:term:`PACKAGECONFIG_CONFARGS`
A space-separated list of configuration options generated from the
:term:`PACKAGECONFIG` setting.
- Classes such as :ref:`autotools <ref-classes-autotools>` and
- :ref:`cmake <ref-classes-cmake>` use :term:`PACKAGECONFIG_CONFARGS` to
- pass :term:`PACKAGECONFIG` options to ``configure`` and ``cmake``,
- respectively. If you are using :term:`PACKAGECONFIG` but not a class that
- handles the ``do_configure`` task, then you need to use
+ Classes such as :ref:`ref-classes-autotools` and :ref:`ref-classes-cmake`
+ use :term:`PACKAGECONFIG_CONFARGS` to pass :term:`PACKAGECONFIG` options
+ to ``configure`` and ``cmake``, respectively. If you are using
+ :term:`PACKAGECONFIG` but not a class that handles the
+ :ref:`ref-tasks-configure` task, then you need to use
:term:`PACKAGECONFIG_CONFARGS` appropriately.
:term:`PACKAGEGROUP_DISABLE_COMPLEMENTARY`
- For recipes inheriting the
- :ref:`packagegroup <ref-classes-packagegroup>` class, setting
+ For recipes inheriting the :ref:`ref-classes-packagegroup` class, setting
:term:`PACKAGEGROUP_DISABLE_COMPLEMENTARY` to "1" specifies that the
normal complementary packages (i.e. ``-dev``, ``-dbg``, and so forth)
should not be automatically created by the ``packagegroup`` recipe,
@@ -5471,7 +6284,7 @@ system and gives an overview of their function and contents.
For an example of how to use the :term:`PACKAGES_DYNAMIC` variable when
you are splitting packages, see the
- ":ref:`dev-manual/common-tasks:handling optional module packaging`"
+ ":ref:`dev-manual/packages:handling optional module packaging`"
section in the Yocto Project Development Tasks Manual.
:term:`PACKAGESPLITFUNCS`
@@ -5485,17 +6298,20 @@ system and gives an overview of their function and contents.
desired splitting.
:term:`PARALLEL_MAKE`
- Extra options passed to the ``make`` command during the
- :ref:`ref-tasks-compile` task in order to specify
- parallel compilation on the local build host. This variable is
- usually in the form "-j x", where x represents the maximum number of
- parallel threads ``make`` can run.
+
+ Extra options passed to the build tool command (``make``,
+ ``ninja`` or more specific build engines, like the Go language one)
+ during the :ref:`ref-tasks-compile` task, to specify parallel compilation
+ on the local build host. This variable is usually in the form "-j x",
+ where x represents the maximum number of parallel threads such engines
+ can run.
.. note::
- In order for :term:`PARALLEL_MAKE` to be effective, ``make`` must be
- called with ``${``\ :term:`EXTRA_OEMAKE`\ ``}``. An easy way to ensure
- this is to use the ``oe_runmake`` function.
+ For software compiled by ``make``, in order for :term:`PARALLEL_MAKE`
+ to be effective, ``make`` must be called with
+ ``${``\ :term:`EXTRA_OEMAKE`\ ``}``. An easy
+ way to ensure this is to use the ``oe_runmake`` function.
By default, the OpenEmbedded build system automatically sets this
variable to be equal to the number of cores the build system uses.
@@ -5503,10 +6319,10 @@ system and gives an overview of their function and contents.
.. note::
If the software being built experiences dependency issues during
- the ``do_compile`` task that result in race conditions, you can clear
+ the :ref:`ref-tasks-compile` task that result in race conditions, you can clear
the :term:`PARALLEL_MAKE` variable within the recipe as a workaround. For
information on addressing race conditions, see the
- ":ref:`dev-manual/common-tasks:debugging parallel make races`"
+ ":ref:`dev-manual/debugging:debugging parallel make races`"
section in the Yocto Project Development Tasks Manual.
For single socket systems (i.e. one CPU), you should not have to
@@ -5516,27 +6332,28 @@ system and gives an overview of their function and contents.
not set higher than "-j 20".
For more information on speeding up builds, see the
- ":ref:`dev-manual/common-tasks:speeding up a build`"
+ ":ref:`dev-manual/speeding-up-build:speeding up a build`"
section in the Yocto Project Development Tasks Manual.
:term:`PARALLEL_MAKEINST`
- Extra options passed to the ``make install`` command during the
- :ref:`ref-tasks-install` task in order to specify
+ Extra options passed to the build tool install command
+ (``make install``, ``ninja install`` or more specific ones)
+ during the :ref:`ref-tasks-install` task in order to specify
parallel installation. This variable defaults to the value of
:term:`PARALLEL_MAKE`.
.. note::
- In order for :term:`PARALLEL_MAKEINST` to be effective, ``make`` must
- be called with
+ For software compiled by ``make``, in order for :term:`PARALLEL_MAKEINST`
+ to be effective, ``make`` must be called with
``${``\ :term:`EXTRA_OEMAKE`\ ``}``. An easy
way to ensure this is to use the ``oe_runmake`` function.
If the software being built experiences dependency issues during
- the ``do_install`` task that result in race conditions, you can
+ the :ref:`ref-tasks-install` task that result in race conditions, you can
clear the :term:`PARALLEL_MAKEINST` variable within the recipe as a
workaround. For information on addressing race conditions, see the
- ":ref:`dev-manual/common-tasks:debugging parallel make races`"
+ ":ref:`dev-manual/debugging:debugging parallel make races`"
section in the Yocto Project Development Tasks Manual.
:term:`PATCHRESOLVE`
@@ -5573,6 +6390,14 @@ system and gives an overview of their function and contents.
:term:`PE` is the default value of the :term:`PKGE` variable.
+ :term:`PEP517_WHEEL_PATH`
+ When used by recipes that inherit the :ref:`ref-classes-python_pep517`
+ class, denotes the path to ``dist/`` (short for distribution) where the
+ binary archive ``wheel`` is built.
+
+ :term:`PERSISTENT_DIR`
+ See :term:`bitbake:PERSISTENT_DIR` in the BitBake manual.
+
:term:`PF`
Specifies the recipe or package name and includes all version and
revision numbers (i.e. ``glibc-2.13-r20+svnr15508/`` and
@@ -5580,10 +6405,11 @@ system and gives an overview of their function and contents.
${:term:`PN`}-${:term:`EXTENDPE`}${:term:`PV`}-${:term:`PR`}
:term:`PIXBUF_PACKAGES`
- When inheriting the :ref:`pixbufcache <ref-classes-pixbufcache>`
+ When inheriting the :ref:`ref-classes-pixbufcache`
class, this variable identifies packages that contain the pixbuf
- loaders used with ``gdk-pixbuf``. By default, the ``pixbufcache``
- class assumes that the loaders are in the recipe's main package (i.e.
+ loaders used with ``gdk-pixbuf``. By default, the
+ :ref:`ref-classes-pixbufcache` class assumes that
+ the loaders are in the recipe's main package (i.e.
``${``\ :term:`PN`\ ``}``). Use this variable if the
loaders you need are in a package other than that main package.
@@ -5595,9 +6421,8 @@ system and gives an overview of their function and contents.
When using the :term:`PKG` variable, you must use a package name override.
- For example, when the :ref:`debian <ref-classes-debian>` class
- renames the output package, it does so by setting
- ``PKG:packagename``.
+ For example, when the :ref:`ref-classes-debian` class renames the output
+ package, it does so by setting ``PKG:packagename``.
:term:`PKG_CONFIG_PATH`
The path to ``pkg-config`` files for the current build context.
@@ -5625,7 +6450,7 @@ system and gives an overview of their function and contents.
For examples of how this data is used, see the
":ref:`overview-manual/concepts:automatically added runtime dependencies`"
section in the Yocto Project Overview and Concepts Manual and the
- ":ref:`dev-manual/common-tasks:viewing package information with \`\`oe-pkgdata-util\`\``"
+ ":ref:`dev-manual/debugging:viewing package information with \`\`oe-pkgdata-util\`\``"
section in the Yocto Project Development Tasks Manual. For more
information on the shared, global-state directory, see
:term:`STAGING_DIR_HOST`.
@@ -5685,24 +6510,12 @@ system and gives an overview of their function and contents.
packages for the target and for Multilib, :term:`PN` would be ``bash``
and ``lib64-bash``, respectively.
- :term:`PNBLACKLIST`
- Lists recipes you do not want the OpenEmbedded build system to build.
- This variable works in conjunction with the
- :ref:`blacklist <ref-classes-blacklist>` class, which is inherited
- globally.
-
- To prevent a recipe from being built, use the :term:`PNBLACKLIST`
- variable in your ``local.conf`` file. Here is an example that
- prevents ``myrecipe`` from being built::
-
- PNBLACKLIST[myrecipe] = "Not supported by our organization."
-
:term:`POPULATE_SDK_POST_HOST_COMMAND`
Specifies a list of functions to call once the OpenEmbedded build
system has created the host part of the SDK. You can specify
- functions separated by semicolons::
+ functions separated by spaces::
- POPULATE_SDK_POST_HOST_COMMAND += "function; ... "
+ POPULATE_SDK_POST_HOST_COMMAND += "function"
If you need to pass the SDK path to a command within a function, you
can use ``${SDK_DIR}``, which points to the parent directory used by
@@ -5712,9 +6525,9 @@ system and gives an overview of their function and contents.
:term:`POPULATE_SDK_POST_TARGET_COMMAND`
Specifies a list of functions to call once the OpenEmbedded build
system has created the target part of the SDK. You can specify
- functions separated by semicolons::
+ functions separated by spaces::
- POPULATE_SDK_POST_TARGET_COMMAND += "function; ... "
+ POPULATE_SDK_POST_TARGET_COMMAND += "function"
If you need to pass the SDK path to a command within a function, you
can use ``${SDK_DIR}``, which points to the parent directory used by
@@ -5753,7 +6566,7 @@ system and gives an overview of their function and contents.
Because manually managing :term:`PR` can be cumbersome and error-prone,
an automated solution exists. See the
- ":ref:`dev-manual/common-tasks:working with a pr service`" section
+ ":ref:`dev-manual/packages:working with a pr service`" section
in the Yocto Project Development Tasks Manual for more information.
:term:`PREFERRED_PROVIDER`
@@ -5770,13 +6583,13 @@ system and gives an overview of their function and contents.
The :term:`PREFERRED_PROVIDER` variable is set with the name (:term:`PN`) of
the recipe you prefer to provide "virtual/kernel".
- Following are more examples::
+ Here are more examples::
PREFERRED_PROVIDER_virtual/xserver = "xserver-xf86"
PREFERRED_PROVIDER_virtual/libgl ?= "mesa"
For more
- information, see the ":ref:`dev-manual/common-tasks:using virtual providers`"
+ information, see the ":ref:`dev-manual/new-recipe:using virtual providers`"
section in the Yocto Project Development Tasks Manual.
.. note::
@@ -5787,6 +6600,9 @@ system and gives an overview of their function and contents.
desirable since this mechanism is designed to select between mutually
exclusive alternative providers.
+ :term:`PREFERRED_PROVIDERS`
+ See :term:`bitbake:PREFERRED_PROVIDERS` in the BitBake manual.
+
:term:`PREFERRED_VERSION`
If there are multiple versions of a recipe available, this variable
determines which version should be given preference. You must always
@@ -5856,9 +6672,8 @@ system and gives an overview of their function and contents.
source, and then locations specified by
:term:`MIRRORS` in that order.
- Assuming your distribution (:term:`DISTRO`) is "poky",
- the default value for :term:`PREMIRRORS` is defined in the
- ``conf/distro/poky.conf`` file in the ``meta-poky`` Git repository.
+ The default value for :term:`PREMIRRORS` is defined in the
+ ``meta/classes-global/mirrors.bbclass`` file in the core metadata layer.
Typically, you could add a specific server for the build system to
attempt before any others by adding something like the following to
@@ -5933,7 +6748,7 @@ system and gives an overview of their function and contents.
.. note::
A recipe's own recipe name (:term:`PN`) is always implicitly prepended
- to `PROVIDES`, so while using "+=" in the above example may not be
+ to :term:`PROVIDES`, so while using "+=" in the above example may not be
strictly necessary it is recommended to avoid confusion.
In addition to providing recipes under alternate names, the
@@ -5953,11 +6768,11 @@ system and gives an overview of their function and contents.
.. note::
- A corresponding mechanism for virtual runtime dependencies
- (packages) exists. However, the mechanism does not depend on any
- special functionality beyond ordinary variable assignments. For
- example, ``VIRTUAL-RUNTIME_dev_manager`` refers to the package of
- the component that manages the ``/dev`` directory.
+ A corresponding mechanism for virtual runtime dependencies (packages)
+ exists. However, the mechanism does not depend on any special
+ functionality beyond ordinary variable assignments. For example,
+ :term:`VIRTUAL-RUNTIME_dev_manager <VIRTUAL-RUNTIME>` refers to the
+ package of the component that manages the ``/dev`` directory.
Setting the "preferred provider" for runtime dependencies is as
simple as using the following assignment in a configuration file::
@@ -5968,15 +6783,15 @@ system and gives an overview of their function and contents.
:term:`PRSERV_HOST`
The network based :term:`PR` service host and port.
- The ``conf/local.conf.sample.extended`` configuration file in the
- :term:`Source Directory` shows how the
- :term:`PRSERV_HOST` variable is set::
+ The ``conf/templates/default/local.conf.sample.extended`` configuration
+ file in the :term:`Source Directory` shows how the :term:`PRSERV_HOST`
+ variable is set::
PRSERV_HOST = "localhost:0"
You must
set the variable if you want to automatically start a local :ref:`PR
- service <dev-manual/common-tasks:working with a pr service>`. You can
+ service <dev-manual/packages:working with a pr service>`. You can
set :term:`PRSERV_HOST` to other values to use a remote PR service.
@@ -5990,7 +6805,7 @@ system and gives an overview of their function and contents.
:term:`PTEST_ENABLED`
Specifies whether or not :ref:`Package
- Test <dev-manual/common-tasks:testing packages with ptest>` (ptest)
+ Test <dev-manual/packages:testing packages with ptest>` (ptest)
functionality is enabled when building a recipe. You should not set
this variable directly. Enabling and disabling building Package Tests
at build time should be done by adding "ptest" to (or removing it
@@ -6006,37 +6821,45 @@ system and gives an overview of their function and contents.
:term:`PV` is the default value of the :term:`PKGV` variable.
+ :term:`PYPI_PACKAGE`
+ When inheriting the :ref:`ref-classes-pypi` class, specifies the
+ `PyPI <https://pypi.org/>`__ package name to be built. The default value
+ is set based upon :term:`BPN` (stripping any "python-" or "python3-"
+ prefix off if present), however for some packages it will need to be set
+ explicitly if that will not match the package name (e.g. where the
+ package name has a prefix, underscores, uppercase letters etc.)
+
:term:`PYTHON_ABI`
- When used by recipes that inherit the
- :ref:`distutils3 <ref-classes-distutils3>`,
- :ref:`setuptools3 <ref-classes-setuptools3>` classes, denotes the
- Application Binary Interface (ABI) currently in use for Python. By
- default, the ABI is "m". You do not have to set this variable as the
- OpenEmbedded build system sets it for you.
+ When used by recipes that inherit the :ref:`ref-classes-setuptools3`
+ class, denotes the Application Binary Interface (ABI) currently in use
+ for Python. By default, the ABI is "m". You do not have to set this
+ variable as the OpenEmbedded build system sets it for you.
The OpenEmbedded build system uses the ABI to construct directory
names used when installing the Python headers and libraries in
sysroot (e.g. ``.../python3.3m/...``).
- Recipes that inherit the :ref:`distutils3 <ref-classes-distutils3>` class during cross-builds also
- use this variable to locate the headers and libraries of the
- appropriate Python that the extension is targeting.
+ :term:`QA_EMPTY_DIRS`
+ Specifies a list of directories that are expected to be empty when
+ packaging; if ``empty-dirs`` appears in :term:`ERROR_QA` or
+ :term:`WARN_QA` these will be checked and an error or warning
+ (respectively) will be produced.
- :term:`PYTHON_PN`
- When used by recipes that inherit the
- `distutils3 <ref-classes-distutils3>`,
- :ref:`setuptools3 <ref-classes-setuptools3>` classes, specifies the
- major Python version being built. For Python 3.x, :term:`PYTHON_PN` would
- be "python3". You do not have to set this variable as the
- OpenEmbedded build system automatically sets it for you.
+ The default :term:`QA_EMPTY_DIRS` value is set in
+ :ref:`insane.bbclass <ref-classes-insane>`.
- The variable allows recipes to use common infrastructure such as the
- following::
+ :term:`QA_EMPTY_DIRS_RECOMMENDATION`
+ Specifies a recommendation for why a directory must be empty,
+ which will be included in the error message if a specific directory
+ is found to contain files. Must be overridden with the directory
+ path to match on.
+
+ If no recommendation is specified for a directory, then the default
+ "but it is expected to be empty" will be used.
- DEPENDS += "${PYTHON_PN}-native"
+ An example message shows if files were present in '/dev'::
- In the previous example,
- the version of the dependency is :term:`PYTHON_PN`.
+ QA_EMPTY_DIRS_RECOMMENDATION:/dev = "but all devices must be created at runtime"
:term:`RANLIB`
The minimal command and arguments to run ``ranlib``.
@@ -6090,7 +6913,7 @@ system and gives an overview of their function and contents.
The practical effect of the above :term:`RDEPENDS` assignment is that
``bar`` and ``baz`` will be declared as dependencies inside the
package ``foo`` when it is written out by one of the
- :ref:`do_package_write_\* <ref-tasks-package_write_deb>` tasks.
+ :ref:`do_package_write_* <ref-tasks-package_write_deb>` tasks.
Exactly how this is done depends on which package format is used,
which is determined by
:term:`PACKAGE_CLASSES`. When the
@@ -6102,11 +6925,11 @@ system and gives an overview of their function and contents.
added. This dependency is from the recipe's
:ref:`ref-tasks-build` (not to be confused with
:ref:`ref-tasks-compile`) task to the
- ``do_package_write_*`` task of the recipes that build ``bar`` and
+ :ref:`do_package_write_* <ref-tasks-package_write_deb>` task of the recipes that build ``bar`` and
``baz``.
The names of the packages you list within :term:`RDEPENDS` must be the
- names of other packages - they cannot be recipe names. Although
+ names of other packages --- they cannot be recipe names. Although
package names and recipe names usually match, the important point
here is that you are providing package names within the :term:`RDEPENDS`
variable. For an example of the default list of packages created from
@@ -6137,7 +6960,7 @@ system and gives an overview of their function and contents.
The package names you use with :term:`RDEPENDS` must appear as they would
in the :term:`PACKAGES` variable. The :term:`PKG` variable
allows a different name to be used for the final package (e.g. the
- :ref:`debian <ref-classes-debian>` class uses this to rename
+ :ref:`ref-classes-debian` class uses this to rename
packages), but this final package name cannot be used with
:term:`RDEPENDS`, which makes sense as :term:`RDEPENDS` is meant to be
independent of the package format used.
@@ -6170,12 +6993,27 @@ system and gives an overview of their function and contents.
RDEPENDS:${PN} = "foo (>= 1.2)"
- For information on build-time dependencies, see the
- :term:`DEPENDS` variable. You can also see the
- ":ref:`bitbake:bitbake-user-manual/bitbake-user-manual-metadata:tasks`" and
- ":ref:`bitbake:bitbake-user-manual/bitbake-user-manual-execution:dependencies`" sections in the
- BitBake User Manual for additional information on tasks and
- dependencies.
+ For information on build-time dependencies, see the :term:`DEPENDS`
+ variable. You can also see the
+ ":ref:`bitbake-user-manual/bitbake-user-manual-metadata:tasks`" and
+ ":ref:`bitbake-user-manual/bitbake-user-manual-execution:dependencies`" sections in the
+ BitBake User Manual for additional information on tasks and dependencies.
+
+ :term:`RECIPE_MAINTAINER`
+ This variable defines the name and e-mail address of the maintainer of a
+ recipe. Such information can be used by human users submitted changes,
+ and by automated tools to send notifications, for example about
+ vulnerabilities or source updates.
+
+ The variable can be defined in a global distribution :oe_git:`maintainers.inc
+ </openembedded-core/tree/meta/conf/distro/include/maintainers.inc>` file::
+
+ meta/conf/distro/include/maintainers.inc:RECIPE_MAINTAINER:pn-sysvinit = "Ross Burton <ross.burton@arm.com>"
+
+ It can also be directly defined in a recipe,
+ for example in the ``libgpiod`` one::
+
+ RECIPE_MAINTAINER = "Bartosz Golaszewski <brgl@bgdev.pl>"
:term:`RECIPE_NO_UPDATE_REASON`
If a recipe should not be replaced by a more recent upstream version,
@@ -6184,9 +7022,41 @@ system and gives an overview of their function and contents.
in the ":ref:`ref-manual/devtool-reference:checking on the upgrade status of a recipe`"
section.
+ :term:`RECIPE_SYSROOT`
+ This variable points to the directory that holds all files populated from
+ recipes specified in :term:`DEPENDS`. As the name indicates,
+ think of this variable as a custom root (``/``) for the recipe that will be
+ used by the compiler in order to find headers and other files needed to complete
+ its job.
+
+ This variable is related to :term:`STAGING_DIR_HOST` or :term:`STAGING_DIR_TARGET`
+ according to the type of the recipe and the build target.
+
+ To better understand this variable, consider the following examples:
+
+ - For ``#include <header.h>``, ``header.h`` should be in ``"${RECIPE_SYSROOT}/usr/include"``
+
+ - For ``-lexample``, ``libexample.so`` should be in ``"${RECIPE_SYSROOT}/lib"``
+ or other library sysroot directories.
+
+ The default value is ``"${WORKDIR}/recipe-sysroot"``.
+ Do not modify it.
+
+ :term:`RECIPE_SYSROOT_NATIVE`
+ This is similar to :term:`RECIPE_SYSROOT` but the populated files are from
+ ``-native`` recipes. This allows a recipe built for the target machine to
+ use ``native`` tools.
+
+ This variable is related to :term:`STAGING_DIR_NATIVE`.
+
+ The default value is ``"${WORKDIR}/recipe-sysroot-native"``.
+ Do not modify it.
+
+ :term:`REPODIR`
+ See :term:`bitbake:REPODIR` in the BitBake manual.
+
:term:`REQUIRED_DISTRO_FEATURES`
- When inheriting the
- :ref:`features_check <ref-classes-features_check>`
+ When inheriting the :ref:`ref-classes-features_check`
class, this variable identifies distribution features that must exist
in the current configuration in order for the OpenEmbedded build
system to build the recipe. In other words, if the
@@ -6207,10 +7077,9 @@ system and gives an overview of their function and contents.
for the same recipe, the :term:`REQUIRED_VERSION` value applies.
:term:`RM_WORK_EXCLUDE`
- With ``rm_work`` enabled, this variable specifies a list of recipes
- whose work directories should not be removed. See the
- ":ref:`ref-classes-rm-work`" section for more
- details.
+ With :ref:`ref-classes-rm-work` enabled, this variable
+ specifies a list of recipes whose work directories should not be removed.
+ See the ":ref:`ref-classes-rm-work`" section for more details.
:term:`ROOT_HOME`
Defines the root home directory. By default, this directory is set as
@@ -6240,14 +7109,14 @@ system and gives an overview of their function and contents.
Indicates a filesystem image to include as the root filesystem.
The :term:`ROOTFS` variable is an optional variable used with the
- :ref:`image-live <ref-classes-image-live>` class.
+ :ref:`ref-classes-image-live` class.
:term:`ROOTFS_POSTINSTALL_COMMAND`
Specifies a list of functions to call after the OpenEmbedded build
system has installed packages. You can specify functions separated by
- semicolons::
+ spaces::
- ROOTFS_POSTINSTALL_COMMAND += "function; ... "
+ ROOTFS_POSTINSTALL_COMMAND += "function"
If you need to pass the root filesystem path to a command within a
function, you can use ``${IMAGE_ROOTFS}``, which points to the
@@ -6258,9 +7127,9 @@ system and gives an overview of their function and contents.
:term:`ROOTFS_POSTPROCESS_COMMAND`
Specifies a list of functions to call once the OpenEmbedded build
system has created the root filesystem. You can specify functions
- separated by semicolons::
+ separated by spaces::
- ROOTFS_POSTPROCESS_COMMAND += "function; ... "
+ ROOTFS_POSTPROCESS_COMMAND += "function"
If you need to pass the root filesystem path to a command within a
function, you can use ``${IMAGE_ROOTFS}``, which points to the
@@ -6273,9 +7142,9 @@ system and gives an overview of their function and contents.
system has removed unnecessary packages. When runtime package
management is disabled in the image, several packages are removed
including ``base-passwd``, ``shadow``, and ``update-alternatives``.
- You can specify functions separated by semicolons::
+ You can specify functions separated by spaces::
- ROOTFS_POSTUNINSTALL_COMMAND += "function; ... "
+ ROOTFS_POSTUNINSTALL_COMMAND += "function"
If you need to pass the root filesystem path to a command within a
function, you can use ``${IMAGE_ROOTFS}``, which points to the
@@ -6286,9 +7155,9 @@ system and gives an overview of their function and contents.
:term:`ROOTFS_PREPROCESS_COMMAND`
Specifies a list of functions to call before the OpenEmbedded build
system has created the root filesystem. You can specify functions
- separated by semicolons::
+ separated by spaces::
- ROOTFS_PREPROCESS_COMMAND += "function; ... "
+ ROOTFS_PREPROCESS_COMMAND += "function"
If you need to pass the root filesystem path to a command within a
function, you can use ``${IMAGE_ROOTFS}``, which points to the
@@ -6296,6 +7165,9 @@ system and gives an overview of their function and contents.
:term:`IMAGE_ROOTFS` variable for more
information.
+ :term:`RPMBUILD_EXTRA_PARAMS`
+ Specifies extra user-defined parameters for the ``rpmbuild`` command.
+
:term:`RPROVIDES`
A list of package name aliases that a package also provides. These
aliases are useful for satisfying runtime dependencies of other
@@ -6346,7 +7218,7 @@ system and gives an overview of their function and contents.
In the
example, the package name (``${PN}-dev``) must appear as it would in
the :term:`PACKAGES` namespace before any renaming of the output package
- by classes such as ``debian.bbclass``.
+ by classes such as :ref:`ref-classes-debian`.
BitBake, which the OpenEmbedded build system uses, supports
specifying versioned recommends. Although the syntax varies depending
@@ -6413,6 +7285,11 @@ system and gives an overview of their function and contents.
RSUGGESTS:${PN} = "useful_package another_package"
+ :term:`RUST_CHANNEL`
+ Specifies which version of Rust to build - "stable", "beta" or "nightly".
+ The default value is "stable". Set this at your own risk, as values other
+ than "stable" are not guaranteed to work at a given time.
+
:term:`S`
The location in the :term:`Build Directory` where
unpacked recipe source code resides. By default, this directory is
@@ -6425,7 +7302,7 @@ system and gives an overview of their function and contents.
to find the unpacked source.
As an example, assume a :term:`Source Directory`
- top-level folder named ``poky`` and a default Build Directory at
+ top-level folder named ``poky`` and a default :term:`Build Directory` at
``poky/build``. In this case, the work directory the build system
uses to keep the unpacked recipe for ``db`` is the following::
@@ -6439,7 +7316,7 @@ system and gives an overview of their function and contents.
from the default value of :term:`S`, you must set it specifically so the
source can be located::
- SRC_URI = "git://path/to/repo.git"
+ SRC_URI = "git://path/to/repo.git;branch=main"
S = "${WORKDIR}/git"
:term:`SANITY_REQUIRED_UTILITIES`
@@ -6463,16 +7340,29 @@ system and gives an overview of their function and contents.
The target architecture for the SDK. Typically, you do not directly
set this variable. Instead, use :term:`SDKMACHINE`.
+ :term:`SDK_ARCHIVE_TYPE`
+ Specifies the type of archive to create for the SDK. Valid values:
+
+ - ``tar.xz`` (default)
+ - ``zip``
+
+ Only one archive type can be specified.
+
+ :term:`SDK_BUILDINFO_FILE`
+ When using the :ref:`ref-classes-image-buildinfo` class,
+ specifies the file in the SDK to write the build information into. The
+ default value is "``/buildinfo``".
+
:term:`SDK_CUSTOM_TEMPLATECONF`
When building the extensible SDK, if :term:`SDK_CUSTOM_TEMPLATECONF` is set to
- "1" and a ``conf/templateconf.conf`` file exists in the build directory
+ "1" and a ``conf/templateconf.cfg`` file exists in the :term:`Build Directory`
(:term:`TOPDIR`) then this will be copied into the SDK.
:term:`SDK_DEPLOY`
The directory set up and used by the
- :ref:`populate_sdk_base <ref-classes-populate-sdk>` class to which
- the SDK is deployed. The ``populate_sdk_base`` class defines
- :term:`SDK_DEPLOY` as follows::
+ :ref:`populate_sdk_base <ref-classes-populate-sdk>` class to which the
+ SDK is deployed. The :ref:`populate_sdk_base <ref-classes-populate-sdk>`
+ class defines :term:`SDK_DEPLOY` as follows::
SDK_DEPLOY = "${TMPDIR}/deploy/sdk"
@@ -6544,76 +7434,17 @@ system and gives an overview of their function and contents.
:term:`SDK_EXT_TYPE` is set to "minimal", and defaults to "1" if
:term:`SDK_EXT_TYPE` is set to "full".
- :term:`SDK_INHERIT_BLACKLIST`
- A list of classes to remove from the :term:`INHERIT`
- value globally within the extensible SDK configuration. The
- :ref:`populate-sdk-ext <ref-classes-populate-sdk-*>` class sets the
- default value::
-
- SDK_INHERIT_BLACKLIST ?= "buildhistory icecc"
-
- Some classes are not generally applicable within the extensible SDK
- context. You can use this variable to disable those classes.
-
- For additional information on how to customize the extensible SDK's
- configuration, see the
- ":ref:`sdk-manual/appendix-customizing:configuring the extensible sdk`"
- section in the Yocto Project Application Development and the
- Extensible Software Development Kit (eSDK) manual.
-
- :term:`SDK_LOCAL_CONF_BLACKLIST`
- A list of variables not allowed through from the OpenEmbedded build
- system configuration into the extensible SDK configuration. Usually,
- these are variables that are specific to the machine on which the
- build system is running and thus would be potentially problematic
- within the extensible SDK.
-
- By default, :term:`SDK_LOCAL_CONF_BLACKLIST` is set in the
- :ref:`populate-sdk-ext <ref-classes-populate-sdk-*>` class and
- excludes the following variables:
-
- - :term:`CONF_VERSION`
- - :term:`BB_NUMBER_THREADS`
- - :term:`BB_NUMBER_PARSE_THREADS`
- - :term:`PARALLEL_MAKE`
- - :term:`PRSERV_HOST`
- - :term:`SSTATE_MIRRORS` :term:`DL_DIR`
- - :term:`SSTATE_DIR` :term:`TMPDIR`
- - :term:`BB_SERVER_TIMEOUT`
-
- For additional information on how to customize the extensible SDK's
- configuration, see the
- ":ref:`sdk-manual/appendix-customizing:configuring the extensible sdk`"
- section in the Yocto Project Application Development and the
- Extensible Software Development Kit (eSDK) manual.
-
- :term:`SDK_LOCAL_CONF_WHITELIST`
- A list of variables allowed through from the OpenEmbedded build
- system configuration into the extensible SDK configuration. By
- default, the list of variables is empty and is set in the
- :ref:`populate-sdk-ext <ref-classes-populate-sdk-*>` class.
-
- This list overrides the variables specified using the
- :term:`SDK_LOCAL_CONF_BLACKLIST` variable as well as
- other variables automatically added due to the "/" character
- being found at the start of the
- value, which is usually indicative of being a path and thus might not
- be valid on the system where the SDK is installed.
-
- For additional information on how to customize the extensible SDK's
- configuration, see the
- ":ref:`sdk-manual/appendix-customizing:configuring the extensible sdk`"
- section in the Yocto Project Application Development and the
- Extensible Software Development Kit (eSDK) manual.
-
:term:`SDK_NAME`
- The base name for SDK output files. The name is derived from the
- :term:`DISTRO`, :term:`TCLIBC`,
- :term:`SDK_ARCH`,
- :term:`IMAGE_BASENAME`, and
- :term:`TUNE_PKGARCH` variables::
+ The base name for SDK output files. The default value (as set in
+ ``meta-poky/conf/distro/poky.conf``) is derived from the
+ :term:`DISTRO`,
+ :term:`TCLIBC`,
+ :term:`SDKMACHINE`,
+ :term:`IMAGE_BASENAME`,
+ :term:`TUNE_PKGARCH`, and
+ :term:`MACHINE` variables::
- SDK_NAME = "${DISTRO}-${TCLIBC}-${SDK_ARCH}-${IMAGE_BASENAME}-${TUNE_PKGARCH}"
+ SDK_NAME = "${DISTRO}-${TCLIBC}-${SDKMACHINE}-${IMAGE_BASENAME}-${TUNE_PKGARCH}-${MACHINE}"
:term:`SDK_OS`
Specifies the operating system for which the SDK will be built. The
@@ -6644,7 +7475,9 @@ system and gives an overview of their function and contents.
:term:`SDK_POSTPROCESS_COMMAND`
Specifies a list of functions to call once the OpenEmbedded build
system creates the SDK. You can specify functions separated by
- semicolons: SDK_POSTPROCESS_COMMAND += "function; ... "
+ spaces:
+
+ SDK_POSTPROCESS_COMMAND += "function"
If you need to pass an SDK path to a command within a function, you
can use ``${SDK_DIR}``, which points to the parent directory used by
@@ -6652,7 +7485,8 @@ system and gives an overview of their function and contents.
:term:`SDK_DIR` variable for more information.
:term:`SDK_PREFIX`
- The toolchain binary prefix used for ``nativesdk`` recipes. The
+ The toolchain binary prefix used for
+ :ref:`ref-classes-nativesdk` recipes. The
OpenEmbedded build system uses the :term:`SDK_PREFIX` value to set the
:term:`TARGET_PREFIX` when building
``nativesdk`` recipes. The default value is "${SDK_SYS}-".
@@ -6661,10 +7495,10 @@ system and gives an overview of their function and contents.
A list of shared state tasks added to the extensible SDK. By default,
the following tasks are added:
- - do_populate_lic
- - do_package_qa
- - do_populate_sysroot
- - do_deploy
+ - :ref:`ref-tasks-populate_lic`
+ - :ref:`ref-tasks-package_qa`
+ - :ref:`ref-tasks-populate_sysroot`
+ - :ref:`ref-tasks-deploy`
Despite the default value of "" for the
:term:`SDK_RECRDEP_TASKS` variable, the above four tasks are always added
@@ -6724,6 +7558,10 @@ system and gives an overview of their function and contents.
section in the Yocto Project Application Development and the
Extensible Software Development Kit (eSDK) manual.
+ :term:`SDK_TOOLCHAIN_LANGS`
+ Specifies programming languages to support in the SDK, as a
+ space-separated list. Currently supported items are ``rust`` and ``go``.
+
:term:`SDK_UPDATE_URL`
An optional URL for an update server for the extensible SDK. If set,
the value is used as the default update server when running
@@ -6743,6 +7581,11 @@ system and gives an overview of their function and contents.
:term:`DISTRO_VERSION` and
:term:`METADATA_REVISION` variables.
+ :term:`SDK_ZIP_OPTIONS`
+ Specifies extra options to pass to the ``zip`` command when zipping the SDK
+ (i.e. when :term:`SDK_ARCHIVE_TYPE` is set to "zip"). The default value is
+ "-y".
+
:term:`SDKEXTPATH`
The default installation directory for the Extensible SDK. By
default, this directory is based on the :term:`DISTRO`
@@ -6784,6 +7627,10 @@ system and gives an overview of their function and contents.
configuration will not take effect.
:term:`SDKPATH`
+ Defines the path used to collect the SDK components and build the
+ installer.
+
+ :term:`SDKPATHINSTALL`
Defines the path offered to the user for installation of the SDK that
is generated by the OpenEmbedded build system. The path appears as
the default location for installing the SDK when you run the SDK's
@@ -6793,7 +7640,7 @@ system and gives an overview of their function and contents.
:term:`SDKTARGETSYSROOT`
The full path to the sysroot used for cross-compilation within an SDK
as it will be when installed into the default
- :term:`SDKPATH`.
+ :term:`SDKPATHINSTALL`.
:term:`SECTION`
The section in which packages should be categorized. Package
@@ -6808,64 +7655,31 @@ system and gives an overview of their function and contents.
:term:`FULL_OPTIMIZATION` unless :term:`DEBUG_BUILD` = "1", in which
case the value of :term:`DEBUG_OPTIMIZATION` is used.
- :term:`SERIAL_CONSOLE`
- Defines a serial console (TTY) to enable using
- `getty <https://en.wikipedia.org/wiki/Getty_(Unix)>`__. Provide a
- value that specifies the baud rate followed by the TTY device name
- separated by a space. You cannot specify more than one TTY device::
-
- SERIAL_CONSOLE = "115200 ttyS0"
-
- .. note::
-
- The :term:`SERIAL_CONSOLE` variable is deprecated. Please use the
- :term:`SERIAL_CONSOLES` variable.
-
:term:`SERIAL_CONSOLES`
Defines a serial console (TTY) to enable using
- `getty <https://en.wikipedia.org/wiki/Getty_(Unix)>`__. Provide a
- value that specifies the baud rate followed by the TTY device name
- separated by a semicolon. Use spaces to separate multiple devices::
+ :wikipedia:`getty <Getty_(Unix)>`. Provide a value that specifies the
+ baud rate followed by the TTY device name separated by a semicolon.
+ Use spaces to separate multiple devices::
SERIAL_CONSOLES = "115200;ttyS0 115200;ttyS1"
- :term:`SERIAL_CONSOLES_CHECK`
- Specifies serial consoles, which must be listed in
- :term:`SERIAL_CONSOLES`, to check against
- ``/proc/console`` before enabling them using getty. This variable
- allows aliasing in the format: <device>:<alias>. If a device was
- listed as "sclp_line0" in ``/dev/`` and "ttyS0" was listed in
- ``/proc/console``, you would do the following::
-
- SERIAL_CONSOLES_CHECK = "slcp_line0:ttyS0"
-
- This variable is currently only supported with SysVinit (i.e. not
- with systemd). Note that :term:`SERIAL_CONSOLES_CHECK` also requires
- ``/etc/inittab`` to be writable when used with SysVinit. This makes it
- incompatible with customizations such as the following::
-
- EXTRA_IMAGE_FEATURES += "read-only-rootfs"
-
:term:`SETUPTOOLS_BUILD_ARGS`
- When used by recipes that inherit the
- :ref:`setuptools3 <ref-classes-setuptools3>` class, this variable can
- be used to specify additional arguments to be passed to ``setup.py build``
- in the ``setuptools3_do_compile()`` task.
+ When used by recipes that inherit the :ref:`ref-classes-setuptools3`
+ class, this variable can be used to specify additional arguments to be
+ passed to ``setup.py build`` in the ``setuptools3_do_compile()`` task.
:term:`SETUPTOOLS_INSTALL_ARGS`
- When used by recipes that inherit the
- :ref:`setuptools3 <ref-classes-setuptools3>` class, this variable can
- be used to specify additional arguments to be passed to ``setup.py install``
- in the ``setuptools3_do_install()`` task.
+ When used by recipes that inherit the :ref:`ref-classes-setuptools3`
+ class, this variable can be used to specify additional arguments to be
+ passed to ``setup.py install`` in the ``setuptools3_do_install()`` task.
:term:`SETUPTOOLS_SETUP_PATH`
- When used by recipes that inherit the
- :ref:`setuptools3 <ref-classes-setuptools3>` class, this variable should
- be used to specify the directory in which the ``setup.py`` file is
- located if it is not at the root of the source tree (as specified by
- :term:`S`). For example, in a recipe where the sources are fetched from
- a Git repository and ``setup.py`` is in a ``python/pythonmodule``
- subdirectory, you would have this::
+ When used by recipes that inherit the :ref:`ref-classes-setuptools3`
+ class, this variable should be used to specify the directory in which
+ the ``setup.py`` file is located if it is not at the root of the source
+ tree (as specified by :term:`S`). For example, in a recipe where the
+ sources are fetched from a Git repository and ``setup.py`` is in a
+ ``python/pythonmodule`` subdirectory, you would have this::
S = "${WORKDIR}/git"
SETUPTOOLS_SETUP_PATH = "${S}/python/pythonmodule"
@@ -6926,15 +7740,27 @@ system and gives an overview of their function and contents.
To enable file removal, set the variable to "1" in your
``conf/local.conf`` configuration file in your:
- :term:`Build Directory`.
- ::
+ :term:`Build Directory`::
SKIP_FILEDEPS = "1"
+ :term:`SKIP_RECIPE`
+ Used to prevent the OpenEmbedded build system from building a given
+ recipe. Specify the :term:`PN` value as a variable flag (``varflag``)
+ and provide a reason, which will be reported when attempting to
+ build the recipe.
+
+ To prevent a recipe from being built, use the :term:`SKIP_RECIPE`
+ variable in your ``local.conf`` file or distribution configuration.
+ Here is an example which prevents ``myrecipe`` from being built::
+
+ SKIP_RECIPE[myrecipe] = "Not supported by our organization."
+
:term:`SOC_FAMILY`
- Groups together machines based upon the same family of SOC (System On
- Chip). You typically set this variable in a common ``.inc`` file that
- you include in the configuration files of all the machines.
+ A colon-separated list grouping together machines based upon the same
+ family of SoC (System On Chip). You typically set this variable in a
+ common ``.inc`` file that you include in the configuration files of all
+ the machines.
.. note::
@@ -6999,7 +7825,7 @@ system and gives an overview of their function and contents.
specified in :term:`SRC_URI`.
To use this variable, you must globally inherit the
- :ref:`own-mirrors <ref-classes-own-mirrors>` class and then provide
+ :ref:`ref-classes-own-mirrors` class and then provide
the URL to your mirrors. Here is the general syntax::
INHERIT += "own-mirrors"
@@ -7009,6 +7835,119 @@ system and gives an overview of their function and contents.
You can specify only a single URL in :term:`SOURCE_MIRROR_URL`.
+ :term:`SPDX_ARCHIVE_PACKAGED`
+ This option allows to add to :term:`SPDX` output compressed archives
+ of the files in the generated target packages.
+
+ Such archives are available in
+ ``tmp/deploy/spdx/MACHINE/packages/packagename.tar.zst``
+ under the :term:`Build Directory`.
+
+ Enable this option as follows::
+
+ SPDX_ARCHIVE_PACKAGED = "1"
+
+ According to our tests on release 4.1 "langdale", building
+ ``core-image-minimal`` for the ``qemux86-64`` machine, enabling this
+ option multiplied the size of the ``tmp/deploy/spdx`` directory by a
+ factor of 13 (+1.6 GiB for this image), compared to just using the
+ :ref:`ref-classes-create-spdx` class with no option.
+
+ Note that this option doesn't increase the size of :term:`SPDX`
+ files in ``tmp/deploy/images/MACHINE``.
+
+ :term:`SPDX_ARCHIVE_SOURCES`
+ This option allows to add to :term:`SPDX` output compressed archives
+ of the sources for packages installed on the target. It currently
+ only works when :term:`SPDX_INCLUDE_SOURCES` is set.
+
+ This is one way of fulfilling "source code access" license
+ requirements.
+
+ Such source archives are available in
+ ``tmp/deploy/spdx/MACHINE/recipes/recipe-packagename.tar.zst``
+ under the :term:`Build Directory`.
+
+ Enable this option as follows::
+
+ SPDX_INCLUDE_SOURCES = "1"
+ SPDX_ARCHIVE_SOURCES = "1"
+
+ According to our tests on release 4.1 "langdale", building
+ ``core-image-minimal`` for the ``qemux86-64`` machine, enabling
+ these options multiplied the size of the ``tmp/deploy/spdx``
+ directory by a factor of 11 (+1.4 GiB for this image),
+ compared to just using the :ref:`ref-classes-create-spdx`
+ class with no option.
+
+ Note that using this option only marginally increases the size
+ of the :term:`SPDX` output in ``tmp/deploy/images/MACHINE/``
+ (+ 0.07\% with the tested image), compared to just enabling
+ :term:`SPDX_INCLUDE_SOURCES`.
+
+ :term:`SPDX_CUSTOM_ANNOTATION_VARS`
+ This option allows to associate `SPDX annotations
+ <https://spdx.github.io/spdx-spec/v2.3/annotations/>`__ to a recipe,
+ using the values of variables in the recipe::
+
+ ANNOTATION1 = "First annotation for recipe"
+ ANNOTATION2 = "Second annotation for recipe"
+ SPDX_CUSTOM_ANNOTATION_VARS = "ANNOTATION1 ANNOTATION2"
+
+ This will add a new block to the recipe ``.sdpx.json`` output::
+
+ "annotations": [
+ {
+ "annotationDate": "2023-04-18T08:32:12Z",
+ "annotationType": "OTHER",
+ "annotator": "Tool: oe-spdx-creator - 1.0",
+ "comment": "ANNOTATION1=First annotation for recipe"
+ },
+ {
+ "annotationDate": "2023-04-18T08:32:12Z",
+ "annotationType": "OTHER",
+ "annotator": "Tool: oe-spdx-creator - 1.0",
+ "comment": "ANNOTATION2=Second annotation for recipe"
+ }
+ ],
+
+ :term:`SPDX_INCLUDE_SOURCES`
+ This option allows to add a description of the source files used to build
+ the host tools and the target packages, to the ``spdx.json`` files in
+ ``tmp/deploy/spdx/MACHINE/recipes/`` under the :term:`Build Directory`.
+ As a consequence, the ``spdx.json`` files under the ``by-namespace`` and
+ ``packages`` subdirectories in ``tmp/deploy/spdx/MACHINE`` are also
+ modified to include references to such source file descriptions.
+
+ Enable this option as follows::
+
+ SPDX_INCLUDE_SOURCES = "1"
+
+ According to our tests on release 4.1 "langdale", building
+ ``core-image-minimal`` for the ``qemux86-64`` machine, enabling
+ this option multiplied the total size of the ``tmp/deploy/spdx``
+ directory by a factor of 3 (+291 MiB for this image),
+ and the size of the ``IMAGE-MACHINE.spdx.tar.zst`` in
+ ``tmp/deploy/images/MACHINE`` by a factor of 130 (+15 MiB for this
+ image), compared to just using the :ref:`ref-classes-create-spdx` class
+ with no option.
+
+ :term:`SPDX_NAMESPACE_PREFIX`
+ This option could be used in order to change the prefix of ``spdxDocument``
+ and the prefix of ``documentNamespace``. It is set by default to
+ ``http://spdx.org/spdxdoc``.
+
+ :term:`SPDX_PRETTY`
+ This option makes the SPDX output more human-readable, using
+ identation and newlines, instead of the default output in a
+ single line::
+
+ SPDX_PRETTY = "1"
+
+ The generated SPDX files are approximately 20% bigger, but
+ this option is recommended if you want to inspect the SPDX
+ output files with a text editor.
+
:term:`SPDXLICENSEMAP`
Maps commonly used license names to their SPDX counterparts found in
``meta/files/common-licenses/``. For the default :term:`SPDXLICENSEMAP`
@@ -7046,10 +7985,77 @@ system and gives an overview of their function and contents.
various ``SPL_*`` variables used by the OpenEmbedded build system.
See the BeagleBone machine configuration example in the
- ":ref:`dev-manual/common-tasks:adding a layer using the \`\`bitbake-layers\`\` script`"
+ ":ref:`dev-manual/layers:adding a layer using the \`\`bitbake-layers\`\` script`"
section in the Yocto Project Board Support Package Developer's Guide
for additional information.
+ :term:`SPL_MKIMAGE_DTCOPTS`
+ Options for the device tree compiler passed to ``mkimage -D`` feature
+ while creating a FIT image with the :ref:`ref-classes-uboot-sign`
+ class. If :term:`SPL_MKIMAGE_DTCOPTS` is not set then the
+ :ref:`ref-classes-uboot-sign` class will not pass the ``-D`` option
+ to ``mkimage``.
+
+ The default value is set to "" by the :ref:`ref-classes-uboot-config`
+ class.
+
+ :term:`SPL_SIGN_ENABLE`
+ Enable signing of the U-Boot FIT image. The default value is "0".
+ This variable is used by the :ref:`ref-classes-uboot-sign` class.
+
+ :term:`SPL_SIGN_KEYDIR`
+ Location of the directory containing the RSA key and certificate used for
+ signing the U-Boot FIT image, used by the :ref:`ref-classes-uboot-sign`
+ class.
+
+ :term:`SPL_SIGN_KEYNAME`
+ The name of keys used by the :ref:`ref-classes-kernel-fitimage` class
+ for signing U-Boot FIT image stored in the :term:`SPL_SIGN_KEYDIR`
+ directory. If we have for example a ``dev.key`` key and a ``dev.crt``
+ certificate stored in the :term:`SPL_SIGN_KEYDIR` directory, you will
+ have to set :term:`SPL_SIGN_KEYNAME` to ``dev``.
+
+ :term:`SPLASH`
+ This variable, used by the :ref:`ref-classes-image` class, allows
+ to choose splashscreen applications. Set it to the names of packages
+ for such applications to use. This variable is set by default to
+ ``psplash``.
+
+ :term:`SPLASH_IMAGES`
+ This variable, used by the ``psplash`` recipe, allows to customize
+ the default splashscreen image.
+
+ Specified images in PNG format are converted to ``.h`` files by the recipe,
+ and are included in the ``psplash`` binary, so you won't find them in
+ the root filesystem.
+
+ To make such a change, it is recommended to customize the
+ ``psplash`` recipe in a custom layer. Here is an example structure for
+ an ``ACME`` board::
+
+ meta-acme/recipes-core/psplash
+ ├── files
+ │   └── logo-acme.png
+ └── psplash_%.bbappend
+
+ And here are the contents of the ``psplash_%.bbappend`` file in
+ this example::
+
+ SPLASH_IMAGES = "file://logo-acme.png;outsuffix=default"
+ FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
+
+ You could even add specific configuration options for ``psplash``,
+ for example::
+
+ EXTRA_OECONF += "--disable-startup-msg --enable-img-fullscreen"
+
+ For information on append files, see the
+ ":ref:`dev-manual/layers:appending other layers metadata with your layer`"
+ section.
+
+ :term:`SRCREV_FORMAT`
+ See :term:`bitbake:SRCREV_FORMAT` in the BitBake manual.
+
:term:`SRC_URI`
See the BitBake manual for the initial description for this variable:
@@ -7059,35 +8065,35 @@ system and gives an overview of their function and contents.
There are standard and recipe-specific options. Here are standard ones:
- - ``apply`` - Whether to apply the patch or not. The default
+ - ``apply`` --- whether to apply the patch or not. The default
action is to apply the patch.
- - ``striplevel`` - Which striplevel to use when applying the
+ - ``striplevel`` --- which striplevel to use when applying the
patch. The default level is 1.
- - ``patchdir`` - Specifies the directory in which the patch should
+ - ``patchdir`` --- specifies the directory in which the patch should
be applied. The default is ``${``\ :term:`S`\ ``}``.
Here are options specific to recipes building code from a revision
control system:
- - ``mindate`` - Apply the patch only if
+ - ``mindate`` --- apply the patch only if
:term:`SRCDATE` is equal to or greater than
``mindate``.
- - ``maxdate`` - Apply the patch only if :term:`SRCDATE` is not later
+ - ``maxdate`` --- apply the patch only if :term:`SRCDATE` is not later
than ``maxdate``.
- - ``minrev`` - Apply the patch only if :term:`SRCREV` is equal to or
+ - ``minrev`` --- apply the patch only if :term:`SRCREV` is equal to or
greater than ``minrev``.
- - ``maxrev`` - Apply the patch only if :term:`SRCREV` is not later
+ - ``maxrev`` --- apply the patch only if :term:`SRCREV` is not later
than ``maxrev``.
- - ``rev`` - Apply the patch only if :term:`SRCREV` is equal to
+ - ``rev`` --- apply the patch only if :term:`SRCREV` is equal to
``rev``.
- - ``notrev`` - Apply the patch only if :term:`SRCREV` is not equal to
+ - ``notrev`` --- apply the patch only if :term:`SRCREV` is not equal to
``rev``.
.. note::
@@ -7131,27 +8137,27 @@ system and gives an overview of their function and contents.
that if you want to build a fixed revision and you want to avoid
performing a query on the remote repository every time BitBake parses
your recipe, you should specify a :term:`SRCREV` that is a full revision
- identifier and not just a tag.
+ identifier (e.g. the full SHA hash in git) and not just a tag.
.. note::
For information on limitations when inheriting the latest revision
of software using :term:`SRCREV`, see the :term:`AUTOREV` variable
description and the
- ":ref:`dev-manual/common-tasks:automatically incrementing a package version number`"
+ ":ref:`dev-manual/packages:automatically incrementing a package version number`"
section, which is in the Yocto Project Development Tasks Manual.
:term:`SRCTREECOVEREDTASKS`
A list of tasks that are typically not relevant (and therefore skipped)
- when building using the :ref:`externalsrc <ref-classes-externalsrc>`
+ when building using the :ref:`ref-classes-externalsrc`
class. The default value as set in that class file is the set of tasks
that are rarely needed when using external source::
SRCTREECOVEREDTASKS ?= "do_patch do_unpack do_fetch"
The notable exception is when processing external kernel source as
- defined in the :ref:`kernel-yocto <ref-classes-kernel-yocto>`
- class file (formatted for aesthetics)::
+ defined in the :ref:`ref-classes-kernel-yocto` class file (formatted for
+ aesthetics)::
SRCTREECOVEREDTASKS += "\
do_validate_branches \
@@ -7168,6 +8174,32 @@ system and gives an overview of their function and contents.
:term:`SSTATE_DIR`
The directory for the shared state cache.
+ :term:`SSTATE_EXCLUDEDEPS_SYSROOT`
+ This variable allows to specify indirect dependencies to exclude
+ from sysroots, for example to avoid the situations when a dependency on
+ any ``-native`` recipe will pull in all dependencies of that recipe
+ in the recipe sysroot. This behaviour might not always be wanted,
+ for example when that ``-native`` recipe depends on build tools
+ that are not relevant for the current recipe.
+
+ This way, irrelevant dependencies are ignored, which could have
+ prevented the reuse of prebuilt artifacts stored in the Shared
+ State Cache.
+
+ :term:`SSTATE_EXCLUDEDEPS_SYSROOT` is evaluated as two regular
+ expressions of recipe and dependency to ignore. An example
+ is the rule in :oe_git:`meta/conf/layer.conf </openembedded-core/tree/meta/conf/layer.conf>`::
+
+ # Nothing needs to depend on libc-initial
+ # base-passwd/shadow-sysroot don't need their dependencies
+ SSTATE_EXCLUDEDEPS_SYSROOT += "\
+ .*->.*-initial.* \
+ .*(base-passwd|shadow-sysroot)->.* \
+ "
+
+ The ``->`` substring represents the dependency between
+ the two regular expressions.
+
:term:`SSTATE_MIRROR_ALLOW_NETWORK`
If set to "1", allows fetches from mirrors that are specified in
:term:`SSTATE_MIRRORS` to work even when
@@ -7193,23 +8225,31 @@ system and gives an overview of their function and contents.
a different GCC version for native builds, you must configure
:term:`SSTATE_MIRRORS` with a regular expression that maps local search
paths to server paths. The paths need to take into account
- :term:`NATIVELSBSTRING` set by the
- :ref:`uninative <ref-classes-uninative>` class. For example, the
- following maps the local search path ``universal-4.9`` to the
- server-provided path server_url_sstate_path::
+ :term:`NATIVELSBSTRING` set by the :ref:`ref-classes-uninative` class.
+ For example, the following maps the local search path ``universal-4.9``
+ to the server-provided path server_url_sstate_path::
- SSTATE_MIRRORS ?= "file://universal-4.9/(.*) http://server_url_sstate_path/universal-4.8/\1 \n"
+ SSTATE_MIRRORS ?= "file://universal-4.9/(.*) https://server_url_sstate_path/universal-4.8/\1"
If a mirror uses the same structure as
:term:`SSTATE_DIR`, you need to add "PATH" at the
end as shown in the examples below. The build system substitutes the
- correct path within the directory structure.
- ::
+ correct path within the directory structure::
SSTATE_MIRRORS ?= "\
- file://.* http://someserver.tld/share/sstate/PATH;downloadfilename=PATH \n \
+ file://.* https://someserver.tld/share/sstate/PATH;downloadfilename=PATH \
file://.* file:///some-local-dir/sstate/PATH"
+ The Yocto Project actually shares the cache data objects built by its
+ autobuilder::
+
+ SSTATE_MIRRORS ?= "file://.* http://cdn.jsdelivr.net/yocto/sstate/all/PATH;downloadfilename=PATH"
+
+ As such binary artifacts are built for the generic QEMU machines
+ supported by the various Poky releases, they are less likely to be
+ reusable in real projects building binaries optimized for a specific
+ CPU family.
+
:term:`SSTATE_SCAN_FILES`
Controls the list of files the OpenEmbedded build system scans for
hardcoded installation paths. The variable uses a space-separated
@@ -7223,11 +8263,9 @@ system and gives an overview of their function and contents.
by the :term:`SSTATE_SCAN_FILES` variable. Typically, recipes add files
they want to be scanned to the value of :term:`SSTATE_SCAN_FILES` rather
than the variable being comprehensively set. The
- :ref:`sstate <ref-classes-sstate>` class specifies the default list
- of files.
+ :ref:`ref-classes-sstate` class specifies the default list of files.
- For details on the process, see the
- :ref:`staging <ref-classes-staging>` class.
+ For details on the process, see the :ref:`ref-classes-staging` class.
:term:`STAGING_BASE_LIBDIR_NATIVE`
Specifies the path to the ``/lib`` subdirectory of the sysroot
@@ -7296,7 +8334,7 @@ system and gives an overview of their function and contents.
For most recipes, this sysroot is the one in which that recipe's
:ref:`ref-tasks-populate_sysroot` task copies
files. Exceptions include ``-native`` recipes, where the
- ``do_populate_sysroot`` task instead uses
+ :ref:`ref-tasks-populate_sysroot` task instead uses
:term:`STAGING_DIR_NATIVE`. Depending on
the type of recipe and the build target, :term:`STAGING_DIR_HOST` can
have the following values:
@@ -7328,20 +8366,25 @@ system and gives an overview of their function and contents.
for ``-native`` recipes, as they make use of host headers and
libraries.
+ Check :term:`RECIPE_SYSROOT` and :term:`RECIPE_SYSROOT_NATIVE`.
+
:term:`STAGING_DIR_NATIVE`
Specifies the path to the sysroot directory used when building
components that run on the build host itself.
+ The default value is ``"${RECIPE_SYSROOT_NATIVE}"``,
+ check :term:`RECIPE_SYSROOT_NATIVE`.
+
:term:`STAGING_DIR_TARGET`
Specifies the path to the sysroot used for the system for which the
component generates code. For components that do not generate code,
which is the majority, :term:`STAGING_DIR_TARGET` is set to match
:term:`STAGING_DIR_HOST`.
- Some recipes build binaries that can run on the target system but
- those binaries in turn generate code for another different system
- (e.g. cross-canadian recipes). Using terminology from GNU, the
- primary system is referred to as the "HOST" and the secondary, or
+ Some recipes build binaries that can run on the target system but those
+ binaries in turn generate code for another different system (e.g.
+ :ref:`ref-classes-cross-canadian` recipes). Using terminology from GNU,
+ the primary system is referred to as the "HOST" and the secondary, or
different, system is referred to as the "TARGET". Thus, the binaries
run on the "HOST" system and generate binaries for the "TARGET"
system. The :term:`STAGING_DIR_HOST` variable points to the sysroot used
@@ -7406,6 +8449,9 @@ system and gives an overview of their function and contents.
:term:`PV`, and :term:`PR` for related variable
information.
+ :term:`STAMPCLEAN`
+ See :term:`bitbake:STAMPCLEAN` in the BitBake manual.
+
:term:`STAMPS_DIR`
Specifies the base directory in which the OpenEmbedded build system
places stamps. The default directory is ``${TMPDIR}/stamps``.
@@ -7432,7 +8478,7 @@ system and gives an overview of their function and contents.
SYSLINUX_DEFAULT_CONSOLE = "console=ttyX"
- The :ref:`syslinux <ref-classes-syslinux>` class initially sets
+ The :ref:`ref-classes-syslinux` class initially sets
this variable to null but then checks for a value later.
:term:`SYSLINUX_OPTS`
@@ -7440,14 +8486,14 @@ system and gives an overview of their function and contents.
this variable in your recipe. If you want to list multiple options,
separate the options with a semicolon character (``;``).
- The :ref:`syslinux <ref-classes-syslinux>` class uses this variable
+ The :ref:`ref-classes-syslinux` class uses this variable
to create a set of options.
:term:`SYSLINUX_SERIAL`
Specifies the alternate serial port or turns it off. To turn off
serial, set this variable to an empty string in your recipe. The
variable's default value is set in the
- :ref:`syslinux <ref-classes-syslinux>` class as follows::
+ :ref:`ref-classes-syslinux` class as follows::
SYSLINUX_SERIAL ?= "0 115200"
@@ -7455,8 +8501,8 @@ system and gives an overview of their function and contents.
:term:`SYSLINUX_SERIAL_TTY`
Specifies the alternate console=tty... kernel boot argument. The
- variable's default value is set in the
- :ref:`syslinux <ref-classes-syslinux>` class as follows::
+ variable's default value is set in the :ref:`ref-classes-syslinux`
+ class as follows::
SYSLINUX_SERIAL_TTY ?= "console=ttyS0,115200"
@@ -7466,7 +8512,7 @@ system and gives an overview of their function and contents.
An ``.LSS`` file used as the background for the VGA boot menu when
you use the boot menu. You need to set this variable in your recipe.
- The :ref:`syslinux <ref-classes-syslinux>` class checks for this
+ The :ref:`ref-classes-syslinux` class checks for this
variable and if found, the OpenEmbedded build system installs the
splash screen.
@@ -7490,14 +8536,14 @@ system and gives an overview of their function and contents.
/sysroot-only \
"
- :term:`SYSROOT_DIRS_BLACKLIST`
+ :term:`SYSROOT_DIRS_IGNORE`
Directories that are not staged into the sysroot by the
:ref:`ref-tasks-populate_sysroot` task. You
can use this variable to exclude certain subdirectories of
directories listed in :term:`SYSROOT_DIRS` from
staging. By default, the following directories are not staged::
- SYSROOT_DIRS_BLACKLIST = " \
+ SYSROOT_DIRS_IGNORE = " \
${mandir} \
${docdir} \
${infodir} \
@@ -7513,6 +8559,35 @@ system and gives an overview of their function and contents.
${libdir}/${BPN}/ptest \
"
+ Consider the following example in which you need to manipulate this variable.
+ Assume you have a recipe ``A`` that provides a shared library ``.so.*`` that is
+ installed into a custom folder other than "``${libdir}``"
+ or "``${base_libdir}``", let's say "``/opt/lib``".
+
+ .. note::
+
+ This is not a recommended way to deal with shared libraries, but this
+ is just to show the usefulness of setting :term:`SYSROOT_DIRS`.
+
+ When a recipe ``B`` :term:`DEPENDS` on ``A``, it means what is in
+ :term:`SYSROOT_DIRS` will be copied from :term:`D` of the recipe ``B``
+ into ``B``'s :term:`SYSROOT_DESTDIR` that is "``${WORKDIR}/sysroot-destdir``".
+
+ Now, since ``/opt/lib`` is not in :term:`SYSROOT_DIRS`, it will never be copied to
+ ``A``'s :term:`RECIPE_SYSROOT`, which is "``${WORKDIR}/recipe-sysroot``". So,
+ the linking process will fail.
+
+ To fix this, you need to add ``/opt/lib`` to :term:`SYSROOT_DIRS`::
+
+ SYSROOT_DIRS:append = " /opt/lib"
+
+ .. note::
+ Even after setting ``/opt/lib`` to :term:`SYSROOT_DIRS`, the linking process will still fail
+ because the linker does not know that location, since :term:`TARGET_LDFLAGS`
+ doesn't contain it (if your recipe is for the target). Therefore, so you should add::
+
+ TARGET_LDFLAGS:append = " -L${RECIPE_SYSROOT}/opt/lib"
+
:term:`SYSROOT_DIRS_NATIVE`
Extra directories staged into the sysroot by the
:ref:`ref-tasks-populate_sysroot` task for
@@ -7542,12 +8617,12 @@ system and gives an overview of their function and contents.
processing on the staged files, or to stage additional files.
:term:`SYSTEMD_AUTO_ENABLE`
- When inheriting the :ref:`systemd <ref-classes-systemd>` class,
+ When inheriting the :ref:`ref-classes-systemd` class,
this variable specifies whether the specified service in
:term:`SYSTEMD_SERVICE` should start
automatically or not. By default, the service is enabled to
automatically start at boot time. The default setting is in the
- :ref:`systemd <ref-classes-systemd>` class as follows::
+ :ref:`ref-classes-systemd` class as follows::
SYSTEMD_AUTO_ENABLE ??= "enable"
@@ -7557,10 +8632,10 @@ system and gives an overview of their function and contents.
When :term:`EFI_PROVIDER` is set to
"systemd-boot", the :term:`SYSTEMD_BOOT_CFG` variable specifies the
configuration file that should be used. By default, the
- :ref:`systemd-boot <ref-classes-systemd-boot>` class sets the
+ :ref:`ref-classes-systemd-boot` class sets the
:term:`SYSTEMD_BOOT_CFG` as follows::
- SYSTEMD_BOOT_CFG ?= "${:term:`S`}/loader.conf"
+ SYSTEMD_BOOT_CFG ?= "${S}/loader.conf"
For information on Systemd-boot, see the `Systemd-boot
documentation <https://www.freedesktop.org/wiki/Software/systemd/systemd-boot/>`__.
@@ -7569,9 +8644,8 @@ system and gives an overview of their function and contents.
When :term:`EFI_PROVIDER` is set to
"systemd-boot", the :term:`SYSTEMD_BOOT_ENTRIES` variable specifies a
list of entry files (``*.conf``) to install that contain one boot
- entry per file. By default, the
- :ref:`systemd-boot <ref-classes-systemd-boot>` class sets the
- :term:`SYSTEMD_BOOT_ENTRIES` as follows::
+ entry per file. By default, the :ref:`ref-classes-systemd-boot` class
+ sets the :term:`SYSTEMD_BOOT_ENTRIES` as follows::
SYSTEMD_BOOT_ENTRIES ?= ""
@@ -7582,7 +8656,7 @@ system and gives an overview of their function and contents.
When :term:`EFI_PROVIDER` is set to
"systemd-boot", the :term:`SYSTEMD_BOOT_TIMEOUT` variable specifies the
boot menu timeout in seconds. By default, the
- :ref:`systemd-boot <ref-classes-systemd-boot>` class sets the
+ :ref:`ref-classes-systemd-boot` class sets the
:term:`SYSTEMD_BOOT_TIMEOUT` as follows::
SYSTEMD_BOOT_TIMEOUT ?= "10"
@@ -7590,8 +8664,25 @@ system and gives an overview of their function and contents.
For information on Systemd-boot, see the `Systemd-boot
documentation <https://www.freedesktop.org/wiki/Software/systemd/systemd-boot/>`__.
+ :term:`SYSTEMD_DEFAULT_TARGET`
+
+ This variable allows to set the default unit that systemd starts at bootup.
+ Usually, this is either ``multi-user.target`` or ``graphical.target``.
+ This works by creating a ``default.target`` symbolic link to the chosen systemd
+ target file.
+
+ See `systemd's documentation
+ <https://www.freedesktop.org/software/systemd/man/systemd.special.html>`__
+ for details.
+
+ For example, this variable is used in the :oe_git:`core-image-minimal-xfce.bb
+ </meta-openembedded/tree/meta-xfce/recipes-core/images/core-image-minimal-xfce.bb>`
+ recipe::
+
+ SYSTEMD_DEFAULT_TARGET = "graphical.target"
+
:term:`SYSTEMD_PACKAGES`
- When inheriting the :ref:`systemd <ref-classes-systemd>` class,
+ When inheriting the :ref:`ref-classes-systemd` class,
this variable locates the systemd unit files when they are not found
in the main recipe's package. By default, the :term:`SYSTEMD_PACKAGES`
variable is set such that the systemd unit files are assumed to
@@ -7604,22 +8695,26 @@ system and gives an overview of their function and contents.
the build system can find the systemd unit files.
:term:`SYSTEMD_SERVICE`
- When inheriting the :ref:`systemd <ref-classes-systemd>` class,
+ When inheriting the :ref:`ref-classes-systemd` class,
this variable specifies the systemd service name for a package.
+ Multiple services can be specified, each one separated by a space.
+
When you specify this file in your recipe, use a package name
override to indicate the package to which the value applies. Here is
an example from the connman recipe::
SYSTEMD_SERVICE:${PN} = "connman.service"
+ The package overrides that can be specified are directly related to the value of
+ :term:`SYSTEMD_PACKAGES`. Overrides not included in :term:`SYSTEMD_PACKAGES`
+ will be silently ignored.
+
:term:`SYSVINIT_ENABLED_GETTYS`
- When using
- :ref:`SysVinit <dev-manual/common-tasks:enabling system services>`,
+ When using :ref:`SysVinit <dev-manual/new-recipe:enabling system services>`,
specifies a space-separated list of the virtual terminals that should
- run a `getty <https://en.wikipedia.org/wiki/Getty_%28Unix%29>`__
- (allowing login), assuming :term:`USE_VT` is not set to
- "0".
+ run a :wikipedia:`getty <Getty_(Unix)>` (allowing login), assuming
+ :term:`USE_VT` is not set to "0".
The default value for :term:`SYSVINIT_ENABLED_GETTYS` is "1" (i.e. only
run a getty on the first virtual terminal).
@@ -7718,6 +8813,10 @@ system and gives an overview of their function and contents.
value so that executables built using the SDK also have the flags
applied.
+ :term:`TARGET_DBGSRC_DIR`
+ Specifies the target path to debug source files. The default is
+ ``/usr/src/debug/${PN}/${PV}``.
+
:term:`TARGET_FPU`
Specifies the method for handling FPU code. For FPU-less targets,
which include most ARM CPUs, the variable must be set to "soft". If
@@ -7761,8 +8860,8 @@ system and gives an overview of their function and contents.
- For native recipes, the build system sets the variable to the
value of :term:`BUILD_PREFIX`.
- - For native SDK recipes (``nativesdk``), the build system sets the
- variable to the value of :term:`SDK_PREFIX`.
+ - For native SDK recipes (:ref:`ref-classes-nativesdk`),
+ the build system sets the variable to the value of :term:`SDK_PREFIX`.
:term:`TARGET_SYS`
Specifies the system, including the architecture and the operating
@@ -7791,18 +8890,16 @@ system and gives an overview of their function and contents.
:term:`TCLIBC`
Specifies the GNU standard C library (``libc``) variant to use during
- the build process. This variable replaces ``POKYLIBC``, which is no
- longer supported.
+ the build process.
- You can select "glibc", "musl", "newlib", or "baremetal"
+ You can select "glibc", "musl", "newlib", or "baremetal".
:term:`TCLIBCAPPEND`
- Specifies a suffix to be appended onto the
- :term:`TMPDIR` value. The suffix identifies the
- ``libc`` variant for building. When you are building for multiple
- variants with the same :term:`Build Directory`, this
- mechanism ensures that output for different ``libc`` variants is kept
- separate to avoid potential conflicts.
+ Specifies a suffix to be appended onto the :term:`TMPDIR` value. The
+ suffix identifies the ``libc`` variant for building. When you are
+ building for multiple variants with the same :term:`Build Directory`,
+ this mechanism ensures that output for different ``libc`` variants is
+ kept separate to avoid potential conflicts.
In the ``defaultsetup.conf`` file, the default value of
:term:`TCLIBCAPPEND` is "-${TCLIBC}". However, distros such as poky,
@@ -7823,12 +8920,10 @@ system and gives an overview of their function and contents.
If :term:`TCMODE` is set to a value other than "default", then it is your
responsibility to ensure that the toolchain is compatible with the
default toolchain. Using older or newer versions of these
- components might cause build problems. See the Release Notes for
- the Yocto Project release for the specific components with which
- the toolchain must be compatible. To access the Release Notes, go
- to the :yocto_home:`Downloads </software-overview/downloads>`
- page on the Yocto Project website and click on the "RELEASE
- INFORMATION" link for the appropriate release.
+ components might cause build problems. See
+ :doc:`Release Information </migration-guides/index>` for your
+ version of the Yocto Project, to find the specific components with
+ which the toolchain must be compatible.
The :term:`TCMODE` variable is similar to :term:`TCLIBC`,
which controls the variant of the GNU standard C library (``libc``)
@@ -7841,16 +8936,41 @@ system and gives an overview of their function and contents.
https://github.com/MentorEmbedded/meta-sourcery/.
The layer's ``README`` file contains information on how to use the
- Sourcery G++ Toolchain as an external toolchain. In summary, you must
- be sure to add the layer to your ``bblayers.conf`` file in front of
- the ``meta`` layer and then set the ``EXTERNAL_TOOLCHAIN`` variable
- in your ``local.conf`` file to the location in which you installed
- the toolchain.
+ Sourcery G++ Toolchain as an external toolchain. You will have to
+ add the layer to your ``bblayers.conf`` file and then set the
+ :term:`EXTERNAL_TOOLCHAIN` variable in your ``local.conf`` file to
+ the location of the toolchain.
The fundamentals used for this example apply to any external
toolchain. You can use ``meta-sourcery`` as a template for adding
support for other external toolchains.
+ In addition to toolchain configuration, you will also need a
+ corresponding toolchain recipe file. This recipe file needs to package
+ up any pre-built objects in the toolchain such as ``libgcc``,
+ ``libstdcc++``, any locales, and ``libc``.
+
+ :term:`TC_CXX_RUNTIME`
+ Specifies the C/C++ STL and runtime variant to use during
+ the build process. Default value is 'gnu'
+
+ You can select "gnu", "llvm", or "android".
+
+ :term:`TEMPLATECONF`
+ Specifies the directory used by the build system to find templates
+ from which to build the ``bblayers.conf`` and ``local.conf`` files.
+ Use this variable if you wish to customize such files, and the default
+ BitBake targets shown when sourcing the ``oe-init-build-env`` script.
+
+ For details, see the
+ :ref:`dev-manual/custom-template-configuration-directory:creating a custom template configuration directory`
+ section in the Yocto Project Development Tasks manual.
+
+ .. note::
+
+ You must set this variable in the external environment in order
+ for it to work.
+
:term:`TEST_EXPORT_DIR`
The location the OpenEmbedded build system uses to export tests when
the :term:`TEST_EXPORT_ONLY` variable is set
@@ -7898,7 +9018,7 @@ system and gives an overview of their function and contents.
file.
For more information on testing images, see the
- ":ref:`dev-manual/common-tasks:performing automated runtime testing`"
+ ":ref:`dev-manual/runtime-testing:performing automated runtime testing`"
section in the Yocto Project Development Tasks Manual.
:term:`TEST_SERIALCONTROL_CMD`
@@ -7953,8 +9073,7 @@ system and gives an overview of their function and contents.
Alternatively, you can
provide the "auto" option to have all applicable tests run against
- the image.
- ::
+ the image::
TEST_SUITES:append = " auto"
@@ -7971,7 +9090,7 @@ system and gives an overview of their function and contents.
TEST_SUITES = "test_A test_B"
For more information on testing images, see the
- ":ref:`dev-manual/common-tasks:performing automated runtime testing`"
+ ":ref:`dev-manual/runtime-testing:performing automated runtime testing`"
section in the Yocto Project Development Tasks Manual.
:term:`TEST_TARGET`
@@ -7990,7 +9109,7 @@ system and gives an overview of their function and contents.
You can provide the following arguments with :term:`TEST_TARGET`:
- *"qemu":* Boots a QEMU image and runs the tests. See the
- ":ref:`dev-manual/common-tasks:enabling runtime tests on qemu`" section
+ ":ref:`dev-manual/runtime-testing:enabling runtime tests on qemu`" section
in the Yocto Project Development Tasks Manual for more
information.
@@ -8006,7 +9125,7 @@ system and gives an overview of their function and contents.
``meta/lib/oeqa/controllers/simpleremote.py``.
For information on running tests on hardware, see the
- ":ref:`dev-manual/common-tasks:enabling runtime tests on hardware`"
+ ":ref:`dev-manual/runtime-testing:enabling runtime tests on hardware`"
section in the Yocto Project Development Tasks Manual.
:term:`TEST_TARGET_IP`
@@ -8043,9 +9162,9 @@ system and gives an overview of their function and contents.
For more information
on enabling, running, and writing these tests, see the
- ":ref:`dev-manual/common-tasks:performing automated runtime testing`"
+ ":ref:`dev-manual/runtime-testing:performing automated runtime testing`"
section in the Yocto Project Development Tasks Manual and the
- ":ref:`ref-classes-testimage*`" section.
+ ":ref:`ref-classes-testimage`" section.
:term:`THISDIR`
The directory in which the file BitBake is currently parsing is
@@ -8069,7 +9188,7 @@ system and gives an overview of their function and contents.
#TMPDIR = "${TOPDIR}/tmp"
An example use for this scenario is to set :term:`TMPDIR` to a local disk,
- which does not use NFS, while having the Build Directory use NFS.
+ which does not use NFS, while having the :term:`Build Directory` use NFS.
The filesystem used by :term:`TMPDIR` must have standard filesystem
semantics (i.e. mixed-case files are unique, POSIX file locking, and
@@ -8102,7 +9221,7 @@ system and gives an overview of their function and contents.
:doc:`/sdk-manual/index` manual.
Note that this variable applies to building an SDK, not an eSDK,
- in which case the term:`TOOLCHAIN_HOST_TASK_ESDK` setting should be
+ in which case the :term:`TOOLCHAIN_HOST_TASK_ESDK` setting should be
used instead.
:term:`TOOLCHAIN_HOST_TASK_ESDK`
@@ -8110,6 +9229,16 @@ system and gives an overview of their function and contents.
portion of an eSDK. This is similar to :term:`TOOLCHAIN_HOST_TASK`
applying to SDKs.
+ :term:`TOOLCHAIN_OPTIONS`
+ This variable holds extra options passed to the compiler and the linker
+ for non ``-native`` recipes as they have to point to their custom
+ ``sysroot`` folder pointed to by :term:`RECIPE_SYSROOT`::
+
+ TOOLCHAIN_OPTIONS = " --sysroot=${RECIPE_SYSROOT}"
+
+ Native recipes don't need this variable to be set, as they are
+ built for the host machine with the native compiler.
+
:term:`TOOLCHAIN_OUTPUTNAME`
This variable defines the name used for the toolchain output. The
:ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class sets
@@ -8139,6 +9268,9 @@ system and gives an overview of their function and contents.
information on setting up a cross-development environment, see the
:doc:`/sdk-manual/index` manual.
+ :term:`TOPDIR`
+ See :term:`bitbake:TOPDIR` in the BitBake manual.
+
:term:`TRANSLATED_TARGET_ARCH`
A sanitized version of :term:`TARGET_ARCH`. This
variable is used where the architecture is needed in a value where
@@ -8279,51 +9411,152 @@ system and gives an overview of their function and contents.
See the machine include files in the :term:`Source Directory`
for these features.
- :term:`UBOOT_CONFIG`
- Configures the :term:`UBOOT_MACHINE` and can
- also define :term:`IMAGE_FSTYPES` for individual
- cases.
-
- Following is an example from the ``meta-fsl-arm`` layer. ::
+ :term:`UBOOT_BINARY`
+ Specifies the name of the binary build by U-Boot.
- UBOOT_CONFIG ??= "sd"
- UBOOT_CONFIG[sd] = "mx6qsabreauto_config,sdcard"
- UBOOT_CONFIG[eimnor] = "mx6qsabreauto_eimnor_config"
- UBOOT_CONFIG[nand] = "mx6qsabreauto_nand_config,ubifs"
- UBOOT_CONFIG[spinor] = "mx6qsabreauto_spinor_config"
-
- In this example, "sd" is selected as the configuration of the possible four for the
- :term:`UBOOT_MACHINE`. The "sd" configuration defines
- "mx6qsabreauto_config" as the value for :term:`UBOOT_MACHINE`, while the
- "sdcard" specifies the :term:`IMAGE_FSTYPES` to use for the U-Boot image.
+ :term:`UBOOT_CONFIG`
+ Configures one or more U-Boot configurations to build. Each
+ configuration can define the :term:`UBOOT_MACHINE` and optionally the
+ :term:`IMAGE_FSTYPES` and the :term:`UBOOT_BINARY`.
+
+ Here is an example from the ``meta-freescale`` layer. ::
+
+ UBOOT_CONFIG ??= "sdcard-ifc-secure-boot sdcard-ifc sdcard-qspi lpuart qspi secure-boot nor"
+ UBOOT_CONFIG[nor] = "ls1021atwr_nor_defconfig"
+ UBOOT_CONFIG[sdcard-ifc] = "ls1021atwr_sdcard_ifc_defconfig,,u-boot-with-spl-pbl.bin"
+ UBOOT_CONFIG[sdcard-qspi] = "ls1021atwr_sdcard_qspi_defconfig,,u-boot-with-spl-pbl.bin"
+ UBOOT_CONFIG[lpuart] = "ls1021atwr_nor_lpuart_defconfig"
+ UBOOT_CONFIG[qspi] = "ls1021atwr_qspi_defconfig"
+ UBOOT_CONFIG[secure-boot] = "ls1021atwr_nor_SECURE_BOOT_defconfig"
+ UBOOT_CONFIG[sdcard-ifc-secure-boot] = "ls1021atwr_sdcard_ifc_SECURE_BOOT_defconfig,,u-boot-with-spl-pbl.bin"
+
+ In this example, all possible seven configurations are selected. Each
+ configuration specifies "..._defconfig" as :term:`UBOOT_MACHINE`, and
+ the "sd..." configurations define an individual name for
+ :term:`UBOOT_BINARY`. No configuration defines a second parameter for
+ :term:`IMAGE_FSTYPES` to use for the U-Boot image.
For more information on how the :term:`UBOOT_CONFIG` is handled, see the
- :ref:`uboot-config <ref-classes-uboot-config>`
- class.
+ :ref:`ref-classes-uboot-config` class.
:term:`UBOOT_DTB_LOADADDRESS`
Specifies the load address for the dtb image used by U-Boot. During FIT
image creation, the :term:`UBOOT_DTB_LOADADDRESS` variable is used in
- :ref:`kernel-fitimage <ref-classes-kernel-fitimage>` class to specify
- the load address to be used in
- creating the dtb sections of Image Tree Source for the FIT image.
+ :ref:`ref-classes-kernel-fitimage` class to specify the load address to be
+ used in creating the dtb sections of Image Tree Source for the FIT image.
:term:`UBOOT_DTBO_LOADADDRESS`
Specifies the load address for the dtbo image used by U-Boot. During FIT
image creation, the :term:`UBOOT_DTBO_LOADADDRESS` variable is used in
- :ref:`kernel-fitimage <ref-classes-kernel-fitimage>` class to specify the load address to be used in
- creating the dtbo sections of Image Tree Source for the FIT image.
+ :ref:`ref-classes-kernel-fitimage` class to specify the load address to be
+ used in creating the dtbo sections of Image Tree Source for the FIT image.
:term:`UBOOT_ENTRYPOINT`
Specifies the entry point for the U-Boot image. During U-Boot image
creation, the :term:`UBOOT_ENTRYPOINT` variable is passed as a
command-line parameter to the ``uboot-mkimage`` utility.
+ To pass a 64 bit address for FIT image creation, you will need to set:
+ - The :term:`FIT_ADDRESS_CELLS` variable for FIT image creation.
+ - The :term:`UBOOT_FIT_ADDRESS_CELLS` variable for U-Boot FIT image creation.
+
+ This variable is used by the :ref:`ref-classes-kernel-fitimage`,
+ :ref:`ref-classes-kernel-uimage`, :ref:`ref-classes-kernel`,
+ :ref:`ref-classes-uboot-config` and :ref:`ref-classes-uboot-sign`
+ classes.
+
+ :term:`UBOOT_FIT_ADDRESS_CELLS`
+ Specifies the value of the ``#address-cells`` value for the
+ description of the U-Boot FIT image.
+
+ The default value is set to "1" by the :ref:`ref-classes-uboot-sign`
+ class, which corresponds to 32 bit addresses.
+
+ For platforms that need to set 64 bit addresses in
+ :term:`UBOOT_LOADADDRESS` and :term:`UBOOT_ENTRYPOINT`, you need to
+ set this value to "2", as two 32 bit values (cells) will be needed
+ to represent such addresses.
+
+ Here is an example setting "0x400000000" as a load address::
+
+ UBOOT_FIT_ADDRESS_CELLS = "2"
+ UBOOT_LOADADDRESS= "0x04 0x00000000"
+
+ See `more details about #address-cells <https://elinux.org/Device_Tree_Usage#How_Addressing_Works>`__.
+
+ :term:`UBOOT_FIT_DESC`
+ Specifies the description string encoded into a U-Boot fitImage. The default
+ value is set by the :ref:`ref-classes-uboot-sign` class as follows::
+
+ UBOOT_FIT_DESC ?= "U-Boot fitImage for ${DISTRO_NAME}/${PV}/${MACHINE}"
+
+ :term:`UBOOT_FIT_GENERATE_KEYS`
+ Decides whether to generate the keys for signing the U-Boot fitImage if
+ they don't already exist. The keys are created in :term:`SPL_SIGN_KEYDIR`.
+ The default value is "0".
+
+ Enable this as follows::
+
+ UBOOT_FIT_GENERATE_KEYS = "1"
+
+ This variable is used in the :ref:`ref-classes-uboot-sign` class.
+
+ :term:`UBOOT_FIT_HASH_ALG`
+ Specifies the hash algorithm used in creating the U-Boot FIT Image.
+ It is set by default to ``sha256`` by the :ref:`ref-classes-uboot-sign`
+ class.
+
+ :term:`UBOOT_FIT_KEY_GENRSA_ARGS`
+ Arguments to ``openssl genrsa`` for generating a RSA private key for
+ signing the U-Boot FIT image. The default value of this variable
+ is set to "-F4" by the :ref:`ref-classes-uboot-sign` class.
+
+ :term:`UBOOT_FIT_KEY_REQ_ARGS`
+ Arguments to ``openssl req`` for generating a certificate for signing
+ the U-Boot FIT image. The default value is "-batch -new" by the
+ :ref:`ref-classes-uboot-sign` class, "batch" for
+ non interactive mode and "new" for generating new keys.
+
+ :term:`UBOOT_FIT_KEY_SIGN_PKCS`
+ Format for the public key certificate used for signing the U-Boot FIT
+ image. The default value is set to "x509" by the
+ :ref:`ref-classes-uboot-sign` class.
+
+ :term:`UBOOT_FIT_SIGN_ALG`
+ Specifies the signature algorithm used in creating the U-Boot FIT Image.
+ This variable is set by default to "rsa2048" by the
+ :ref:`ref-classes-uboot-sign` class.
+
+ :term:`UBOOT_FIT_SIGN_NUMBITS`
+ Size of the private key used in signing the U-Boot FIT image, in number
+ of bits. The default value for this variable is set to "2048"
+ by the :ref:`ref-classes-uboot-sign` class.
+
+ :term:`UBOOT_FITIMAGE_ENABLE`
+ This variable allows to generate a FIT image for U-Boot, which is one
+ of the ways to implement a verified boot process.
+
+ Its default value is "0", so set it to "1" to enable this functionality::
+
+ UBOOT_FITIMAGE_ENABLE = "1"
+
+ See the :ref:`ref-classes-uboot-sign` class for details.
+
:term:`UBOOT_LOADADDRESS`
Specifies the load address for the U-Boot image. During U-Boot image
creation, the :term:`UBOOT_LOADADDRESS` variable is passed as a
command-line parameter to the ``uboot-mkimage`` utility.
+ To pass a 64 bit address, you will also need to set:
+
+ - The :term:`FIT_ADDRESS_CELLS` variable for FIT image creation.
+ - The :term:`UBOOT_FIT_ADDRESS_CELLS` variable for U-Boot FIT image creation.
+
+ This variable is used by the :ref:`ref-classes-kernel-fitimage`,
+ :ref:`ref-classes-kernel-uimage`, :ref:`ref-classes-kernel`,
+ :ref:`ref-classes-uboot-config` and :ref:`ref-classes-uboot-sign`
+ classes.
+
:term:`UBOOT_LOCALVERSION`
Appends a string to the name of the local version of the U-Boot
image. For example, assuming the version of the U-Boot image built
@@ -8347,56 +9580,65 @@ system and gives an overview of their function and contents.
:term:`UBOOT_MKIMAGE`
Specifies the name of the mkimage command as used by the
- :ref:`kernel-fitimage <ref-classes-kernel-fitimage>` class to assemble
+ :ref:`ref-classes-kernel-fitimage` class to assemble
the FIT image. This can be used to substitute an alternative command, wrapper
script or function if desired. The default is "uboot-mkimage".
:term:`UBOOT_MKIMAGE_DTCOPTS`
- Options for the device tree compiler passed to mkimage '-D'
- feature while creating FIT image in :ref:`kernel-fitimage <ref-classes-kernel-fitimage>` class.
- If :term:`UBOOT_MKIMAGE_DTCOPTS` is not set then kernel-fitimage will not
- pass the ``-D`` option to mkimage.
+ Options for the device tree compiler passed to ``mkimage -D`` feature
+ while creating a FIT image with the :ref:`ref-classes-kernel-fitimage`
+ class. If :term:`UBOOT_MKIMAGE_DTCOPTS` is not set then the
+ :ref:`ref-classes-kernel-fitimage` class will not pass the ``-D`` option
+ to ``mkimage``.
+
+ This variable is also used by the :ref:`ref-classes-uboot-sign` class.
+
+ :term:`UBOOT_MKIMAGE_KERNEL_TYPE`
+ Specifies the type argument for the kernel as passed to ``uboot-mkimage``.
+ The default value is "kernel".
:term:`UBOOT_MKIMAGE_SIGN`
Specifies the name of the mkimage command as used by the
- :ref:`kernel-fitimage <ref-classes-kernel-fitimage>` class to sign
+ :ref:`ref-classes-kernel-fitimage` class to sign
the FIT image after it has been assembled (if enabled). This can be used
to substitute an alternative command, wrapper script or function if
desired. The default is "${:term:`UBOOT_MKIMAGE`}".
:term:`UBOOT_MKIMAGE_SIGN_ARGS`
Optionally specifies additional arguments for the
- :ref:`kernel-fitimage <ref-classes-kernel-fitimage>` class to pass to the
+ :ref:`ref-classes-kernel-fitimage` class to pass to the
mkimage command when signing the FIT image.
:term:`UBOOT_RD_ENTRYPOINT`
- Specifies the entrypoint for the RAM disk image.
- During FIT image creation, the
- :term:`UBOOT_RD_ENTRYPOINT` variable is used
- in :ref:`kernel-fitimage <ref-classes-kernel-fitimage>` class to specify the
- entrypoint to be used in creating the Image Tree Source for
- the FIT image.
+ Specifies the entrypoint for the RAM disk image. During FIT image
+ creation, the :term:`UBOOT_RD_ENTRYPOINT` variable is used in
+ :ref:`ref-classes-kernel-fitimage` class to specify the entrypoint to be
+ used in creating the Image Tree Source for the FIT image.
:term:`UBOOT_RD_LOADADDRESS`
- Specifies the load address for the RAM disk image.
- During FIT image creation, the
- :term:`UBOOT_RD_LOADADDRESS` variable is used
- in :ref:`kernel-fitimage <ref-classes-kernel-fitimage>` class to specify the
- load address to be used in creating the Image Tree Source for
- the FIT image.
+ Specifies the load address for the RAM disk image. During FIT image
+ creation, the :term:`UBOOT_RD_LOADADDRESS` variable is used in
+ :ref:`ref-classes-kernel-fitimage` class to specify the load address to
+ be used in creating the Image Tree Source for the FIT image.
:term:`UBOOT_SIGN_ENABLE`
Enable signing of FIT image. The default value is "0".
+ This variable is used by the :ref:`ref-classes-kernel-fitimage`,
+ :ref:`ref-classes-uboot-config` and :ref:`ref-classes-uboot-sign`
+ classes.
+
:term:`UBOOT_SIGN_KEYDIR`
- Location of the directory containing the RSA key and
- certificate used for signing FIT image.
+ Location of the directory containing the RSA key and certificate used for
+ signing FIT image, used by the :ref:`ref-classes-kernel-fitimage` and
+ :ref:`ref-classes-uboot-sign` classes.
:term:`UBOOT_SIGN_KEYNAME`
- The name of keys used for signing U-Boot FIT image stored in
- :term:`UBOOT_SIGN_KEYDIR` directory. For e.g. dev.key key and dev.crt
- certificate stored in :term:`UBOOT_SIGN_KEYDIR` directory will have
- :term:`UBOOT_SIGN_KEYNAME` set to "dev".
+ The name of keys used by the :ref:`ref-classes-kernel-fitimage` class
+ for signing U-Boot FIT image stored in the :term:`UBOOT_SIGN_KEYDIR`
+ directory. If we have for example a ``dev.key`` key and a ``dev.crt``
+ certificate stored in the :term:`UBOOT_SIGN_KEYDIR` directory, you will
+ have to set :term:`UBOOT_SIGN_KEYNAME` to ``dev``.
:term:`UBOOT_SUFFIX`
Points to the generated U-Boot extension. For example, ``u-boot.sb``
@@ -8411,7 +9653,7 @@ system and gives an overview of their function and contents.
passes and uses "all" for the target during the U-Boot building
process.
- :term:`UNKNOWN_CONFIGURE_WHITELIST`
+ :term:`UNKNOWN_CONFIGURE_OPT_IGNORE`
Specifies a list of options that, if reported by the configure script
as being invalid, should not generate a warning during the
:ref:`ref-tasks-configure` task. Normally, invalid
@@ -8421,16 +9663,16 @@ system and gives an overview of their function and contents.
However, there are common options that are passed to all
configure scripts at a class level, but might not be valid for some
configure scripts. Therefore warnings about these options are useless.
- For these cases, the options are added to :term:`UNKNOWN_CONFIGURE_WHITELIST`.
+ For these cases, the options are added to :term:`UNKNOWN_CONFIGURE_OPT_IGNORE`.
The configure arguments check that uses
- :term:`UNKNOWN_CONFIGURE_WHITELIST` is part of the
- :ref:`insane <ref-classes-insane>` class and is only enabled if the
- recipe inherits the :ref:`autotools <ref-classes-autotools>` class.
+ :term:`UNKNOWN_CONFIGURE_OPT_IGNORE` is part of the
+ :ref:`ref-classes-insane` class and is only enabled if the
+ recipe inherits the :ref:`ref-classes-autotools` class.
:term:`UPDATERCPN`
For recipes inheriting the
- :ref:`update-rc.d <ref-classes-update-rc.d>` class, :term:`UPDATERCPN`
+ :ref:`ref-classes-update-rc.d` class, :term:`UPDATERCPN`
specifies the package that contains the initscript that is enabled.
The default value is "${PN}". Given that almost all recipes that
@@ -8444,8 +9686,7 @@ system and gives an overview of their function and contents.
releases are not identified by Git tags, set :term:`UPSTREAM_CHECK_COMMITS`
to ``1`` in the recipe, and the OpenEmbedded build system
will compare the latest commit with the one currently specified
- by the recipe (:term:`SRCREV`).
- ::
+ by the recipe (:term:`SRCREV`)::
UPSTREAM_CHECK_COMMITS = "1"
@@ -8458,8 +9699,7 @@ system and gives an overview of their function and contents.
You can use the :term:`UPSTREAM_CHECK_GITTAGREGEX` variable to provide a
regular expression to filter only the relevant tags should the
- default filter not work correctly.
- ::
+ default filter not work correctly::
UPSTREAM_CHECK_GITTAGREGEX = "git_tag_regex"
@@ -8467,8 +9707,7 @@ system and gives an overview of their function and contents.
Use the :term:`UPSTREAM_CHECK_REGEX` variable to specify a different
regular expression instead of the default one when the package
checking system is parsing the page found using
- :term:`UPSTREAM_CHECK_URI`.
- ::
+ :term:`UPSTREAM_CHECK_URI`::
UPSTREAM_CHECK_REGEX = "package_regex"
@@ -8479,8 +9718,7 @@ system and gives an overview of their function and contents.
determined by fetching the directory listing where the tarball is and
attempting to find a later tarball. When this approach does not work,
you can use :term:`UPSTREAM_CHECK_URI` to provide a different URI that
- contains the link to the latest tarball.
- ::
+ contains the link to the latest tarball::
UPSTREAM_CHECK_URI = "recipe_url"
@@ -8491,8 +9729,7 @@ system and gives an overview of their function and contents.
:term:`UPSTREAM_CHECK_GITTAGREGEX` and :term:`UPSTREAM_CHECK_COMMITS` variables in
the recipe allows to determine what the latest upstream version is,
you can set :term:`UPSTREAM_VERSION_UNKNOWN` to ``1`` in the recipe
- to acknowledge that the check cannot be performed.
- ::
+ to acknowledge that the check cannot be performed::
UPSTREAM_VERSION_UNKNOWN = "1"
@@ -8502,16 +9739,15 @@ system and gives an overview of their function and contents.
specifically set. Typically, you would set :term:`USE_DEVFS` to "0" for a
statically populated ``/dev`` directory.
- See the ":ref:`dev-manual/common-tasks:selecting a device manager`" section in
+ See the ":ref:`dev-manual/device-manager:selecting a device manager`" section in
the Yocto Project Development Tasks Manual for information on how to
use this variable.
:term:`USE_VT`
When using
- :ref:`SysVinit <dev-manual/common-tasks:enabling system services>`,
- determines whether or not to run a
- `getty <https://en.wikipedia.org/wiki/Getty_%28Unix%29>`__ on any
- virtual terminals in order to enable logging in through those
+ :ref:`SysVinit <dev-manual/new-recipe:enabling system services>`,
+ determines whether or not to run a :wikipedia:`getty <Getty_(Unix)>`
+ on any virtual terminals in order to enable logging in through those
terminals.
The default value used for :term:`USE_VT` is "1" when no default value is
@@ -8522,15 +9758,18 @@ system and gives an overview of their function and contents.
:term:`USER_CLASSES`
A list of classes to globally inherit. These classes are used by the
- OpenEmbedded build system to enable extra features (e.g.
- ``buildstats``, ``image-prelink``, and so forth).
+ OpenEmbedded build system to enable extra features.
+
+ Classes inherited using :term:`USER_CLASSES` must be located in the
+ ``classes-global/`` or ``classes/`` subdirectories.
The default list is set in your ``local.conf`` file::
- USER_CLASSES ?= "buildstats image-prelink"
+ USER_CLASSES ?= "buildstats"
For more information, see
- ``meta-poky/conf/local.conf.sample`` in the :term:`Source Directory`.
+ ``meta-poky/conf/templates/default/local.conf.sample`` in the
+ :term:`Source Directory`.
:term:`USERADD_ERROR_DYNAMIC`
If set to ``error``, forces the OpenEmbedded build system to produce
@@ -8586,7 +9825,7 @@ system and gives an overview of their function and contents.
causes the build system to use static ``gid`` values.
:term:`USERADD_PACKAGES`
- When inheriting the :ref:`useradd <ref-classes-useradd>` class,
+ When inheriting the :ref:`ref-classes-useradd` class,
this variable specifies the individual packages within the recipe
that require users and/or groups to be added.
@@ -8603,7 +9842,7 @@ system and gives an overview of their function and contents.
:term:`GROUPADD_PARAM`, or :term:`GROUPMEMS_PARAM` variables.
:term:`USERADD_PARAM`
- When inheriting the :ref:`useradd <ref-classes-useradd>` class,
+ When inheriting the :ref:`ref-classes-useradd` class,
this variable specifies for a package what parameters should pass to
the ``useradd`` command if you add a user to the system when the
package is installed.
@@ -8657,6 +9896,33 @@ system and gives an overview of their function and contents.
Additionally, you should also set the
:term:`USERADD_ERROR_DYNAMIC` variable.
+ :term:`VIRTUAL-RUNTIME`
+ :term:`VIRTUAL-RUNTIME` is a commonly used prefix for defining virtual
+ packages for runtime usage, typically for use in :term:`RDEPENDS`
+ or in image definitions.
+
+ An example is ``VIRTUAL-RUNTIME_base-utils`` that makes it possible
+ to either use BusyBox based utilities::
+
+ VIRTUAL-RUNTIME_base-utils = "busybox"
+
+ or their full featured implementations from GNU Coreutils
+ and other projects::
+
+ VIRTUAL-RUNTIME_base-utils = "packagegroup-core-base-utils"
+
+ Here are two examples using this virtual runtime package. The
+ first one is in :yocto_git:`initramfs-framework_1.0.bb
+ </poky/tree/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb?h=scarthgap>`::
+
+ RDEPENDS:${PN} += "${VIRTUAL-RUNTIME_base-utils}"
+
+ The second example is in the :yocto_git:`core-image-initramfs-boot
+ </poky/tree/meta/recipes-core/images/core-image-initramfs-boot.bb?h=scarthgap>`
+ image definition::
+
+ PACKAGE_INSTALL = "${INITRAMFS_SCRIPTS} ${VIRTUAL-RUNTIME_base-utils} base-passwd"
+
:term:`VOLATILE_LOG_DIR`
Specifies the persistence of the target's ``/var/log`` directory,
which is used to house postinstall target log files.
@@ -8665,6 +9931,18 @@ system and gives an overview of their function and contents.
file is not persistent. You can override this setting by setting the
variable to "no" to make the log directory persistent.
+ :term:`VOLATILE_TMP_DIR`
+ Specifies the persistence of the target's ``/tmp`` directory.
+
+ By default, :term:`VOLATILE_TMP_DIR` is set to "yes", in which case
+ ``/tmp`` links to a directory which resides in RAM in a ``tmpfs``
+ filesystem.
+
+ If instead, you want the ``/tmp`` directory to be persistent, set the
+ variable to "no" to make it a regular directory in the root filesystem.
+
+ This supports both sysvinit and systemd based systems.
+
:term:`WARN_QA`
Specifies the quality assurance checks whose failures are reported as
warnings by the OpenEmbedded build system. You set this variable in
@@ -8672,12 +9950,21 @@ system and gives an overview of their function and contents.
can control with this variable, see the
":ref:`ref-classes-insane`" section.
+ :term:`WATCHDOG_TIMEOUT`
+ Specifies the timeout in seconds used by the ``watchdog`` recipe and
+ also by ``systemd`` during reboot. The default is 60 seconds.
+
+ :term:`WIRELESS_DAEMON`
+ For ``connman`` and ``packagegroup-base``, specifies the wireless
+ daemon to use. The default is "wpa-supplicant" (note that the value
+ uses a dash and not an underscore).
+
:term:`WKS_FILE`
Specifies the location of the Wic kickstart file that is used by the
OpenEmbedded build system to create a partitioned image
(``image.wic``). For information on how to create a partitioned
image, see the
- ":ref:`dev-manual/common-tasks:creating partitioned images using wic`"
+ ":ref:`dev-manual/wic:creating partitioned images using wic`"
section in the Yocto Project Development Tasks Manual. For details on
the kickstart file format, see the ":doc:`/ref-manual/kickstart`" Chapter.
@@ -8697,7 +9984,7 @@ system and gives an overview of their function and contents.
With the :term:`WKS_FILE_DEPENDS` variable, you have the possibility to
specify a list of additional dependencies (e.g. native tools,
bootloaders, and so forth), that are required to build Wic images.
- Following is an example::
+ Here is an example::
WKS_FILE_DEPENDS = "some-native-tool"
@@ -8705,6 +9992,19 @@ system and gives an overview of their function and contents.
previous example, some-native-tool would be replaced with an actual
native tool on which the build would depend.
+ :term:`WKS_FILES`
+ Specifies a list of candidate Wic kickstart files to be used by the
+ OpenEmbedded build system to create a partitioned image. Only the
+ first one that is found, from left to right, will be used.
+
+ This is only useful when there are multiple ``.wks`` files that can be
+ used to produce an image. A typical case is when multiple layers are
+ used for different hardware platforms, each supplying a different
+ ``.wks`` file. In this case, you specify all possible ones through
+ :term:`WKS_FILES`.
+
+ If only one ``.wks`` file is used, set :term:`WKS_FILE` instead.
+
:term:`WORKDIR`
The pathname of the work directory in which the OpenEmbedded build
system builds a recipe. This directory is located within the
@@ -8720,13 +10020,13 @@ system and gives an overview of their function and contents.
- :term:`TMPDIR`: The top-level build output directory
- :term:`MULTIMACH_TARGET_SYS`: The target system identifier
- :term:`PN`: The recipe name
- - :term:`EXTENDPE`: The epoch - (if :term:`PE` is not specified, which
- is usually the case for most recipes, then `EXTENDPE` is blank)
+ - :term:`EXTENDPE`: The epoch --- if :term:`PE` is not specified, which
+ is usually the case for most recipes, then :term:`EXTENDPE` is blank.
- :term:`PV`: The recipe version
- :term:`PR`: The recipe revision
As an example, assume a Source Directory top-level folder name
- ``poky``, a default Build Directory at ``poky/build``, and a
+ ``poky``, a default :term:`Build Directory` at ``poky/build``, and a
``qemux86-poky-linux`` machine target system. Furthermore, suppose
your recipe is named ``foo_1.3.0-r0.bb``. In this case, the work
directory the build system uses to build the package would be as
@@ -8743,4 +10043,35 @@ system and gives an overview of their function and contents.
The default value of :term:`XSERVER`, if not specified in the machine
configuration, is "xserver-xorg xf86-video-fbdev xf86-input-evdev".
-
+
+ :term:`XZ_THREADS`
+ Specifies the number of parallel threads that should be used when
+ using xz compression.
+
+ By default this scales with core count, but is never set less than 2
+ to ensure that multi-threaded mode is always used so that the output
+ file contents are deterministic. Builds will work with a value of 1
+ but the output will differ compared to the output from the compression
+ generated when more than one thread is used.
+
+ On systems where many tasks run in parallel, setting a limit to this
+ can be helpful in controlling system resource usage.
+
+ :term:`XZ_MEMLIMIT`
+ Specifies the maximum memory the xz compression should use as a percentage
+ of system memory. If unconstrained the xz compressor can use large amounts of
+ memory and become problematic with parallelism elsewhere in the build.
+ "50%" has been found to be a good value.
+
+ :term:`ZSTD_THREADS`
+ Specifies the number of parallel threads that should be used when
+ using ZStandard compression.
+
+ By default this scales with core count, but is never set less than 2
+ to ensure that multi-threaded mode is always used so that the output
+ file contents are deterministic. Builds will work with a value of 1
+ but the output will differ compared to the output from the compression
+ generated when more than one thread is used.
+
+ On systems where many tasks run in parallel, setting a limit to this
+ can be helpful in controlling system resource usage.