summaryrefslogtreecommitdiff
path: root/poky/documentation/ref-manual/variables.rst
diff options
context:
space:
mode:
Diffstat (limited to 'poky/documentation/ref-manual/variables.rst')
-rw-r--r--poky/documentation/ref-manual/variables.rst277
1 files changed, 222 insertions, 55 deletions
diff --git a/poky/documentation/ref-manual/variables.rst b/poky/documentation/ref-manual/variables.rst
index 11523bb9e7..12889a5085 100644
--- a/poky/documentation/ref-manual/variables.rst
+++ b/poky/documentation/ref-manual/variables.rst
@@ -1358,6 +1358,32 @@ 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
@@ -1698,7 +1724,8 @@ system and gives an overview of their function and contents.
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`
+ :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
@@ -2459,6 +2486,16 @@ system and gives an overview of their function and contents.
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>`,
@@ -3765,9 +3802,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
@@ -3778,9 +3815,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
@@ -4333,17 +4370,16 @@ 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
@@ -4718,6 +4754,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
@@ -5075,7 +5115,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.
@@ -5280,6 +5319,11 @@ system and gives an overview of their function and contents.
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`).
@@ -5591,6 +5635,11 @@ 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`
@@ -6059,13 +6108,11 @@ 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:
- #. 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.
- #. 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.
#. Additional build dependencies (:term:`DEPENDS`)
that should be added if the feature is enabled.
@@ -6123,6 +6170,38 @@ 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.
@@ -6409,9 +6488,9 @@ system and gives an overview of their function and contents.
: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
@@ -6421,9 +6500,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
@@ -6910,6 +6989,22 @@ system and gives an overview of their function and contents.
":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,
putting the reason why in this variable in a recipe allows
@@ -6917,6 +7012,36 @@ 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.
@@ -6979,9 +7104,9 @@ system and gives an overview of their function and contents.
: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
@@ -6992,9 +7117,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
@@ -7007,9 +7132,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
@@ -7020,9 +7145,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
@@ -7297,13 +7422,16 @@ system and gives an overview of their function and contents.
:term:`SDK_EXT_TYPE` is set to "full".
: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
@@ -7334,7 +7462,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
@@ -7516,23 +7646,6 @@ system and gives an overview of their function and contents.
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:`ref-classes-setuptools3`
class, this variable can be used to specify additional arguments to be
@@ -8105,6 +8218,16 @@ system and gives an overview of their function and contents.
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
@@ -8221,10 +8344,15 @@ 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,
@@ -8409,6 +8537,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
@@ -9046,6 +9203,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