1.. SPDX-License-Identifier: CC-BY-SA-2.0-UK 2 3****************** 4Variables Glossary 5****************** 6 7This chapter lists common variables used in the OpenEmbedded build 8system and gives an overview of their function and contents. 9 10:term:`A <ABIEXTENSION>` :term:`B` :term:`C <CACHE>` 11:term:`D` :term:`E <EFI_PROVIDER>` :term:`F <FAKEROOT>` 12:term:`G <GCCPIE>` :term:`H <HGDIR>` :term:`I <ICECC_CLASS_DISABLE>` 13:term:`K <KARCH>` :term:`L <LABELS>` :term:`M <MACHINE>` 14:term:`N <NATIVELSBSTRING>` :term:`O <OBJCOPY>` :term:`P` 15:term:`Q <QA_EMPTY_DIRS>` :term:`R <RANLIB>` :term:`S` :term:`T` 16:term:`U <UBOOT_BINARY>` :term:`V <VIRTUAL-RUNTIME>` 17:term:`W <WARN_QA>` :term:`X <XSERVER>` :term:`Z <ZSTD_THREADS>` 18 19.. glossary:: 20 :sorted: 21 22 :term:`ABIEXTENSION` 23 Extension to the Application Binary Interface (ABI) field of the GNU 24 canonical architecture name (e.g. "eabi"). 25 26 ABI extensions are set in the machine include files. For example, the 27 ``meta/conf/machine/include/arm/arch-arm.inc`` file sets the 28 following extension:: 29 30 ABIEXTENSION = "eabi" 31 32 :term:`ALLOW_EMPTY` 33 Specifies whether to produce an output package even if it is empty. 34 By default, BitBake does not produce empty packages. This default 35 behavior can cause issues when there is an 36 :term:`RDEPENDS` or some other hard runtime 37 requirement on the existence of the package. 38 39 Like all package-controlling variables, you must always use them in 40 conjunction with a package name override, as in:: 41 42 ALLOW_EMPTY:${PN} = "1" 43 ALLOW_EMPTY:${PN}-dev = "1" 44 ALLOW_EMPTY:${PN}-staticdev = "1" 45 46 :term:`ALTERNATIVE` 47 Lists commands in a package that need an alternative binary naming 48 scheme. Sometimes the same command is provided in multiple packages. 49 When this occurs, the OpenEmbedded build system needs to use the 50 alternatives system to create a different binary naming scheme so the 51 commands can co-exist. 52 53 To use the variable, list out the package's commands that are also 54 provided by another package. For example, if the ``busybox`` package 55 has four such commands, you identify them as follows:: 56 57 ALTERNATIVE:busybox = "sh sed test bracket" 58 59 For more information on the alternatives system, see the 60 ":ref:`ref-classes-update-alternatives`" 61 section. 62 63 :term:`ALTERNATIVE_LINK_NAME` 64 Used by the alternatives system to map duplicated commands to actual 65 locations. For example, if the ``bracket`` command provided by the 66 ``busybox`` package is duplicated through another package, you must 67 use the :term:`ALTERNATIVE_LINK_NAME` variable to specify the actual 68 location:: 69 70 ALTERNATIVE_LINK_NAME[bracket] = "/usr/bin/[" 71 72 In this example, the binary for the ``bracket`` command (i.e. ``[``) 73 from the ``busybox`` package resides in ``/usr/bin/``. 74 75 .. note:: 76 77 If :term:`ALTERNATIVE_LINK_NAME` is not defined, it defaults to ``${bindir}/name``. 78 79 For more information on the alternatives system, see the 80 ":ref:`ref-classes-update-alternatives`" 81 section. 82 83 :term:`ALTERNATIVE_PRIORITY` 84 Used by the alternatives system to create default priorities for 85 duplicated commands. You can use the variable to create a single 86 default regardless of the command name or package, a default for 87 specific duplicated commands regardless of the package, or a default 88 for specific commands tied to particular packages. Here are the 89 available syntax forms:: 90 91 ALTERNATIVE_PRIORITY = "priority" 92 ALTERNATIVE_PRIORITY[name] = "priority" 93 ALTERNATIVE_PRIORITY_pkg[name] = "priority" 94 95 For more information on the alternatives system, see the 96 ":ref:`ref-classes-update-alternatives`" 97 section. 98 99 :term:`ALTERNATIVE_TARGET` 100 Used by the alternatives system to create default link locations for 101 duplicated commands. You can use the variable to create a single 102 default location for all duplicated commands regardless of the 103 command name or package, a default for specific duplicated commands 104 regardless of the package, or a default for specific commands tied to 105 particular packages. Here are the available syntax forms:: 106 107 ALTERNATIVE_TARGET = "target" 108 ALTERNATIVE_TARGET[name] = "target" 109 ALTERNATIVE_TARGET_pkg[name] = "target" 110 111 .. note:: 112 113 If :term:`ALTERNATIVE_TARGET` is not defined, it inherits the value 114 from the :term:`ALTERNATIVE_LINK_NAME` variable. 115 116 If :term:`ALTERNATIVE_LINK_NAME` and :term:`ALTERNATIVE_TARGET` are the 117 same, the target for :term:`ALTERNATIVE_TARGET` has "``.{BPN}``" 118 appended to it. 119 120 Finally, if the file referenced has not been renamed, the 121 alternatives system will rename it to avoid the need to rename 122 alternative files in the :ref:`ref-tasks-install` 123 task while retaining support for the command if necessary. 124 125 For more information on the alternatives system, see the 126 ":ref:`ref-classes-update-alternatives`" section. 127 128 :term:`ANY_OF_DISTRO_FEATURES` 129 When inheriting the :ref:`ref-classes-features_check` 130 class, this variable identifies a list of distribution features where 131 at least one must be enabled in the current configuration in order 132 for the OpenEmbedded build system to build the recipe. In other words, 133 if none of the features listed in :term:`ANY_OF_DISTRO_FEATURES` 134 appear in :term:`DISTRO_FEATURES` within the current configuration, then 135 the recipe will be skipped, and if the build system attempts to build 136 the recipe then an error will be triggered. 137 138 :term:`APPEND` 139 An override list of append strings for each target specified with 140 :term:`LABELS`. 141 142 See the :ref:`ref-classes-grub-efi` class for more 143 information on how this variable is used. 144 145 :term:`AR` 146 The minimal command and arguments used to run ``ar``. 147 148 :term:`ARCHIVER_MODE` 149 When used with the :ref:`ref-classes-archiver` class, 150 determines the type of information used to create a released archive. 151 You can use this variable to create archives of patched source, 152 original source, configured source, and so forth by employing the 153 following variable flags (varflags):: 154 155 ARCHIVER_MODE[src] = "original" # Uses original (unpacked) source files. 156 ARCHIVER_MODE[src] = "patched" # Uses patched source files. This is the default. 157 ARCHIVER_MODE[src] = "configured" # Uses configured source files. 158 ARCHIVER_MODE[diff] = "1" # Uses patches between do_unpack and do_patch. 159 ARCHIVER_MODE[diff-exclude] ?= "file file ..." # Lists files and directories to exclude from diff. 160 ARCHIVER_MODE[dumpdata] = "1" # Uses environment data. 161 ARCHIVER_MODE[recipe] = "1" # Uses recipe and include files. 162 ARCHIVER_MODE[srpm] = "1" # Uses RPM package files. 163 164 For information on how the variable works, see the 165 ``meta/classes/archiver.bbclass`` file in the :term:`Source Directory`. 166 167 :term:`AS` 168 Minimal command and arguments needed to run the assembler. 169 170 :term:`ASSUME_PROVIDED` 171 Lists recipe names (:term:`PN` values) BitBake does not 172 attempt to build. Instead, BitBake assumes these recipes have already 173 been built. 174 175 In OpenEmbedded-Core, :term:`ASSUME_PROVIDED` mostly specifies native 176 tools that should not be built. An example is ``git-native``, which 177 when specified, allows for the Git binary from the host to be used 178 rather than building ``git-native``. 179 180 :term:`ASSUME_SHLIBS` 181 Provides additional ``shlibs`` provider mapping information, which 182 adds to or overwrites the information provided automatically by the 183 system. Separate multiple entries using spaces. 184 185 As an example, use the following form to add an ``shlib`` provider of 186 shlibname in packagename with the optional version:: 187 188 shlibname:packagename[_version] 189 190 Here is an example that adds a shared library named ``libEGL.so.1`` 191 as being provided by the ``libegl-implementation`` package:: 192 193 ASSUME_SHLIBS = "libEGL.so.1:libegl-implementation" 194 195 :term:`AUTO_LIBNAME_PKGS` 196 When the :ref:`ref-classes-debian` class is inherited, 197 which is the default behavior, :term:`AUTO_LIBNAME_PKGS` specifies which 198 packages should be checked for libraries and renamed according to 199 Debian library package naming. 200 201 The default value is "${PACKAGES}", which causes the 202 :ref:`ref-classes-debian` class to act on all packages that are 203 explicitly generated by the recipe. 204 205 :term:`AUTOREV` 206 When :term:`SRCREV` is set to the value of this variable, it specifies to 207 use the latest source revision in the repository. Here is an example:: 208 209 SRCREV = "${AUTOREV}" 210 211 If you use the previous statement to retrieve the latest version of 212 software, you need to make sure :term:`PV` contains the ``+`` sign so 213 :term:`bitbake` includes source control information to :term:`PKGV` when 214 packaging the recipe. For example:: 215 216 PV = "6.10.y+git" 217 218 For more information see the 219 ":ref:`dev-manual/packages:automatically incrementing a package version number`" 220 section in the Yocto Project Development Tasks Manual. 221 222 :term:`AUTO_SYSLINUXMENU` 223 Enables creating an automatic menu for the syslinux bootloader. You 224 must set this variable in your recipe. The 225 :ref:`ref-classes-syslinux` class checks this variable. 226 227 :term:`AVAILTUNES` 228 The list of defined CPU and Application Binary Interface (ABI) 229 tunings (i.e. "tunes") available for use by the OpenEmbedded build 230 system. 231 232 The list simply presents the tunes that are available. Not all tunes 233 may be compatible with a particular machine configuration, or with 234 each other in a 235 :ref:`Multilib <dev-manual/libraries:combining multiple versions of library files into one image>` 236 configuration. 237 238 To add a tune to the list, be sure to append it with spaces using the 239 "+=" BitBake operator. Do not simply replace the list by using the 240 "=" operator. See the 241 ":ref:`bitbake-user-manual/bitbake-user-manual-metadata:basic syntax`" section in the BitBake 242 User Manual for more information. 243 244 :term:`AZ_SAS` 245 Azure Storage Shared Access Signature, when using the 246 :ref:`Azure Storage fetcher (az://) <bitbake-user-manual/bitbake-user-manual-fetching:fetchers>` 247 This variable can be defined to be used by the fetcher to authenticate 248 and gain access to non-public artifacts:: 249 250 AZ_SAS = ""se=2021-01-01&sp=r&sv=2018-11-09&sr=c&skoid=<skoid>&sig=<signature>"" 251 252 For more information see Microsoft's Azure Storage documentation at 253 https://docs.microsoft.com/en-us/azure/storage/common/storage-sas-overview 254 255 :term:`B` 256 The directory within the :term:`Build Directory` in which the 257 OpenEmbedded build system places generated objects during a recipe's 258 build process. By default, this directory is the same as the 259 :term:`S` directory, which is defined as:: 260 261 S = "${WORKDIR}/${BP}" 262 263 You can separate the (:term:`S`) directory and the directory pointed to 264 by the :term:`B` variable. Most Autotools-based recipes support 265 separating these directories. The build system defaults to using 266 separate directories for ``gcc`` and some kernel recipes. 267 268 :term:`BAD_RECOMMENDATIONS` 269 Lists "recommended-only" packages to not install. Recommended-only 270 packages are packages installed only through the 271 :term:`RRECOMMENDS` variable. You can prevent any 272 of these "recommended" packages from being installed by listing them 273 with the :term:`BAD_RECOMMENDATIONS` variable:: 274 275 BAD_RECOMMENDATIONS = "package_name package_name package_name ..." 276 277 You can set this variable globally in your ``local.conf`` file or you 278 can attach it to a specific image recipe by using the recipe name 279 override:: 280 281 BAD_RECOMMENDATIONS:pn-target_image = "package_name" 282 283 It is important to realize that if you choose to not install packages 284 using this variable and some other packages are dependent on them 285 (i.e. listed in a recipe's :term:`RDEPENDS` 286 variable), the OpenEmbedded build system ignores your request and 287 will install the packages to avoid dependency errors. 288 289 This variable is supported only when using the IPK and RPM 290 packaging backends. DEB is not supported. 291 292 See the :term:`NO_RECOMMENDATIONS` and the 293 :term:`PACKAGE_EXCLUDE` variables for related 294 information. 295 296 :term:`BAREBOX_BINARY` 297 When using the :ref:`ref-classes-barebox` class, this variable allows you 298 to specify a particular binary that should be deployed and installed. 299 300 The barebox build system can build multiple barebox binaries at once. 301 By default, all built binaries will be deployed and installed under their 302 original name. 303 304 Here is an example usage of this variable:: 305 306 BAREBOX_BINARY = "barebox-boundarydevices-imx6dl-nitrogen6x-1g.img" 307 308 :term:`BAREBOX_CONFIG` 309 When using the :ref:`ref-classes-barebox` class, this variable allows you 310 to specify the name of the barebox defconfig to build. 311 The name must be a defconfig file known to the barebox build environment. 312 This variable is mainly useful for generic use cases where a dedicated 313 configuration is not required. 314 The :ref:`ref-classes-barebox` class itself already sets it for some QEMU 315 machines:: 316 317 BAREBOX_CONFIG:qemuarm = "multi_v7_defconfig" 318 BAREBOX_CONFIG:qemuarm64 = "multi_v8_defconfig" 319 BAREBOX_CONFIG:qemux86-64 = "efi_defconfig" 320 321 Except for these, the default value of :term:`BAREBOX_CONFIG` is empty. 322 For more information on how to provide a barebox configuration, see the 323 :ref:`ref-classes-barebox` class. 324 325 :term:`BASE_LIB` 326 The library directory name for the CPU or Application Binary 327 Interface (ABI) tune. The :term:`BASE_LIB` applies only in the Multilib 328 context. See the ":ref:`dev-manual/libraries:combining multiple versions of library files into one image`" 329 section in the Yocto Project Development Tasks Manual for information 330 on Multilib. 331 332 The :term:`BASE_LIB` variable is defined in the machine include files in 333 the :term:`Source Directory`. If Multilib is not 334 being used, the value defaults to "lib". 335 336 :term:`BASE_WORKDIR` 337 Points to the base of the work directory for all recipes. The default 338 value is "${TMPDIR}/work". 339 340 :term:`BB_ALLOWED_NETWORKS` 341 Specifies a space-delimited list of hosts that the fetcher is allowed 342 to use to obtain the required source code. Here are 343 considerations surrounding this variable: 344 345 - This host list is only used if :term:`BB_NO_NETWORK` is either not set 346 or set to "0". 347 348 - There is limited support for wildcard matching against the beginning of 349 host names. For example, the following setting matches 350 ``git.gnu.org``, ``ftp.gnu.org``, and ``foo.git.gnu.org``:: 351 352 BB_ALLOWED_NETWORKS = "*.gnu.org" 353 354 .. note:: 355 356 The use of the "``*``" character only works at the beginning of 357 a host name and it must be isolated from the remainder of the 358 host name. You cannot use the wildcard character in any other 359 location of the name or combined with the front part of the 360 name. 361 362 For example, ``*.foo.bar`` is supported, while ``*aa.foo.bar`` 363 is not. 364 365 - Mirrors not in the host list are skipped and logged in debug. 366 367 - Attempts to access networks not in the host list cause a failure. 368 369 Using :term:`BB_ALLOWED_NETWORKS` in conjunction with 370 :term:`PREMIRRORS` is very useful. Adding the host 371 you want to use to :term:`PREMIRRORS` results in the source code being 372 fetched from an allowed location and avoids raising an error when a 373 host that is not allowed is in a :term:`SRC_URI` 374 statement. This is because the fetcher does not attempt to use the 375 host listed in :term:`SRC_URI` after a successful fetch from the 376 :term:`PREMIRRORS` occurs. 377 378 :term:`BB_BASEHASH_IGNORE_VARS` 379 See :term:`bitbake:BB_BASEHASH_IGNORE_VARS` in the BitBake manual. 380 381 :term:`BB_CACHEDIR` 382 See :term:`bitbake:BB_CACHEDIR` in the BitBake manual. 383 384 :term:`BB_CHECK_SSL_CERTS` 385 See :term:`bitbake:BB_CHECK_SSL_CERTS` in the BitBake manual. 386 387 :term:`BB_CONSOLELOG` 388 See :term:`bitbake:BB_CONSOLELOG` in the BitBake manual. 389 390 :term:`BB_CURRENTTASK` 391 See :term:`bitbake:BB_CURRENTTASK` in the BitBake manual. 392 393 :term:`BB_DEFAULT_TASK` 394 See :term:`bitbake:BB_DEFAULT_TASK` in the BitBake manual. 395 396 :term:`BB_DEFAULT_UMASK` 397 See :term:`bitbake:BB_DEFAULT_UMASK` in the BitBake manual. 398 399 :term:`BB_DISKMON_DIRS` 400 Monitors disk space and available inodes during the build and allows 401 you to control the build based on these parameters. 402 403 Disk space monitoring is disabled by default. To enable monitoring, 404 add the :term:`BB_DISKMON_DIRS` variable to your ``conf/local.conf`` file 405 found in the :term:`Build Directory`. Use the 406 following form: 407 408 .. code-block:: none 409 410 BB_DISKMON_DIRS = "action,dir,threshold [...]" 411 412 where: 413 414 action is: 415 ABORT: Immediately stop the build when 416 a threshold is broken. 417 STOPTASKS: Stop the build after the currently 418 executing tasks have finished when 419 a threshold is broken. 420 WARN: Issue a warning but continue the 421 build when a threshold is broken. 422 Subsequent warnings are issued as 423 defined by the BB_DISKMON_WARNINTERVAL 424 variable, which must be defined in 425 the conf/local.conf file. 426 427 dir is: 428 Any directory you choose. You can specify one or 429 more directories to monitor by separating the 430 groupings with a space. If two directories are 431 on the same device, only the first directory 432 is monitored. 433 434 threshold is: 435 Either the minimum available disk space, 436 the minimum number of free inodes, or 437 both. You must specify at least one. To 438 omit one or the other, simply omit the value. 439 Specify the threshold using G, M, K for Gbytes, 440 Mbytes, and Kbytes, respectively. If you do 441 not specify G, M, or K, Kbytes is assumed by 442 default. Do not use GB, MB, or KB. 443 444 Here are some examples:: 445 446 BB_DISKMON_DIRS = "ABORT,${TMPDIR},1G,100K WARN,${SSTATE_DIR},1G,100K" 447 BB_DISKMON_DIRS = "STOPTASKS,${TMPDIR},1G" 448 BB_DISKMON_DIRS = "ABORT,${TMPDIR},,100K" 449 450 The first example works only if you also provide the 451 :term:`BB_DISKMON_WARNINTERVAL` 452 variable in the ``conf/local.conf``. This example causes the build 453 system to immediately stop when either the disk space in 454 ``${TMPDIR}`` drops below 1 Gbyte or the available free inodes drops 455 below 100 Kbytes. Because two directories are provided with the 456 variable, the build system also issue a warning when the disk space 457 in the ``${SSTATE_DIR}`` directory drops below 1 Gbyte or the number 458 of free inodes drops below 100 Kbytes. Subsequent warnings are issued 459 during intervals as defined by the :term:`BB_DISKMON_WARNINTERVAL` 460 variable. 461 462 The second example stops the build after all currently executing 463 tasks complete when the minimum disk space in the ``${TMPDIR}`` 464 directory drops below 1 Gbyte. No disk monitoring occurs for the free 465 inodes in this case. 466 467 The final example immediately stops the build when the number of 468 free inodes in the ``${TMPDIR}`` directory drops below 100 Kbytes. No 469 disk space monitoring for the directory itself occurs in this case. 470 471 :term:`BB_DISKMON_WARNINTERVAL` 472 Defines the disk space and free inode warning intervals. To set these 473 intervals, define the variable in your ``conf/local.conf`` file in 474 the :term:`Build Directory`. 475 476 If you are going to use the :term:`BB_DISKMON_WARNINTERVAL` variable, you 477 must also use the :term:`BB_DISKMON_DIRS` 478 variable and define its action as "WARN". During the build, 479 subsequent warnings are issued each time disk space or number of free 480 inodes further reduces by the respective interval. 481 482 If you do not provide a :term:`BB_DISKMON_WARNINTERVAL` variable and you 483 do use :term:`BB_DISKMON_DIRS` with the "WARN" action, the disk 484 monitoring interval defaults to the following:: 485 486 BB_DISKMON_WARNINTERVAL = "50M,5K" 487 488 When specifying the variable in your configuration file, use the 489 following form: 490 491 .. code-block:: none 492 493 BB_DISKMON_WARNINTERVAL = "disk_space_interval,disk_inode_interval" 494 495 where: 496 497 disk_space_interval is: 498 An interval of memory expressed in either 499 G, M, or K for Gbytes, Mbytes, or Kbytes, 500 respectively. You cannot use GB, MB, or KB. 501 502 disk_inode_interval is: 503 An interval of free inodes expressed in either 504 G, M, or K for Gbytes, Mbytes, or Kbytes, 505 respectively. You cannot use GB, MB, or KB. 506 507 Here is an example:: 508 509 BB_DISKMON_DIRS = "WARN,${SSTATE_DIR},1G,100K" 510 BB_DISKMON_WARNINTERVAL = "50M,5K" 511 512 These variables cause the 513 OpenEmbedded build system to issue subsequent warnings each time the 514 available disk space further reduces by 50 Mbytes or the number of 515 free inodes further reduces by 5 Kbytes in the ``${SSTATE_DIR}`` 516 directory. Subsequent warnings based on the interval occur each time 517 a respective interval is reached beyond the initial warning (i.e. 1 518 Gbytes and 100 Kbytes). 519 520 :term:`BB_ENV_PASSTHROUGH` 521 See :term:`bitbake:BB_ENV_PASSTHROUGH` in the BitBake manual. 522 523 :term:`BB_ENV_PASSTHROUGH_ADDITIONS` 524 See :term:`bitbake:BB_ENV_PASSTHROUGH_ADDITIONS` in the BitBake manual. 525 526 :term:`BB_FETCH_PREMIRRORONLY` 527 See :term:`bitbake:BB_FETCH_PREMIRRORONLY` in the BitBake manual. 528 529 :term:`BB_FILENAME` 530 See :term:`bitbake:BB_FILENAME` in the BitBake manual. 531 532 :term:`BB_GENERATE_MIRROR_TARBALLS` 533 Causes tarballs of the source control repositories (e.g. Git 534 repositories), including metadata, to be placed in the 535 :term:`DL_DIR` directory. 536 537 For performance reasons, creating and placing tarballs of these 538 repositories is not the default action by the OpenEmbedded build 539 system:: 540 541 BB_GENERATE_MIRROR_TARBALLS = "1" 542 543 Set this variable in your 544 ``local.conf`` file in the :term:`Build Directory`. 545 546 Once you have the tarballs containing your source files, you can 547 clean up your :term:`DL_DIR` directory by deleting any Git or other 548 source control work directories. 549 550 :term:`BB_GENERATE_SHALLOW_TARBALLS` 551 See :term:`bitbake:BB_GENERATE_SHALLOW_TARBALLS` in the BitBake manual. 552 553 :term:`BB_GIT_SHALLOW` 554 See :term:`bitbake:BB_GIT_SHALLOW` in the BitBake manual. 555 556 :term:`BB_GIT_SHALLOW_DEPTH` 557 See :term:`bitbake:BB_GIT_SHALLOW_DEPTH` in the BitBake manual. 558 559 :term:`BB_HASHCHECK_FUNCTION` 560 See :term:`bitbake:BB_HASHCHECK_FUNCTION` in the BitBake manual. 561 562 :term:`BB_HASHCONFIG_IGNORE_VARS` 563 See :term:`bitbake:BB_HASHCONFIG_IGNORE_VARS` in the BitBake manual. 564 565 :term:`BB_HASHSERVE` 566 See :term:`bitbake:BB_HASHSERVE` in the BitBake manual. 567 568 :term:`BB_HASHSERVE_UPSTREAM` 569 See :term:`bitbake:BB_HASHSERVE_UPSTREAM` in the BitBake manual. 570 571 :term:`BB_INVALIDCONF` 572 See :term:`bitbake:BB_INVALIDCONF` in the BitBake manual. 573 574 :term:`BB_LOADFACTOR_MAX` 575 The system load threshold above which BitBake will stop runnig extra 576 tasks. 577 578 :term:`BB_LOGCONFIG` 579 See :term:`bitbake:BB_LOGCONFIG` in the BitBake manual. 580 581 :term:`BB_LOGFMT` 582 See :term:`bitbake:BB_LOGFMT` in the BitBake manual. 583 584 :term:`BB_MULTI_PROVIDER_ALLOWED` 585 See :term:`bitbake:BB_MULTI_PROVIDER_ALLOWED` in the BitBake manual. 586 587 :term:`BB_NICE_LEVEL` 588 See :term:`bitbake:BB_NICE_LEVEL` in the BitBake manual. 589 590 :term:`BB_NO_NETWORK` 591 See :term:`bitbake:BB_NO_NETWORK` in the BitBake manual. 592 593 :term:`BB_NUMBER_PARSE_THREADS` 594 See :term:`bitbake:BB_NUMBER_PARSE_THREADS` in the BitBake manual. 595 596 :term:`BB_NUMBER_THREADS` 597 The maximum number of tasks BitBake should run in parallel at any one 598 time. The OpenEmbedded build system automatically configures this 599 variable to be equal to the number of cores on the build system. For 600 example, a system with a dual core processor that also uses 601 hyper-threading causes the :term:`BB_NUMBER_THREADS` variable to default 602 to "4". 603 604 For single socket systems (i.e. one CPU), you should not have to 605 override this variable to gain optimal parallelism during builds. 606 However, if you have very large systems that employ multiple physical 607 CPUs, you might want to make sure the :term:`BB_NUMBER_THREADS` variable 608 is not set higher than "20". 609 610 For more information on speeding up builds, see the 611 ":ref:`dev-manual/speeding-up-build:speeding up a build`" 612 section in the Yocto Project Development Tasks Manual. 613 614 On the other hand, if your goal is to limit the amount of system 615 resources consumed by BitBake tasks, setting :term:`BB_NUMBER_THREADS` 616 to a number lower than the number of CPU threads in your machine 617 won't be sufficient. That's because each package will still be built 618 and installed through a number of parallel jobs specified by the 619 :term:`PARALLEL_MAKE` variable, which is by default the number of CPU 620 threads in your system, and is not impacted by the 621 :term:`BB_NUMBER_THREADS` value. 622 623 So, if you set :term:`BB_NUMBER_THREADS` to "1" but don't set 624 :term:`PARALLEL_MAKE`, most of your system resources will be consumed 625 anyway. 626 627 Therefore, if you intend to reduce the load of your build system by 628 setting :term:`BB_NUMBER_THREADS` to a relatively low value compared 629 to the number of CPU threads on your system, you should also set 630 :term:`PARALLEL_MAKE` to a similarly low value. 631 632 An alternative to using :term:`BB_NUMBER_THREADS` to keep the usage 633 of build system resources under control is to use the smarter 634 :term:`BB_PRESSURE_MAX_CPU`, :term:`BB_PRESSURE_MAX_IO` or 635 :term:`BB_PRESSURE_MAX_MEMORY` controls. They will prevent BitBake 636 from starting new tasks as long as thresholds are exceeded. Anyway, 637 as with :term:`BB_NUMBER_THREADS`, such controls won't prevent the 638 tasks already being run from using all CPU threads on the system 639 if :term:`PARALLEL_MAKE` is not set to a low value. 640 641 :term:`BB_ORIGENV` 642 See :term:`bitbake:BB_ORIGENV` in the BitBake manual. 643 644 :term:`BB_PRESERVE_ENV` 645 See :term:`bitbake:BB_PRESERVE_ENV` in the BitBake manual. 646 647 :term:`BB_PRESSURE_MAX_CPU` 648 See :term:`bitbake:BB_PRESSURE_MAX_CPU` in the BitBake manual. 649 650 :term:`BB_PRESSURE_MAX_IO` 651 See :term:`bitbake:BB_PRESSURE_MAX_IO` in the BitBake manual. 652 653 :term:`BB_PRESSURE_MAX_MEMORY` 654 See :term:`bitbake:BB_PRESSURE_MAX_MEMORY` in the BitBake manual. 655 656 :term:`BB_RUNFMT` 657 See :term:`bitbake:BB_RUNFMT` in the BitBake manual. 658 659 :term:`BB_RUNTASK` 660 See :term:`bitbake:BB_RUNTASK` in the BitBake manual. 661 662 :term:`BB_SCHEDULER` 663 See :term:`bitbake:BB_SCHEDULER` in the BitBake manual. 664 665 :term:`BB_SCHEDULERS` 666 See :term:`bitbake:BB_SCHEDULERS` in the BitBake manual. 667 668 :term:`BB_SERVER_TIMEOUT` 669 Specifies the time (in seconds) after which to unload the BitBake 670 server due to inactivity. Set :term:`BB_SERVER_TIMEOUT` to determine how 671 long the BitBake server stays resident between invocations. 672 673 For example, the following statement in your ``local.conf`` file 674 instructs the server to be unloaded after 20 seconds of inactivity:: 675 676 BB_SERVER_TIMEOUT = "20" 677 678 If you want the server to never be unloaded, 679 set :term:`BB_SERVER_TIMEOUT` to "-1". 680 681 :term:`BB_SETSCENE_DEPVALID` 682 See :term:`bitbake:BB_SETSCENE_DEPVALID` in the BitBake manual. 683 684 :term:`BB_SIGNATURE_EXCLUDE_FLAGS` 685 See :term:`bitbake:BB_SIGNATURE_EXCLUDE_FLAGS` in the BitBake manual. 686 687 :term:`BB_SIGNATURE_HANDLER` 688 See :term:`bitbake:BB_SIGNATURE_HANDLER` in the BitBake manual. 689 690 :term:`BB_SRCREV_POLICY` 691 See :term:`bitbake:BB_SRCREV_POLICY` in the BitBake manual. 692 693 :term:`BB_STRICT_CHECKSUM` 694 See :term:`bitbake:BB_STRICT_CHECKSUM` in the BitBake manual. 695 696 :term:`BB_TASK_IONICE_LEVEL` 697 See :term:`bitbake:BB_TASK_IONICE_LEVEL` in the BitBake manual. 698 699 :term:`BB_TASK_NICE_LEVEL` 700 See :term:`bitbake:BB_TASK_NICE_LEVEL` in the BitBake manual. 701 702 :term:`BB_TASKHASH` 703 See :term:`bitbake:BB_TASKHASH` in the BitBake manual. 704 705 :term:`BB_VERBOSE_LOGS` 706 See :term:`bitbake:BB_VERBOSE_LOGS` in the BitBake manual. 707 708 :term:`BB_WORKERCONTEXT` 709 See :term:`bitbake:BB_WORKERCONTEXT` in the BitBake manual. 710 711 :term:`BBCLASSEXTEND` 712 Allows you to extend a recipe so that it builds variants of the 713 software. There are common variants for recipes as "natives" like 714 ``quilt-native``, which is a copy of Quilt built to run on the build 715 system; "crosses" such as ``gcc-cross``, which is a compiler built to 716 run on the build machine but produces binaries that run on the target 717 :term:`MACHINE`; ":ref:`ref-classes-nativesdk`", which 718 targets the SDK machine instead of :term:`MACHINE`; and "mulitlibs" in 719 the form "``multilib:``\ multilib_name". 720 721 To build a different variant of the recipe with a minimal amount of 722 code, it usually is as simple as adding the following to your recipe:: 723 724 BBCLASSEXTEND =+ "native nativesdk" 725 BBCLASSEXTEND =+ "multilib:multilib_name" 726 727 .. note:: 728 729 Internally, the :term:`BBCLASSEXTEND` mechanism generates recipe 730 variants by rewriting variable values and applying overrides such 731 as ``:class-native``. For example, to generate a native version of 732 a recipe, a :term:`DEPENDS` on "foo" is rewritten 733 to a :term:`DEPENDS` on "foo-native". 734 735 Even when using :term:`BBCLASSEXTEND`, the recipe is only parsed once. 736 Parsing once adds some limitations. For example, it is not 737 possible to include a different file depending on the variant, 738 since ``include`` statements are processed when the recipe is 739 parsed. 740 741 :term:`BBDEBUG` 742 See :term:`bitbake:BBDEBUG` in the BitBake manual. 743 744 :term:`BBFILE_COLLECTIONS` 745 Lists the names of configured layers. These names are used to find 746 the other ``BBFILE_*`` variables. Typically, each layer will append 747 its name to this variable in its ``conf/layer.conf`` file. 748 749 :term:`BBFILE_PATTERN` 750 Variable that expands to match files from 751 :term:`BBFILES` in a particular layer. This variable 752 is used in the ``conf/layer.conf`` file and must be suffixed with the 753 name of the specific layer (e.g. ``BBFILE_PATTERN_emenlow``). 754 755 :term:`BBFILE_PRIORITY` 756 Assigns the priority for recipe files in each layer. 757 758 This variable is useful in situations where the same recipe appears 759 in more than one layer. Setting this variable allows you to 760 prioritize a layer against other layers that contain the same recipe 761 --- effectively letting you control the precedence for the multiple 762 layers. The precedence established through this variable stands 763 regardless of a recipe's version (:term:`PV` variable). For 764 example, a layer that has a recipe with a higher :term:`PV` value but for 765 which the :term:`BBFILE_PRIORITY` is set to have a lower precedence still 766 has a lower precedence. 767 768 A larger value for the :term:`BBFILE_PRIORITY` variable results in a 769 higher precedence. For example, the value 6 has a higher precedence 770 than the value 5. If not specified, the :term:`BBFILE_PRIORITY` variable 771 is set based on layer dependencies (see the :term:`LAYERDEPENDS` variable 772 for more information. The default priority, if unspecified for a 773 layer with no dependencies, is the lowest defined priority + 1 (or 1 774 if no priorities are defined). 775 776 .. tip:: 777 778 You can use the command ``bitbake-layers show-layers`` 779 to list all configured layers along with their priorities. 780 781 :term:`BBFILES` 782 A space-separated list of recipe files BitBake uses to build 783 software. 784 785 When specifying recipe files, you can pattern match using Python's 786 `glob <https://docs.python.org/3/library/glob.html>`__ syntax. 787 For details on the syntax, see the documentation by following the 788 previous link. 789 790 :term:`BBFILES_DYNAMIC` 791 Activates content when identified layers are present. You identify 792 the layers by the collections that the layers define. 793 794 Use the :term:`BBFILES_DYNAMIC` variable to avoid ``.bbappend`` files 795 whose corresponding ``.bb`` file is in a layer that attempts to 796 modify other layers through ``.bbappend`` but does not want to 797 introduce a hard dependency on those other layers. 798 799 Use the following form for :term:`BBFILES_DYNAMIC`: 800 ``collection_name:filename_pattern``. 801 802 The following example identifies two collection names and two 803 filename patterns:: 804 805 BBFILES_DYNAMIC += " \ 806 clang-layer:${LAYERDIR}/bbappends/meta-clang/*/*/*.bbappend \ 807 core:${LAYERDIR}/bbappends/openembedded-core/meta/*/*/*.bbappend \ 808 " 809 810 This next example shows an error message that occurs because invalid 811 entries are found, which cause parsing to fail: 812 813 .. code-block:: none 814 815 ERROR: BBFILES_DYNAMIC entries must be of the form <collection name>:<filename pattern>, not: 816 /work/my-layer/bbappends/meta-security-isafw/*/*/*.bbappend 817 /work/my-layer/bbappends/openembedded-core/meta/*/*/*.bbappend 818 819 :term:`BBINCLUDED` 820 See :term:`bitbake:BBINCLUDED` in the BitBake manual. 821 822 :term:`BBINCLUDELOGS` 823 Variable that controls how BitBake displays logs on build failure. 824 825 :term:`BBINCLUDELOGS_LINES` 826 If :term:`BBINCLUDELOGS` is set, specifies the 827 maximum number of lines from the task log file to print when 828 reporting a failed task. If you do not set :term:`BBINCLUDELOGS_LINES`, 829 the entire log is printed. 830 831 :term:`BBLAYERS` 832 Lists the layers to enable during the build. This variable is defined 833 in the ``bblayers.conf`` configuration file in the :term:`Build Directory`. 834 Here is an example:: 835 836 BBLAYERS = " \ 837 /home/scottrif/poky/meta \ 838 /home/scottrif/poky/meta-poky \ 839 /home/scottrif/poky/meta-yocto-bsp \ 840 /home/scottrif/poky/meta-mykernel \ 841 " 842 843 This example enables four layers, one of which is a custom, 844 user-defined layer named ``meta-mykernel``. 845 846 :term:`BBLAYERS_FETCH_DIR` 847 See :term:`bitbake:BBLAYERS_FETCH_DIR` in the BitBake manual. 848 849 :term:`BBMASK` 850 Prevents BitBake from processing recipes and recipe append files. 851 852 You can use the :term:`BBMASK` variable to "hide" these ``.bb`` and 853 ``.bbappend`` files. BitBake ignores any recipe or recipe append 854 files that match any of the expressions. It is as if BitBake does not 855 see them at all. Consequently, matching files are not parsed or 856 otherwise used by BitBake. 857 858 The values you provide are passed to Python's regular expression 859 compiler. Consequently, the syntax follows Python's Regular 860 Expression (re) syntax. The expressions are compared against the full 861 paths to the files. For complete syntax information, see Python's 862 documentation at https://docs.python.org/3/library/re.html#regular-expression-syntax. 863 864 The following example uses a complete regular expression to tell 865 BitBake to ignore all recipe and recipe append files in the 866 ``meta-ti/recipes-misc/`` directory:: 867 868 BBMASK = "meta-ti/recipes-misc/" 869 870 If you want to mask out multiple directories or recipes, you can 871 specify multiple regular expression fragments. This next example 872 masks out multiple directories and individual recipes:: 873 874 BBMASK += "/meta-ti/recipes-misc/ meta-ti/recipes-ti/packagegroup/" 875 BBMASK += "/meta-oe/recipes-support/" 876 BBMASK += "/meta-foo/.*/openldap" 877 BBMASK += "opencv.*\.bbappend" 878 BBMASK += "lzma" 879 880 .. note:: 881 882 When specifying a directory name, use the trailing slash character 883 to ensure you match just that directory name. 884 885 :term:`BBMULTICONFIG` 886 Specifies each additional separate configuration when you are 887 building targets with multiple configurations. Use this variable in 888 your ``conf/local.conf`` configuration file. Specify a 889 multiconfigname for each configuration file you are using. For 890 example, the following line specifies three configuration files:: 891 892 BBMULTICONFIG = "configA configB configC" 893 894 Each configuration file you use must reside in a ``multiconfig`` 895 subdirectory of a configuration directory within a layer, or 896 within the :term:`Build Directory` (e.g. 897 ``build_directory/conf/multiconfig/configA.conf`` or 898 ``mylayer/conf/multiconfig/configB.conf``). 899 900 For information on how to use :term:`BBMULTICONFIG` in an environment 901 that supports building targets with multiple configurations, see the 902 ":ref:`dev-manual/building:building images for multiple targets using multiple configurations`" 903 section in the Yocto Project Development Tasks Manual. 904 905 :term:`BBPATH` 906 See :term:`bitbake:BBPATH` in the BitBake manual. 907 908 :term:`BBSERVER` 909 If defined in the BitBake environment, :term:`BBSERVER` points to the 910 BitBake remote server. 911 912 Use the following format to export the variable to the BitBake 913 environment:: 914 915 export BBSERVER=localhost:$port 916 917 By default, :term:`BBSERVER` also appears in :term:`BB_BASEHASH_IGNORE_VARS`. 918 Consequently, :term:`BBSERVER` is excluded from checksum and dependency 919 data. 920 921 :term:`BBTARGETS` 922 See :term:`bitbake:BBTARGETS` in the BitBake manual. 923 924 :term:`BINCONFIG` 925 When inheriting the :ref:`ref-classes-binconfig-disabled` class, this 926 variable specifies binary configuration scripts to disable in favor of 927 using ``pkg-config`` to query the information. The 928 :ref:`ref-classes-binconfig-disabled` class will modify the specified 929 scripts to return an error so that calls to them can be easily found 930 and replaced. 931 932 To add multiple scripts, separate them by spaces. Here is an example 933 from the ``libpng`` recipe:: 934 935 BINCONFIG = "${bindir}/libpng-config ${bindir}/libpng16-config" 936 937 :term:`BINCONFIG_GLOB` 938 When inheriting the :ref:`ref-classes-binconfig` class, 939 this variable specifies a wildcard for configuration scripts that 940 need editing. The scripts are edited to correct any paths that have 941 been set up during compilation so that they are correct for use when 942 installed into the sysroot and called by the build processes of other 943 recipes. 944 945 .. note:: 946 947 The :term:`BINCONFIG_GLOB` variable uses 948 `shell globbing <https://tldp.org/LDP/abs/html/globbingref.html>`__, 949 which is recognition and expansion of wildcards during pattern 950 matching. Shell globbing is very similar to 951 `fnmatch <https://docs.python.org/3/library/fnmatch.html#module-fnmatch>`__ 952 and `glob <https://docs.python.org/3/library/glob.html>`__. 953 954 For more information on how this variable works, see 955 ``meta/classes-recipe/binconfig.bbclass`` in the :term:`Source Directory`. 956 You can also find general 957 information on the class in the 958 ":ref:`ref-classes-binconfig`" section. 959 960 :term:`BITBAKE_UI` 961 See :term:`bitbake:BITBAKE_UI` in the BitBake manual. 962 963 :term:`BP` 964 The base recipe name and version but without any special recipe name 965 suffix (i.e. ``-native``, ``lib64-``, and so forth). :term:`BP` is 966 comprised of the following:: 967 968 ${BPN}-${PV} 969 970 :term:`BPN` 971 This variable is a version of the :term:`PN` variable with 972 common prefixes and suffixes removed, such as ``nativesdk-``, 973 ``-cross``, ``-native``, and multilib's ``lib64-`` and ``lib32-``. 974 The exact lists of prefixes and suffixes removed are specified by the 975 :term:`MLPREFIX` and 976 :term:`SPECIAL_PKGSUFFIX` variables, 977 respectively. 978 979 :term:`BUGTRACKER` 980 Specifies a URL for an upstream bug tracking website for a recipe. 981 The OpenEmbedded build system does not use this variable. Rather, the 982 variable is a useful pointer in case a bug in the software being 983 built needs to be manually reported. 984 985 :term:`BUILD_ARCH` 986 Specifies the architecture of the build host (e.g. ``i686``). The 987 OpenEmbedded build system sets the value of :term:`BUILD_ARCH` from the 988 machine name reported by the ``uname`` command. 989 990 :term:`BUILD_AS_ARCH` 991 Specifies the architecture-specific assembler flags for the build 992 host. By default, the value of :term:`BUILD_AS_ARCH` is empty. 993 994 :term:`BUILD_CC_ARCH` 995 Specifies the architecture-specific C compiler flags for the build 996 host. By default, the value of :term:`BUILD_CC_ARCH` is empty. 997 998 :term:`BUILD_CCLD` 999 Specifies the linker command to be used for the build host when the C 1000 compiler is being used as the linker. By default, :term:`BUILD_CCLD` 1001 points to GCC and passes as arguments the value of 1002 :term:`BUILD_CC_ARCH`, assuming 1003 :term:`BUILD_CC_ARCH` is set. 1004 1005 :term:`BUILD_CFLAGS` 1006 Specifies the flags to pass to the C compiler when building for the 1007 build host. When building in the ``-native`` context, 1008 :term:`CFLAGS` is set to the value of this variable by 1009 default. 1010 1011 :term:`BUILD_CPPFLAGS` 1012 Specifies the flags to pass to the C preprocessor (i.e. to both the C 1013 and the C++ compilers) when building for the build host. When 1014 building in the ``-native`` context, :term:`CPPFLAGS` 1015 is set to the value of this variable by default. 1016 1017 :term:`BUILD_CXXFLAGS` 1018 Specifies the flags to pass to the C++ compiler when building for the 1019 build host. When building in the ``-native`` context, 1020 :term:`CXXFLAGS` is set to the value of this variable 1021 by default. 1022 1023 :term:`BUILD_FC` 1024 Specifies the Fortran compiler command for the build host. By 1025 default, :term:`BUILD_FC` points to Gfortran and passes as arguments the 1026 value of :term:`BUILD_CC_ARCH`, assuming 1027 :term:`BUILD_CC_ARCH` is set. 1028 1029 :term:`BUILD_LD` 1030 Specifies the linker command for the build host. By default, 1031 :term:`BUILD_LD` points to the GNU linker (ld) and passes as arguments 1032 the value of :term:`BUILD_LD_ARCH`, assuming 1033 :term:`BUILD_LD_ARCH` is set. 1034 1035 :term:`BUILD_LD_ARCH` 1036 Specifies architecture-specific linker flags for the build host. By 1037 default, the value of :term:`BUILD_LD_ARCH` is empty. 1038 1039 :term:`BUILD_LDFLAGS` 1040 Specifies the flags to pass to the linker when building for the build 1041 host. When building in the ``-native`` context, 1042 :term:`LDFLAGS` is set to the value of this variable 1043 by default. 1044 1045 :term:`BUILD_OPTIMIZATION` 1046 Specifies the optimization flags passed to the C compiler when 1047 building for the build host or the SDK. The flags are passed through 1048 the :term:`BUILD_CFLAGS` and 1049 :term:`BUILDSDK_CFLAGS` default values. 1050 1051 The default value of the :term:`BUILD_OPTIMIZATION` variable is "-O2 1052 -pipe". 1053 1054 :term:`BUILD_OS` 1055 Specifies the operating system in use on the build host (e.g. 1056 "linux"). The OpenEmbedded build system sets the value of 1057 :term:`BUILD_OS` from the OS reported by the ``uname`` command --- the 1058 first word, converted to lower-case characters. 1059 1060 :term:`BUILD_PREFIX` 1061 The toolchain binary prefix used for native recipes. The OpenEmbedded 1062 build system uses the :term:`BUILD_PREFIX` value to set the 1063 :term:`TARGET_PREFIX` when building for :ref:`ref-classes-native` recipes. 1064 1065 :term:`BUILD_STRIP` 1066 Specifies the command to be used to strip debugging symbols from 1067 binaries produced for the build host. By default, :term:`BUILD_STRIP` 1068 points to 1069 ``${``\ :term:`BUILD_PREFIX`\ ``}strip``. 1070 1071 :term:`BUILD_SYS` 1072 Specifies the system, including the architecture and the operating 1073 system, to use when building for the build host (i.e. when building 1074 :ref:`ref-classes-native` recipes). 1075 1076 The OpenEmbedded build system automatically sets this variable based 1077 on :term:`BUILD_ARCH`, 1078 :term:`BUILD_VENDOR`, and 1079 :term:`BUILD_OS`. You do not need to set the 1080 :term:`BUILD_SYS` variable yourself. 1081 1082 :term:`BUILD_VENDOR` 1083 Specifies the vendor name to use when building for the build host. 1084 The default value is an empty string (""). 1085 1086 :term:`BUILDDIR` 1087 Points to the location of the :term:`Build Directory`. You can define 1088 this directory indirectly through the :ref:`structure-core-script` script 1089 by passing in a :term:`Build Directory` path when you run the script. If 1090 you run the script and do not provide a :term:`Build Directory` path, the 1091 :term:`BUILDDIR` defaults to ``build`` in the current directory. 1092 1093 :term:`BUILDHISTORY_COMMIT` 1094 When inheriting the :ref:`ref-classes-buildhistory` class, this variable 1095 specifies whether or not to commit the build history output in a local 1096 Git repository. If set to "1", this local repository will be maintained 1097 automatically by the :ref:`ref-classes-buildhistory` class and a commit 1098 will be created on every build for changes to each top-level subdirectory 1099 of the build history output (images, packages, and sdk). If you want to 1100 track changes to build history over time, you should set this value to 1101 "1". 1102 1103 By default, the :ref:`ref-classes-buildhistory` class 1104 enables committing the buildhistory output in a local Git repository:: 1105 1106 BUILDHISTORY_COMMIT ?= "1" 1107 1108 :term:`BUILDHISTORY_COMMIT_AUTHOR` 1109 When inheriting the :ref:`ref-classes-buildhistory` 1110 class, this variable specifies the author to use for each Git commit. 1111 In order for the :term:`BUILDHISTORY_COMMIT_AUTHOR` variable to work, the 1112 :term:`BUILDHISTORY_COMMIT` variable must 1113 be set to "1". 1114 1115 Git requires that the value you provide for the 1116 :term:`BUILDHISTORY_COMMIT_AUTHOR` variable takes the form of "name 1117 email@host". Providing an email address or host that is not valid 1118 does not produce an error. 1119 1120 By default, the :ref:`ref-classes-buildhistory` class sets the variable 1121 as follows:: 1122 1123 BUILDHISTORY_COMMIT_AUTHOR ?= "buildhistory <buildhistory@${DISTRO}>" 1124 1125 :term:`BUILDHISTORY_DIR` 1126 When inheriting the :ref:`ref-classes-buildhistory` 1127 class, this variable specifies the directory in which build history 1128 information is kept. For more information on how the variable works, 1129 see the :ref:`ref-classes-buildhistory` class. 1130 1131 By default, the :ref:`ref-classes-buildhistory` class sets the directory 1132 as follows:: 1133 1134 BUILDHISTORY_DIR ?= "${TOPDIR}/buildhistory" 1135 1136 :term:`BUILDHISTORY_FEATURES` 1137 When inheriting the :ref:`ref-classes-buildhistory` 1138 class, this variable specifies the build history features to be 1139 enabled. For more information on how build history works, see the 1140 ":ref:`dev-manual/build-quality:maintaining build output quality`" 1141 section in the Yocto Project Development Tasks Manual. 1142 1143 You can specify these features in the form of a space-separated list: 1144 1145 - *image:* Analysis of the contents of images, which includes the 1146 list of installed packages among other things. 1147 1148 - *package:* Analysis of the contents of individual packages. 1149 1150 - *sdk:* Analysis of the contents of the software development kit 1151 (SDK). 1152 1153 - *task:* Save output file signatures for 1154 :ref:`shared state <overview-manual/concepts:shared state cache>` 1155 (sstate) tasks. 1156 This saves one file per task and lists the SHA-256 checksums for 1157 each file staged (i.e. the output of the task). 1158 1159 By default, the :ref:`ref-classes-buildhistory` class enables the 1160 following features:: 1161 1162 BUILDHISTORY_FEATURES ?= "image package sdk" 1163 1164 :term:`BUILDHISTORY_IMAGE_FILES` 1165 When inheriting the :ref:`ref-classes-buildhistory` 1166 class, this variable specifies a list of paths to files copied from 1167 the image contents into the build history directory under an 1168 "image-files" directory in the directory for the image, so that you 1169 can track the contents of each file. The default is to copy 1170 ``/etc/passwd`` and ``/etc/group``, which allows you to monitor for 1171 changes in user and group entries. You can modify the list to include 1172 any file. Specifying an invalid path does not produce an error. 1173 Consequently, you can include files that might not always be present. 1174 1175 By default, the :ref:`ref-classes-buildhistory` class provides paths to 1176 the following files:: 1177 1178 BUILDHISTORY_IMAGE_FILES ?= "/etc/passwd /etc/group" 1179 1180 :term:`BUILDHISTORY_PATH_PREFIX_STRIP` 1181 When inheriting the :ref:`ref-classes-buildhistory` 1182 class, this variable specifies a common path prefix that should be 1183 stripped off the beginning of paths in the task signature list when the 1184 ``task`` feature is active in :term:`BUILDHISTORY_FEATURES`. This can be 1185 useful when build history is populated from multiple sources that may not 1186 all use the same top level directory. 1187 1188 By default, the :ref:`ref-classes-buildhistory` class sets the variable 1189 as follows:: 1190 1191 BUILDHISTORY_PATH_PREFIX_STRIP ?= "" 1192 1193 In this case, no prefixes will be stripped. 1194 1195 :term:`BUILDHISTORY_PUSH_REPO` 1196 When inheriting the :ref:`ref-classes-buildhistory` class, this variable 1197 optionally specifies a remote repository to which build history pushes 1198 Git changes. In order for :term:`BUILDHISTORY_PUSH_REPO` to work, 1199 :term:`BUILDHISTORY_COMMIT` must be set to "1". 1200 1201 The repository should correspond to a remote address that specifies a 1202 repository as understood by Git, or alternatively to a remote name 1203 that you have set up manually using ``git remote`` within the local 1204 repository. 1205 1206 By default, the :ref:`ref-classes-buildhistory` class sets the variable 1207 as follows:: 1208 1209 BUILDHISTORY_PUSH_REPO ?= "" 1210 1211 :term:`BUILDNAME` 1212 See :term:`bitbake:BUILDNAME` in the BitBake manual. 1213 1214 :term:`BUILDSDK_CFLAGS` 1215 Specifies the flags to pass to the C compiler when building for the 1216 SDK. When building in the ``nativesdk-`` context, 1217 :term:`CFLAGS` is set to the value of this variable by 1218 default. 1219 1220 :term:`BUILDSDK_CPPFLAGS` 1221 Specifies the flags to pass to the C pre-processor (i.e. to both the 1222 C and the C++ compilers) when building for the SDK. When building in 1223 the ``nativesdk-`` context, :term:`CPPFLAGS` is set 1224 to the value of this variable by default. 1225 1226 :term:`BUILDSDK_CXXFLAGS` 1227 Specifies the flags to pass to the C++ compiler when building for the 1228 SDK. When building in the ``nativesdk-`` context, 1229 :term:`CXXFLAGS` is set to the value of this variable 1230 by default. 1231 1232 :term:`BUILDSDK_LDFLAGS` 1233 Specifies the flags to pass to the linker when building for the SDK. 1234 When building in the ``nativesdk-`` context, 1235 :term:`LDFLAGS` is set to the value of this variable 1236 by default. 1237 1238 :term:`BUILDSTATS_BASE` 1239 Points to the location of the directory that holds build statistics 1240 when you use and enable the :ref:`ref-classes-buildstats` class. The 1241 :term:`BUILDSTATS_BASE` directory defaults to 1242 ``${``\ :term:`TMPDIR`\ ``}/buildstats/``. 1243 1244 :term:`BUSYBOX_SPLIT_SUID` 1245 For the BusyBox recipe, specifies whether to split the output 1246 executable file into two parts: one for features that require 1247 ``setuid root``, and one for the remaining features (i.e. those that 1248 do not require ``setuid root``). 1249 1250 The :term:`BUSYBOX_SPLIT_SUID` variable defaults to "1", which results in 1251 splitting the output executable file. Set the variable to "0" to get 1252 a single output executable file. 1253 1254 :term:`BZRDIR` 1255 See :term:`bitbake:BZRDIR` in the BitBake manual. 1256 1257 :term:`CACHE` 1258 Specifies the directory BitBake uses to store a cache of the 1259 :term:`Metadata` so it does not need to be parsed every time 1260 BitBake is started. 1261 1262 :term:`CARGO_INSTALL_LIBRARIES` 1263 When inheriting the :ref:`ref-classes-cargo` class, the variable 1264 :term:`CARGO_INSTALL_LIBRARIES` can be set to a non-empty value by 1265 individual recipes to enable the installation of the libraries the 1266 recipe has built in ``${B}/target/${CARGO_TARGET_SUBDIR}`` (files ending 1267 with ``.so`` or ``.rlib``). By default this variable is not defined and 1268 libraries are not installed, to replicate the behavior of the ``cargo 1269 install`` command. 1270 1271 :term:`CC` 1272 The minimal command and arguments used to run the C compiler. 1273 1274 :term:`CFLAGS` 1275 Specifies the flags to pass to the C compiler. This variable is 1276 exported to an environment variable and thus made visible to the 1277 software being built during the compilation step. 1278 1279 Default initialization for :term:`CFLAGS` varies depending on what is 1280 being built: 1281 1282 - :term:`TARGET_CFLAGS` when building for the 1283 target 1284 1285 - :term:`BUILD_CFLAGS` when building for the 1286 build host (i.e. ``-native``) 1287 1288 - :term:`BUILDSDK_CFLAGS` when building for 1289 an SDK (i.e. ``nativesdk-``) 1290 1291 :term:`CHECKLAYER_REQUIRED_TESTS` 1292 The :term:`CHECKLAYER_REQUIRED_TESTS` variable lists the QA tests that are 1293 required to be enabled to pass the Yocto Project Compatible status for a 1294 layer. It is meant to be a read-only variable and any change to the 1295 variable may be done with the approval of the :oe_wiki:`Technical Steering 1296 Committee (TSC) </TSC>`. 1297 1298 For more information on the Yocto Project Compatible status, see 1299 the :ref:`dev-manual/layers:Making Sure Your Layer is Compatible With 1300 Yocto Project` section of the Yocto Project Development Manual. 1301 1302 :term:`CLASSOVERRIDE` 1303 An internal variable specifying the special class override that 1304 should currently apply (e.g. "class-target", "class-native", and so 1305 forth). The classes that use this variable (e.g. 1306 :ref:`ref-classes-native`, :ref:`ref-classes-nativesdk`, and so forth) 1307 set the variable to appropriate values. 1308 1309 .. note:: 1310 1311 :term:`CLASSOVERRIDE` gets its default "class-target" value from the 1312 ``bitbake.conf`` file. 1313 1314 As an example, the following override allows you to install extra 1315 files, but only when building for the target:: 1316 1317 do_install:append:class-target() { 1318 install my-extra-file ${D}${sysconfdir} 1319 } 1320 1321 Here is an example where ``FOO`` is set to 1322 "native" when building for the build host, and to "other" when not 1323 building for the build host:: 1324 1325 FOO:class-native = "native" 1326 FOO = "other" 1327 1328 The underlying mechanism behind :term:`CLASSOVERRIDE` is simply 1329 that it is included in the default value of 1330 :term:`OVERRIDES`. 1331 1332 :term:`CLEANBROKEN` 1333 If set to "1" within a recipe, :term:`CLEANBROKEN` specifies that the 1334 ``make clean`` command does not work for the software being built. 1335 Consequently, the OpenEmbedded build system will not try to run 1336 ``make clean`` during the :ref:`ref-tasks-configure` 1337 task, which is the default behavior. 1338 1339 :term:`COMBINED_FEATURES` 1340 Provides a list of hardware features that are enabled in both 1341 :term:`MACHINE_FEATURES` and 1342 :term:`DISTRO_FEATURES`. This select list of 1343 features contains features that make sense to be controlled both at 1344 the machine and distribution configuration level. For example, the 1345 "bluetooth" feature requires hardware support but should also be 1346 optional at the distribution level, in case the hardware supports 1347 Bluetooth but you do not ever intend to use it. 1348 1349 :term:`COMMERCIAL_AUDIO_PLUGINS` 1350 This variable is specific to the :yocto_git:`GStreamer recipes 1351 </poky/tree/meta/recipes-multimedia/gstreamer/gstreamer1.0-meta-base.bb>`. 1352 It allows to build the GStreamer `"ugly" 1353 <https://github.com/GStreamer/gst-plugins-ugly>`__ and 1354 `"bad" <https://github.com/GStreamer/gst-plugins-bad>`__ audio plugins. 1355 1356 See the :ref:`dev-manual/licenses:other variables related to commercial licenses` 1357 section for usage details. 1358 1359 :term:`COMMERCIAL_VIDEO_PLUGINS` 1360 This variable is specific to the :yocto_git:`GStreamer recipes 1361 </poky/tree/meta/recipes-multimedia/gstreamer/gstreamer1.0-meta-base.bb>`. 1362 It allows to build the GStreamer `"ugly" 1363 <https://github.com/GStreamer/gst-plugins-ugly>`__ and 1364 `"bad" <https://github.com/GStreamer/gst-plugins-bad>`__ video plugins. 1365 1366 See the :ref:`dev-manual/licenses:other variables related to commercial licenses` 1367 section for usage details. 1368 1369 :term:`COMMON_LICENSE_DIR` 1370 Points to ``meta/files/common-licenses`` in the 1371 :term:`Source Directory`, which is where generic license 1372 files reside. 1373 1374 :term:`COMPATIBLE_HOST` 1375 A regular expression that resolves to one or more hosts (when the 1376 recipe is native) or one or more targets (when the recipe is 1377 non-native) with which a recipe is compatible. The regular expression 1378 is matched against :term:`HOST_SYS`. You can use the 1379 variable to stop recipes from being built for classes of systems with 1380 which the recipes are not compatible. Stopping these builds is 1381 particularly useful with kernels. The variable also helps to increase 1382 parsing speed since the build system skips parsing recipes not 1383 compatible with the current system. 1384 1385 :term:`COMPATIBLE_MACHINE` 1386 A regular expression that resolves to one or more target machines 1387 with which a recipe is compatible. The regular expression is matched 1388 against :term:`MACHINEOVERRIDES`. You can use 1389 the variable to stop recipes from being built for machines with which 1390 the recipes are not compatible. Stopping these builds is particularly 1391 useful with kernels. The variable also helps to increase parsing 1392 speed since the build system skips parsing recipes not compatible 1393 with the current machine. 1394 1395 If one wants to have a recipe only available for some architectures 1396 (here ``aarch64`` and ``mips64``), the following can be used:: 1397 1398 COMPATIBLE_MACHINE = "^$" 1399 COMPATIBLE_MACHINE:arch64 = "^(aarch64)$" 1400 COMPATIBLE_MACHINE:mips64 = "^(mips64)$" 1401 1402 The first line means "match all machines whose :term:`MACHINEOVERRIDES` 1403 contains the empty string", which will always be none. 1404 1405 The second is for matching all machines whose :term:`MACHINEOVERRIDES` 1406 contains one override which is exactly ``aarch64``. 1407 1408 The third is for matching all machines whose :term:`MACHINEOVERRIDES` 1409 contains one override which is exactly ``mips64``. 1410 1411 The same could be achieved with:: 1412 1413 COMPATIBLE_MACHINE = "^(aarch64|mips64)$" 1414 1415 .. note:: 1416 1417 When :term:`COMPATIBLE_MACHINE` is set in a recipe inherits from 1418 native, the recipe is always skipped. All native recipes must be 1419 entirely target independent and should not rely on :term:`MACHINE`. 1420 1421 :term:`COMPLEMENTARY_GLOB` 1422 Defines wildcards to match when installing a list of complementary 1423 packages for all the packages explicitly (or implicitly) installed in 1424 an image. 1425 1426 The :term:`COMPLEMENTARY_GLOB` variable uses Unix filename pattern matching 1427 (`fnmatch <https://docs.python.org/3/library/fnmatch.html#module-fnmatch>`__), 1428 which is similar to the Unix style pathname pattern expansion 1429 (`glob <https://docs.python.org/3/library/glob.html>`__). 1430 1431 The resulting list of complementary packages is associated with an 1432 item that can be added to 1433 :term:`IMAGE_FEATURES`. An example usage of 1434 this is the "dev-pkgs" item that when added to :term:`IMAGE_FEATURES` 1435 will install -dev packages (containing headers and other development 1436 files) for every package in the image. 1437 1438 To add a new feature item pointing to a wildcard, use a variable flag 1439 to specify the feature item name and use the value to specify the 1440 wildcard. Here is an example:: 1441 1442 COMPLEMENTARY_GLOB[dev-pkgs] = '*-dev' 1443 1444 .. note:: 1445 1446 When installing complementary packages, recommends relationships 1447 (set via :term:`RRECOMMENDS`) are always ignored. 1448 1449 :term:`COMPONENTS_DIR` 1450 Stores sysroot components for each recipe. The OpenEmbedded build 1451 system uses :term:`COMPONENTS_DIR` when constructing recipe-specific 1452 sysroots for other recipes. 1453 1454 The default is 1455 "``${``\ :term:`STAGING_DIR`\ ``}-components``." 1456 (i.e. 1457 "``${``\ :term:`TMPDIR`\ ``}/sysroots-components``"). 1458 1459 :term:`CONF_VERSION` 1460 Tracks the version of the local configuration file (i.e. 1461 ``local.conf``). The value for :term:`CONF_VERSION` increments each time 1462 ``build/conf/`` compatibility changes. 1463 1464 :term:`CONFFILES` 1465 Identifies editable or configurable files that are part of a package. 1466 If the Package Management System (PMS) is being used to update 1467 packages on the target system, it is possible that configuration 1468 files you have changed after the original installation and that you 1469 now want to remain unchanged are overwritten. In other words, 1470 editable files might exist in the package that you do not want reset 1471 as part of the package update process. You can use the :term:`CONFFILES` 1472 variable to list the files in the package that you wish to prevent 1473 the PMS from overwriting during this update process. 1474 1475 To use the :term:`CONFFILES` variable, provide a package name override 1476 that identifies the resulting package. Then, provide a 1477 space-separated list of files. Here is an example:: 1478 1479 CONFFILES:${PN} += "${sysconfdir}/file1 \ 1480 ${sysconfdir}/file2 ${sysconfdir}/file3" 1481 1482 There is a relationship between the :term:`CONFFILES` and :term:`FILES` 1483 variables. The files listed within :term:`CONFFILES` must be a subset of 1484 the files listed within :term:`FILES`. Because the configuration files 1485 you provide with :term:`CONFFILES` are simply being identified so that 1486 the PMS will not overwrite them, it makes sense that the files must 1487 already be included as part of the package through the :term:`FILES` 1488 variable. 1489 1490 .. note:: 1491 1492 When specifying paths as part of the :term:`CONFFILES` variable, it is 1493 good practice to use appropriate path variables. 1494 For example, ``${sysconfdir}`` rather than ``/etc`` or ``${bindir}`` 1495 rather than ``/usr/bin``. You can find a list of these variables at 1496 the top of the ``meta/conf/bitbake.conf`` file in the 1497 :term:`Source Directory`. 1498 1499 :term:`CONFIG_INITRAMFS_SOURCE` 1500 Identifies the initial RAM filesystem (:term:`Initramfs`) source files. The 1501 OpenEmbedded build system receives and uses this kernel Kconfig 1502 variable as an environment variable. By default, the variable is set 1503 to null (""). 1504 1505 The :term:`CONFIG_INITRAMFS_SOURCE` can be either a single cpio archive 1506 with a ``.cpio`` suffix or a space-separated list of directories and 1507 files for building the :term:`Initramfs` image. A cpio archive should contain 1508 a filesystem archive to be used as an :term:`Initramfs` image. Directories 1509 should contain a filesystem layout to be included in the :term:`Initramfs` 1510 image. Files should contain entries according to the format described 1511 by the ``usr/gen_init_cpio`` program in the kernel tree. 1512 1513 If you specify multiple directories and files, the :term:`Initramfs` image 1514 will be the aggregate of all of them. 1515 1516 For information on creating an :term:`Initramfs`, see the 1517 ":ref:`dev-manual/building:building an initial ram filesystem (Initramfs) image`" section 1518 in the Yocto Project Development Tasks Manual. 1519 1520 :term:`CONFIG_SITE` 1521 A list of files that contains ``autoconf`` test results relevant to 1522 the current build. This variable is used by the Autotools utilities 1523 when running ``configure``. 1524 1525 :term:`CONFIGURE_FLAGS` 1526 The minimal arguments for GNU configure. 1527 1528 :term:`CONFLICT_DISTRO_FEATURES` 1529 When inheriting the :ref:`ref-classes-features_check` 1530 class, this variable identifies distribution features that would be 1531 in conflict should the recipe be built. In other words, if the 1532 :term:`CONFLICT_DISTRO_FEATURES` variable lists a feature that also 1533 appears in :term:`DISTRO_FEATURES` within the current configuration, then 1534 the recipe will be skipped, and if the build system attempts to build 1535 the recipe then an error will be triggered. 1536 1537 :term:`CONVERSION_CMD` 1538 This variable is used for storing image conversion commands. 1539 Image conversion can convert an image into different objects like: 1540 1541 - Compressed version of the image 1542 1543 - Checksums for the image 1544 1545 An example of :term:`CONVERSION_CMD` from :ref:`ref-classes-image_types` 1546 class is:: 1547 1548 CONVERSION_CMD:lzo = "lzop -9 ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}" 1549 1550 :term:`COPY_LIC_DIRS` 1551 If set to "1" along with the 1552 :term:`COPY_LIC_MANIFEST` variable, the 1553 OpenEmbedded build system copies into the image the license files, 1554 which are located in ``/usr/share/common-licenses``, for each 1555 package. The license files are placed in directories within the image 1556 itself during build time. 1557 1558 .. note:: 1559 1560 The :term:`COPY_LIC_DIRS` does not offer a path for adding licenses for 1561 newly installed packages to an image, which might be most suitable for 1562 read-only filesystems that cannot be upgraded. See the 1563 :term:`LICENSE_CREATE_PACKAGE` variable for additional information. 1564 You can also reference the ":ref:`dev-manual/licenses:providing license text`" 1565 section in the Yocto Project Development Tasks Manual for 1566 information on providing license text. 1567 1568 :term:`COPY_LIC_MANIFEST` 1569 If set to "1", the OpenEmbedded build system copies the license 1570 manifest for the image to 1571 ``/usr/share/common-licenses/license.manifest`` within the image 1572 itself during build time. 1573 1574 .. note:: 1575 1576 The :term:`COPY_LIC_MANIFEST` does not offer a path for adding licenses for 1577 newly installed packages to an image, which might be most suitable for 1578 read-only filesystems that cannot be upgraded. See the 1579 :term:`LICENSE_CREATE_PACKAGE` variable for additional information. 1580 You can also reference the ":ref:`dev-manual/licenses:providing license text`" 1581 section in the Yocto Project Development Tasks Manual for 1582 information on providing license text. 1583 1584 :term:`COPYLEFT_LICENSE_EXCLUDE` 1585 A space-separated list of licenses to exclude from the source archived by 1586 the :ref:`ref-classes-archiver` class. In other words, if a license in a 1587 recipe's :term:`LICENSE` value is in the value of 1588 :term:`COPYLEFT_LICENSE_EXCLUDE`, then its source is not archived by the 1589 class. 1590 1591 .. note:: 1592 1593 The :term:`COPYLEFT_LICENSE_EXCLUDE` variable takes precedence over the 1594 :term:`COPYLEFT_LICENSE_INCLUDE` variable. 1595 1596 The default value, which is "CLOSED Proprietary", for 1597 :term:`COPYLEFT_LICENSE_EXCLUDE` is set by the 1598 :ref:`ref-classes-copyleft_filter` class, which 1599 is inherited by the :ref:`ref-classes-archiver` class. 1600 1601 :term:`COPYLEFT_LICENSE_INCLUDE` 1602 A space-separated list of licenses to include in the source archived 1603 by the :ref:`ref-classes-archiver` class. In other 1604 words, if a license in a recipe's :term:`LICENSE` 1605 value is in the value of :term:`COPYLEFT_LICENSE_INCLUDE`, then its 1606 source is archived by the class. 1607 1608 The default value is set by the :ref:`ref-classes-copyleft_filter` class, 1609 which is inherited by the :ref:`ref-classes-archiver` class. The default 1610 value includes "GPL*", "LGPL*", and "AGPL*". 1611 1612 :term:`COPYLEFT_PN_EXCLUDE` 1613 A list of recipes to exclude in the source archived by the 1614 :ref:`ref-classes-archiver` class. The :term:`COPYLEFT_PN_EXCLUDE` 1615 variable overrides the license inclusion and exclusion caused through the 1616 :term:`COPYLEFT_LICENSE_INCLUDE` and :term:`COPYLEFT_LICENSE_EXCLUDE` 1617 variables, respectively. 1618 1619 The default value, which is "" indicating to not explicitly exclude 1620 any recipes by name, for :term:`COPYLEFT_PN_EXCLUDE` is set by the 1621 :ref:`ref-classes-copyleft_filter` class, which is inherited by the 1622 :ref:`ref-classes-archiver` class. 1623 1624 :term:`COPYLEFT_PN_INCLUDE` 1625 A list of recipes to include in the source archived by the 1626 :ref:`ref-classes-archiver` class. The :term:`COPYLEFT_PN_INCLUDE` 1627 variable overrides the license inclusion and exclusion caused through the 1628 :term:`COPYLEFT_LICENSE_INCLUDE` and :term:`COPYLEFT_LICENSE_EXCLUDE` 1629 variables, respectively. 1630 1631 The default value, which is "" indicating to not explicitly include 1632 any recipes by name, for :term:`COPYLEFT_PN_INCLUDE` is set by the 1633 :ref:`ref-classes-copyleft_filter` class, which is inherited by the 1634 :ref:`ref-classes-archiver` class. 1635 1636 :term:`COPYLEFT_RECIPE_TYPES` 1637 A space-separated list of recipe types to include in the source 1638 archived by the :ref:`archiver <ref-classes-archiver>` class. 1639 Recipe types are ``target``, :ref:`ref-classes-native`, 1640 :ref:`ref-classes-nativesdk`, :ref:`ref-classes-cross`, 1641 :ref:`ref-classes-crosssdk`, and :ref:`ref-classes-cross-canadian`. 1642 1643 The default value, which is "target*", for :term:`COPYLEFT_RECIPE_TYPES` 1644 is set by the :ref:`ref-classes-copyleft_filter` class, which is 1645 inherited by the :ref:`ref-classes-archiver` class. 1646 1647 :term:`CORE_IMAGE_EXTRA_INSTALL` 1648 Specifies the list of packages to be added to the image. You should 1649 only set this variable in the ``local.conf`` configuration file found 1650 in the :term:`Build Directory`. 1651 1652 This variable replaces ``POKY_EXTRA_INSTALL``, which is no longer 1653 supported. 1654 1655 :term:`COREBASE` 1656 Specifies the parent directory of the OpenEmbedded-Core Metadata 1657 layer (i.e. ``meta``). 1658 1659 It is an important distinction that :term:`COREBASE` points to the parent 1660 of this layer and not the layer itself. Consider an example where you 1661 have cloned the Poky Git repository and retained the ``poky`` name 1662 for your local copy of the repository. In this case, :term:`COREBASE` 1663 points to the ``poky`` folder because it is the parent directory of 1664 the ``poky/meta`` layer. 1665 1666 :term:`COREBASE_FILES` 1667 Lists files from the :term:`COREBASE` directory that 1668 should be copied other than the layers listed in the 1669 ``bblayers.conf`` file. The :term:`COREBASE_FILES` variable allows 1670 to copy metadata from the OpenEmbedded build system 1671 into the extensible SDK. 1672 1673 Explicitly listing files in :term:`COREBASE` is needed because it 1674 typically contains build directories and other files that should not 1675 normally be copied into the extensible SDK. Consequently, the value 1676 of :term:`COREBASE_FILES` is used in order to only copy the files that 1677 are actually needed. 1678 1679 :term:`CPP` 1680 The minimal command and arguments used to run the C preprocessor. 1681 1682 :term:`CPPFLAGS` 1683 Specifies the flags to pass to the C pre-processor (i.e. to both the 1684 C and the C++ compilers). This variable is exported to an environment 1685 variable and thus made visible to the software being built during the 1686 compilation step. 1687 1688 Default initialization for :term:`CPPFLAGS` varies depending on what is 1689 being built: 1690 1691 - :term:`TARGET_CPPFLAGS` when building for 1692 the target 1693 1694 - :term:`BUILD_CPPFLAGS` when building for the 1695 build host (i.e. ``-native``) 1696 1697 - :term:`BUILDSDK_CPPFLAGS` when building 1698 for an SDK (i.e. ``nativesdk-``) 1699 1700 :term:`CROSS_COMPILE` 1701 The toolchain binary prefix for the target tools. The 1702 :term:`CROSS_COMPILE` variable is the same as the 1703 :term:`TARGET_PREFIX` variable. 1704 1705 .. note:: 1706 1707 The OpenEmbedded build system sets the :term:`CROSS_COMPILE` 1708 variable only in certain contexts (e.g. when building for kernel 1709 and kernel module recipes). 1710 1711 :term:`CVE_CHECK_CREATE_MANIFEST` 1712 Specifies whether to create a CVE manifest to place in the deploy 1713 directory. The default is "1". 1714 1715 :term:`CVE_CHECK_IGNORE` 1716 This variable is deprecated and should be replaced by :term:`CVE_STATUS`. 1717 1718 :term:`CVE_CHECK_MANIFEST_JSON` 1719 Specifies the path to the CVE manifest in JSON format. See 1720 :term:`CVE_CHECK_CREATE_MANIFEST`. 1721 1722 :term:`CVE_CHECK_MANIFEST_JSON_SUFFIX` 1723 Allows to modify the JSON manifest suffix. See 1724 :term:`CVE_CHECK_MANIFEST_JSON`. 1725 1726 :term:`CVE_CHECK_REPORT_PATCHED` 1727 Specifies whether or not the :ref:`ref-classes-cve-check` 1728 class should report patched or ignored CVEs. The default is "1", but you 1729 may wish to set it to "0" if you do not need patched or ignored CVEs in 1730 the logs. 1731 1732 :term:`CVE_CHECK_SHOW_WARNINGS` 1733 Specifies whether or not the :ref:`ref-classes-cve-check` 1734 class should generate warning messages on the console when unpatched 1735 CVEs are found. The default is "1", but you may wish to set it to "0" if 1736 you are already examining/processing the logs after the build has 1737 completed and thus do not need the warning messages. 1738 1739 :term:`CVE_CHECK_SKIP_RECIPE` 1740 The list of package names (:term:`PN`) for which 1741 CVEs (Common Vulnerabilities and Exposures) are ignored. 1742 1743 :term:`CVE_DB_INCR_UPDATE_AGE_THRES` 1744 Specifies the maximum age of the CVE database in seconds for an 1745 incremental update (instead of a full-download). Use "0" to force a 1746 full-download. 1747 1748 :term:`CVE_DB_UPDATE_INTERVAL` 1749 Specifies the CVE database update interval in seconds, as used by 1750 ``cve-update-db-native``. The default value is "86400" i.e. once a day 1751 (24*60*60). If the value is set to "0" then the update will be forced 1752 every time. Alternatively, a negative value e.g. "-1" will disable 1753 updates entirely. 1754 1755 :term:`CVE_PRODUCT` 1756 In a recipe, defines the name used to match the recipe name 1757 against the name in the upstream `NIST CVE database <https://nvd.nist.gov/>`__. 1758 1759 The default is ${:term:`BPN`} (except for recipes that inherit the 1760 :ref:`ref-classes-pypi` class where it is set based upon 1761 :term:`PYPI_PACKAGE`). If it does not match the name in the NIST CVE 1762 database or matches with multiple entries in the database, the default 1763 value needs to be changed. 1764 1765 Here is an example from the :oe_layerindex:`Berkeley DB recipe </layerindex/recipe/544>`:: 1766 1767 CVE_PRODUCT = "oracle_berkeley_db berkeley_db" 1768 1769 Sometimes the product name is not specific enough, for example 1770 "tar" has been matching CVEs for the GNU ``tar`` package and also 1771 the ``node-tar`` node.js extension. To avoid this problem, use the 1772 vendor name as a prefix. The syntax for this is:: 1773 1774 CVE_PRODUCT = "vendor:package" 1775 1776 :term:`CVE_STATUS` 1777 The CVE ID which is patched or should be ignored. Here is 1778 an example from the :oe_layerindex:`Python3 recipe</layerindex/recipe/23823>`:: 1779 1780 CVE_STATUS[CVE-2020-15523] = "not-applicable-platform: Issue only applies on Windows" 1781 1782 It has the format "reason: description" and the description is optional. 1783 The Reason is mapped to the final CVE state by mapping via 1784 :term:`CVE_CHECK_STATUSMAP`. See :ref:`dev-manual/vulnerabilities:fixing vulnerabilities in recipes` 1785 for details. 1786 1787 :term:`CVE_STATUS_GROUPS` 1788 If there are many CVEs with the same status and reason, they can by simplified by using this 1789 variable instead of many similar lines with :term:`CVE_STATUS`:: 1790 1791 CVE_STATUS_GROUPS = "CVE_STATUS_WIN CVE_STATUS_PATCHED" 1792 1793 CVE_STATUS_WIN = "CVE-1234-0001 CVE-1234-0002" 1794 CVE_STATUS_WIN[status] = "not-applicable-platform: Issue only applies on Windows" 1795 CVE_STATUS_PATCHED = "CVE-1234-0003 CVE-1234-0004" 1796 CVE_STATUS_PATCHED[status] = "fixed-version: Fixed externally" 1797 1798 :term:`CVE_CHECK_STATUSMAP` 1799 Mapping variable for all possible reasons of :term:`CVE_STATUS`: 1800 ``Patched``, ``Unpatched`` and ``Ignored``. 1801 See :ref:`ref-classes-cve-check` or ``meta/conf/cve-check-map.conf`` for more details:: 1802 1803 CVE_CHECK_STATUSMAP[cpe-incorrect] = "Ignored" 1804 1805 :term:`CVE_VERSION` 1806 In a recipe, defines the version used to match the recipe version 1807 against the version in the `NIST CVE database <https://nvd.nist.gov/>`__ 1808 when usign :ref:`ref-classes-cve-check`. 1809 1810 The default is ${:term:`PV`} but if recipes use custom version numbers 1811 which do not map to upstream software component release versions and the versions 1812 used in the CVE database, then this variable can be used to set the 1813 version number for :ref:`ref-classes-cve-check`. Example:: 1814 1815 CVE_VERSION = "2.39" 1816 1817 :term:`CVSDIR` 1818 The directory in which files checked out under the CVS system are 1819 stored. 1820 1821 :term:`CXX` 1822 The minimal command and arguments used to run the C++ compiler. 1823 1824 :term:`CXXFLAGS` 1825 Specifies the flags to pass to the C++ compiler. This variable is 1826 exported to an environment variable and thus made visible to the 1827 software being built during the compilation step. 1828 1829 Default initialization for :term:`CXXFLAGS` varies depending on what is 1830 being built: 1831 1832 - :term:`TARGET_CXXFLAGS` when building for 1833 the target 1834 1835 - :term:`BUILD_CXXFLAGS` when building for the 1836 build host (i.e. ``-native``) 1837 1838 - :term:`BUILDSDK_CXXFLAGS` when building 1839 for an SDK (i.e. ``nativesdk-``) 1840 1841 :term:`D` 1842 The destination directory. The location in the :term:`Build Directory` 1843 where components are installed by the 1844 :ref:`ref-tasks-install` task. This location defaults 1845 to:: 1846 1847 ${WORKDIR}/image 1848 1849 .. note:: 1850 1851 Tasks that read from or write to this directory should run under 1852 :ref:`fakeroot <overview-manual/concepts:fakeroot and pseudo>`. 1853 1854 :term:`DATE` 1855 The date the build was started. Dates appear using the year, month, 1856 and day (YMD) format (e.g. "20150209" for February 9th, 2015). 1857 1858 :term:`DATETIME` 1859 The date and time on which the current build started. The format is 1860 suitable for timestamps. 1861 1862 :term:`DEBIAN_NOAUTONAME` 1863 When the :ref:`ref-classes-debian` class is inherited, 1864 which is the default behavior, :term:`DEBIAN_NOAUTONAME` specifies a 1865 particular package should not be renamed according to Debian library 1866 package naming. You must use the package name as an override when you 1867 set this variable. Here is an example from the ``fontconfig`` recipe:: 1868 1869 DEBIAN_NOAUTONAME:fontconfig-utils = "1" 1870 1871 :term:`DEBIANNAME` 1872 When the :ref:`ref-classes-debian` class is inherited, 1873 which is the default behavior, :term:`DEBIANNAME` allows you to override 1874 the library name for an individual package. Overriding the library 1875 name in these cases is rare. You must use the package name as an 1876 override when you set this variable. Here is an example from the 1877 ``dbus`` recipe:: 1878 1879 DEBIANNAME:${PN} = "dbus-1" 1880 1881 :term:`DEBUG_BUILD` 1882 Specifies to build packages with debugging information. This 1883 influences the value of the :term:`SELECTED_OPTIMIZATION` variable. 1884 1885 :term:`DEBUG_OPTIMIZATION` 1886 The options to pass in :term:`TARGET_CFLAGS` and :term:`CFLAGS` when 1887 compiling a system for debugging. This variable defaults to "-O 1888 -fno-omit-frame-pointer ${DEBUG_FLAGS} -pipe". 1889 1890 :term:`DEBUG_PREFIX_MAP` 1891 Allows to set C compiler options, such as ``-fdebug-prefix-map``, 1892 ``-fmacro-prefix-map``, and ``-ffile-prefix-map``, which allow to 1893 replace build-time paths by install-time ones in the debugging sections 1894 of binaries. This makes compiler output files location independent, 1895 at the cost of having to pass an extra command to tell the debugger 1896 where source files are. 1897 1898 This is used by the Yocto Project to guarantee 1899 :doc:`/test-manual/reproducible-builds` even when the source code of 1900 a package uses the ``__FILE__`` or ``assert()`` macros. See the 1901 `reproducible-builds.org <https://reproducible-builds.org/docs/build-path/>`__ 1902 website for details. 1903 1904 This variable is set in the ``meta/conf/bitbake.conf`` file. It is 1905 not intended to be user-configurable. 1906 1907 :term:`DEFAULT_PREFERENCE` 1908 Specifies a weak bias for recipe selection priority. 1909 1910 The most common usage of this is variable is to set it to "-1" within 1911 a recipe for a development version of a piece of software. Using the 1912 variable in this way causes the stable version of the recipe to build 1913 by default in the absence of :term:`PREFERRED_VERSION` being used to 1914 build the development version. 1915 1916 .. note:: 1917 1918 The bias provided by :term:`DEFAULT_PREFERENCE` is weak and is overridden 1919 by :term:`BBFILE_PRIORITY` if that variable is different between two 1920 layers that contain different versions of the same recipe. 1921 1922 :term:`DEFAULT_TIMEZONE` 1923 Specifies the time zone set in the image. 1924 1925 This variable causes the ``tzdata`` package to configure 1926 ``${sysconfdir}/localtime`` accordingly. Valid values are all files 1927 found in ``/usr/share/zoneinfo`` like ``CET`` or ``Asia/Baku``. 1928 1929 :term:`DEFAULTTUNE` 1930 The default CPU and Application Binary Interface (ABI) tunings (i.e. 1931 the "tune") used by the OpenEmbedded build system. The 1932 :term:`DEFAULTTUNE` helps define 1933 :term:`TUNE_FEATURES`. 1934 1935 The default tune is either implicitly or explicitly set by the 1936 machine (:term:`MACHINE`). However, you can override 1937 the setting using available tunes as defined with 1938 :term:`AVAILTUNES`. 1939 1940 :term:`DEPENDS` 1941 Lists a recipe's build-time dependencies. These are dependencies on 1942 other recipes whose contents (e.g. headers and shared libraries) are 1943 needed by the recipe at build time. 1944 1945 As an example, consider a recipe ``foo`` that contains the following 1946 assignment:: 1947 1948 DEPENDS = "bar" 1949 1950 The practical effect of the previous assignment is that all files 1951 installed by bar will be available in the appropriate staging sysroot, 1952 given by the :term:`STAGING_DIR* <STAGING_DIR>` variables, by the time 1953 the :ref:`ref-tasks-configure` task for ``foo`` runs. This mechanism is 1954 implemented by having :ref:`ref-tasks-configure` depend on the 1955 :ref:`ref-tasks-populate_sysroot` task of each recipe listed in 1956 :term:`DEPENDS`, through a 1957 ``[``\ :ref:`deptask <bitbake-user-manual/bitbake-user-manual-metadata:variable flags>`\ ``]`` 1958 declaration in the :ref:`ref-classes-base` class. 1959 1960 .. note:: 1961 1962 It seldom is necessary to reference, for example, :term:`STAGING_DIR_HOST` 1963 explicitly. The standard classes and build-related variables are 1964 configured to automatically use the appropriate staging sysroots. 1965 1966 As another example, :term:`DEPENDS` can also be used to add utilities 1967 that run on the build machine during the build. For example, a recipe 1968 that makes use of a code generator built by the recipe ``codegen`` 1969 might have the following:: 1970 1971 DEPENDS = "codegen-native" 1972 1973 For more 1974 information, see the :ref:`ref-classes-native` class and 1975 the :term:`EXTRANATIVEPATH` variable. 1976 1977 .. note:: 1978 1979 - :term:`DEPENDS` is a list of recipe names. Or, to be more precise, 1980 it is a list of :term:`PROVIDES` names, which 1981 usually match recipe names. Putting a package name such as 1982 "foo-dev" in :term:`DEPENDS` does not make sense. Use "foo" 1983 instead, as this will put files from all the packages that make 1984 up ``foo``, which includes those from ``foo-dev``, into the 1985 sysroot. 1986 1987 - One recipe having another recipe in :term:`DEPENDS` does not by 1988 itself add any runtime dependencies between the packages 1989 produced by the two recipes. However, as explained in the 1990 ":ref:`overview-manual/concepts:automatically added runtime dependencies`" 1991 section in the Yocto Project Overview and Concepts Manual, 1992 runtime dependencies will often be added automatically, meaning 1993 :term:`DEPENDS` alone is sufficient for most recipes. 1994 1995 - Counterintuitively, :term:`DEPENDS` is often necessary even for 1996 recipes that install precompiled components. For example, if 1997 ``libfoo`` is a precompiled library that links against 1998 ``libbar``, then linking against ``libfoo`` requires both 1999 ``libfoo`` and ``libbar`` to be available in the sysroot. 2000 Without a :term:`DEPENDS` from the recipe that installs ``libfoo`` 2001 to the recipe that installs ``libbar``, other recipes might 2002 fail to link against ``libfoo``. 2003 2004 For information on runtime dependencies, see the :term:`RDEPENDS` 2005 variable. You can also see the 2006 ":ref:`bitbake-user-manual/bitbake-user-manual-metadata:tasks`" and 2007 ":ref:`bitbake-user-manual/bitbake-user-manual-execution:dependencies`" 2008 sections in the BitBake User Manual for additional information on tasks 2009 and dependencies. 2010 2011 :term:`DEPLOY_DIR` 2012 Points to the general area that the OpenEmbedded build system uses to 2013 place images, packages, SDKs, and other output files that are ready 2014 to be used outside of the build system. By default, this directory 2015 resides within the :term:`Build Directory` as ``${TMPDIR}/deploy``. 2016 2017 For more information on the structure of the Build Directory, see 2018 ":ref:`ref-manual/structure:the build directory --- \`\`build/\`\``" section. 2019 For more detail on the contents of the ``deploy`` directory, see the 2020 ":ref:`overview-manual/concepts:images`", 2021 ":ref:`overview-manual/concepts:package feeds`", and 2022 ":ref:`overview-manual/concepts:application development sdk`" sections all in the 2023 Yocto Project Overview and Concepts Manual. 2024 2025 :term:`DEPLOY_DIR_DEB` 2026 Points to the area that the OpenEmbedded build system uses to place 2027 Debian packages that are ready to be used outside of the build 2028 system. This variable applies only when :term:`PACKAGE_CLASSES` contains 2029 ":ref:`ref-classes-package_deb`". 2030 2031 The BitBake configuration file initially defines the 2032 :term:`DEPLOY_DIR_DEB` variable as a sub-folder of 2033 :term:`DEPLOY_DIR`:: 2034 2035 DEPLOY_DIR_DEB = "${DEPLOY_DIR}/deb" 2036 2037 The :ref:`ref-classes-package_deb` class uses the 2038 :term:`DEPLOY_DIR_DEB` variable to make sure the 2039 :ref:`ref-tasks-package_write_deb` task 2040 writes Debian packages into the appropriate folder. For more 2041 information on how packaging works, see the 2042 ":ref:`overview-manual/concepts:package feeds`" section 2043 in the Yocto Project Overview and Concepts Manual. 2044 2045 :term:`DEPLOY_DIR_IMAGE` 2046 Points to the area that the OpenEmbedded build system uses to place 2047 images and other associated output files that are ready to be 2048 deployed onto the target machine. The directory is machine-specific 2049 as it contains the ``${MACHINE}`` name. By default, this directory 2050 resides within the :term:`Build Directory` as 2051 ``${DEPLOY_DIR}/images/${MACHINE}/``. 2052 2053 It must not be used directly in recipes when deploying files. Instead, 2054 it's only useful when a recipe needs to "read" a file already deployed 2055 by a dependency. So, it should be filled with the contents of 2056 :term:`DEPLOYDIR` by the :ref:`ref-classes-deploy` class or with the 2057 contents of :term:`IMGDEPLOYDIR` by the :ref:`ref-classes-image` class. 2058 2059 For more information on the structure of the :term:`Build Directory`, see 2060 ":ref:`ref-manual/structure:the build directory --- \`\`build/\`\``" section. 2061 For more detail on the contents of the ``deploy`` directory, see the 2062 ":ref:`overview-manual/concepts:images`" and 2063 ":ref:`overview-manual/concepts:application development sdk`" sections both in 2064 the Yocto Project Overview and Concepts Manual. 2065 2066 :term:`DEPLOY_DIR_IPK` 2067 Points to the area that the OpenEmbedded build system uses to place 2068 IPK packages that are ready to be used outside of the build system. 2069 This variable applies only when :term:`PACKAGE_CLASSES` contains 2070 ":ref:`ref-classes-package_ipk`". 2071 2072 The BitBake configuration file initially defines this variable as a 2073 sub-folder of :term:`DEPLOY_DIR`:: 2074 2075 DEPLOY_DIR_IPK = "${DEPLOY_DIR}/ipk" 2076 2077 The :ref:`ref-classes-package_ipk` class uses the :term:`DEPLOY_DIR_IPK` 2078 variable to make sure the :ref:`ref-tasks-package_write_ipk` task 2079 writes IPK packages into the appropriate folder. For more information 2080 on how packaging works, see the 2081 ":ref:`overview-manual/concepts:package feeds`" section 2082 in the Yocto Project Overview and Concepts Manual. 2083 2084 :term:`DEPLOY_DIR_RPM` 2085 Points to the area that the OpenEmbedded build system uses to place 2086 RPM packages that are ready to be used outside of the build system. 2087 This variable applies only when :term:`PACKAGE_CLASSES` contains 2088 ":ref:`ref-classes-package_rpm`". 2089 2090 The BitBake configuration file initially defines this variable as a 2091 sub-folder of :term:`DEPLOY_DIR`:: 2092 2093 DEPLOY_DIR_RPM = "${DEPLOY_DIR}/rpm" 2094 2095 The :ref:`ref-classes-package_rpm` class uses the 2096 :term:`DEPLOY_DIR_RPM` variable to make sure the 2097 :ref:`ref-tasks-package_write_rpm` task 2098 writes RPM packages into the appropriate folder. For more information 2099 on how packaging works, see the 2100 ":ref:`overview-manual/concepts:package feeds`" section 2101 in the Yocto Project Overview and Concepts Manual. 2102 2103 :term:`DEPLOYDIR` 2104 When inheriting the :ref:`ref-classes-deploy` class, the 2105 :term:`DEPLOYDIR` points to a temporary work area for deployed files that 2106 is set in the :ref:`ref-classes-deploy` class as follows:: 2107 2108 DEPLOYDIR = "${WORKDIR}/deploy-${PN}" 2109 2110 Recipes inheriting the :ref:`ref-classes-deploy` class should copy files to be 2111 deployed into :term:`DEPLOYDIR`, and the class will take care of copying 2112 them into :term:`DEPLOY_DIR_IMAGE` 2113 afterwards. 2114 2115 :term:`DESCRIPTION` 2116 The package description used by package managers. If not set, 2117 :term:`DESCRIPTION` takes the value of the :term:`SUMMARY` 2118 variable. 2119 2120 :term:`DEV_PKG_DEPENDENCY` 2121 Provides an easy way for recipes to disable or adjust the runtime recommendation 2122 (:term:`RRECOMMENDS`) of the ``${PN}-dev`` package on the main 2123 (``${PN}``) package. 2124 2125 :term:`DISABLE_STATIC` 2126 Used in order to disable static linking by default (in order to save 2127 space, since static libraries are often unused in embedded systems.) 2128 The default value is " --disable-static", however it can be set to "" 2129 in order to enable static linking if desired. Certain recipes do this 2130 individually, and also there is a 2131 ``meta/conf/distro/include/no-static-libs.inc`` include file that 2132 disables static linking for a number of recipes. Some software 2133 packages or build tools (such as CMake) have explicit support for 2134 enabling / disabling static linking, and in those cases 2135 :term:`DISABLE_STATIC` is not used. 2136 2137 :term:`DISTRO` 2138 The short name of the distribution. For information on the long name 2139 of the distribution, see the :term:`DISTRO_NAME` 2140 variable. 2141 2142 The :term:`DISTRO` variable corresponds to a distribution configuration 2143 file whose root name is the same as the variable's argument and whose 2144 filename extension is ``.conf``. For example, the distribution 2145 configuration file for the Poky distribution is named ``poky.conf`` 2146 and resides in the ``meta-poky/conf/distro`` directory of the 2147 :term:`Source Directory`. 2148 2149 Within that ``poky.conf`` file, the :term:`DISTRO` variable is set as 2150 follows:: 2151 2152 DISTRO = "poky" 2153 2154 Distribution configuration files are located in a ``conf/distro`` 2155 directory within the :term:`Metadata` that contains the 2156 distribution configuration. The value for :term:`DISTRO` must not contain 2157 spaces, and is typically all lower-case. 2158 2159 .. note:: 2160 2161 If the :term:`DISTRO` variable is blank, a set of default configurations 2162 are used, which are specified within 2163 ``meta/conf/distro/defaultsetup.conf`` also in the Source Directory. 2164 2165 :term:`DISTRO_CODENAME` 2166 Specifies a codename for the distribution being built. 2167 2168 :term:`DISTRO_EXTRA_RDEPENDS` 2169 Specifies a list of distro-specific packages to add to all images. 2170 This variable takes effect through ``packagegroup-base`` so the 2171 variable only really applies to the more full-featured images that 2172 include ``packagegroup-base``. You can use this variable to keep 2173 distro policy out of generic images. As with all other distro 2174 variables, you set this variable in the distro ``.conf`` file. 2175 2176 :term:`DISTRO_EXTRA_RRECOMMENDS` 2177 Specifies a list of distro-specific packages to add to all images if 2178 the packages exist. The packages might not exist or be empty (e.g. 2179 kernel modules). The list of packages are automatically installed but 2180 you can remove them. 2181 2182 :term:`DISTRO_FEATURES` 2183 The software support you want in your distribution for various 2184 features. You define your distribution features in the distribution 2185 configuration file. 2186 2187 In most cases, the presence or absence of a feature in 2188 :term:`DISTRO_FEATURES` is translated to the appropriate option supplied 2189 to the configure script during the 2190 :ref:`ref-tasks-configure` task for recipes that 2191 optionally support the feature. For example, specifying "x11" in 2192 :term:`DISTRO_FEATURES`, causes every piece of software built for the 2193 target that can optionally support X11 to have its X11 support 2194 enabled. 2195 2196 .. note:: 2197 2198 Just enabling :term:`DISTRO_FEATURES` alone doesn't 2199 enable feature support for packages. Mechanisms such as making 2200 :term:`PACKAGECONFIG` track :term:`DISTRO_FEATURES` are used 2201 to enable/disable package features. 2202 2203 Two more examples are Bluetooth and NFS support. For a more complete 2204 list of features that ships with the Yocto Project and that you can 2205 provide with this variable, see the ":ref:`ref-features-distro`" section. 2206 2207 :term:`DISTRO_FEATURES_BACKFILL` 2208 A space-separated list of features to be added to :term:`DISTRO_FEATURES` 2209 if not also present in :term:`DISTRO_FEATURES_BACKFILL_CONSIDERED`. 2210 2211 This variable is set in the ``meta/conf/bitbake.conf`` file. It is 2212 not intended to be user-configurable. It is best to just reference 2213 the variable to see which distro features are being 2214 :ref:`backfilled <ref-features-backfill>` for all distro configurations. 2215 2216 :term:`DISTRO_FEATURES_BACKFILL_CONSIDERED` 2217 A space-separated list of features from :term:`DISTRO_FEATURES_BACKFILL` 2218 that should not be :ref:`backfilled <ref-features-backfill>` (i.e. added 2219 to :term:`DISTRO_FEATURES`) during the build. 2220 2221 This corresponds to an opt-out mechanism. When new default distro 2222 features are introduced, distribution maintainers can review (`consider`) 2223 them and decide to exclude them from the 2224 :ref:`backfilled <ref-features-backfill>` features. Therefore, the 2225 combination of :term:`DISTRO_FEATURES_BACKFILL` and 2226 :term:`DISTRO_FEATURES_BACKFILL_CONSIDERED` makes it possible to 2227 add new default features without breaking existing distributions. 2228 2229 2230 :term:`DISTRO_FEATURES_DEFAULT` 2231 A convenience variable that gives you the default list of distro 2232 features with the exception of any features specific to the C library 2233 (``libc``). 2234 2235 When creating a custom distribution, you might find it useful to be 2236 able to reuse the default 2237 :term:`DISTRO_FEATURES` options without the 2238 need to write out the full set. Here is an example that uses 2239 :term:`DISTRO_FEATURES_DEFAULT` from a custom distro configuration file:: 2240 2241 DISTRO_FEATURES ?= "${DISTRO_FEATURES_DEFAULT} myfeature" 2242 2243 :term:`DISTRO_FEATURES_FILTER_NATIVE` 2244 Specifies a list of features that if present in the target 2245 :term:`DISTRO_FEATURES` value should be 2246 included in :term:`DISTRO_FEATURES` when building native recipes. This 2247 variable is used in addition to the features filtered using the 2248 :term:`DISTRO_FEATURES_NATIVE` 2249 variable. 2250 2251 :term:`DISTRO_FEATURES_FILTER_NATIVESDK` 2252 Specifies a list of features that if present in the target 2253 :term:`DISTRO_FEATURES` value should be included in 2254 :term:`DISTRO_FEATURES` when building :ref:`ref-classes-nativesdk` 2255 recipes. This variable is used in addition to the features filtered using 2256 the :term:`DISTRO_FEATURES_NATIVESDK` variable. 2257 2258 :term:`DISTRO_FEATURES_NATIVE` 2259 Specifies a list of features that should be included in 2260 :term:`DISTRO_FEATURES` when building native 2261 recipes. This variable is used in addition to the features filtered 2262 using the 2263 :term:`DISTRO_FEATURES_FILTER_NATIVE` 2264 variable. 2265 2266 :term:`DISTRO_FEATURES_NATIVESDK` 2267 Specifies a list of features that should be included in 2268 :term:`DISTRO_FEATURES` when building 2269 :ref:`ref-classes-nativesdk` recipes. This variable is used 2270 in addition to the features filtered using the 2271 :term:`DISTRO_FEATURES_FILTER_NATIVESDK` variable. 2272 2273 :term:`DISTRO_NAME` 2274 The long name of the distribution. For information on the short name 2275 of the distribution, see the :term:`DISTRO` variable. 2276 2277 The :term:`DISTRO_NAME` variable corresponds to a distribution 2278 configuration file whose root name is the same as the variable's 2279 argument and whose filename extension is ``.conf``. For example, the 2280 distribution configuration file for the Poky distribution is named 2281 ``poky.conf`` and resides in the ``meta-poky/conf/distro`` directory 2282 of the :term:`Source Directory`. 2283 2284 Within that ``poky.conf`` file, the :term:`DISTRO_NAME` variable is set 2285 as follows:: 2286 2287 DISTRO_NAME = "Poky (Yocto Project Reference Distro)" 2288 2289 Distribution configuration files are located in a ``conf/distro`` 2290 directory within the :term:`Metadata` that contains the 2291 distribution configuration. 2292 2293 .. note:: 2294 2295 If the :term:`DISTRO_NAME` variable is blank, a set of default 2296 configurations are used, which are specified within 2297 ``meta/conf/distro/defaultsetup.conf`` also in the Source Directory. 2298 2299 :term:`DISTRO_VERSION` 2300 The version of the distribution. 2301 2302 :term:`DISTROOVERRIDES` 2303 A colon-separated list of overrides specific to the current 2304 distribution. By default, this list includes the value of 2305 :term:`DISTRO`. 2306 2307 You can extend :term:`DISTROOVERRIDES` to add extra overrides that should 2308 apply to the distribution. 2309 2310 The underlying mechanism behind :term:`DISTROOVERRIDES` is simply that it 2311 is included in the default value of 2312 :term:`OVERRIDES`. 2313 2314 Here is an example from :yocto_git:`meta-poky/conf/distro/poky-tiny.conf 2315 </poky/tree/meta-poky/conf/distro/poky-tiny.conf>`:: 2316 2317 DISTROOVERRIDES = "poky:poky-tiny" 2318 2319 :term:`DL_DIR` 2320 The central download directory used by the build process to store 2321 downloads. By default, :term:`DL_DIR` gets files suitable for mirroring 2322 for everything except Git repositories. If you want tarballs of Git 2323 repositories, use the 2324 :term:`BB_GENERATE_MIRROR_TARBALLS` 2325 variable. 2326 2327 You can set this directory by defining the :term:`DL_DIR` variable in the 2328 ``conf/local.conf`` file. This directory is self-maintaining and you 2329 should not have to touch it. By default, the directory is 2330 ``downloads`` in the :term:`Build Directory`:: 2331 2332 #DL_DIR ?= "${TOPDIR}/downloads" 2333 2334 To specify a different download directory, 2335 simply remove the comment from the line and provide your directory. 2336 2337 During a first build, the system downloads many different source code 2338 tarballs from various upstream projects. Downloading can take a 2339 while, particularly if your network connection is slow. Tarballs are 2340 all stored in the directory defined by :term:`DL_DIR` and the build 2341 system looks there first to find source tarballs. 2342 2343 .. note:: 2344 2345 When wiping and rebuilding, you can preserve this directory to 2346 speed up this part of subsequent builds. 2347 2348 You can safely share this directory between multiple builds on the 2349 same development machine. For additional information on how the build 2350 process gets source files when working behind a firewall or proxy 2351 server, see this specific question in the ":doc:`faq`" 2352 chapter. You can also refer to the 2353 ":yocto_wiki:`Working Behind a Network Proxy </Working_Behind_a_Network_Proxy>`" 2354 Wiki page. 2355 2356 :term:`DOC_COMPRESS` 2357 When inheriting the :ref:`ref-classes-compress_doc` 2358 class, this variable sets the compression policy used when the 2359 OpenEmbedded build system compresses manual and info pages. By 2360 default, the compression method used is gz (gzip). Other policies 2361 available are xz and bz2. 2362 2363 For information on policies and on how to use this variable, see the 2364 comments in the ``meta/classes-recipe/compress_doc.bbclass`` file. 2365 2366 :term:`DT_FILES` 2367 Space-separated list of device tree source files to compile using 2368 a recipe that inherits the :ref:`ref-classes-devicetree` class. These 2369 are relative to the :term:`DT_FILES_PATH`. 2370 2371 For convenience, both ``.dts`` and ``.dtb`` extensions can be used. 2372 2373 Use an empty string (default) to build all device tree sources within 2374 the :term:`DT_FILES_PATH` directory. 2375 2376 :term:`DT_FILES_PATH` 2377 When compiling out-of-tree device tree sources using a recipe that 2378 inherits the :ref:`ref-classes-devicetree` class, this variable specifies 2379 the path to the directory containing dts files to build. 2380 2381 Defaults to the :term:`S` directory. 2382 2383 :term:`DT_PADDING_SIZE` 2384 When inheriting the :ref:`ref-classes-devicetree` class, this variable 2385 specifies the size of padding appended to the device tree blob, used as 2386 extra space typically for additional properties during boot. 2387 2388 :term:`EFI_ARCH` 2389 The CPU architecture name within EFI standard. Set in 2390 :oe_git:`meta/conf/image-uefi.conf 2391 <openembedded-core/tree/meta/conf/image-uefi.conf>`. 2392 2393 :term:`EFI_PROVIDER` 2394 When building bootable images (i.e. where ``hddimg``, ``iso``, or 2395 ``wic.vmdk`` is in :term:`IMAGE_FSTYPES`), the 2396 :term:`EFI_PROVIDER` variable specifies the EFI bootloader to use. The 2397 default is "grub-efi", but "systemd-boot" can be used instead. 2398 2399 See the :ref:`ref-classes-systemd-boot` and :ref:`ref-classes-image-live` 2400 classes for more information. 2401 2402 :term:`EFI_UKI_DIR` 2403 The primary place for the UKI image inside the EFI System Partition. 2404 2405 :term:`EFI_UKI_PATH` 2406 The path for the UKI image inside the root filesystem. 2407 2408 :term:`ENABLE_BINARY_LOCALE_GENERATION` 2409 Variable that controls which locales for ``glibc`` are generated 2410 during the build (useful if the target device has 64Mbytes of RAM or 2411 less). 2412 2413 :term:`ERR_REPORT_DIR` 2414 When used with the :ref:`ref-classes-report-error` class, specifies the 2415 path used for storing the debug files created by the :ref:`error reporting 2416 tool <dev-manual/error-reporting-tool:using the error reporting tool>`, 2417 which allows you to submit build errors you encounter to a central 2418 database. By default, the value of this variable is 2419 ``${``\ :term:`LOG_DIR`\ ``}/error-report``. 2420 2421 You can set :term:`ERR_REPORT_DIR` to the path you want the error 2422 reporting tool to store the debug files as follows in your 2423 ``local.conf`` file:: 2424 2425 ERR_REPORT_DIR = "path" 2426 2427 :term:`ERROR_QA` 2428 Specifies the quality assurance checks whose failures are reported as 2429 errors by the OpenEmbedded build system. You set this variable in 2430 your distribution configuration file. For a list of the checks you 2431 can control with this variable, see the 2432 ":ref:`ref-classes-insane`" section. 2433 2434 :term:`ESDK_CLASS_INHERIT_DISABLE` 2435 A list of classes to remove from the :term:`INHERIT` 2436 value globally within the extensible SDK configuration. The 2437 :ref:`populate-sdk-ext <ref-classes-populate-sdk-*>` class sets the 2438 default value:: 2439 2440 ESDK_CLASS_INHERIT_DISABLE ?= "buildhistory icecc" 2441 2442 Some classes are not generally applicable within the extensible SDK 2443 context. You can use this variable to disable those classes. 2444 2445 For additional information on how to customize the extensible SDK's 2446 configuration, see the 2447 ":ref:`sdk-manual/appendix-customizing:configuring the extensible sdk`" 2448 section in the Yocto Project Application Development and the 2449 Extensible Software Development Kit (eSDK) manual. 2450 2451 :term:`ESDK_LOCALCONF_ALLOW` 2452 A list of variables allowed through from the OpenEmbedded build 2453 system configuration into the extensible SDK configuration. By 2454 default, the list of variables is empty and is set in the 2455 :ref:`populate-sdk-ext <ref-classes-populate-sdk-*>` class. 2456 2457 This list overrides the variables specified using the 2458 :term:`ESDK_LOCALCONF_REMOVE` variable as well as 2459 other variables automatically added due to the "/" character 2460 being found at the start of the 2461 value, which is usually indicative of being a path and thus might not 2462 be valid on the system where the SDK is installed. 2463 2464 For additional information on how to customize the extensible SDK's 2465 configuration, see the 2466 ":ref:`sdk-manual/appendix-customizing:configuring the extensible sdk`" 2467 section in the Yocto Project Application Development and the 2468 Extensible Software Development Kit (eSDK) manual. 2469 2470 :term:`ESDK_LOCALCONF_REMOVE` 2471 A list of variables not allowed through from the OpenEmbedded build 2472 system configuration into the extensible SDK configuration. Usually, 2473 these are variables that are specific to the machine on which the 2474 build system is running and thus would be potentially problematic 2475 within the extensible SDK. 2476 2477 By default, :term:`ESDK_LOCALCONF_REMOVE` is set in the 2478 :ref:`populate-sdk-ext <ref-classes-populate-sdk-*>` class and 2479 excludes the following variables: 2480 2481 - :term:`CONF_VERSION` 2482 - :term:`BB_NUMBER_THREADS` 2483 - :term:`BB_NUMBER_PARSE_THREADS` 2484 - :term:`PARALLEL_MAKE` 2485 - :term:`PRSERV_HOST` 2486 - :term:`SSTATE_MIRRORS` :term:`DL_DIR` 2487 - :term:`SSTATE_DIR` :term:`TMPDIR` 2488 - :term:`BB_SERVER_TIMEOUT` 2489 2490 For additional information on how to customize the extensible SDK's 2491 configuration, see the 2492 ":ref:`sdk-manual/appendix-customizing:configuring the extensible sdk`" 2493 section in the Yocto Project Application Development and the 2494 Extensible Software Development Kit (eSDK) manual. 2495 2496 :term:`EXCLUDE_FROM_SHLIBS` 2497 Triggers the OpenEmbedded build system's shared libraries resolver to 2498 exclude an entire package when scanning for shared libraries. 2499 2500 .. note:: 2501 2502 The shared libraries resolver's functionality results in part from 2503 the internal function ``package_do_shlibs``, which is part of the 2504 :ref:`ref-tasks-package` task. You should be aware that the shared 2505 libraries resolver might implicitly define some dependencies between 2506 packages. 2507 2508 The :term:`EXCLUDE_FROM_SHLIBS` variable is similar to the 2509 :term:`PRIVATE_LIBS` variable, which excludes a 2510 package's particular libraries only and not the whole package. 2511 2512 Use the :term:`EXCLUDE_FROM_SHLIBS` variable by setting it to "1" for a 2513 particular package:: 2514 2515 EXCLUDE_FROM_SHLIBS = "1" 2516 2517 :term:`EXCLUDE_FROM_WORLD` 2518 Directs BitBake to exclude a recipe from world builds (i.e. 2519 ``bitbake world``). During world builds, BitBake locates, parses and 2520 builds all recipes found in every layer exposed in the 2521 ``bblayers.conf`` configuration file. 2522 2523 To exclude a recipe from a world build using this variable, set the 2524 variable to "1" in the recipe. 2525 2526 .. note:: 2527 2528 Recipes added to :term:`EXCLUDE_FROM_WORLD` may still be built during a 2529 world build in order to satisfy dependencies of other recipes. Adding 2530 a recipe to :term:`EXCLUDE_FROM_WORLD` only ensures that the recipe is not 2531 explicitly added to the list of build targets in a world build. 2532 2533 :term:`EXTENDPE` 2534 Used with file and pathnames to create a prefix for a recipe's 2535 version based on the recipe's :term:`PE` value. If :term:`PE` 2536 is set and greater than zero for a recipe, :term:`EXTENDPE` becomes that 2537 value (e.g if :term:`PE` is equal to "1" then :term:`EXTENDPE` becomes "1"). 2538 If a recipe's :term:`PE` is not set (the default) or is equal to zero, 2539 :term:`EXTENDPE` becomes "". 2540 2541 See the :term:`STAMP` variable for an example. 2542 2543 :term:`EXTENDPKGV` 2544 The full package version specification as it appears on the final 2545 packages produced by a recipe. The variable's value is normally used 2546 to fix a runtime dependency to the exact same version of another 2547 package in the same recipe:: 2548 2549 RDEPENDS:${PN}-additional-module = "${PN} (= ${EXTENDPKGV})" 2550 2551 The dependency relationships are intended to force the package 2552 manager to upgrade these types of packages in lock-step. 2553 2554 :term:`EXTERNAL_KERNEL_TOOLS` 2555 When set, the :term:`EXTERNAL_KERNEL_TOOLS` variable indicates that these 2556 tools are not in the source tree. 2557 2558 When kernel tools are available in the tree, they are preferred over 2559 any externally installed tools. Setting the :term:`EXTERNAL_KERNEL_TOOLS` 2560 variable tells the OpenEmbedded build system to prefer the installed 2561 external tools. See the :ref:`ref-classes-kernel-yocto` class in 2562 ``meta/classes-recipe`` to see how the variable is used. 2563 2564 :term:`EXTERNAL_KERNEL_DEVICETREE` 2565 When inheriting :ref:`ref-classes-kernel-fitimage` and a 2566 :term:`PREFERRED_PROVIDER` for ``virtual/dtb`` set to ``devicetree``, the 2567 variable :term:`EXTERNAL_KERNEL_DEVICETREE` can be used to specify a 2568 directory containing one or more compiled device tree or device tree 2569 overlays to use. 2570 2571 :term:`KERNEL_LOCALVERSION` 2572 This variable allows to append a string to the version 2573 of the kernel image. This corresponds to the ``CONFIG_LOCALVERSION`` 2574 kernel configuration parameter. 2575 2576 Using this variable is only useful when you are using a kernel recipe 2577 inheriting the :ref:`ref-classes-kernel` class, and which doesn't 2578 already set a local version. Therefore, setting this variable has no 2579 impact on ``linux-yocto`` kernels. 2580 2581 :term:`EXTERNAL_TOOLCHAIN` 2582 When you intend to use an 2583 :ref:`external toolchain <dev-manual/external-toolchain:optionally using an external toolchain>`, 2584 this variable allows to specify the directory where this toolchain was 2585 installed. 2586 2587 :term:`EXTERNALSRC` 2588 When inheriting the :ref:`ref-classes-externalsrc` 2589 class, this variable points to the source tree, which is outside of 2590 the OpenEmbedded build system. When set, this variable sets the 2591 :term:`S` variable, which is what the OpenEmbedded build 2592 system uses to locate unpacked recipe source code. 2593 2594 See the ":ref:`ref-classes-externalsrc`" section for details. You 2595 can also find information on how to use this variable in the 2596 ":ref:`dev-manual/building:building software from an external source`" 2597 section in the Yocto Project Development Tasks Manual. 2598 2599 :term:`EXTERNALSRC_BUILD` 2600 When inheriting the :ref:`ref-classes-externalsrc` 2601 class, this variable points to the directory in which the recipe's 2602 source code is built, which is outside of the OpenEmbedded build 2603 system. When set, this variable sets the :term:`B` variable, 2604 which is what the OpenEmbedded build system uses to locate the 2605 :term:`Build Directory`. 2606 2607 See the ":ref:`ref-classes-externalsrc`" section for details. You 2608 can also find information on how to use this variable in the 2609 ":ref:`dev-manual/building:building software from an external source`" 2610 section in the Yocto Project Development Tasks Manual. 2611 2612 :term:`EXTRA_AUTORECONF` 2613 For recipes inheriting the :ref:`ref-classes-autotools` 2614 class, you can use :term:`EXTRA_AUTORECONF` to specify extra options to 2615 pass to the ``autoreconf`` command that is executed during the 2616 :ref:`ref-tasks-configure` task. 2617 2618 The default value is "--exclude=autopoint". 2619 2620 :term:`EXTRA_IMAGE_FEATURES` 2621 A list of additional features to include in an image. When listing 2622 more than one feature, separate them with a space. 2623 2624 Typically, you configure this variable in your ``local.conf`` file, 2625 which is found in the :term:`Build Directory`. Although you can use this 2626 variable from within a recipe, best practices dictate that you do not. 2627 2628 .. note:: 2629 2630 To enable primary features from within the image recipe, use the 2631 :term:`IMAGE_FEATURES` variable. 2632 2633 Here are some examples of features you can add: 2634 2635 - "dbg-pkgs" --- adds -dbg packages for all installed packages including 2636 symbol information for debugging and profiling. 2637 2638 - "empty-root-password" --- This feature can be used if you want to 2639 allow root login with an empty password. 2640 - "allow-empty-password" --- Allows Dropbear and OpenSSH to accept 2641 logins from accounts having an empty password string. 2642 - "allow-root-login" --- Allows Dropbear and OpenSSH to accept root logins. 2643 - "post-install-logging" --- Enables logging postinstall script runs to 2644 the ``/var/log/postinstall.log`` file on first boot of the image on 2645 the target system. 2646 - "dev-pkgs" --- adds -dev packages for all installed packages. This is 2647 useful if you want to develop against the libraries in the image. 2648 - "read-only-rootfs" --- creates an image whose root filesystem is 2649 read-only. See the 2650 ":ref:`dev-manual/read-only-rootfs:creating a read-only root filesystem`" 2651 section in the Yocto Project Development Tasks Manual for more 2652 information 2653 - "tools-debug" --- adds debugging tools such as gdb and strace. 2654 - "tools-sdk" --- adds development tools such as gcc, make, 2655 pkgconfig and so forth. 2656 - "tools-testapps" --- adds useful testing tools 2657 such as ts_print, aplay, arecord and so forth. 2658 2659 For a complete list of image features that ships with the Yocto 2660 Project, see the ":ref:`ref-features-image`" section. 2661 2662 For an example that shows how to customize your image by using this 2663 variable, see the ":ref:`dev-manual/customizing-images:customizing images using custom \`\`image_features\`\` and \`\`extra_image_features\`\``" 2664 section in the Yocto Project Development Tasks Manual. 2665 2666 :term:`EXTRA_IMAGECMD` 2667 Specifies additional options for the image creation command that has 2668 been specified in :term:`IMAGE_CMD`. When setting 2669 this variable, use an override for the associated image type. Here is 2670 an example:: 2671 2672 EXTRA_IMAGECMD:ext3 ?= "-i 4096" 2673 2674 :term:`EXTRA_IMAGEDEPENDS` 2675 A list of recipes to build that do not provide packages for 2676 installing into the root filesystem. 2677 2678 Sometimes a recipe is required to build the final image but is not 2679 needed in the root filesystem. You can use the :term:`EXTRA_IMAGEDEPENDS` 2680 variable to list these recipes and thus specify the dependencies. A 2681 typical example is a required bootloader in a machine configuration. 2682 2683 .. note:: 2684 2685 To add packages to the root filesystem, see the various 2686 :term:`RDEPENDS` and :term:`RRECOMMENDS` variables. 2687 2688 :term:`EXTRA_OECMAKE` 2689 Additional `CMake <https://cmake.org/overview/>`__ options. See the 2690 :ref:`ref-classes-cmake` class for additional information. 2691 2692 :term:`EXTRA_OECONF` 2693 Additional ``configure`` script options. See 2694 :term:`PACKAGECONFIG_CONFARGS` for 2695 additional information on passing configure script options. 2696 2697 :term:`EXTRA_OEMAKE` 2698 Additional GNU ``make`` options. 2699 2700 Because the :term:`EXTRA_OEMAKE` defaults to "", you need to set the 2701 variable to specify any required GNU options. 2702 2703 :term:`PARALLEL_MAKE` and 2704 :term:`PARALLEL_MAKEINST` also make use of 2705 :term:`EXTRA_OEMAKE` to pass the required flags. 2706 2707 :term:`EXTRA_OESCONS` 2708 When inheriting the :ref:`ref-classes-scons` class, this 2709 variable specifies additional configuration options you want to pass 2710 to the ``scons`` command line. 2711 2712 :term:`EXTRA_OEMESON` 2713 Additional `Meson <https://mesonbuild.com/>`__ options. See the 2714 :ref:`ref-classes-meson` class for additional information. 2715 2716 In addition to standard Meson options, such options correspond to 2717 `Meson build options <https://mesonbuild.com/Build-options.html>`__ 2718 defined in the ``meson_options.txt`` file in the sources to build. 2719 Here is an example:: 2720 2721 EXTRA_OEMESON = "-Dpython=disabled -Dvalgrind=disabled" 2722 2723 Note that any custom value for the Meson ``--buildtype`` option 2724 should be set through the :term:`MESON_BUILDTYPE` variable. 2725 2726 :term:`EXTRA_USERS_PARAMS` 2727 When inheriting the :ref:`ref-classes-extrausers` 2728 class, this variable provides image level user and group operations. 2729 This is a more global method of providing user and group 2730 configuration as compared to using the 2731 :ref:`ref-classes-useradd` class, which ties user and 2732 group configurations to a specific recipe. 2733 2734 The set list of commands you can configure using the 2735 :term:`EXTRA_USERS_PARAMS` is shown in the 2736 :ref:`ref-classes-extrausers` class. These commands map to the normal 2737 Unix commands of the same names:: 2738 2739 # EXTRA_USERS_PARAMS = "\ 2740 # useradd -p '' tester; \ 2741 # groupadd developers; \ 2742 # userdel nobody; \ 2743 # groupdel -g video; \ 2744 # groupmod -g 1020 developers; \ 2745 # usermod -s /bin/sh tester; \ 2746 # " 2747 2748 Hardcoded passwords are supported via the ``-p`` parameters for 2749 ``useradd`` or ``usermod``, but only hashed. 2750 2751 Here is an example that adds two users named "tester-jim" and "tester-sue" and assigns 2752 passwords. First on host, create the (escaped) password hash:: 2753 2754 printf "%q" $(mkpasswd -m sha256crypt tester01) 2755 2756 The resulting hash is set to a variable and used in ``useradd`` command parameters:: 2757 2758 inherit extrausers 2759 PASSWD = "\$X\$ABC123\$A-Long-Hash" 2760 EXTRA_USERS_PARAMS = "\ 2761 useradd -p '${PASSWD}' tester-jim; \ 2762 useradd -p '${PASSWD}' tester-sue; \ 2763 " 2764 2765 Finally, here is an example that sets the root password:: 2766 2767 inherit extrausers 2768 EXTRA_USERS_PARAMS = "\ 2769 usermod -p '${PASSWD}' root; \ 2770 " 2771 2772 .. note:: 2773 2774 From a security perspective, hardcoding a default password is not 2775 generally a good idea or even legal in some jurisdictions. It is 2776 recommended that you do not do this if you are building a production 2777 image. 2778 2779 Additionally there is a special ``passwd-expire`` command that will 2780 cause the password for a user to be expired and thus force changing it 2781 on first login, for example:: 2782 2783 EXTRA_USERS_PARAMS += " useradd myuser; passwd-expire myuser;" 2784 2785 .. note:: 2786 2787 At present, ``passwd-expire`` may only work for remote logins when 2788 using OpenSSH and not dropbear as an SSH server. 2789 2790 :term:`EXTRANATIVEPATH` 2791 A list of subdirectories of 2792 ``${``\ :term:`STAGING_BINDIR_NATIVE`\ ``}`` 2793 added to the beginning of the environment variable ``PATH``. As an 2794 example, the following prepends 2795 "${STAGING_BINDIR_NATIVE}/foo:${STAGING_BINDIR_NATIVE}/bar:" to 2796 ``PATH``:: 2797 2798 EXTRANATIVEPATH = "foo bar" 2799 2800 :term:`FAKEROOT` 2801 See :term:`bitbake:FAKEROOT` in the BitBake manual. 2802 2803 :term:`FAKEROOTBASEENV` 2804 See :term:`bitbake:FAKEROOTBASEENV` in the BitBake manual. 2805 2806 :term:`FAKEROOTCMD` 2807 See :term:`bitbake:FAKEROOTCMD` in the BitBake manual. 2808 2809 :term:`FAKEROOTDIRS` 2810 See :term:`bitbake:FAKEROOTDIRS` in the BitBake manual. 2811 2812 :term:`FAKEROOTENV` 2813 See :term:`bitbake:FAKEROOTENV` in the BitBake manual. 2814 2815 :term:`FAKEROOTNOENV` 2816 See :term:`bitbake:FAKEROOTNOENV` in the BitBake manual. 2817 2818 :term:`FEATURE_PACKAGES` 2819 Defines one or more packages to include in an image when a specific 2820 item is included in :term:`IMAGE_FEATURES`. 2821 When setting the value, :term:`FEATURE_PACKAGES` should have the name of 2822 the feature item as an override. Here is an example:: 2823 2824 FEATURE_PACKAGES_widget = "package1 package2" 2825 2826 In this example, if "widget" were added to :term:`IMAGE_FEATURES`, 2827 package1 and package2 would be included in the image. 2828 2829 .. note:: 2830 2831 Packages installed by features defined through :term:`FEATURE_PACKAGES` 2832 are often package groups. While similarly named, you should not 2833 confuse the :term:`FEATURE_PACKAGES` variable with package groups, which 2834 are discussed elsewhere in the documentation. 2835 2836 :term:`FEED_DEPLOYDIR_BASE_URI` 2837 Points to the base URL of the server and location within the 2838 document-root that provides the metadata and packages required by 2839 OPKG to support runtime package management of IPK packages. You set 2840 this variable in your ``local.conf`` file. 2841 2842 Consider the following example:: 2843 2844 FEED_DEPLOYDIR_BASE_URI = "http://192.168.7.1/BOARD-dir" 2845 2846 This example assumes you are serving 2847 your packages over HTTP and your databases are located in a directory 2848 named ``BOARD-dir``, which is underneath your HTTP server's 2849 document-root. In this case, the OpenEmbedded build system generates 2850 a set of configuration files for you in your target that work with 2851 the feed. 2852 2853 :term:`FETCHCMD` 2854 See :term:`bitbake:FETCHCMD` in the BitBake manual. 2855 2856 :term:`FILE` 2857 See :term:`bitbake:FILE` in the BitBake manual. 2858 2859 :term:`FILES` 2860 The list of files and directories that are placed in a package. The 2861 :term:`PACKAGES` variable lists the packages 2862 generated by a recipe. 2863 2864 To use the :term:`FILES` variable, provide a package name override that 2865 identifies the resulting package. Then, provide a space-separated 2866 list of files or paths that identify the files you want included as 2867 part of the resulting package. Here is an example:: 2868 2869 FILES:${PN} += "${bindir}/mydir1 ${bindir}/mydir2/myfile" 2870 2871 .. note:: 2872 2873 - When specifying files or paths, you can pattern match using 2874 Python's 2875 `glob <https://docs.python.org/3/library/glob.html>`__ 2876 syntax. For details on the syntax, see the documentation by 2877 following the previous link. 2878 2879 - When specifying paths as part of the :term:`FILES` variable, it is 2880 good practice to use appropriate path variables. For example, 2881 use ``${sysconfdir}`` rather than ``/etc``, or ``${bindir}`` 2882 rather than ``/usr/bin``. You can find a list of these 2883 variables at the top of the ``meta/conf/bitbake.conf`` file in 2884 the :term:`Source Directory`. You will also 2885 find the default values of the various ``FILES:*`` variables in 2886 this file. 2887 2888 If some of the files you provide with the :term:`FILES` variable are 2889 editable and you know they should not be overwritten during the 2890 package update process by the Package Management System (PMS), you 2891 can identify these files so that the PMS will not overwrite them. See 2892 the :term:`CONFFILES` variable for information on 2893 how to identify these files to the PMS. 2894 2895 :term:`FILES_SOLIBSDEV` 2896 Defines the file specification to match 2897 :term:`SOLIBSDEV`. In other words, 2898 :term:`FILES_SOLIBSDEV` defines the full path name of the development 2899 symbolic link (symlink) for shared libraries on the target platform. 2900 2901 The following statement from the ``bitbake.conf`` shows how it is 2902 set:: 2903 2904 FILES_SOLIBSDEV ?= "${base_libdir}/lib*${SOLIBSDEV} ${libdir}/lib*${SOLIBSDEV}" 2905 2906 :term:`FILESEXTRAPATHS` 2907 A colon-separated list to extend the search path the OpenEmbedded build 2908 system uses when looking for files and patches as it processes recipes 2909 and append files. The default directories BitBake uses when it processes 2910 recipes are initially defined by the :term:`FILESPATH` variable. You can 2911 extend :term:`FILESPATH` variable by using :term:`FILESEXTRAPATHS`. 2912 2913 Best practices dictate that you accomplish this by using 2914 :term:`FILESEXTRAPATHS` from within a ``.bbappend`` file and that you 2915 prepend paths as follows:: 2916 2917 FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:" 2918 2919 In the above example, the build system first 2920 looks for files in a directory that has the same name as the 2921 corresponding append file. 2922 2923 .. note:: 2924 2925 When extending :term:`FILESEXTRAPATHS`, be sure to use the immediate 2926 expansion (``:=``) operator. Immediate expansion makes sure that 2927 BitBake evaluates :term:`THISDIR` at the time the 2928 directive is encountered rather than at some later time when 2929 expansion might result in a directory that does not contain the 2930 files you need. 2931 2932 Also, include the trailing separating colon character if you are 2933 prepending. The trailing colon character is necessary because you 2934 are directing BitBake to extend the path by prepending directories 2935 to the search path. 2936 2937 Here is another common use:: 2938 2939 FILESEXTRAPATHS:prepend := "${THISDIR}/files:" 2940 2941 In this example, the build system extends the 2942 :term:`FILESPATH` variable to include a directory named ``files`` that is 2943 in the same directory as the corresponding append file. 2944 2945 This next example specifically adds three paths:: 2946 2947 FILESEXTRAPATHS:prepend := "path_1:path_2:path_3:" 2948 2949 A final example shows how you can extend the search path and include 2950 a :term:`MACHINE`-specific override, which is useful 2951 in a BSP layer:: 2952 2953 FILESEXTRAPATHS:prepend:intel-x86-common := "${THISDIR}/${PN}:" 2954 2955 The previous statement appears in the 2956 ``linux-yocto-dev.bbappend`` file, which is found in the 2957 :ref:`overview-manual/development-environment:yocto project source repositories` in 2958 ``meta-intel/common/recipes-kernel/linux``. Here, the machine 2959 override is a special :term:`PACKAGE_ARCH` 2960 definition for multiple ``meta-intel`` machines. 2961 2962 .. note:: 2963 2964 For a layer that supports a single BSP, the override could just be 2965 the value of :term:`MACHINE`. 2966 2967 By prepending paths in ``.bbappend`` files, you allow multiple append 2968 files that reside in different layers but are used for the same 2969 recipe to correctly extend the path. 2970 2971 :term:`FILESOVERRIDES` 2972 A colon-separated list to specify a subset of :term:`OVERRIDES` used by 2973 the OpenEmbedded build system for creating :term:`FILESPATH`. The 2974 :term:`FILESOVERRIDES` variable uses overrides to automatically extend 2975 the :term:`FILESPATH` variable. For an example of how that works, see the 2976 :term:`FILESPATH` variable description. Additionally, you find more 2977 information on how overrides are handled in the 2978 ":ref:`bitbake-user-manual/bitbake-user-manual-metadata:conditional syntax (overrides)`" 2979 section of the BitBake User Manual. 2980 2981 By default, the :term:`FILESOVERRIDES` variable is defined as:: 2982 2983 FILESOVERRIDES = "${TRANSLATED_TARGET_ARCH}:${MACHINEOVERRIDES}:${DISTROOVERRIDES}" 2984 2985 .. note:: 2986 2987 Do not hand-edit the :term:`FILESOVERRIDES` variable. The values match up 2988 with expected overrides and are used in an expected manner by the 2989 build system. 2990 2991 :term:`FILESPATH` 2992 A colon-separated list specifying the default set of directories the 2993 OpenEmbedded build system uses when searching for patches and files. 2994 2995 During the build process, BitBake searches each directory in 2996 :term:`FILESPATH` in the specified order when looking for files and 2997 patches specified by each ``file://`` URI in a recipe's 2998 :term:`SRC_URI` statements. 2999 3000 The default value for the :term:`FILESPATH` variable is defined in the 3001 :ref:`ref-classes-base` class found in ``meta/classes-global`` in the 3002 :term:`Source Directory`:: 3003 3004 FILESPATH = "${@base_set_filespath(["${FILE_DIRNAME}/${BP}", \ 3005 "${FILE_DIRNAME}/${BPN}", "${FILE_DIRNAME}/files"], d)}" 3006 3007 The 3008 :term:`FILESPATH` variable is automatically extended using the overrides 3009 from the :term:`FILESOVERRIDES` variable. 3010 3011 .. note:: 3012 3013 - Do not hand-edit the :term:`FILESPATH` variable. If you want the 3014 build system to look in directories other than the defaults, 3015 extend the :term:`FILESPATH` variable by using the 3016 :term:`FILESEXTRAPATHS` variable. 3017 3018 - Be aware that the default :term:`FILESPATH` directories do not map 3019 to directories in custom layers where append files 3020 (``.bbappend``) are used. If you want the build system to find 3021 patches or files that reside with your append files, you need 3022 to extend the :term:`FILESPATH` variable by using the 3023 :term:`FILESEXTRAPATHS` variable. 3024 3025 You can take advantage of this searching behavior in useful ways. For 3026 example, consider a case where there is the following directory structure 3027 for general and machine-specific configurations:: 3028 3029 files/defconfig 3030 files/MACHINEA/defconfig 3031 files/MACHINEB/defconfig 3032 3033 Also in the example, the :term:`SRC_URI` statement contains 3034 "file://defconfig". Given this scenario, you can set 3035 :term:`MACHINE` to "MACHINEA" and cause the build 3036 system to use files from ``files/MACHINEA``. Set :term:`MACHINE` to 3037 "MACHINEB" and the build system uses files from ``files/MACHINEB``. 3038 Finally, for any machine other than "MACHINEA" and "MACHINEB", the 3039 build system uses files from ``files/defconfig``. 3040 3041 You can find out more about the patching process in the 3042 ":ref:`overview-manual/concepts:patching`" section 3043 in the Yocto Project Overview and Concepts Manual and the 3044 ":ref:`dev-manual/new-recipe:patching code`" section in 3045 the Yocto Project Development Tasks Manual. See the 3046 :ref:`ref-tasks-patch` task as well. 3047 3048 :term:`FILESYSTEM_PERMS_TABLES` 3049 Allows you to define your own file permissions settings tables as part 3050 of your configuration for the packaging process. For example, suppose 3051 you need a consistent set of custom permissions for a set of groups 3052 and users across an entire work project. It is best to do this in the 3053 packages themselves but this is not always possible. 3054 3055 By default, the OpenEmbedded build system uses the ``fs-perms.txt``, 3056 ``fs-perms-volatile-log.txt`` and ``fs-perms-volatile-tmp.txt`` which are 3057 located in the ``meta/files`` folder in the :term:`Source Directory`. If 3058 you create your own permission setting table files, you should place 3059 those in your layer. 3060 3061 You can override the value of :term:`FILESYSTEM_PERMS_TABLES` variable 3062 in your distribution configuration file to point to your custom 3063 permission table files. You can specify one or more file permissions 3064 setting tables. The paths that you specify to these files must be defined 3065 within the :term:`BBPATH` variable. 3066 3067 In order to disable the volatile log, which is enabled by default, one 3068 can remove the ``files/fs-perms-volatile-log.txt`` value from 3069 ``FILESYSTEM_PERMS_TABLES``. Similarly, in order to disable the volatile 3070 tmp, one can remove the ``files/fs-perms-volatile-tmp.txt`` value. 3071 3072 For guidance on how to define your own file permissions settings 3073 tables, examine the existing ``fs-perms.txt``, 3074 ``fs-perms-volatile-log.txt`` and ``fs-perms-volatile-tmp.txt`` files. 3075 3076 :term:`FIRMWARE_COMPRESSION` 3077 The :term:`FIRMWARE_COMPRESSION` allows compressing the firmware provided 3078 by the ``linux-firmware`` recipe. The default value of this variable is an 3079 empty string (no compression), and the possible values it can take are 3080 ``xz`` and ``zst``. This can allow significant disk space savings. 3081 3082 For this to work, the Linux Kernel requires the 3083 ``CONFIG_FW_LOADER_COMPRESS_XZ`` or ``CONFIG_FW_LOADER_COMPRESS_ZSTD`` 3084 configuration options to be set. 3085 3086 :term:`FIT_ADDRESS_CELLS` 3087 Specifies the value of the ``#address-cells`` value for the 3088 description of the FIT image. 3089 3090 The default value is set to "1" by the :ref:`ref-classes-kernel-fitimage` 3091 class, which corresponds to 32 bit addresses. 3092 3093 For platforms that need to set 64 bit addresses, for example in 3094 :term:`UBOOT_LOADADDRESS` and :term:`UBOOT_ENTRYPOINT`, you need to 3095 set this value to "2", as two 32 bit values (cells) will be needed 3096 to represent such addresses. 3097 3098 Here is an example setting "0x400000000" as a load address:: 3099 3100 FIT_ADDRESS_CELLS = "2" 3101 UBOOT_LOADADDRESS= "0x04 0x00000000" 3102 3103 See `more details about #address-cells <https://elinux.org/Device_Tree_Usage#How_Addressing_Works>`__. 3104 3105 :term:`FIT_CONF_DEFAULT_DTB` 3106 Specifies the default device tree binary (dtb) file for a FIT image 3107 when multiple ones are provided. 3108 3109 This variable is used in the :ref:`ref-classes-kernel-fitimage` class. 3110 3111 :term:`FIT_DESC` 3112 Specifies the description string encoded into a FIT image. The 3113 default value is set by the :ref:`ref-classes-kernel-fitimage` class as 3114 follows:: 3115 3116 FIT_DESC ?= "U-Boot fitImage for ${DISTRO_NAME}/${PV}/${MACHINE}" 3117 3118 :term:`FIT_GENERATE_KEYS` 3119 Decides whether to generate the keys for signing the FIT image if 3120 they don't already exist. The keys are created in 3121 :term:`UBOOT_SIGN_KEYDIR`. The default value is set to "0" 3122 by the :ref:`ref-classes-kernel-fitimage` class. 3123 3124 :term:`FIT_HASH_ALG` 3125 Specifies the hash algorithm used in creating the FIT Image. 3126 This variable is set by default to "sha256" by the 3127 :ref:`ref-classes-kernel-fitimage` class. 3128 3129 :term:`FIT_KERNEL_COMP_ALG` 3130 The compression algorithm to use for the kernel image inside the FIT Image. 3131 At present, the only supported values are "gzip" (default), "lzo" or "none". 3132 If you set this variable to anything other than "none" you may also need 3133 to set :term:`FIT_KERNEL_COMP_ALG_EXTENSION`. 3134 3135 This variable is used in the :ref:`ref-classes-kernel-uboot` class. 3136 3137 :term:`FIT_KERNEL_COMP_ALG_EXTENSION` 3138 File extension corresponding to :term:`FIT_KERNEL_COMP_ALG`. The default 3139 value is set ".gz" by the :ref:`ref-classes-kernel-uboot` class. If you 3140 set :term:`FIT_KERNEL_COMP_ALG` to "lzo", you may want to set this 3141 variable to ".lzo". 3142 3143 :term:`FIT_KEY_GENRSA_ARGS` 3144 Arguments to ``openssl genrsa`` for generating a RSA private key for 3145 signing the FIT image. The default value is set to "-F4" by the 3146 :ref:`ref-classes-kernel-fitimage` class. 3147 3148 :term:`FIT_KEY_REQ_ARGS` 3149 Arguments to ``openssl req`` for generating a certificate for signing 3150 the FIT image. The default value is "-batch -new" by the 3151 :ref:`ref-classes-kernel-fitimage` class, "batch" for 3152 non interactive mode and "new" for generating new keys. 3153 3154 :term:`FIT_KEY_SIGN_PKCS` 3155 Format for the public key certificate used for signing the FIT image. 3156 The default value is set to "x509" by the 3157 :ref:`ref-classes-kernel-fitimage` class. 3158 3159 :term:`FIT_SIGN_ALG` 3160 Specifies the signature algorithm used in creating the FIT Image. 3161 This variable is set by default to "rsa2048" by the 3162 :ref:`ref-classes-kernel-fitimage` class. 3163 3164 :term:`FIT_PAD_ALG` 3165 Specifies the padding algorithm used in creating the FIT Image. 3166 The default value is set to "pkcs-1.5" by the 3167 :ref:`ref-classes-kernel-fitimage` class. 3168 3169 :term:`FIT_SIGN_INDIVIDUAL` 3170 If set to "1", then the :ref:`ref-classes-kernel-fitimage` 3171 class will sign the kernel, dtb and ramdisk images individually in addition 3172 to signing the FIT image itself. This could be useful if you are 3173 intending to verify signatures in another context than booting via 3174 U-Boot. 3175 3176 This variable is set to "0" by default. 3177 3178 :term:`FIT_SIGN_NUMBITS` 3179 Size of the private key used in the FIT image, in number of bits. 3180 The default value for this variable is set to "2048" 3181 by the :ref:`ref-classes-kernel-fitimage` class. 3182 3183 :term:`FONT_EXTRA_RDEPENDS` 3184 When inheriting the :ref:`ref-classes-fontcache` class, 3185 this variable specifies the runtime dependencies for font packages. 3186 By default, the :term:`FONT_EXTRA_RDEPENDS` is set to "fontconfig-utils". 3187 3188 :term:`FONT_PACKAGES` 3189 When inheriting the :ref:`ref-classes-fontcache` class, this variable 3190 identifies packages containing font files that need to be cached by 3191 Fontconfig. By default, the :ref:`ref-classes-fontcache` class assumes 3192 that fonts are in the recipe's main package (i.e. 3193 ``${``\ :term:`PN`\ ``}``). Use this variable if fonts you 3194 need are in a package other than that main package. 3195 3196 :term:`FORCE_RO_REMOVE` 3197 Forces the removal of the packages listed in ``ROOTFS_RO_UNNEEDED`` 3198 during the generation of the root filesystem. 3199 3200 Set the variable to "1" to force the removal of these packages. 3201 3202 :term:`FULL_OPTIMIZATION` 3203 The options to pass in :term:`TARGET_CFLAGS` and :term:`CFLAGS` when 3204 compiling an optimized system. This variable defaults to "-O2 -pipe 3205 ${DEBUG_FLAGS}". 3206 3207 :term:`GCCPIE` 3208 Enables Position Independent Executables (PIE) within the GNU C 3209 Compiler (GCC). Enabling PIE in the GCC makes Return Oriented 3210 Programming (ROP) attacks much more difficult to execute. 3211 3212 By default the ``security_flags.inc`` file enables PIE by setting the 3213 variable as follows:: 3214 3215 GCCPIE ?= "--enable-default-pie" 3216 3217 :term:`GCCVERSION` 3218 Specifies the default version of the GNU C Compiler (GCC) used for 3219 compilation. By default, :term:`GCCVERSION` is set to "8.x" in the 3220 ``meta/conf/distro/include/tcmode-default.inc`` include file:: 3221 3222 GCCVERSION ?= "8.%" 3223 3224 You can override this value by setting it in a 3225 configuration file such as the ``local.conf``. 3226 3227 :term:`GDB` 3228 The minimal command and arguments to run the GNU Debugger. 3229 3230 :term:`GIR_EXTRA_LIBS_PATH` 3231 Allows to specify an extra search path for ``.so`` files 3232 in GLib related recipes using GObject introspection, 3233 and which do not compile without this setting. 3234 See the ":ref:`dev-manual/gobject-introspection:enabling gobject introspection support`" 3235 section for details. 3236 3237 :term:`GITDIR` 3238 The directory in which a local copy of a Git repository is stored 3239 when it is cloned. 3240 3241 :term:`GITHUB_BASE_URI` 3242 When inheriting the :ref:`ref-classes-github-releases` 3243 class, specifies the base URL for fetching releases for the github 3244 project you wish to fetch sources from. The default value is as follows:: 3245 3246 GITHUB_BASE_URI ?= "https://github.com/${BPN}/${BPN}/releases/" 3247 3248 :term:`GLIBC_GENERATE_LOCALES` 3249 Specifies the list of GLIBC locales to generate should you not wish 3250 to generate all LIBC locals, which can be time consuming. 3251 3252 .. note:: 3253 3254 If you specifically remove the locale ``en_US.UTF-8``, you must set 3255 :term:`IMAGE_LINGUAS` appropriately. 3256 3257 You can set :term:`GLIBC_GENERATE_LOCALES` in your ``local.conf`` file. 3258 By default, all locales are generated:: 3259 3260 GLIBC_GENERATE_LOCALES = "en_GB.UTF-8 en_US.UTF-8" 3261 3262 :term:`GO_IMPORT` 3263 When inheriting the :ref:`ref-classes-go` class, this mandatory variable 3264 sets the import path for the Go package that will be created for the code 3265 to build. If you have a ``go.mod`` file in the source directory, this 3266 typically matches the path in the ``module`` line in this file. 3267 3268 Other Go programs importing this package will use this path. 3269 3270 Here is an example setting from the 3271 :yocto_git:`go-helloworld_0.1.bb </poky/tree/meta/recipes-extended/go-examples/go-helloworld_0.1.bb>` 3272 recipe:: 3273 3274 GO_IMPORT = "golang.org/x/example" 3275 3276 :term:`GO_INSTALL` 3277 When inheriting the :ref:`ref-classes-go` class, this optional variable 3278 specifies which packages in the sources should be compiled and 3279 installed in the Go build space by the 3280 `go install <https://go.dev/ref/mod#go-install>`__ command. 3281 3282 Here is an example setting from the 3283 :oe_git:`crucible </meta-openembedded/tree/meta-oe/recipes-support/crucible/>` 3284 recipe:: 3285 3286 GO_INSTALL = "\ 3287 ${GO_IMPORT}/cmd/crucible \ 3288 ${GO_IMPORT}/cmd/habtool \ 3289 " 3290 3291 By default, :term:`GO_INSTALL` is defined as:: 3292 3293 GO_INSTALL ?= "${GO_IMPORT}/..." 3294 3295 The ``...`` wildcard means that it will catch all 3296 packages found in the sources. 3297 3298 See the :term:`GO_INSTALL_FILTEROUT` variable for 3299 filtering out unwanted packages from the ones 3300 found from the :term:`GO_INSTALL` value. 3301 3302 :term:`GO_INSTALL_FILTEROUT` 3303 When using the Go "vendor" mechanism to bring in dependencies for a Go 3304 package, the default :term:`GO_INSTALL` setting, which uses the ``...`` 3305 wildcard, will include the vendored packages in the build, which produces 3306 incorrect results. 3307 3308 There are also some Go packages that are structured poorly, so that the 3309 ``...`` wildcard results in building example or test code that should not 3310 be included in the build, or could fail to build. 3311 3312 This optional variable allows for filtering out a subset of the sources. 3313 It defaults to excluding everything under the ``vendor`` subdirectory 3314 under package's main directory. This is the normal location for vendored 3315 packages, but it can be overridden by a recipe to filter out other 3316 subdirectories if needed. 3317 3318 :term:`GO_WORKDIR` 3319 When using Go Modules, the current working directory must be the directory 3320 containing the ``go.mod`` file, or one of its subdirectories. When the 3321 ``go`` tool is used, it will automatically look for the ``go.mod`` file 3322 in the Go working directory or in any parent directory, but not in 3323 subdirectories. 3324 3325 When using the :ref:`ref-classes-go-mod` class to use Go modules, 3326 the optional :term:`GO_WORKDIR` variable, defaulting to the value 3327 of :term:`GO_IMPORT`, allows to specify a different Go working directory. 3328 3329 :term:`GROUPADD_PARAM` 3330 When inheriting the :ref:`ref-classes-useradd` class, 3331 this variable specifies for a package what parameters should be 3332 passed to the ``groupadd`` command if you wish to add a group to the 3333 system when the package is installed. 3334 3335 Here is an example from the ``dbus`` recipe:: 3336 3337 GROUPADD_PARAM:${PN} = "-r netdev" 3338 3339 More than one group can be added by separating each set of different 3340 groups' parameters with a semicolon. 3341 3342 Here is an example adding multiple groups from the ``useradd-example.bb`` 3343 file in the ``meta-skeleton`` layer:: 3344 3345 GROUPADD_PARAM:${PN} = "-g 880 group1; -g 890 group2" 3346 3347 For information on the standard Linux shell command 3348 ``groupadd``, see https://linux.die.net/man/8/groupadd. 3349 3350 :term:`GROUPMEMS_PARAM` 3351 When inheriting the :ref:`ref-classes-useradd` class, 3352 this variable specifies for a package what parameters should be 3353 passed to the ``groupmems`` command if you wish to modify the members 3354 of a group when the package is installed. 3355 3356 For information on the standard Linux shell command ``groupmems``, 3357 see https://linux.die.net/man/8/groupmems. 3358 3359 :term:`GRUB_GFXSERIAL` 3360 Configures the GNU GRand Unified Bootloader (GRUB) to have graphics 3361 and serial in the boot menu. Set this variable to "1" in your 3362 ``local.conf`` or distribution configuration file to enable graphics 3363 and serial in the menu. 3364 3365 See the :ref:`ref-classes-grub-efi` class for more 3366 information on how this variable is used. 3367 3368 :term:`GRUB_OPTS` 3369 Additional options to add to the GNU GRand Unified Bootloader (GRUB) 3370 configuration. Use a semi-colon character (``;``) to separate 3371 multiple options. 3372 3373 The :term:`GRUB_OPTS` variable is optional. See the 3374 :ref:`ref-classes-grub-efi` class for more information 3375 on how this variable is used. 3376 3377 :term:`GRUB_TIMEOUT` 3378 Specifies the timeout before executing the default ``LABEL`` in the 3379 GNU GRand Unified Bootloader (GRUB). 3380 3381 The :term:`GRUB_TIMEOUT` variable is optional. See the 3382 :ref:`ref-classes-grub-efi` class for more information 3383 on how this variable is used. 3384 3385 :term:`GRUB_TITLE` 3386 Specifies custom titles for GRUB labels defined in :term:`LABELS`. See 3387 the :ref:`ref-classes-grub-efi` class for more information on how this 3388 variable is used. 3389 3390 :term:`GTKIMMODULES_PACKAGES` 3391 When inheriting the :ref:`ref-classes-gtk-immodules-cache` class, 3392 this variable specifies the packages that contain the GTK+ input 3393 method modules being installed when the modules are in packages other 3394 than the main package. 3395 3396 :term:`HGDIR` 3397 See :term:`bitbake:HGDIR` in the BitBake manual. 3398 3399 :term:`HOMEPAGE` 3400 Website where more information about the software the recipe is 3401 building can be found. 3402 3403 :term:`HOST_ARCH` 3404 The name of the target architecture, which is normally the same as 3405 :term:`TARGET_ARCH`. The OpenEmbedded build system 3406 supports many architectures. Here is an example list of architectures 3407 supported. This list is by no means complete as the architecture is 3408 configurable: 3409 3410 - arm 3411 - i586 3412 - x86_64 3413 - powerpc 3414 - powerpc64 3415 - mips 3416 - mipsel 3417 3418 :term:`HOST_CC_ARCH` 3419 Specifies architecture-specific compiler flags that are passed to the 3420 C compiler. 3421 3422 Default initialization for :term:`HOST_CC_ARCH` varies depending on what 3423 is being built: 3424 3425 - :term:`TARGET_CC_ARCH` when building for the 3426 target 3427 3428 - :term:`BUILD_CC_ARCH` when building for the build host (i.e. 3429 ``-native``) 3430 3431 - ``BUILDSDK_CC_ARCH`` when building for an SDK (i.e. 3432 ``nativesdk-``) 3433 3434 :term:`HOST_OS` 3435 Specifies the name of the target operating system, which is normally 3436 the same as the :term:`TARGET_OS`. The variable can 3437 be set to "linux" for ``glibc``-based systems and to "linux-musl" for 3438 ``musl``. For ARM/EABI targets, there are also "linux-gnueabi" and 3439 "linux-musleabi" values possible. 3440 3441 :term:`HOST_PREFIX` 3442 Specifies the prefix for the cross-compile toolchain. :term:`HOST_PREFIX` 3443 is normally the same as :term:`TARGET_PREFIX`. 3444 3445 :term:`HOST_SYS` 3446 Specifies the system, including the architecture and the operating 3447 system, for which the build is occurring in the context of the 3448 current recipe. 3449 3450 The OpenEmbedded build system automatically sets this variable based 3451 on :term:`HOST_ARCH`, 3452 :term:`HOST_VENDOR`, and 3453 :term:`HOST_OS` variables. 3454 3455 .. note:: 3456 3457 You do not need to set the variable yourself. 3458 3459 Consider these two examples: 3460 3461 - Given a native recipe on a 32-bit x86 machine running Linux, the 3462 value is "i686-linux". 3463 3464 - Given a recipe being built for a little-endian MIPS target running 3465 Linux, the value might be "mipsel-linux". 3466 3467 :term:`HOST_VENDOR` 3468 Specifies the name of the vendor. :term:`HOST_VENDOR` is normally the 3469 same as :term:`TARGET_VENDOR`. 3470 3471 :term:`HOSTTOOLS` 3472 A space-separated list (filter) of tools on the build host that 3473 should be allowed to be called from within build tasks. Using this 3474 filter helps reduce the possibility of host contamination. If a tool 3475 specified in the value of :term:`HOSTTOOLS` is not found on the build 3476 host, the OpenEmbedded build system produces an error and the build 3477 is not started. 3478 3479 For additional information, see 3480 :term:`HOSTTOOLS_NONFATAL`. 3481 3482 :term:`HOSTTOOLS_NONFATAL` 3483 A space-separated list (filter) of tools on the build host that 3484 should be allowed to be called from within build tasks. Using this 3485 filter helps reduce the possibility of host contamination. Unlike 3486 :term:`HOSTTOOLS`, the OpenEmbedded build system 3487 does not produce an error if a tool specified in the value of 3488 :term:`HOSTTOOLS_NONFATAL` is not found on the build host. Thus, you can 3489 use :term:`HOSTTOOLS_NONFATAL` to filter optional host tools. 3490 3491 :term:`ICECC_CLASS_DISABLE` 3492 Identifies user classes that you do not want the Icecream distributed 3493 compile support to consider. This variable is used by the 3494 :ref:`ref-classes-icecc` class. You set this variable in 3495 your ``local.conf`` file. 3496 3497 When you list classes using this variable, the recipes inheriting 3498 those classes will not benefit from distributed compilation across 3499 remote hosts. Instead they will be built locally. 3500 3501 :term:`ICECC_DISABLED` 3502 Disables or enables the ``icecc`` (Icecream) function. For more 3503 information on this function and best practices for using this 3504 variable, see the ":ref:`ref-classes-icecc`" 3505 section. 3506 3507 Setting this variable to "1" in your ``local.conf`` disables the 3508 function:: 3509 3510 ICECC_DISABLED ??= "1" 3511 3512 To enable the function, set the variable as follows:: 3513 3514 ICECC_DISABLED = "" 3515 3516 :term:`ICECC_ENV_EXEC` 3517 Points to the ``icecc-create-env`` script that you provide. This 3518 variable is used by the :ref:`ref-classes-icecc` class. You 3519 set this variable in your ``local.conf`` file. 3520 3521 If you do not point to a script that you provide, the OpenEmbedded 3522 build system uses the default script provided by the 3523 :oe_git:`icecc-create-env_0.1.bb 3524 </openembedded-core/tree/meta/recipes-devtools/icecc-create-env/icecc-create-env_0.1.bb>` 3525 recipe, which is a modified version and not the one that comes with 3526 ``icecream``. 3527 3528 :term:`ICECC_PARALLEL_MAKE` 3529 Extra options passed to the ``make`` command during the 3530 :ref:`ref-tasks-compile` task that specify parallel 3531 compilation. This variable usually takes the form of "-j x", where x 3532 represents the maximum number of parallel threads ``make`` can run. 3533 3534 .. note:: 3535 3536 The options passed affect builds on all enabled machines on the 3537 network, which are machines running the ``iceccd`` daemon. 3538 3539 If your enabled machines support multiple cores, coming up with the 3540 maximum number of parallel threads that gives you the best 3541 performance could take some experimentation since machine speed, 3542 network lag, available memory, and existing machine loads can all 3543 affect build time. Consequently, unlike the 3544 :term:`PARALLEL_MAKE` variable, there is no 3545 rule-of-thumb for setting :term:`ICECC_PARALLEL_MAKE` to achieve optimal 3546 performance. 3547 3548 If you do not set :term:`ICECC_PARALLEL_MAKE`, the build system does not 3549 use it (i.e. the system does not detect and assign the number of 3550 cores as is done with :term:`PARALLEL_MAKE`). 3551 3552 :term:`ICECC_PATH` 3553 The location of the ``icecc`` binary. You can set this variable in 3554 your ``local.conf`` file. If your ``local.conf`` file does not define 3555 this variable, the :ref:`ref-classes-icecc` class attempts 3556 to define it by locating ``icecc`` using ``which``. 3557 3558 :term:`ICECC_RECIPE_DISABLE` 3559 Identifies user recipes that you do not want the Icecream distributed 3560 compile support to consider. This variable is used by the 3561 :ref:`ref-classes-icecc` class. You set this variable in 3562 your ``local.conf`` file. 3563 3564 When you list recipes using this variable, you are excluding them 3565 from distributed compilation across remote hosts. Instead they will 3566 be built locally. 3567 3568 :term:`ICECC_RECIPE_ENABLE` 3569 Identifies user recipes that use an empty 3570 :term:`PARALLEL_MAKE` variable that you want to 3571 force remote distributed compilation on using the Icecream 3572 distributed compile support. This variable is used by the 3573 :ref:`ref-classes-icecc` class. You set this variable in 3574 your ``local.conf`` file. 3575 3576 :term:`IMAGE_BASENAME` 3577 The base name of image output files. This variable defaults to the 3578 recipe name (``${``\ :term:`PN`\ ``}``). 3579 3580 :term:`IMAGE_BOOT_FILES` 3581 A space-separated list of files installed into the boot partition 3582 when preparing an image using the Wic tool with the 3583 ``bootimg-partition`` source plugin. By default, 3584 the files are 3585 installed under the same name as the source files. To change the 3586 installed name, separate it from the original name with a semi-colon 3587 (;). Source files need to be located in 3588 :term:`DEPLOY_DIR_IMAGE`. Here are two 3589 examples:: 3590 3591 IMAGE_BOOT_FILES = "u-boot.img uImage;kernel" 3592 IMAGE_BOOT_FILES = "u-boot.${UBOOT_SUFFIX} ${KERNEL_IMAGETYPE}" 3593 3594 Alternatively, source files can be picked up using a glob pattern. In 3595 this case, the destination file must have the same name as the base 3596 name of the source file path. To install files into a directory 3597 within the target location, pass its name after a semi-colon (;). 3598 Here are two examples:: 3599 3600 IMAGE_BOOT_FILES = "bcm2835-bootfiles/*" 3601 IMAGE_BOOT_FILES = "bcm2835-bootfiles/*;boot/" 3602 3603 The first example 3604 installs all files from ``${DEPLOY_DIR_IMAGE}/bcm2835-bootfiles`` 3605 into the root of the target partition. The second example installs 3606 the same files into a ``boot`` directory within the target partition. 3607 3608 You can find information on how to use the Wic tool in the 3609 ":ref:`dev-manual/wic:creating partitioned images using wic`" 3610 section of the Yocto Project Development Tasks Manual. Reference 3611 material for Wic is located in the 3612 ":doc:`/ref-manual/kickstart`" chapter. 3613 3614 :term:`IMAGE_BUILDINFO_FILE` 3615 When using the :ref:`ref-classes-image-buildinfo` class, 3616 specifies the file in the image to write the build information into. The 3617 default value is "``${sysconfdir}/buildinfo``". 3618 3619 :term:`IMAGE_BUILDINFO_VARS` 3620 When using the :ref:`ref-classes-image-buildinfo` class, 3621 specifies the list of variables to include in the `Build Configuration` 3622 section of the output file (as a space-separated list). Defaults to 3623 ":term:`DISTRO` :term:`DISTRO_VERSION`". 3624 3625 :term:`IMAGE_CLASSES` 3626 A list of classes that all images should inherit. This is typically used 3627 to enable functionality across all image recipes. 3628 3629 Classes specified in :term:`IMAGE_CLASSES` must be located in the 3630 ``classes-recipe/`` or ``classes/`` subdirectories. 3631 3632 :term:`IMAGE_CMD` 3633 Specifies the command to create the image file for a specific image 3634 type, which corresponds to the value set in 3635 :term:`IMAGE_FSTYPES`, (e.g. ``ext3``, 3636 ``btrfs``, and so forth). When setting this variable, you should use 3637 an override for the associated type. Here is an example:: 3638 3639 IMAGE_CMD:jffs2 = "mkfs.jffs2 --root=${IMAGE_ROOTFS} --faketime \ 3640 --output=${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.jffs2 \ 3641 ${EXTRA_IMAGECMD}" 3642 3643 You typically do not need to set this variable unless you are adding 3644 support for a new image type. For more examples on how to set this 3645 variable, see the :ref:`ref-classes-image_types` 3646 class file, which is ``meta/classes-recipe/image_types.bbclass``. 3647 3648 :term:`IMAGE_DEVICE_TABLES` 3649 Specifies one or more files that contain custom device tables that 3650 are passed to the ``makedevs`` command as part of creating an image. 3651 These files list basic device nodes that should be created under 3652 ``/dev`` within the image. If :term:`IMAGE_DEVICE_TABLES` is not set, 3653 ``files/device_table-minimal.txt`` is used, which is located by 3654 :term:`BBPATH`. For details on how you should write 3655 device table files, see ``meta/files/device_table-minimal.txt`` as an 3656 example. 3657 3658 :term:`IMAGE_EFI_BOOT_FILES` 3659 A space-separated list of files installed into the boot partition 3660 when preparing an image using the Wic tool with the 3661 ``bootimg-efi`` source plugin. By default, 3662 the files are 3663 installed under the same name as the source files. To change the 3664 installed name, separate it from the original name with a semi-colon 3665 (;). Source files need to be located in 3666 :term:`DEPLOY_DIR_IMAGE`. Here are two 3667 examples:: 3668 3669 IMAGE_EFI_BOOT_FILES = "${KERNEL_IMAGETYPE};bz2" 3670 IMAGE_EFI_BOOT_FILES = "${KERNEL_IMAGETYPE} microcode.cpio" 3671 3672 Alternatively, source files can be picked up using a glob pattern. In 3673 this case, the destination file must have the same name as the base 3674 name of the source file path. To install files into a directory 3675 within the target location, pass its name after a semi-colon (;). 3676 Here are two examples:: 3677 3678 IMAGE_EFI_BOOT_FILES = "boot/loader/*" 3679 IMAGE_EFI_BOOT_FILES = "boot/loader/*;boot/" 3680 3681 The first example 3682 installs all files from ``${DEPLOY_DIR_IMAGE}/boot/loader/`` 3683 into the root of the target partition. The second example installs 3684 the same files into a ``boot`` directory within the target partition. 3685 3686 You can find information on how to use the Wic tool in the 3687 ":ref:`dev-manual/wic:creating partitioned images using wic`" 3688 section of the Yocto Project Development Tasks Manual. Reference 3689 material for Wic is located in the 3690 ":doc:`/ref-manual/kickstart`" chapter. 3691 3692 :term:`IMAGE_FEATURES` 3693 The primary list of features to include in an image. Typically, you 3694 configure this variable in an image recipe. Although you can use this 3695 variable from your ``local.conf`` file, which is found in the 3696 :term:`Build Directory`, best practices dictate that you do 3697 not. 3698 3699 .. note:: 3700 3701 To enable extra features from outside the image recipe, use the 3702 :term:`EXTRA_IMAGE_FEATURES` variable. 3703 3704 For a list of image features that ships with the Yocto Project, see 3705 the ":ref:`ref-features-image`" section. 3706 3707 For an example that shows how to customize your image by using this 3708 variable, see the ":ref:`dev-manual/customizing-images:customizing images using custom \`\`image_features\`\` and \`\`extra_image_features\`\``" 3709 section in the Yocto Project Development Tasks Manual. 3710 3711 :term:`IMAGE_FSTYPES` 3712 Specifies the formats the OpenEmbedded build system uses during the 3713 build when creating the root filesystem. For example, setting 3714 :term:`IMAGE_FSTYPES` as follows causes the build system to create root 3715 filesystems using two formats: ``.ext3`` and ``.tar.bz2``:: 3716 3717 IMAGE_FSTYPES = "ext3 tar.bz2" 3718 3719 For the complete list of supported image formats from which you can 3720 choose, see :term:`IMAGE_TYPES`. 3721 3722 .. note:: 3723 3724 - If an image recipe uses the "inherit image" line and you are 3725 setting :term:`IMAGE_FSTYPES` inside the recipe, you must set 3726 :term:`IMAGE_FSTYPES` prior to using the "inherit image" line. 3727 3728 - Due to the way the OpenEmbedded build system processes this 3729 variable, you cannot update its contents by using ``:append`` 3730 or ``:prepend``. You must use the ``+=`` operator to add one or 3731 more options to the :term:`IMAGE_FSTYPES` variable. 3732 3733 :term:`IMAGE_INSTALL` 3734 Used by recipes to specify the packages to install into an image 3735 through the :ref:`ref-classes-image` class. Use the 3736 :term:`IMAGE_INSTALL` variable with care to avoid ordering issues. 3737 3738 Image recipes set :term:`IMAGE_INSTALL` to specify the packages to 3739 install into an image through :ref:`ref-classes-image`. Additionally, 3740 there are "helper" classes such as the :ref:`ref-classes-core-image` 3741 class which can take lists used with :term:`IMAGE_FEATURES` and turn 3742 them into auto-generated entries in :term:`IMAGE_INSTALL` in addition 3743 to its default contents. 3744 3745 When you use this variable, it is best to use it as follows:: 3746 3747 IMAGE_INSTALL:append = " package-name" 3748 3749 Be sure to include the space 3750 between the quotation character and the start of the package name or 3751 names. 3752 3753 .. note:: 3754 3755 - When working with a 3756 :ref:`core-image-minimal-initramfs <ref-manual/images:images>` 3757 image, do not use the :term:`IMAGE_INSTALL` variable to specify 3758 packages for installation. Instead, use the 3759 :term:`PACKAGE_INSTALL` variable, which 3760 allows the initial RAM filesystem (:term:`Initramfs`) recipe to use a 3761 fixed set of packages and not be affected by :term:`IMAGE_INSTALL`. 3762 For information on creating an :term:`Initramfs`, see the 3763 ":ref:`dev-manual/building:building an initial ram filesystem (Initramfs) image`" 3764 section in the Yocto Project Development Tasks Manual. 3765 3766 - Using :term:`IMAGE_INSTALL` with the 3767 :ref:`+= <bitbake-user-manual/bitbake-user-manual-metadata:appending (+=) and prepending (=+) with spaces>` 3768 BitBake operator within the ``/conf/local.conf`` file or from 3769 within an image recipe is not recommended. Use of this operator in 3770 these ways can cause ordering issues. Since 3771 :ref:`ref-classes-core-image` sets :term:`IMAGE_INSTALL` to a 3772 default value using the 3773 :ref:`?= <bitbake-user-manual/bitbake-user-manual-metadata:setting a default value (?=)>` 3774 operator, using a ``+=`` operation against :term:`IMAGE_INSTALL` 3775 results in unexpected behavior when used within 3776 ``conf/local.conf``. Furthermore, the same operation from within an 3777 image recipe may or may not succeed depending on the specific 3778 situation. In both these cases, the behavior is contrary to how 3779 most users expect the ``+=`` operator to work. 3780 3781 :term:`IMAGE_LINGUAS` 3782 Specifies the list of locales to install into the image during the 3783 root filesystem construction process. The OpenEmbedded build system 3784 automatically splits locale files, which are used for localization, 3785 into separate packages. Setting the :term:`IMAGE_LINGUAS` variable 3786 ensures that any locale packages that correspond to packages already 3787 selected for installation into the image are also installed. Here is 3788 an example:: 3789 3790 IMAGE_LINGUAS = "pt-br de-de" 3791 3792 In this example, the build system ensures any Brazilian Portuguese 3793 and German locale files that correspond to packages in the image are 3794 installed (i.e. ``*-locale-pt-br`` and ``*-locale-de-de`` as well as 3795 ``*-locale-pt`` and ``*-locale-de``, since some software packages 3796 only provide locale files by language and not by country-specific 3797 language). 3798 3799 See the :term:`GLIBC_GENERATE_LOCALES` 3800 variable for information on generating GLIBC locales. 3801 3802 3803 :term:`IMAGE_LINK_NAME` 3804 The name of the output image symlink (which does not include 3805 the version part as :term:`IMAGE_NAME` does). The default value 3806 is derived using the :term:`IMAGE_BASENAME` and 3807 :term:`IMAGE_MACHINE_SUFFIX` variables:: 3808 3809 IMAGE_LINK_NAME ?= "${IMAGE_BASENAME}${IMAGE_MACHINE_SUFFIX}" 3810 3811 .. note:: 3812 3813 It is possible to set this to "" to disable symlink creation, 3814 however, you also need to set :term:`IMAGE_NAME` to still have 3815 a reasonable value e.g.:: 3816 3817 IMAGE_LINK_NAME = "" 3818 IMAGE_NAME = "${IMAGE_BASENAME}${IMAGE_MACHINE_SUFFIX}${IMAGE_VERSION_SUFFIX}" 3819 3820 :term:`IMAGE_MACHINE_SUFFIX` 3821 Specifies the by default machine-specific suffix for image file names 3822 (before the extension). The default value is set as follows:: 3823 3824 IMAGE_MACHINE_SUFFIX ??= "-${MACHINE}" 3825 3826 The default :term:`DEPLOY_DIR_IMAGE` already has a :term:`MACHINE` 3827 subdirectory, so you may find it unnecessary to also include this suffix 3828 in the name of every image file. If you prefer to remove the suffix you 3829 can set this variable to an empty string:: 3830 3831 IMAGE_MACHINE_SUFFIX = "" 3832 3833 (Not to be confused with :term:`IMAGE_NAME_SUFFIX`.) 3834 3835 :term:`IMAGE_MANIFEST` 3836 The manifest file for the image. This file lists all the installed 3837 packages that make up the image. The file contains package 3838 information on a line-per-package basis as follows:: 3839 3840 packagename packagearch version 3841 3842 The :ref:`rootfs-postcommands <ref-classes-rootfs*>` class defines the manifest 3843 file as follows:: 3844 3845 IMAGE_MANIFEST ="${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.manifest" 3846 3847 The location is 3848 derived using the :term:`IMGDEPLOYDIR` 3849 and :term:`IMAGE_NAME` variables. You can find 3850 information on how the image is created in the ":ref:`overview-manual/concepts:image generation`" 3851 section in the Yocto Project Overview and Concepts Manual. 3852 3853 :term:`IMAGE_NAME` 3854 The name of the output image files minus the extension. By default 3855 this variable is set using the :term:`IMAGE_LINK_NAME`, and 3856 :term:`IMAGE_VERSION_SUFFIX` variables:: 3857 3858 IMAGE_NAME ?= "${IMAGE_LINK_NAME}${IMAGE_VERSION_SUFFIX}" 3859 3860 :term:`IMAGE_NAME_SUFFIX` 3861 Suffix used for the image output filename --- defaults to ``".rootfs"`` 3862 to distinguish the image file from other files created during image 3863 building; however if this suffix is redundant or not desired you can 3864 clear the value of this variable (set the value to ""). For example, 3865 this is typically cleared in :term:`Initramfs` image recipes. 3866 3867 :term:`IMAGE_OUTPUT_MANIFEST` 3868 When inheriting the :ref:`ref-classes-image` class directly or through the 3869 :ref:`ref-classes-core-image` class, the :term:`IMAGE_OUTPUT_MANIFEST` 3870 points to a manifest ``json`` file that lists what images were created by 3871 various image creation tasks (as defined by the :term:`IMAGE_FSTYPES` 3872 variable). It is set in the :ref:`ref-classes-image` class as follows:: 3873 3874 IMAGE_OUTPUT_MANIFEST = "${IMAGE_OUTPUT_MANIFEST_DIR}/manifest.json" 3875 3876 :term:`IMAGE_OUTPUT_MANIFEST_DIR` 3877 When inheriting the :ref:`ref-classes-image` class directly or through the 3878 :ref:`ref-classes-core-image` class, the :term:`IMAGE_OUTPUT_MANIFEST_DIR` points to 3879 a directory that stores a manifest ``json`` file that lists what 3880 images were created by various image creation tasks (as defined by the 3881 :term:`IMAGE_FSTYPES` variable). It is set in the :ref:`ref-classes-image` 3882 class as follows:: 3883 3884 IMAGE_OUTPUT_MANIFEST_DIR = "${WORKDIR}/deploy-image-output-manifest" 3885 3886 :term:`IMAGE_OVERHEAD_FACTOR` 3887 Defines a multiplier that the build system applies to the initial 3888 image size for cases when the multiplier times the returned disk 3889 usage value for the image is greater than the sum of 3890 :term:`IMAGE_ROOTFS_SIZE` and :term:`IMAGE_ROOTFS_EXTRA_SPACE`. The result of 3891 the multiplier applied to the initial image size creates free disk 3892 space in the image as overhead. By default, the build process uses a 3893 multiplier of 1.3 for this variable. This default value results in 3894 30% free disk space added to the image when this method is used to 3895 determine the final generated image size. You should be aware that 3896 post install scripts and the package management system uses disk 3897 space inside this overhead area. Consequently, the multiplier does 3898 not produce an image with all the theoretical free disk space. See 3899 :term:`IMAGE_ROOTFS_SIZE` for information on how the build system 3900 determines the overall image size. 3901 3902 The default 30% free disk space typically gives the image enough room 3903 to boot and allows for basic post installs while still leaving a 3904 small amount of free disk space. If 30% free space is inadequate, you 3905 can increase the default value. For example, the following setting 3906 gives you 50% free space added to the image:: 3907 3908 IMAGE_OVERHEAD_FACTOR = "1.5" 3909 3910 Alternatively, you can ensure a specific amount of free disk space is 3911 added to the image by using the :term:`IMAGE_ROOTFS_EXTRA_SPACE` 3912 variable. 3913 3914 :term:`IMAGE_PKGTYPE` 3915 Defines the package type (i.e. DEB, RPM, IPK, or TAR) used by the 3916 OpenEmbedded build system. The variable is defined appropriately by 3917 the :ref:`ref-classes-package_deb`, :ref:`ref-classes-package_rpm`, 3918 or :ref:`ref-classes-package_ipk` class. 3919 3920 The :ref:`ref-classes-populate-sdk-*` and :ref:`ref-classes-image` 3921 classes use the :term:`IMAGE_PKGTYPE` for packaging up images and SDKs. 3922 3923 You should not set the :term:`IMAGE_PKGTYPE` manually. Rather, the 3924 variable is set indirectly through the appropriate 3925 :ref:`package_* <ref-classes-package>` class using the 3926 :term:`PACKAGE_CLASSES` variable. The 3927 OpenEmbedded build system uses the first package type (e.g. DEB, RPM, 3928 or IPK) that appears with the variable 3929 3930 .. note:: 3931 3932 Files using the ``.tar`` format are never used as a substitute 3933 packaging format for DEB, RPM, and IPK formatted files for your image 3934 or SDK. 3935 3936 :term:`IMAGE_POSTPROCESS_COMMAND` 3937 Specifies a list of functions to call once the OpenEmbedded build 3938 system creates the final image output files. You can specify 3939 functions separated by spaces:: 3940 3941 IMAGE_POSTPROCESS_COMMAND += "function" 3942 3943 If you need to pass the root filesystem path to a command within the 3944 function, you can use ``${IMAGE_ROOTFS}``, which points to the 3945 directory that becomes the root filesystem image. See the 3946 :term:`IMAGE_ROOTFS` variable for more 3947 information. 3948 3949 :term:`IMAGE_PREPROCESS_COMMAND` 3950 Specifies a list of functions to call before the OpenEmbedded build 3951 system creates the final image output files. You can specify 3952 functions separated by spaces:: 3953 3954 IMAGE_PREPROCESS_COMMAND += "function" 3955 3956 If you need to pass the root filesystem path to a command within the 3957 function, you can use ``${IMAGE_ROOTFS}``, which points to the 3958 directory that becomes the root filesystem image. See the 3959 :term:`IMAGE_ROOTFS` variable for more 3960 information. 3961 3962 :term:`IMAGE_ROOTFS` 3963 The location of the root filesystem while it is under construction 3964 (i.e. during the :ref:`ref-tasks-rootfs` task). This 3965 variable is not configurable. Do not change it. 3966 3967 :term:`IMAGE_ROOTFS_ALIGNMENT` 3968 Specifies the alignment for the output image file in Kbytes. If the 3969 size of the image is not a multiple of this value, then the size is 3970 rounded up to the nearest multiple of the value. The default value is 3971 "1". See :term:`IMAGE_ROOTFS_SIZE` for 3972 additional information. 3973 3974 :term:`IMAGE_ROOTFS_EXTRA_SPACE` 3975 Defines additional free disk space created in the image in Kbytes. By 3976 default, this variable is set to "0". This free disk space is added 3977 to the image after the build system determines the image size as 3978 described in :term:`IMAGE_ROOTFS_SIZE`. 3979 3980 This variable is particularly useful when you want to ensure that a 3981 specific amount of free disk space is available on a device after an 3982 image is installed and running. For example, to be sure 5 Gbytes of 3983 free disk space is available, set the variable as follows:: 3984 3985 IMAGE_ROOTFS_EXTRA_SPACE = "5242880" 3986 3987 For example, the Yocto Project Build Appliance specifically requests 3988 40 Gbytes of extra space with the line:: 3989 3990 IMAGE_ROOTFS_EXTRA_SPACE = "41943040" 3991 3992 :term:`IMAGE_ROOTFS_SIZE` 3993 Defines the size in Kbytes for the generated image. The OpenEmbedded 3994 build system determines the final size for the generated image using 3995 an algorithm that takes into account the initial disk space used for 3996 the generated image, a requested size for the image, and requested 3997 additional free disk space to be added to the image. Programatically, 3998 the build system determines the final size of the generated image as 3999 follows:: 4000 4001 if (image-du * overhead) < rootfs-size: 4002 internal-rootfs-size = rootfs-size + xspace 4003 else: 4004 internal-rootfs-size = (image-du * overhead) + xspace 4005 where: 4006 image-du = Returned value of the du command on the image. 4007 overhead = IMAGE_OVERHEAD_FACTOR 4008 rootfs-size = IMAGE_ROOTFS_SIZE 4009 internal-rootfs-size = Initial root filesystem size before any modifications. 4010 xspace = IMAGE_ROOTFS_EXTRA_SPACE 4011 4012 See the :term:`IMAGE_OVERHEAD_FACTOR` 4013 and :term:`IMAGE_ROOTFS_EXTRA_SPACE` 4014 variables for related information. 4015 4016 :term:`IMAGE_TYPEDEP` 4017 Specifies a dependency from one image type on another. Here is an 4018 example from the :ref:`ref-classes-image-live` class:: 4019 4020 IMAGE_TYPEDEP:live = "ext3" 4021 4022 In the previous example, the variable ensures that when "live" is 4023 listed with the :term:`IMAGE_FSTYPES` variable, 4024 the OpenEmbedded build system produces an ``ext3`` image first since 4025 one of the components of the live image is an ``ext3`` formatted 4026 partition containing the root filesystem. 4027 4028 :term:`IMAGE_TYPES` 4029 Specifies the complete list of supported image types by default: 4030 4031 - btrfs 4032 - container 4033 - cpio 4034 - cpio.gz 4035 - cpio.lz4 4036 - cpio.lzma 4037 - cpio.xz 4038 - cramfs 4039 - erofs 4040 - erofs-lz4 4041 - erofs-lz4hc 4042 - ext2 4043 - ext2.bz2 4044 - ext2.gz 4045 - ext2.lzma 4046 - ext3 4047 - ext3.gz 4048 - ext4 4049 - ext4.gz 4050 - f2fs 4051 - hddimg 4052 - iso 4053 - jffs2 4054 - jffs2.sum 4055 - multiubi 4056 - squashfs 4057 - squashfs-lz4 4058 - squashfs-lzo 4059 - squashfs-xz 4060 - tar 4061 - tar.bz2 4062 - tar.gz 4063 - tar.lz4 4064 - tar.xz 4065 - tar.zst 4066 - ubi 4067 - ubifs 4068 - wic 4069 - wic.bz2 4070 - wic.gz 4071 - wic.lzma 4072 - wic.zst 4073 4074 For more information about these types of images, see 4075 ``meta/classes-recipe/image_types*.bbclass`` in the :term:`Source Directory`. 4076 4077 :term:`IMAGE_VERSION_SUFFIX` 4078 Version suffix that is part of the default :term:`IMAGE_NAME` and 4079 :term:`KERNEL_ARTIFACT_NAME` values. 4080 Defaults to ``"-${DATETIME}"``, however you could set this to a 4081 version string that comes from your external build environment if 4082 desired, and this suffix would then be used consistently across 4083 the build artifacts. 4084 4085 :term:`IMGDEPLOYDIR` 4086 When inheriting the :ref:`ref-classes-image` class directly or 4087 through the :ref:`ref-classes-core-image` class, the 4088 :term:`IMGDEPLOYDIR` points to a temporary work area for deployed files 4089 that is set in the ``image`` class as follows:: 4090 4091 IMGDEPLOYDIR = "${WORKDIR}/deploy-${PN}-image-complete" 4092 4093 Recipes inheriting the :ref:`ref-classes-image` class should copy 4094 files to be deployed into :term:`IMGDEPLOYDIR`, and the class will take 4095 care of copying them into :term:`DEPLOY_DIR_IMAGE` afterwards. 4096 4097 :term:`IMGMANIFESTDIR` 4098 When inheriting the :ref:`ref-classes-image` class directly or through the 4099 :ref:`ref-classes-core-image` class, the :term:`IMGMANIFESTDIR` setting 4100 points to a temporary area that stores manifest ``json`` files, that list 4101 what images were created by various images creation tasks (as defined by 4102 the :term:`IMAGE_FSTYPES` variable). It is set in the 4103 :ref:`ref-classes-image` class as follows:: 4104 4105 IMGMANIFESTDIR = "${WORKDIR}/image-task-manifest" 4106 4107 :term:`INCOMPATIBLE_LICENSE` 4108 Specifies a space-separated list of license names (as they would 4109 appear in :term:`LICENSE`) that should be excluded 4110 from the build (if set globally), or from an image (if set locally 4111 in an image recipe). 4112 4113 When the variable is set globally, recipes that provide no alternatives to listed 4114 incompatible licenses are not built. Packages that are individually 4115 licensed with the specified incompatible licenses will be deleted. 4116 Most of the time this does not allow a feasible build (because it becomes impossible 4117 to satisfy build time dependencies), so the recommended way to 4118 implement license restrictions is to set the variable in specific 4119 image recipes where the restrictions must apply. That way there 4120 are no build time restrictions, but the license check is still 4121 performed when the image's filesystem is assembled from packages. 4122 4123 There is some support for wildcards in this variable's value, 4124 however it is restricted to specific licenses. Currently only 4125 these wildcards are allowed and expand as follows: 4126 4127 - ``AGPL-3.0*"``: ``AGPL-3.0-only``, ``AGPL-3.0-or-later`` 4128 - ``GPL-3.0*``: ``GPL-3.0-only``, ``GPL-3.0-or-later`` 4129 - ``LGPL-3.0*``: ``LGPL-3.0-only``, ``LGPL-3.0-or-later`` 4130 4131 .. note:: 4132 4133 This functionality is only regularly tested using the following 4134 setting:: 4135 4136 INCOMPATIBLE_LICENSE = "GPL-3.0* LGPL-3.0* AGPL-3.0*" 4137 4138 4139 Although you can use other settings, you might be required to 4140 remove dependencies on (or provide alternatives to) components that 4141 are required to produce a functional system image. 4142 4143 :term:`INCOMPATIBLE_LICENSE_EXCEPTIONS` 4144 Specifies a space-separated list of package and license pairs that 4145 are allowed to be used even if the license is specified in 4146 :term:`INCOMPATIBLE_LICENSE`. The package and license pairs are 4147 separated using a colon. Example:: 4148 4149 INCOMPATIBLE_LICENSE_EXCEPTIONS = "gdbserver:GPL-3.0-only gdbserver:LGPL-3.0-only" 4150 4151 :term:`INHERIT` 4152 Causes the named class or classes to be inherited globally. Anonymous 4153 functions in the class or classes are not executed for the base 4154 configuration and in each individual recipe. The OpenEmbedded build 4155 system ignores changes to :term:`INHERIT` in individual recipes. 4156 Classes inherited using :term:`INHERIT` must be located in the 4157 ``classes-global/`` or ``classes/`` subdirectories. 4158 4159 For more information on :term:`INHERIT`, see the 4160 :ref:`bitbake-user-manual/bitbake-user-manual-metadata:\`\`inherit\`\` configuration directive`" 4161 section in the BitBake User Manual. 4162 4163 :term:`INHERIT_DISTRO` 4164 Lists classes that will be inherited at the distribution level. It is 4165 unlikely that you want to edit this variable. 4166 4167 Classes specified in :term:`INHERIT_DISTRO` must be located in the 4168 ``classes-global/`` or ``classes/`` subdirectories. 4169 4170 The default value of the variable is set as follows in the 4171 ``meta/conf/distro/defaultsetup.conf`` file:: 4172 4173 INHERIT_DISTRO ?= "debian devshell sstate license remove-libtool create-spdx" 4174 4175 :term:`INHIBIT_DEFAULT_DEPS` 4176 Prevents the default dependencies, namely the C compiler and standard 4177 C library (libc), from being added to :term:`DEPENDS`. 4178 This variable is usually used within recipes that do not require any 4179 compilation using the C compiler. 4180 4181 Set the variable to "1" to prevent the default dependencies from 4182 being added. 4183 4184 :term:`INHIBIT_PACKAGE_DEBUG_SPLIT` 4185 Prevents the OpenEmbedded build system from splitting out debug 4186 information during packaging. By default, the build system splits out 4187 debugging information during the 4188 :ref:`ref-tasks-package` task. For more information on 4189 how debug information is split out, see the 4190 :term:`PACKAGE_DEBUG_SPLIT_STYLE` 4191 variable. 4192 4193 To prevent the build system from splitting out debug information 4194 during packaging, set the :term:`INHIBIT_PACKAGE_DEBUG_SPLIT` variable as 4195 follows:: 4196 4197 INHIBIT_PACKAGE_DEBUG_SPLIT = "1" 4198 4199 :term:`INHIBIT_PACKAGE_STRIP` 4200 If set to "1", causes the build to not strip binaries in resulting 4201 packages and prevents the ``-dbg`` package from containing the source 4202 files. 4203 4204 By default, the OpenEmbedded build system strips binaries and puts 4205 the debugging symbols into ``${``\ :term:`PN`\ ``}-dbg``. 4206 Consequently, you should not set :term:`INHIBIT_PACKAGE_STRIP` when you 4207 plan to debug in general. 4208 4209 :term:`INHIBIT_SYSROOT_STRIP` 4210 If set to "1", causes the build to not strip binaries in the 4211 resulting sysroot. 4212 4213 By default, the OpenEmbedded build system strips binaries in the 4214 resulting sysroot. When you specifically set the 4215 :term:`INHIBIT_SYSROOT_STRIP` variable to "1" in your recipe, you inhibit 4216 this stripping. 4217 4218 If you want to use this variable, include the :ref:`ref-classes-staging` 4219 class. This class uses a ``sys_strip()`` function to test for the variable 4220 and acts accordingly. 4221 4222 .. note:: 4223 4224 Use of the :term:`INHIBIT_SYSROOT_STRIP` variable occurs in rare and 4225 special circumstances. For example, suppose you are building 4226 bare-metal firmware by using an external GCC toolchain. Furthermore, 4227 even if the toolchain's binaries are strippable, there are other files 4228 needed for the build that are not strippable. 4229 4230 :term:`INIT_MANAGER` 4231 Specifies the system init manager to use. Available options are: 4232 4233 - ``sysvinit`` 4234 - ``systemd`` 4235 - ``mdev-busybox`` 4236 4237 With ``sysvinit``, the init manager is set to 4238 :wikipedia:`SysVinit <Init#SysV-style>`, the traditional UNIX init 4239 system. This is the default choice in the Poky distribution, together with 4240 the Udev device manager (see the ":ref:`device-manager`" section). 4241 4242 With ``systemd``, the init manager becomes :wikipedia:`systemd <Systemd>`, 4243 which comes with the :wikipedia:`udev <Udev>` device manager. 4244 4245 With ``mdev-busybox``, the init manager becomes the much simpler BusyBox 4246 init, together with the BusyBox mdev device manager. This is the simplest 4247 and lightest solution, and probably the best choice for low-end systems 4248 with a rather slow CPU and a limited amount of RAM. 4249 4250 More concretely, this is used to include 4251 ``conf/distro/include/init-manager-${INIT_MANAGER}.inc`` into the global 4252 configuration. You can have a look at the 4253 :yocto_git:`meta/conf/distro/include/init-manager-*.inc </poky/tree/meta/conf/distro/include>` 4254 files for more information, and also the ":ref:`init-manager`" 4255 section in the Yocto Project Development Tasks Manual. 4256 4257 :term:`INITRAMFS_DEPLOY_DIR_IMAGE` 4258 Indicates the deploy directory used by :ref:`ref-tasks-bundle_initramfs` 4259 where the :term:`INITRAMFS_IMAGE` will be fetched from. This variable is 4260 set by default to ``${DEPLOY_DIR_IMAGE}`` in the 4261 :ref:`ref-classes-kernel` class and it's only meant to be changed when 4262 building an :term:`Initramfs` image from a separate multiconfig via 4263 :term:`INITRAMFS_MULTICONFIG`. 4264 4265 :term:`INITRAMFS_FSTYPES` 4266 Defines the format for the output image of an initial RAM filesystem 4267 (:term:`Initramfs`), which is used during boot. Supported formats are the 4268 same as those supported by the 4269 :term:`IMAGE_FSTYPES` variable. 4270 4271 The default value of this variable, which is set in the 4272 ``meta/conf/bitbake.conf`` configuration file in the 4273 :term:`Source Directory`, is "cpio.gz". The Linux kernel's 4274 :term:`Initramfs` mechanism, as opposed to the initial RAM filesystem 4275 :wikipedia:`initrd <Initrd>` mechanism, expects 4276 an optionally compressed cpio archive. 4277 4278 :term:`INITRAMFS_IMAGE` 4279 Specifies the :term:`PROVIDES` name of an image 4280 recipe that is used to build an initial RAM filesystem (:term:`Initramfs`) 4281 image. In other words, the :term:`INITRAMFS_IMAGE` variable causes an 4282 additional recipe to be built as a dependency to whatever root 4283 filesystem recipe you might be using (e.g. ``core-image-sato``). The 4284 :term:`Initramfs` image recipe you provide should set 4285 :term:`IMAGE_FSTYPES` to 4286 :term:`INITRAMFS_FSTYPES`. 4287 4288 An :term:`Initramfs` image provides a temporary root filesystem used for 4289 early system initialization (e.g. loading of modules needed to locate 4290 and mount the "real" root filesystem). 4291 4292 .. note:: 4293 4294 See the ``meta/recipes-core/images/core-image-minimal-initramfs.bb`` 4295 recipe in the :term:`Source Directory` 4296 for an example :term:`Initramfs` recipe. To select this sample recipe as 4297 the one built to provide the :term:`Initramfs` image, set :term:`INITRAMFS_IMAGE` 4298 to "core-image-minimal-initramfs". 4299 4300 You can also find more information by referencing the 4301 ``meta-poky/conf/templates/default/local.conf.sample.extended`` 4302 configuration file in the Source Directory, the :ref:`ref-classes-image` 4303 class, and the :ref:`ref-classes-kernel` class to see how to use the 4304 :term:`INITRAMFS_IMAGE` variable. 4305 4306 If :term:`INITRAMFS_IMAGE` is empty, which is the default, then no 4307 :term:`Initramfs` image is built. 4308 4309 For more information, you can also see the 4310 :term:`INITRAMFS_IMAGE_BUNDLE` 4311 variable, which allows the generated image to be bundled inside the 4312 kernel image. Additionally, for information on creating an :term:`Initramfs` 4313 image, see the ":ref:`dev-manual/building:building an initial ram filesystem (Initramfs) image`" section 4314 in the Yocto Project Development Tasks Manual. 4315 4316 :term:`INITRAMFS_IMAGE_BUNDLE` 4317 Controls whether or not the image recipe specified by 4318 :term:`INITRAMFS_IMAGE` is run through an 4319 extra pass 4320 (:ref:`ref-tasks-bundle_initramfs`) during 4321 kernel compilation in order to build a single binary that contains 4322 both the kernel image and the initial RAM filesystem (:term:`Initramfs`) 4323 image. This makes use of the 4324 :term:`CONFIG_INITRAMFS_SOURCE` kernel 4325 feature. 4326 4327 .. note:: 4328 4329 Bundling the :term:`Initramfs` with the kernel conflates the code in the 4330 :term:`Initramfs` with the GPLv2 licensed Linux kernel binary. Thus only GPLv2 4331 compatible software may be part of a bundled :term:`Initramfs`. 4332 4333 .. note:: 4334 4335 Using an extra compilation pass to bundle the :term:`Initramfs` avoids a 4336 circular dependency between the kernel recipe and the :term:`Initramfs` 4337 recipe should the :term:`Initramfs` include kernel modules. Should that be 4338 the case, the :term:`Initramfs` recipe depends on the kernel for the 4339 kernel modules, and the kernel depends on the :term:`Initramfs` recipe 4340 since the :term:`Initramfs` is bundled inside the kernel image. 4341 4342 The combined binary is deposited into the ``tmp/deploy`` directory, 4343 which is part of the :term:`Build Directory`. 4344 4345 Setting the variable to "1" in a configuration file causes the 4346 OpenEmbedded build system to generate a kernel image with the 4347 :term:`Initramfs` specified in :term:`INITRAMFS_IMAGE` bundled within:: 4348 4349 INITRAMFS_IMAGE_BUNDLE = "1" 4350 4351 By default, the :ref:`ref-classes-kernel` class sets this variable to a 4352 null string as follows:: 4353 4354 INITRAMFS_IMAGE_BUNDLE ?= "" 4355 4356 .. note:: 4357 4358 You must set the :term:`INITRAMFS_IMAGE_BUNDLE` variable in a 4359 configuration file. You cannot set the variable in a recipe file. 4360 4361 See the 4362 :yocto_git:`local.conf.sample.extended </poky/tree/meta-poky/conf/templates/default/local.conf.sample.extended>` 4363 file for additional information. Also, for information on creating an 4364 :term:`Initramfs`, see the ":ref:`dev-manual/building:building an initial ram filesystem (Initramfs) image`" section 4365 in the Yocto Project Development Tasks Manual. 4366 4367 :term:`INITRAMFS_IMAGE_NAME` 4368 4369 This value needs to stay in sync with :term:`IMAGE_LINK_NAME`, but with 4370 :term:`INITRAMFS_IMAGE` instead of :term:`IMAGE_BASENAME`. The default value 4371 is set as follows: 4372 4373 INITRAMFS_IMAGE_NAME ?= "${@['${INITRAMFS_IMAGE}${IMAGE_MACHINE_SUFFIX}', ''][d.getVar('INITRAMFS_IMAGE') == '']}" 4374 4375 That is, if :term:`INITRAMFS_IMAGE` is set, the value of 4376 :term:`INITRAMFS_IMAGE_NAME` will be set based upon 4377 :term:`INITRAMFS_IMAGE` and :term:`IMAGE_MACHINE_SUFFIX`. 4378 4379 4380 :term:`INITRAMFS_LINK_NAME` 4381 The link name of the initial RAM filesystem image. This variable is 4382 set in the ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as 4383 follows:: 4384 4385 INITRAMFS_LINK_NAME ?= "initramfs-${KERNEL_ARTIFACT_LINK_NAME}" 4386 4387 The value of the 4388 ``KERNEL_ARTIFACT_LINK_NAME`` variable, which is set in the same 4389 file, has the following value:: 4390 4391 KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}" 4392 4393 See the :term:`MACHINE` variable for additional 4394 information. 4395 4396 :term:`INITRAMFS_MULTICONFIG` 4397 Defines the multiconfig to create a multiconfig dependency to be used by 4398 the :ref:`ref-classes-kernel` class. 4399 4400 This allows the kernel to bundle an :term:`INITRAMFS_IMAGE` coming from 4401 a separate multiconfig, this is meant to be used in addition to :term:`INITRAMFS_DEPLOY_DIR_IMAGE`. 4402 4403 For more information on how to bundle an :term:`Initramfs` image from a separate 4404 multiconfig see the ":ref:`dev-manual/building:Bundling an Initramfs Image From a Separate Multiconfig`" 4405 section in the Yocto Project Development Tasks Manual. 4406 4407 :term:`INITRAMFS_NAME` 4408 The base name of the initial RAM filesystem image. This variable is 4409 set in the ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as 4410 follows:: 4411 4412 INITRAMFS_NAME ?= "initramfs-${KERNEL_ARTIFACT_NAME}" 4413 4414 See :term:`KERNEL_ARTIFACT_NAME` for additional information. 4415 4416 :term:`INITRD` 4417 Indicates list of filesystem images to concatenate and use as an 4418 initial RAM disk (``initrd``). 4419 4420 The :term:`INITRD` variable is an optional variable used with the 4421 :ref:`ref-classes-image-live` class. 4422 4423 :term:`INITRD_IMAGE` 4424 When building a "live" bootable image (i.e. when 4425 :term:`IMAGE_FSTYPES` contains "live"), 4426 :term:`INITRD_IMAGE` specifies the image recipe that should be built to 4427 provide the initial RAM disk image. The default value is 4428 "core-image-minimal-initramfs". 4429 4430 See the :ref:`ref-classes-image-live` class for more information. 4431 4432 :term:`INITSCRIPT_NAME` 4433 The filename of the initialization script as installed to 4434 ``${sysconfdir}/init.d``. 4435 4436 This variable is used in recipes when using :ref:`ref-classes-update-rc.d`. 4437 The variable is mandatory. 4438 4439 :term:`INITSCRIPT_PACKAGES` 4440 A list of the packages that contain initscripts. If multiple packages 4441 are specified, you need to append the package name to the other 4442 ``INITSCRIPT_*`` as an override. 4443 4444 This variable is used in recipes when using :ref:`ref-classes-update-rc.d`. 4445 The variable is optional and defaults to the :term:`PN` 4446 variable. 4447 4448 :term:`INITSCRIPT_PARAMS` 4449 Specifies the options to pass to ``update-rc.d``. Here is an example:: 4450 4451 INITSCRIPT_PARAMS = "start 99 5 2 . stop 20 0 1 6 ." 4452 4453 In this example, the script has a runlevel of 99, starts the script 4454 in initlevels 2 and 5, and stops the script in levels 0, 1 and 6. 4455 4456 The variable's default value is "defaults", which is set in the 4457 :ref:`ref-classes-update-rc.d` class. 4458 4459 The value in :term:`INITSCRIPT_PARAMS` is passed through to the 4460 ``update-rc.d`` command. For more information on valid parameters, 4461 please see the ``update-rc.d`` manual page at 4462 https://manpages.debian.org/buster/init-system-helpers/update-rc.d.8.en.html 4463 4464 :term:`INSANE_SKIP` 4465 Specifies the QA checks to skip for a specific package within a 4466 recipe. For example, to skip the check for symbolic link ``.so`` 4467 files in the main package of a recipe, add the following to the 4468 recipe. The package name override must be used, which in this example 4469 is ``${PN}``:: 4470 4471 INSANE_SKIP:${PN} += "dev-so" 4472 4473 See the ":ref:`ref-classes-insane`" section for a 4474 list of the valid QA checks you can specify using this variable. 4475 4476 :term:`INSTALL_TIMEZONE_FILE` 4477 By default, the ``tzdata`` recipe packages an ``/etc/timezone`` file. 4478 Set the :term:`INSTALL_TIMEZONE_FILE` variable to "0" at the 4479 configuration level to disable this behavior. 4480 4481 :term:`IPK_FEED_URIS` 4482 When the IPK backend is in use and package management is enabled on 4483 the target, you can use this variable to set up ``opkg`` in the 4484 target image to point to package feeds on a nominated server. Once 4485 the feed is established, you can perform installations or upgrades 4486 using the package manager at runtime. 4487 4488 :term:`KARCH` 4489 Defines the kernel architecture used when assembling the 4490 configuration. Architectures supported for this release are: 4491 4492 - powerpc 4493 - i386 4494 - x86_64 4495 - arm 4496 - qemu 4497 - mips 4498 4499 You define the :term:`KARCH` variable in the :ref:`kernel-dev/advanced:bsp descriptions`. 4500 4501 :term:`KBRANCH` 4502 A regular expression used by the build process to explicitly identify 4503 the kernel branch that is validated, patched, and configured during a 4504 build. You must set this variable to ensure the exact kernel branch 4505 you want is being used by the build process. 4506 4507 Values for this variable are set in the kernel's recipe file and the 4508 kernel's append file. For example, if you are using the 4509 ``linux-yocto_4.12`` kernel, the kernel recipe file is the 4510 ``meta/recipes-kernel/linux/linux-yocto_4.12.bb`` file. :term:`KBRANCH` 4511 is set as follows in that kernel recipe file:: 4512 4513 KBRANCH ?= "standard/base" 4514 4515 This variable is also used from the kernel's append file to identify 4516 the kernel branch specific to a particular machine or target 4517 hardware. Continuing with the previous kernel example, the kernel's 4518 append file is located in the 4519 BSP layer for a given machine. For example, the append file for the 4520 Beaglebone and generic versions of both 32 and 64-bit IA 4521 machines (``meta-yocto-bsp``) is named 4522 ``meta-yocto-bsp/recipes-kernel/linux/linux-yocto_6.1.bbappend``. 4523 Here are the related statements from that append file:: 4524 4525 KBRANCH:genericx86 = "v6.1/standard/base" 4526 KBRANCH:genericx86-64 = "v6.1/standard/base" 4527 KBRANCH:beaglebone-yocto = "v6.1/standard/beaglebone" 4528 4529 The :term:`KBRANCH` statements 4530 identify the kernel branch to use when building for each supported 4531 BSP. 4532 4533 :term:`KBUILD_DEFCONFIG` 4534 When used with the :ref:`ref-classes-kernel-yocto` 4535 class, specifies an "in-tree" kernel configuration file for use 4536 during a kernel build. 4537 4538 Typically, when using a ``defconfig`` to configure a kernel during a 4539 build, you place the file in your layer in the same manner as you 4540 would place patch files and configuration fragment files (i.e. 4541 "out-of-tree"). However, if you want to use a ``defconfig`` file that 4542 is part of the kernel tree (i.e. "in-tree"), you can use the 4543 :term:`KBUILD_DEFCONFIG` variable and append the 4544 :term:`KMACHINE` variable to point to the 4545 ``defconfig`` file. 4546 4547 To use the variable, set it in the append file for your kernel recipe 4548 using the following form:: 4549 4550 KBUILD_DEFCONFIG:<machine> ?= "defconfig_file" 4551 4552 Here is an example from a "raspberrypi2" :term:`MACHINE` build that uses 4553 a ``defconfig`` file named "bcm2709_defconfig":: 4554 4555 KBUILD_DEFCONFIG:raspberrypi2 = "bcm2709_defconfig" 4556 4557 As an alternative, you can use the following within your append file:: 4558 4559 KBUILD_DEFCONFIG:pn-linux-yocto ?= "defconfig_file" 4560 4561 For more 4562 information on how to use the :term:`KBUILD_DEFCONFIG` variable, see the 4563 ":ref:`kernel-dev/common:using an "in-tree" \`\`defconfig\`\` file`" 4564 section in the Yocto Project Linux Kernel Development Manual. 4565 4566 :term:`KCONFIG_MODE` 4567 When used with the :ref:`ref-classes-kernel-yocto` 4568 class, specifies the kernel configuration values to use for options 4569 not specified in the provided ``defconfig`` file. Valid options are:: 4570 4571 KCONFIG_MODE = "alldefconfig" 4572 KCONFIG_MODE = "allnoconfig" 4573 4574 In ``alldefconfig`` mode the options not explicitly specified will be 4575 assigned their Kconfig default value. In ``allnoconfig`` mode the 4576 options not explicitly specified will be disabled in the kernel 4577 config. 4578 4579 In case :term:`KCONFIG_MODE` is not set the behaviour will depend on where 4580 the ``defconfig`` file is coming from. An "in-tree" ``defconfig`` file 4581 will be handled in ``alldefconfig`` mode, a ``defconfig`` file placed 4582 in ``${WORKDIR}`` through a meta-layer will be handled in 4583 ``allnoconfig`` mode. 4584 4585 An "in-tree" ``defconfig`` file can be selected via the 4586 :term:`KBUILD_DEFCONFIG` variable. :term:`KCONFIG_MODE` does not need to 4587 be explicitly set. 4588 4589 A ``defconfig`` file compatible with ``allnoconfig`` mode can be 4590 generated by copying the ``.config`` file from a working Linux kernel 4591 build, renaming it to ``defconfig`` and placing it into the Linux 4592 kernel ``${WORKDIR}`` through your meta-layer. :term:`KCONFIG_MODE` does 4593 not need to be explicitly set. 4594 4595 A ``defconfig`` file compatible with ``alldefconfig`` mode can be 4596 generated using the 4597 :ref:`ref-tasks-savedefconfig` 4598 task and placed into the Linux kernel ``${WORKDIR}`` through your 4599 meta-layer. Explicitely set :term:`KCONFIG_MODE`:: 4600 4601 KCONFIG_MODE = "alldefconfig" 4602 4603 :term:`KERNEL_ALT_IMAGETYPE` 4604 Specifies an alternate kernel image type for creation in addition to 4605 the kernel image type specified using the :term:`KERNEL_IMAGETYPE` and 4606 :term:`KERNEL_IMAGETYPES` variables. 4607 4608 :term:`KERNEL_ARTIFACT_NAME` 4609 Specifies the name of all of the build artifacts. You can change the 4610 name of the artifacts by changing the :term:`KERNEL_ARTIFACT_NAME` 4611 variable. 4612 4613 The value of :term:`KERNEL_ARTIFACT_NAME`, which is set in the 4614 ``meta/classes-recipe/kernel-artifact-names.bbclass`` file, has the 4615 following default value:: 4616 4617 KERNEL_ARTIFACT_NAME ?= "${PKGE}-${PKGV}-${PKGR}${IMAGE_MACHINE_SUFFIX}${IMAGE_VERSION_SUFFIX}" 4618 4619 See the :term:`PKGE`, :term:`PKGV`, :term:`PKGR`, :term:`IMAGE_MACHINE_SUFFIX` 4620 and :term:`IMAGE_VERSION_SUFFIX` variables for additional information. 4621 4622 :term:`KERNEL_CLASSES` 4623 A list of classes defining kernel image types that the 4624 :ref:`ref-classes-kernel` class should inherit. You typically 4625 append this variable to enable extended image types. An example is 4626 ":ref:`ref-classes-kernel-fitimage`", which enables 4627 FIT image support and resides in ``meta/classes-recipe/kernel-fitimage.bbclass``. 4628 You can register custom kernel image types with the 4629 :ref:`ref-classes-kernel` class using this variable. 4630 4631 :term:`KERNEL_CONSOLE` 4632 The :term:`KERNEL_CONSOLE` variable holds the value of the ``console`` 4633 parameter of the kernel command line and can be used in places such as a 4634 ``wks`` description file for :ref:`Wic images <dev-manual/wic:creating 4635 partitioned images using wic>`. 4636 4637 The default value of this variable is extracted from the first console 4638 device and setting in :term:`SERIAL_CONSOLES`. If nothing is found in 4639 :term:`SERIAL_CONSOLES`, the default value is set to ``ttyS0,115200``. 4640 4641 For more information, see the `Kernel command-line documentation 4642 <https://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html>`__. 4643 4644 :term:`KERNEL_DANGLING_FEATURES_WARN_ONLY` 4645 When kernel configuration fragments are missing for some 4646 :term:`KERNEL_FEATURES` specified by layers or BSPs, 4647 building and configuring the kernel stops with an error. 4648 4649 You can turn these errors into warnings by setting the 4650 following in ``conf/local.conf``:: 4651 4652 KERNEL_DANGLING_FEATURES_WARN_ONLY = "1" 4653 4654 You will still be warned that runtime issues may occur, 4655 but at least the kernel configuration and build process will 4656 be allowed to continue. 4657 4658 :term:`KERNEL_DEBUG_TIMESTAMPS` 4659 If set to "1", enables timestamping functionality during building 4660 the kernel. The default is "0" to disable this for reproducibility 4661 reasons. 4662 4663 :term:`KERNEL_DEPLOY_DEPEND` 4664 Provides a means of controlling the dependency of an image recipe 4665 on the kernel. The default value is "virtual/kernel:do_deploy", 4666 however for a small initramfs image or other images that do not 4667 need the kernel, this can be set to "" in the image recipe. 4668 4669 :term:`KERNEL_DEVICETREE` 4670 Specifies the name of the generated Linux kernel device tree (i.e. 4671 the ``.dtb``) file. 4672 4673 .. note:: 4674 4675 There is legacy support for specifying the full path to the device 4676 tree. However, providing just the ``.dtb`` file is preferred. 4677 4678 In order to use this variable, the :ref:`ref-classes-kernel-devicetree` 4679 class must be inherited. 4680 4681 :term:`KERNEL_DEVICETREE_BUNDLE` 4682 When set to "1", this variable allows to bundle the Linux kernel 4683 and the Device Tree Binary together in a single file. 4684 4685 This feature is currently only supported on the "arm" (32 bit) 4686 architecture. 4687 4688 This variable is set to "0" by default by the 4689 :ref:`ref-classes-kernel-devicetree` class. 4690 4691 :term:`KERNEL_DTB_LINK_NAME` 4692 The link name of the kernel device tree binary (DTB). This variable 4693 is set in the ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as 4694 follows:: 4695 4696 KERNEL_DTB_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}" 4697 4698 The 4699 value of the ``KERNEL_ARTIFACT_LINK_NAME`` variable, which is set in 4700 the same file, has the following value:: 4701 4702 KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}" 4703 4704 See the :term:`MACHINE` variable for additional 4705 information. 4706 4707 :term:`KERNEL_DTB_NAME` 4708 The base name of the kernel device tree binary (DTB). This variable 4709 is set in the ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as 4710 follows:: 4711 4712 KERNEL_DTB_NAME ?= "${KERNEL_ARTIFACT_NAME}" 4713 4714 See :term:`KERNEL_ARTIFACT_NAME` for additional information. 4715 4716 :term:`KERNEL_DTBDEST` 4717 This variable, used by the :ref:`ref-classes-kernel-devicetree` 4718 class, allows to change the installation directory of the DTB 4719 (Device Tree Binary) files. 4720 4721 It is set by default to "${KERNEL_IMAGEDEST}" by the 4722 :ref:`ref-classes-kernel` class. 4723 4724 :term:`KERNEL_DTBVENDORED` 4725 This variable, used by the :ref:`ref-classes-kernel-devicetree`, 4726 allows to ignore vendor subdirectories when installing DTB 4727 (Device Tree Binary) files, when it is set to "false". 4728 4729 To keep vendor subdirectories, set this variable to "true". 4730 4731 It is set by default to "false" by the :ref:`ref-classes-kernel` class. 4732 4733 :term:`KERNEL_DTC_FLAGS` 4734 Specifies the ``dtc`` flags that are passed to the Linux kernel build 4735 system when generating the device trees (via ``DTC_FLAGS`` environment 4736 variable). 4737 4738 In order to use this variable, the :ref:`ref-classes-kernel-devicetree` 4739 class must be inherited. 4740 4741 :term:`KERNEL_EXTRA_ARGS` 4742 Specifies additional ``make`` command-line arguments the OpenEmbedded 4743 build system passes on when compiling the kernel. 4744 4745 :term:`KERNEL_FEATURES` 4746 Includes additional kernel metadata. In the OpenEmbedded build 4747 system, the default Board Support Packages (BSPs) 4748 :term:`Metadata` is provided through the 4749 :term:`KMACHINE` and :term:`KBRANCH` 4750 variables. You can use the :term:`KERNEL_FEATURES` variable from within 4751 the kernel recipe or kernel append file to further add metadata for 4752 all BSPs or specific BSPs. 4753 4754 The metadata you add through this variable includes config fragments 4755 and features descriptions, which usually includes patches as well as 4756 config fragments. You typically override the :term:`KERNEL_FEATURES` 4757 variable for a specific machine. In this way, you can provide 4758 validated, but optional, sets of kernel configurations and features. 4759 4760 For example, the following example from the ``linux-yocto-rt_4.12`` 4761 kernel recipe adds "netfilter" and "taskstats" features to all BSPs 4762 as well as "virtio" configurations to all QEMU machines. The last two 4763 statements add specific configurations to targeted machine types:: 4764 4765 KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc features/taskstats/taskstats.scc" 4766 KERNEL_FEATURES:append = " ${KERNEL_EXTRA_FEATURES}" 4767 KERNEL_FEATURES:append:qemuall = " cfg/virtio.scc" 4768 KERNEL_FEATURES:append:qemux86 = " cfg/sound.scc cfg/paravirt_kvm.scc" 4769 KERNEL_FEATURES:append:qemux86-64 = " cfg/sound.scc" 4770 4771 :term:`KERNEL_FIT_LINK_NAME` 4772 The link name of the kernel flattened image tree (FIT) image. This 4773 variable is set in the ``meta/classes-recipe/kernel-artifact-names.bbclass`` 4774 file as follows:: 4775 4776 KERNEL_FIT_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}" 4777 4778 The value of the 4779 ``KERNEL_ARTIFACT_LINK_NAME`` variable, which is set in the same 4780 file, has the following value:: 4781 4782 KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}" 4783 4784 See the :term:`MACHINE` variable for additional 4785 information. 4786 4787 :term:`KERNEL_FIT_NAME` 4788 The base name of the kernel flattened image tree (FIT) image. This 4789 variable is set in the ``meta/classes-recipe/kernel-artifact-names.bbclass`` 4790 file as follows:: 4791 4792 KERNEL_FIT_NAME ?= "${KERNEL_ARTIFACT_NAME}" 4793 4794 See :term:`KERNEL_ARTIFACT_NAME` for additional information. 4795 4796 :term:`KERNEL_IMAGE_LINK_NAME` 4797 The link name for the kernel image. This variable is set in the 4798 ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as follows:: 4799 4800 KERNEL_IMAGE_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}" 4801 4802 The value of 4803 the ``KERNEL_ARTIFACT_LINK_NAME`` variable, which is set in the same 4804 file, has the following value:: 4805 4806 KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}" 4807 4808 See the :term:`MACHINE` variable for additional 4809 information. 4810 4811 :term:`KERNEL_IMAGE_MAXSIZE` 4812 Specifies the maximum size of the kernel image file in kilobytes. If 4813 :term:`KERNEL_IMAGE_MAXSIZE` is set, the size of the kernel image file is 4814 checked against the set value during the 4815 :ref:`ref-tasks-sizecheck` task. The task fails if 4816 the kernel image file is larger than the setting. 4817 4818 :term:`KERNEL_IMAGE_MAXSIZE` is useful for target devices that have a 4819 limited amount of space in which the kernel image must be stored. 4820 4821 By default, this variable is not set, which means the size of the 4822 kernel image is not checked. 4823 4824 :term:`KERNEL_IMAGE_NAME` 4825 The base name of the kernel image. This variable is set in the 4826 ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as follows:: 4827 4828 KERNEL_IMAGE_NAME ?= "${KERNEL_ARTIFACT_NAME}" 4829 4830 See :term:`KERNEL_ARTIFACT_NAME` for additional information. 4831 4832 :term:`KERNEL_IMAGETYPE` 4833 The type of kernel to build for a device, usually set by the machine 4834 configuration files and defaults to "zImage". This variable is used 4835 when building the kernel and is passed to ``make`` as the target to 4836 build. 4837 4838 To build additional kernel image types, use :term:`KERNEL_IMAGETYPES`. 4839 4840 :term:`KERNEL_IMAGETYPES` 4841 Lists additional types of kernel images to build for a device in addition 4842 to image type specified in :term:`KERNEL_IMAGETYPE`. Usually set by the 4843 machine configuration files. 4844 4845 :term:`KERNEL_MODULE_AUTOLOAD` 4846 Lists kernel modules that need to be auto-loaded during boot. 4847 4848 .. note:: 4849 4850 This variable replaces the deprecated :term:`module_autoload` 4851 variable. 4852 4853 You can use the :term:`KERNEL_MODULE_AUTOLOAD` variable anywhere that it 4854 can be recognized by the kernel recipe or by an out-of-tree kernel 4855 module recipe (e.g. a machine configuration file, a distribution 4856 configuration file, an append file for the recipe, or the recipe 4857 itself). 4858 4859 Specify it as follows:: 4860 4861 KERNEL_MODULE_AUTOLOAD += "module_name1 module_name2 module_name3" 4862 4863 Including :term:`KERNEL_MODULE_AUTOLOAD` causes the OpenEmbedded build 4864 system to populate the ``/etc/modules-load.d/modname.conf`` file with 4865 the list of modules to be auto-loaded on boot. The modules appear 4866 one-per-line in the file. Here is an example of the most common use 4867 case:: 4868 4869 KERNEL_MODULE_AUTOLOAD += "module_name" 4870 4871 For information on how to populate the ``modname.conf`` file with 4872 ``modprobe.d`` syntax lines, see the :term:`KERNEL_MODULE_PROBECONF` variable. 4873 4874 :term:`KERNEL_MODULE_PROBECONF` 4875 Provides a list of modules for which the OpenEmbedded build system 4876 expects to find ``module_conf_``\ modname values that specify 4877 configuration for each of the modules. For information on how to 4878 provide those module configurations, see the 4879 :term:`module_conf_* <module_conf>` variable. 4880 4881 :term:`KERNEL_PACKAGE_NAME` 4882 Specifies the base name of the kernel packages, such as "kernel" 4883 in the kernel packages such as "kernel-modules", "kernel-image" and 4884 "kernel-dbg". 4885 4886 The default value for this variable is set to "kernel" by the 4887 :ref:`ref-classes-kernel` class. 4888 4889 :term:`KERNEL_PATH` 4890 The location of the kernel sources. This variable is set to the value 4891 of the :term:`STAGING_KERNEL_DIR` within the :ref:`ref-classes-module` 4892 class. For information on how this variable is used, see the 4893 ":ref:`kernel-dev/common:incorporating out-of-tree modules`" 4894 section in the Yocto Project Linux Kernel Development Manual. 4895 4896 To help maximize compatibility with out-of-tree drivers used to build 4897 modules, the OpenEmbedded build system also recognizes and uses the 4898 :term:`KERNEL_SRC` variable, which is identical to 4899 the :term:`KERNEL_PATH` variable. Both variables are common variables 4900 used by external Makefiles to point to the kernel source directory. 4901 4902 :term:`KERNEL_SRC` 4903 The location of the kernel sources. This variable is set to the value 4904 of the :term:`STAGING_KERNEL_DIR` within the :ref:`ref-classes-module` 4905 class. For information on how this variable is used, see the 4906 ":ref:`kernel-dev/common:incorporating out-of-tree modules`" 4907 section in the Yocto Project Linux Kernel Development Manual. 4908 4909 To help maximize compatibility with out-of-tree drivers used to build 4910 modules, the OpenEmbedded build system also recognizes and uses the 4911 :term:`KERNEL_PATH` variable, which is identical 4912 to the :term:`KERNEL_SRC` variable. Both variables are common variables 4913 used by external Makefiles to point to the kernel source directory. 4914 4915 :term:`KERNEL_STRIP` 4916 Allows to specific which ``strip`` command to use to strip the kernel 4917 binary, typically either GNU binutils ``strip`` or ``llvm-strip``. 4918 4919 :term:`KERNEL_VERSION` 4920 Specifies the version of the kernel as extracted from ``version.h`` 4921 or ``utsrelease.h`` within the kernel sources. Effects of setting 4922 this variable do not take effect until the kernel has been 4923 configured. Consequently, attempting to refer to this variable in 4924 contexts prior to configuration will not work. 4925 4926 :term:`KERNELDEPMODDEPEND` 4927 Specifies whether the data referenced through 4928 :term:`PKGDATA_DIR` is needed or not. 4929 :term:`KERNELDEPMODDEPEND` does not control whether or not that data 4930 exists, but simply whether or not it is used. If you do not need to 4931 use the data, set the :term:`KERNELDEPMODDEPEND` variable in your 4932 :term:`Initramfs` recipe. Setting the variable there when the data is not 4933 needed avoids a potential dependency loop. 4934 4935 :term:`KFEATURE_DESCRIPTION` 4936 Provides a short description of a configuration fragment. You use 4937 this variable in the ``.scc`` file that describes a configuration 4938 fragment file. Here is the variable used in a file named ``smp.scc`` 4939 to describe SMP being enabled:: 4940 4941 define KFEATURE_DESCRIPTION "Enable SMP" 4942 4943 :term:`KMACHINE` 4944 The machine as known by the kernel. Sometimes the machine name used 4945 by the kernel does not match the machine name used by the 4946 OpenEmbedded build system. For example, the machine name that the 4947 OpenEmbedded build system understands as ``core2-32-intel-common`` 4948 goes by a different name in the Linux Yocto kernel. The kernel 4949 understands that machine as ``intel-core2-32``. For cases like these, 4950 the :term:`KMACHINE` variable maps the kernel machine name to the 4951 OpenEmbedded build system machine name. 4952 4953 These mappings between different names occur in the Yocto Linux 4954 Kernel's ``meta`` branch. As an example take a look in the 4955 ``common/recipes-kernel/linux/linux-yocto_3.19.bbappend`` file:: 4956 4957 LINUX_VERSION:core2-32-intel-common = "3.19.0" 4958 COMPATIBLE_MACHINE:core2-32-intel-common = "${MACHINE}" 4959 SRCREV_meta:core2-32-intel-common = "8897ef68b30e7426bc1d39895e71fb155d694974" 4960 SRCREV_machine:core2-32-intel-common = "43b9eced9ba8a57add36af07736344dcc383f711" 4961 KMACHINE:core2-32-intel-common = "intel-core2-32" 4962 KBRANCH:core2-32-intel-common = "standard/base" 4963 KERNEL_FEATURES:append:core2-32-intel-common = " ${KERNEL_FEATURES_INTEL_COMMON}" 4964 4965 The :term:`KMACHINE` statement says 4966 that the kernel understands the machine name as "intel-core2-32". 4967 However, the OpenEmbedded build system understands the machine as 4968 "core2-32-intel-common". 4969 4970 :term:`KTYPE` 4971 Defines the kernel type to be used in assembling the configuration. 4972 The linux-yocto recipes define "standard", "tiny", and "preempt-rt" 4973 kernel types. See the ":ref:`kernel-dev/advanced:kernel types`" 4974 section in the 4975 Yocto Project Linux Kernel Development Manual for more information on 4976 kernel types. 4977 4978 You define the :term:`KTYPE` variable in the 4979 :ref:`kernel-dev/advanced:bsp descriptions`. The 4980 value you use must match the value used for the 4981 :term:`LINUX_KERNEL_TYPE` value used by the 4982 kernel recipe. 4983 4984 :term:`LABELS` 4985 Provides a list of targets for automatic configuration. 4986 4987 See the :ref:`ref-classes-grub-efi` class for more 4988 information on how this variable is used. 4989 4990 :term:`LAYERDEPENDS` 4991 Lists the layers, separated by spaces, on which this recipe depends. 4992 Optionally, you can specify a specific layer version for a dependency 4993 by adding it to the end of the layer name. Here is an example:: 4994 4995 LAYERDEPENDS_mylayer = "anotherlayer (=3)" 4996 4997 In this previous example, 4998 version 3 of "anotherlayer" is compared against 4999 :term:`LAYERVERSION`\ ``_anotherlayer``. 5000 5001 An error is produced if any dependency is missing or the version 5002 numbers (if specified) do not match exactly. This variable is used in 5003 the ``conf/layer.conf`` file and must be suffixed with the name of 5004 the specific layer (e.g. ``LAYERDEPENDS_mylayer``). 5005 5006 :term:`LAYERDIR` 5007 When used inside the ``layer.conf`` configuration file, this variable 5008 provides the path of the current layer. This variable is not 5009 available outside of ``layer.conf`` and references are expanded 5010 immediately when parsing of the file completes. 5011 5012 :term:`LAYERDIR_RE` 5013 See :term:`bitbake:LAYERDIR_RE` in the BitBake manual. 5014 5015 :term:`LAYERRECOMMENDS` 5016 Lists the layers, separated by spaces, recommended for use with this 5017 layer. 5018 5019 Optionally, you can specify a specific layer version for a 5020 recommendation by adding the version to the end of the layer name. 5021 Here is an example:: 5022 5023 LAYERRECOMMENDS_mylayer = "anotherlayer (=3)" 5024 5025 In this previous example, version 3 of "anotherlayer" is compared 5026 against ``LAYERVERSION_anotherlayer``. 5027 5028 This variable is used in the ``conf/layer.conf`` file and must be 5029 suffixed with the name of the specific layer (e.g. 5030 ``LAYERRECOMMENDS_mylayer``). 5031 5032 :term:`LAYERSERIES_COMPAT` 5033 See :term:`bitbake:LAYERSERIES_COMPAT` in the BitBake manual. 5034 5035 :term:`LAYERVERSION` 5036 Optionally specifies the version of a layer as a single number. You 5037 can use this within :term:`LAYERDEPENDS` for 5038 another layer in order to depend on a specific version of the layer. 5039 This variable is used in the ``conf/layer.conf`` file and must be 5040 suffixed with the name of the specific layer (e.g. 5041 ``LAYERVERSION_mylayer``). 5042 5043 :term:`LD` 5044 The minimal command and arguments used to run the linker. 5045 5046 :term:`LDFLAGS` 5047 Specifies the flags to pass to the linker. This variable is exported 5048 to an environment variable and thus made visible to the software 5049 being built during the compilation step. 5050 5051 Default initialization for :term:`LDFLAGS` varies depending on what is 5052 being built: 5053 5054 - :term:`TARGET_LDFLAGS` when building for the 5055 target 5056 5057 - :term:`BUILD_LDFLAGS` when building for the 5058 build host (i.e. ``-native``) 5059 5060 - :term:`BUILDSDK_LDFLAGS` when building for 5061 an SDK (i.e. ``nativesdk-``) 5062 5063 :term:`LEAD_SONAME` 5064 Specifies the lead (or primary) compiled library file (i.e. ``.so``) 5065 that the :ref:`ref-classes-debian` class applies its 5066 naming policy to given a recipe that packages multiple libraries. 5067 5068 This variable works in conjunction with the :ref:`ref-classes-debian` 5069 class. 5070 5071 :term:`LIC_FILES_CHKSUM` 5072 Checksums of the license text in the recipe source code. 5073 5074 This variable tracks changes in license text of the source code 5075 files. If the license text is changed, it will trigger a build 5076 failure, which gives the developer an opportunity to review any 5077 license change. 5078 5079 This variable must be defined for all recipes (unless 5080 :term:`LICENSE` is set to "CLOSED"). 5081 5082 For more information, see the ":ref:`dev-manual/licenses:tracking license changes`" 5083 section in the Yocto Project Development Tasks Manual. 5084 5085 :term:`LICENSE` 5086 The list of source licenses for the recipe. Follow these rules: 5087 5088 - Do not use spaces within individual license names. 5089 5090 - Separate license names using \| (pipe) when there is a choice 5091 between licenses. 5092 5093 - Separate license names using & (ampersand) when there are 5094 multiple licenses for different parts of the source. 5095 5096 - You can use spaces between license names. 5097 5098 - For standard licenses, use the names of the files in 5099 ``meta/files/common-licenses/`` or the 5100 :term:`SPDXLICENSEMAP` flag names defined in 5101 ``meta/conf/licenses.conf``. 5102 5103 Here are some examples:: 5104 5105 LICENSE = "LGPL-2.1-only | GPL-3.0-only" 5106 LICENSE = "MPL-1.0 & LGPL-2.1-only" 5107 LICENSE = "GPL-2.0-or-later" 5108 5109 The first example is from the 5110 recipes for Qt, which the user may choose to distribute under either 5111 the LGPL version 2.1 or GPL version 3. The second example is from 5112 Cairo where two licenses cover different parts of the source code. 5113 The final example is from ``sysstat``, which presents a single 5114 license. 5115 5116 You can also specify licenses on a per-package basis to handle 5117 situations where components of the output have different licenses. 5118 For example, a piece of software whose code is licensed under GPLv2 5119 but has accompanying documentation licensed under the GNU Free 5120 Documentation License 1.2 could be specified as follows:: 5121 5122 LICENSE = "GFDL-1.2 & GPL-2.0-only" 5123 LICENSE:${PN} = "GPL-2.0.only" 5124 LICENSE:${PN}-doc = "GFDL-1.2" 5125 5126 :term:`LICENSE_CREATE_PACKAGE` 5127 Setting :term:`LICENSE_CREATE_PACKAGE` to "1" causes the OpenEmbedded 5128 build system to create an extra package (i.e. 5129 ``${``\ :term:`PN`\ ``}-lic``) for each recipe and to add 5130 those packages to the 5131 :term:`RRECOMMENDS`\ ``:${PN}``. 5132 5133 The ``${PN}-lic`` package installs a directory in 5134 ``/usr/share/licenses`` named ``${PN}``, which is the recipe's base 5135 name, and installs files in that directory that contain license and 5136 copyright information (i.e. copies of the appropriate license files 5137 from ``meta/common-licenses`` that match the licenses specified in 5138 the :term:`LICENSE` variable of the recipe metadata 5139 and copies of files marked in 5140 :term:`LIC_FILES_CHKSUM` as containing 5141 license text). 5142 5143 For related information on providing license text, see the 5144 :term:`COPY_LIC_DIRS` variable, the 5145 :term:`COPY_LIC_MANIFEST` variable, and the 5146 ":ref:`dev-manual/licenses:providing license text`" 5147 section in the Yocto Project Development Tasks Manual. 5148 5149 :term:`LICENSE_FLAGS` 5150 Specifies additional flags for a recipe you must allow through 5151 :term:`LICENSE_FLAGS_ACCEPTED` in 5152 order for the recipe to be built. When providing multiple flags, 5153 separate them with spaces. 5154 5155 This value is independent of :term:`LICENSE` and is 5156 typically used to mark recipes that might require additional licenses 5157 in order to be used in a commercial product. For more information, 5158 see the 5159 ":ref:`dev-manual/licenses:enabling commercially licensed recipes`" 5160 section in the Yocto Project Development Tasks Manual. 5161 5162 :term:`LICENSE_FLAGS_ACCEPTED` 5163 Lists license flags that when specified in 5164 :term:`LICENSE_FLAGS` within a recipe should not 5165 prevent that recipe from being built. For more information, see the 5166 ":ref:`dev-manual/licenses:enabling commercially licensed recipes`" 5167 section in the Yocto Project Development Tasks Manual. 5168 5169 :term:`LICENSE_FLAGS_DETAILS` 5170 Adds details about a flag in :term:`LICENSE_FLAGS`. This way, 5171 if such a flag is not accepted through :term:`LICENSE_FLAGS_ACCEPTED`, 5172 the error message will be more informative, containing the specified 5173 extra details. 5174 5175 For example, a recipe with an EULA may set:: 5176 5177 LICENSE_FLAGS = "FooBar-EULA" 5178 LICENSE_FLAGS_DETAILS[FooBar-EULA] = "For further details, see https://example.com/eula." 5179 5180 If ``Foobar-EULA`` isn't in :term:`LICENSE_FLAGS_ACCEPTED`, the 5181 error message is more useful:: 5182 5183 Has a restricted license 'FooBar-EULA' which is not listed in your LICENSE_FLAGS_ACCEPTED. 5184 For further details, see https://example.com/eula. 5185 5186 :term:`LICENSE_PATH` 5187 Path to additional licenses used during the build. By default, the 5188 OpenEmbedded build system uses :term:`COMMON_LICENSE_DIR` to define the 5189 directory that holds common license text used during the build. The 5190 :term:`LICENSE_PATH` variable allows you to extend that location to other 5191 areas that have additional licenses:: 5192 5193 LICENSE_PATH += "path-to-additional-common-licenses" 5194 5195 :term:`LINUX_KERNEL_TYPE` 5196 Defines the kernel type to be used in assembling the configuration. 5197 The linux-yocto recipes define "standard", "tiny", and "preempt-rt" 5198 kernel types. See the ":ref:`kernel-dev/advanced:kernel types`" 5199 section in the 5200 Yocto Project Linux Kernel Development Manual for more information on 5201 kernel types. 5202 5203 If you do not specify a :term:`LINUX_KERNEL_TYPE`, it defaults to 5204 "standard". Together with :term:`KMACHINE`, the 5205 :term:`LINUX_KERNEL_TYPE` variable defines the search arguments used by 5206 the kernel tools to find the appropriate description within the 5207 kernel :term:`Metadata` with which to build out the sources 5208 and configuration. 5209 5210 :term:`LINUX_VERSION` 5211 The Linux version from ``kernel.org`` on which the Linux kernel image 5212 being built using the OpenEmbedded build system is based. You define 5213 this variable in the kernel recipe. For example, the 5214 ``linux-yocto-3.4.bb`` kernel recipe found in 5215 ``meta/recipes-kernel/linux`` defines the variables as follows:: 5216 5217 LINUX_VERSION ?= "3.4.24" 5218 5219 The :term:`LINUX_VERSION` variable is used to define :term:`PV` 5220 for the recipe:: 5221 5222 PV = "${LINUX_VERSION}+git" 5223 5224 :term:`LINUX_VERSION_EXTENSION` 5225 A string extension compiled into the version string of the Linux 5226 kernel built with the OpenEmbedded build system. You define this 5227 variable in the kernel recipe. For example, the linux-yocto kernel 5228 recipes all define the variable as follows:: 5229 5230 LINUX_VERSION_EXTENSION ?= "-yocto-${LINUX_KERNEL_TYPE}" 5231 5232 Defining this variable essentially sets the Linux kernel 5233 configuration item ``CONFIG_LOCALVERSION``, which is visible through 5234 the ``uname`` command. Here is an example that shows the extension 5235 assuming it was set as previously shown:: 5236 5237 $ uname -r 5238 3.7.0-rc8-custom 5239 5240 :term:`LOG_DIR` 5241 Specifies the directory to which the OpenEmbedded build system writes 5242 overall log files. The default directory is ``${TMPDIR}/log``. 5243 5244 For the directory containing logs specific to each task, see the 5245 :term:`T` variable. 5246 5247 :term:`MACHINE` 5248 Specifies the target device for which the image is built. You define 5249 :term:`MACHINE` in the ``local.conf`` file found in the 5250 :term:`Build Directory`. By default, :term:`MACHINE` is set to 5251 "qemux86", which is an x86-based architecture machine to be emulated 5252 using QEMU:: 5253 5254 MACHINE ?= "qemux86" 5255 5256 The variable corresponds to a machine configuration file of the same 5257 name, through which machine-specific configurations are set. Thus, 5258 when :term:`MACHINE` is set to "qemux86", the corresponding 5259 ``qemux86.conf`` machine configuration file can be found in 5260 the :term:`Source Directory` in 5261 ``meta/conf/machine``. 5262 5263 The list of machines supported by the Yocto Project as shipped 5264 include the following:: 5265 5266 MACHINE ?= "qemuarm" 5267 MACHINE ?= "qemuarm64" 5268 MACHINE ?= "qemumips" 5269 MACHINE ?= "qemumips64" 5270 MACHINE ?= "qemuppc" 5271 MACHINE ?= "qemux86" 5272 MACHINE ?= "qemux86-64" 5273 MACHINE ?= "genericx86" 5274 MACHINE ?= "genericx86-64" 5275 MACHINE ?= "beaglebone" 5276 5277 The last five are Yocto Project reference hardware 5278 boards, which are provided in the ``meta-yocto-bsp`` layer. 5279 5280 .. note:: 5281 5282 Adding additional Board Support Package (BSP) layers to your 5283 configuration adds new possible settings for :term:`MACHINE`. 5284 5285 :term:`MACHINE_ARCH` 5286 Specifies the name of the machine-specific architecture. This 5287 variable is set automatically from :term:`MACHINE` or 5288 :term:`TUNE_PKGARCH`. You should not hand-edit 5289 the :term:`MACHINE_ARCH` variable. 5290 5291 :term:`MACHINE_ESSENTIAL_EXTRA_RDEPENDS` 5292 A list of required machine-specific packages to install as part of 5293 the image being built. The build process depends on these packages 5294 being present. Furthermore, because this is a "machine-essential" 5295 variable, the list of packages are essential for the machine to boot. 5296 The impact of this variable affects images based on 5297 ``packagegroup-core-boot``, including the ``core-image-minimal`` 5298 image. 5299 5300 This variable is similar to the 5301 :term:`MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS` variable with the exception 5302 that the image being built has a build dependency on the variable's 5303 list of packages. In other words, the image will not build if a file 5304 in this list is not found. 5305 5306 As an example, suppose the machine for which you are building 5307 requires ``example-init`` to be run during boot to initialize the 5308 hardware. In this case, you would use the following in the machine's 5309 ``.conf`` configuration file:: 5310 5311 MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "example-init" 5312 5313 :term:`MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS` 5314 A list of recommended machine-specific packages to install as part of 5315 the image being built. The build process does not depend on these 5316 packages being present. However, because this is a 5317 "machine-essential" variable, the list of packages are essential for 5318 the machine to boot. The impact of this variable affects images based 5319 on ``packagegroup-core-boot``, including the ``core-image-minimal`` 5320 image. 5321 5322 This variable is similar to the :term:`MACHINE_ESSENTIAL_EXTRA_RDEPENDS` 5323 variable with the exception that the image being built does not have 5324 a build dependency on the variable's list of packages. In other 5325 words, the image will still build if a package in this list is not 5326 found. Typically, this variable is used to handle essential kernel 5327 modules, whose functionality may be selected to be built into the 5328 kernel rather than as a module, in which case a package will not be 5329 produced. 5330 5331 Consider an example where you have a custom kernel where a specific 5332 touchscreen driver is required for the machine to be usable. However, 5333 the driver can be built as a module or into the kernel depending on 5334 the kernel configuration. If the driver is built as a module, you 5335 want it to be installed. But, when the driver is built into the 5336 kernel, you still want the build to succeed. This variable sets up a 5337 "recommends" relationship so that in the latter case, the build will 5338 not fail due to the missing package. To accomplish this, assuming the 5339 package for the module was called ``kernel-module-ab123``, you would 5340 use the following in the machine's ``.conf`` configuration file:: 5341 5342 MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS += "kernel-module-ab123" 5343 5344 .. note:: 5345 5346 In this example, the ``kernel-module-ab123`` recipe needs to 5347 explicitly set its :term:`PACKAGES` variable to ensure that BitBake 5348 does not use the kernel recipe's :term:`PACKAGES_DYNAMIC` variable to 5349 satisfy the dependency. 5350 5351 Some examples of these machine essentials are flash, screen, 5352 keyboard, mouse, or touchscreen drivers (depending on the machine). 5353 5354 :term:`MACHINE_EXTRA_RDEPENDS` 5355 A list of machine-specific packages to install as part of the image 5356 being built that are not essential for the machine to boot. However, 5357 the build process for more fully-featured images depends on the 5358 packages being present. 5359 5360 This variable affects all images based on ``packagegroup-base``, 5361 which does not include the ``core-image-minimal`` or 5362 ``core-image-full-cmdline`` images. 5363 5364 The variable is similar to the :term:`MACHINE_EXTRA_RRECOMMENDS` variable 5365 with the exception that the image being built has a build dependency 5366 on the variable's list of packages. In other words, the image will 5367 not build if a file in this list is not found. 5368 5369 An example is a machine that has WiFi capability but is not essential 5370 for the machine to boot the image. However, if you are building a 5371 more fully-featured image, you want to enable the WiFi. The package 5372 containing the firmware for the WiFi hardware is always expected to 5373 exist, so it is acceptable for the build process to depend upon 5374 finding the package. In this case, assuming the package for the 5375 firmware was called ``wifidriver-firmware``, you would use the 5376 following in the ``.conf`` file for the machine:: 5377 5378 MACHINE_EXTRA_RDEPENDS += "wifidriver-firmware" 5379 5380 :term:`MACHINE_EXTRA_RRECOMMENDS` 5381 A list of machine-specific packages to install as part of the image 5382 being built that are not essential for booting the machine. The image 5383 being built has no build dependency on this list of packages. 5384 5385 This variable affects only images based on ``packagegroup-base``, 5386 which does not include the ``core-image-minimal`` or 5387 ``core-image-full-cmdline`` images. 5388 5389 This variable is similar to the :term:`MACHINE_EXTRA_RDEPENDS` variable 5390 with the exception that the image being built does not have a build 5391 dependency on the variable's list of packages. In other words, the 5392 image will build if a file in this list is not found. 5393 5394 An example is a machine that has WiFi capability but is not essential 5395 For the machine to boot the image. However, if you are building a 5396 more fully-featured image, you want to enable WiFi. In this case, the 5397 package containing the WiFi kernel module will not be produced if the 5398 WiFi driver is built into the kernel, in which case you still want 5399 the build to succeed instead of failing as a result of the package 5400 not being found. To accomplish this, assuming the package for the 5401 module was called ``kernel-module-examplewifi``, you would use the 5402 following in the ``.conf`` file for the machine:: 5403 5404 MACHINE_EXTRA_RRECOMMENDS += "kernel-module-examplewifi" 5405 5406 :term:`MACHINE_FEATURES` 5407 Specifies the list of hardware features the 5408 :term:`MACHINE` is capable of supporting. For related 5409 information on enabling features, see the 5410 :term:`DISTRO_FEATURES`, 5411 :term:`COMBINED_FEATURES`, and 5412 :term:`IMAGE_FEATURES` variables. 5413 5414 For a list of hardware features supported by the Yocto Project as 5415 shipped, see the ":ref:`ref-features-machine`" section. 5416 5417 :term:`MACHINE_FEATURES_BACKFILL` 5418 A list of space-separated features to be added to 5419 :term:`MACHINE_FEATURES` if not also present in 5420 :term:`MACHINE_FEATURES_BACKFILL_CONSIDERED`. 5421 5422 This variable is set in the ``meta/conf/bitbake.conf`` file. It is not 5423 intended to be user-configurable. It is best to just reference the 5424 variable to see which machine features are being 5425 :ref:`backfilled <ref-features-backfill>` for all machine configurations. 5426 5427 :term:`MACHINE_FEATURES_BACKFILL_CONSIDERED` 5428 A list of space-separated features from :term:`MACHINE_FEATURES_BACKFILL` 5429 that should not be :ref:`backfilled <ref-features-backfill>` (i.e. added 5430 to :term:`MACHINE_FEATURES`) during the build. 5431 5432 This corresponds to an opt-out mechanism. When new default machine 5433 features are introduced, machine definition maintainers can review 5434 (`consider`) them and decide to exclude them from the 5435 :ref:`backfilled <ref-features-backfill>` features. Therefore, the 5436 combination of :term:`MACHINE_FEATURES_BACKFILL` and 5437 :term:`MACHINE_FEATURES_BACKFILL_CONSIDERED` makes it possible to 5438 add new default features without breaking existing machine definitions. 5439 5440 :term:`MACHINEOVERRIDES` 5441 A colon-separated list of overrides that apply to the current 5442 machine. By default, this list includes the value of 5443 :term:`MACHINE`. 5444 5445 You can extend :term:`MACHINEOVERRIDES` to add extra overrides that 5446 should apply to a machine. For example, all machines emulated in QEMU 5447 (e.g. ``qemuarm``, ``qemux86``, and so forth) include a file named 5448 ``meta/conf/machine/include/qemu.inc`` that prepends the following 5449 override to :term:`MACHINEOVERRIDES`:: 5450 5451 MACHINEOVERRIDES =. "qemuall:" 5452 5453 This 5454 override allows variables to be overridden for all machines emulated 5455 in QEMU, like in the following example from the ``connman-conf`` 5456 recipe:: 5457 5458 SRC_URI:append:qemuall = " file://wired.config \ 5459 file://wired-setup \ 5460 " 5461 5462 The underlying mechanism behind 5463 :term:`MACHINEOVERRIDES` is simply that it is included in the default 5464 value of :term:`OVERRIDES`. 5465 5466 :term:`MAINTAINER` 5467 The email address of the distribution maintainer. 5468 5469 :term:`MESON_BUILDTYPE` 5470 Value of the Meson ``--buildtype`` argument used by the 5471 :ref:`ref-classes-meson` class. It defaults to ``debug`` if 5472 :term:`DEBUG_BUILD` is set to "1", and ``plain`` otherwise. 5473 5474 See `Meson build options <https://mesonbuild.com/Builtin-options.html>`__ 5475 for the values you could set in a recipe. Values such as ``plain``, 5476 ``debug``, ``debugoptimized``, ``release`` and ``minsize`` allow 5477 you to specify the inclusion of debugging symbols and the compiler 5478 optimizations (none, performance or size). 5479 5480 :term:`MESON_TARGET` 5481 A variable for the :ref:`ref-classes-meson` class, allowing to choose 5482 a Meson target to build in :ref:`ref-tasks-compile`. Otherwise, the 5483 default targets are built. 5484 5485 :term:`METADATA_BRANCH` 5486 The branch currently checked out for the OpenEmbedded-Core layer (path 5487 determined by :term:`COREBASE`). 5488 5489 :term:`METADATA_REVISION` 5490 The revision currently checked out for the OpenEmbedded-Core layer (path 5491 determined by :term:`COREBASE`). 5492 5493 :term:`MIME_XDG_PACKAGES` 5494 The current implementation of the :ref:`ref-classes-mime-xdg` 5495 class cannot detect ``.desktop`` files installed through absolute 5496 symbolic links. Use this setting to make the class create post-install 5497 and post-remove scripts for these packages anyway, to invoke the 5498 ``update-destop-database`` command. 5499 5500 :term:`MIRRORS` 5501 Specifies additional paths from which the OpenEmbedded build system 5502 gets source code. When the build system searches for source code, it 5503 first tries the local download directory. If that location fails, the 5504 build system tries locations defined by 5505 :term:`PREMIRRORS`, the upstream source, and then 5506 locations specified by :term:`MIRRORS` in that order. 5507 5508 The default value for :term:`MIRRORS` is defined in the 5509 ``meta/classes-global/mirrors.bbclass`` file in the core metadata layer. 5510 5511 :term:`MLPREFIX` 5512 Specifies a prefix has been added to :term:`PN` to create a 5513 special version of a recipe or package (i.e. a Multilib version). The 5514 variable is used in places where the prefix needs to be added to or 5515 removed from a name (e.g. the :term:`BPN` variable). 5516 :term:`MLPREFIX` gets set when a prefix has been added to :term:`PN`. 5517 5518 .. note:: 5519 5520 The "ML" in :term:`MLPREFIX` stands for "MultiLib". This representation 5521 is historical and comes from a time when ":ref:`ref-classes-nativesdk`" 5522 was a suffix rather than a prefix on the recipe name. When 5523 ":ref:`ref-classes-nativesdk`" was turned into a prefix, it made sense 5524 to set :term:`MLPREFIX` for it as well. 5525 5526 To help understand when :term:`MLPREFIX` might be needed, consider when 5527 :term:`BBCLASSEXTEND` is used to provide a :ref:`ref-classes-nativesdk` 5528 version of a recipe in addition to the target version. If that recipe 5529 declares build-time dependencies on tasks in other recipes by using 5530 :term:`DEPENDS`, then a dependency on "foo" will automatically get 5531 rewritten to a dependency on "nativesdk-foo". However, dependencies like 5532 the following will not get rewritten automatically:: 5533 5534 do_foo[depends] += "recipe:do_foo" 5535 5536 If you want such a dependency to also get transformed, you can do the 5537 following:: 5538 5539 do_foo[depends] += "${MLPREFIX}recipe:do_foo" 5540 5541 :term:`module_autoload` 5542 This variable has been replaced by the :term:`KERNEL_MODULE_AUTOLOAD` 5543 variable. You should replace all occurrences of :term:`module_autoload` 5544 with additions to :term:`KERNEL_MODULE_AUTOLOAD`, for example:: 5545 5546 module_autoload_rfcomm = "rfcomm" 5547 5548 should now be replaced with:: 5549 5550 KERNEL_MODULE_AUTOLOAD += "rfcomm" 5551 5552 See the :term:`KERNEL_MODULE_AUTOLOAD` variable for more information. 5553 5554 :term:`module_conf` 5555 Specifies `modprobe.d <https://linux.die.net/man/5/modprobe.d>`__ 5556 syntax lines for inclusion in the ``/etc/modprobe.d/modname.conf`` 5557 file. 5558 5559 You can use this variable anywhere that it can be recognized by the 5560 kernel recipe or out-of-tree kernel module recipe (e.g. a machine 5561 configuration file, a distribution configuration file, an append file 5562 for the recipe, or the recipe itself). If you use this variable, you 5563 must also be sure to list the module name in the 5564 :term:`KERNEL_MODULE_PROBECONF` 5565 variable. 5566 5567 Here is the general syntax:: 5568 5569 module_conf_module_name = "modprobe.d-syntax" 5570 5571 You must use the kernel module name override. 5572 5573 Run ``man modprobe.d`` in the shell to find out more information on 5574 the exact syntax you want to provide with :term:`module_conf`. 5575 5576 Including :term:`module_conf` causes the OpenEmbedded build system to 5577 populate the ``/etc/modprobe.d/modname.conf`` file with 5578 ``modprobe.d`` syntax lines. Here is an example that adds the options 5579 ``arg1`` and ``arg2`` to a module named ``mymodule``:: 5580 5581 module_conf_mymodule = "options mymodule arg1=val1 arg2=val2" 5582 5583 For information on how to specify kernel modules to auto-load on 5584 boot, see the :term:`KERNEL_MODULE_AUTOLOAD` variable. 5585 5586 :term:`MODULE_TARBALL_DEPLOY` 5587 Controls creation of the ``modules-*.tgz`` file. Set this variable to 5588 "0" to disable creation of this file, which contains all of the 5589 kernel modules resulting from a kernel build. 5590 5591 :term:`MODULE_TARBALL_LINK_NAME` 5592 The link name of the kernel module tarball. This variable is set in 5593 the ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as follows:: 5594 5595 MODULE_TARBALL_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}" 5596 5597 The value 5598 of the ``KERNEL_ARTIFACT_LINK_NAME`` variable, which is set in the 5599 same file, has the following value:: 5600 5601 KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}" 5602 5603 See the :term:`MACHINE` variable for additional information. 5604 5605 :term:`MODULE_TARBALL_NAME` 5606 The base name of the kernel module tarball. This variable is set in 5607 the ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as follows:: 5608 5609 MODULE_TARBALL_NAME ?= "${KERNEL_ARTIFACT_NAME}" 5610 5611 See :term:`KERNEL_ARTIFACT_NAME` for additional information. 5612 5613 :term:`MOUNT_BASE` 5614 On non-systemd systems (where ``udev-extraconf`` is being used), 5615 specifies the base directory for auto-mounting filesystems. The 5616 default value is "/run/media". 5617 5618 :term:`MULTIMACH_TARGET_SYS` 5619 Uniquely identifies the type of the target system for which packages 5620 are being built. This variable allows output for different types of 5621 target systems to be put into different subdirectories of the same 5622 output directory. 5623 5624 The default value of this variable is:: 5625 5626 ${PACKAGE_ARCH}${TARGET_VENDOR}-${TARGET_OS} 5627 5628 Some classes (e.g. :ref:`ref-classes-cross-canadian`) modify the 5629 :term:`MULTIMACH_TARGET_SYS` value. 5630 5631 See the :term:`STAMP` variable for an example. See the 5632 :term:`STAGING_DIR_TARGET` variable for more information. 5633 5634 :term:`NATIVELSBSTRING` 5635 A string identifying the host distribution. Strings consist of the 5636 host distributor ID followed by the release, as reported by the 5637 ``lsb_release`` tool or as read from ``/etc/lsb-release``. For 5638 example, when running a build on Ubuntu 12.10, the value is 5639 "Ubuntu-12.10". If this information is unable to be determined, the 5640 value resolves to "Unknown". 5641 5642 This variable is used by default to isolate native shared state 5643 packages for different distributions (e.g. to avoid problems with 5644 ``glibc`` version incompatibilities). Additionally, the variable is 5645 checked against 5646 :term:`SANITY_TESTED_DISTROS` if that 5647 variable is set. 5648 5649 :term:`NM` 5650 The minimal command and arguments to run ``nm``. 5651 5652 :term:`NO_GENERIC_LICENSE` 5653 Avoids QA errors when you use a non-common, non-CLOSED license in a 5654 recipe. There are packages, such as the linux-firmware package, with many 5655 licenses that are not in any way common. Also, new licenses are added 5656 occasionally to avoid introducing a lot of common license files, 5657 which are only applicable to a specific package. 5658 :term:`NO_GENERIC_LICENSE` is used to allow copying a license that does 5659 not exist in common licenses. 5660 5661 The following example shows how to add :term:`NO_GENERIC_LICENSE` to a 5662 recipe:: 5663 5664 NO_GENERIC_LICENSE[license_name] = "license_file_in_fetched_source" 5665 5666 Here is an example that 5667 uses the ``LICENSE.Abilis.txt`` file as the license from the fetched 5668 source:: 5669 5670 NO_GENERIC_LICENSE[Firmware-Abilis] = "LICENSE.Abilis.txt" 5671 5672 :term:`NO_RECOMMENDATIONS` 5673 Prevents installation of all "recommended-only" packages. 5674 Recommended-only packages are packages installed only through the 5675 :term:`RRECOMMENDS` variable). Setting the 5676 :term:`NO_RECOMMENDATIONS` variable to "1" turns this feature on:: 5677 5678 NO_RECOMMENDATIONS = "1" 5679 5680 You can set this variable globally in your ``local.conf`` file or you 5681 can attach it to a specific image recipe by using the recipe name 5682 override:: 5683 5684 NO_RECOMMENDATIONS:pn-target_image = "1" 5685 5686 It is important to realize that if you choose to not install packages 5687 using this variable and some other packages are dependent on them 5688 (i.e. listed in a recipe's :term:`RDEPENDS` 5689 variable), the OpenEmbedded build system ignores your request and 5690 will install the packages to avoid dependency errors. 5691 5692 .. note:: 5693 5694 Some recommended packages might be required for certain system 5695 functionality, such as kernel modules. It is up to you to add 5696 packages with the :term:`IMAGE_INSTALL` variable. 5697 5698 This variable is only supported when using the IPK and RPM 5699 packaging backends. DEB is not supported. 5700 5701 See the :term:`BAD_RECOMMENDATIONS` and 5702 the :term:`PACKAGE_EXCLUDE` variables for 5703 related information. 5704 5705 :term:`NOAUTOPACKAGEDEBUG` 5706 Disables auto package from splitting ``.debug`` files. If a recipe 5707 requires ``FILES:${PN}-dbg`` to be set manually, the 5708 :term:`NOAUTOPACKAGEDEBUG` can be defined allowing you to define the 5709 content of the debug package. For example:: 5710 5711 NOAUTOPACKAGEDEBUG = "1" 5712 FILES:${PN}-dev = "${includedir}/${QT_DIR_NAME}/Qt/*" 5713 FILES:${PN}-dbg = "/usr/src/debug/" 5714 FILES:${QT_BASE_NAME}-demos-doc = "${docdir}/${QT_DIR_NAME}/qch/qt.qch" 5715 5716 :term:`NON_MULTILIB_RECIPES` 5717 A list of recipes that should not be built for multilib. OE-Core's 5718 ``multilib.conf`` file defines a reasonable starting point for this 5719 list with:: 5720 5721 NON_MULTILIB_RECIPES = "grub grub-efi make-mod-scripts ovmf u-boot" 5722 5723 :term:`NVDCVE_API_KEY` 5724 The NVD API key used to retrieve data from the CVE database when 5725 using :ref:`ref-classes-cve-check`. 5726 5727 By default, no API key is used, which results in larger delays between API 5728 requests and limits the number of queries to the public rate limits posted 5729 at the `NVD developer's page <https://nvd.nist.gov/developers/start-here>`__. 5730 5731 NVD API keys can be requested through the 5732 `Request an API Key <https://nvd.nist.gov/developers/request-an-api-key>`__ 5733 page. You can set this variable to the NVD API key in your ``local.conf`` file. 5734 Example:: 5735 5736 NVDCVE_API_KEY = "fe753&7a2-1427-347d-23ff-b2e2b7ca5f3" 5737 5738 :term:`OBJCOPY` 5739 The minimal command and arguments to run ``objcopy``. 5740 5741 :term:`OBJDUMP` 5742 The minimal command and arguments to run ``objdump``. 5743 5744 :term:`OE_BINCONFIG_EXTRA_MANGLE` 5745 When inheriting the :ref:`ref-classes-binconfig` class, 5746 this variable specifies additional arguments passed to the "sed" 5747 command. The sed command alters any paths in configuration scripts 5748 that have been set up during compilation. Inheriting this class 5749 results in all paths in these scripts being changed to point into the 5750 ``sysroots/`` directory so that all builds that use the script will 5751 use the correct directories for the cross compiling layout. 5752 5753 See the ``meta/classes-recipe/binconfig.bbclass`` in the 5754 :term:`Source Directory` for details on how this class 5755 applies these additional sed command arguments. 5756 5757 :term:`OECMAKE_GENERATOR` 5758 A variable for the :ref:`ref-classes-cmake` class, allowing to choose 5759 which back-end will be generated by CMake to build an application. 5760 5761 By default, this variable is set to ``Ninja``, which is faster than GNU 5762 make, but if building is broken with Ninja, a recipe can use this 5763 variable to use GNU make instead:: 5764 5765 OECMAKE_GENERATOR = "Unix Makefiles" 5766 5767 :term:`OE_IMPORTS` 5768 An internal variable used to tell the OpenEmbedded build system what 5769 Python modules to import for every Python function run by the system. 5770 5771 .. note:: 5772 5773 Do not set this variable. It is for internal use only. 5774 5775 :term:`OE_INIT_ENV_SCRIPT` 5776 The name of the build environment setup script for the purposes of 5777 setting up the environment within the extensible SDK. The default 5778 value is "oe-init-build-env". 5779 5780 If you use a custom script to set up your build environment, set the 5781 :term:`OE_INIT_ENV_SCRIPT` variable to its name. 5782 5783 :term:`OE_TERMINAL` 5784 Controls how the OpenEmbedded build system spawns interactive 5785 terminals on the host development system (e.g. using the BitBake 5786 command with the ``-c devshell`` command-line option). For more 5787 information, see the ":ref:`dev-manual/development-shell:using a development shell`" section in 5788 the Yocto Project Development Tasks Manual. 5789 5790 You can use the following values for the :term:`OE_TERMINAL` variable: 5791 5792 - auto 5793 - gnome 5794 - xfce 5795 - rxvt 5796 - screen 5797 - konsole 5798 - none 5799 5800 :term:`OEROOT` 5801 The directory from which the top-level build environment setup script 5802 is sourced. The Yocto Project provides a top-level build environment 5803 setup script: :ref:`structure-core-script`. When you run this 5804 script, the :term:`OEROOT` variable resolves to the directory that 5805 contains the script. 5806 5807 For additional information on how this variable is used, see the 5808 initialization script. 5809 5810 :term:`OEQA_REPRODUCIBLE_TEST_PACKAGE` 5811 Set the package manager(s) for build reproducibility testing. 5812 See :yocto_git:`reproducible.py </poky/tree/meta/lib/oeqa/selftest/cases/reproducible.py>` 5813 and :doc:`/test-manual/reproducible-builds`. 5814 5815 :term:`OEQA_REPRODUCIBLE_TEST_TARGET` 5816 Set build target for build reproducibility testing. By default 5817 all available recipes are compiled with "bitbake world", see also :term:`EXCLUDE_FROM_WORLD` 5818 and :doc:`/test-manual/reproducible-builds`. 5819 5820 :term:`OEQA_REPRODUCIBLE_TEST_SSTATE_TARGETS` 5821 Set build targets which can be rebuilt using :ref:`shared state <overview-manual/concepts:shared state cache>` 5822 when running build reproducibility tests. See :doc:`/test-manual/reproducible-builds`. 5823 5824 :term:`OLDEST_KERNEL` 5825 Declares the oldest version of the Linux kernel that the produced 5826 binaries must support. This variable is passed into the build of the 5827 Embedded GNU C Library (``glibc``). 5828 5829 The default for this variable comes from the 5830 ``meta/conf/bitbake.conf`` configuration file. You can override this 5831 default by setting the variable in a custom distribution 5832 configuration file. 5833 5834 :term:`OPKG_MAKE_INDEX_EXTRA_PARAMS` 5835 Specifies extra parameters for the ``opkg-make-index`` command. 5836 5837 :term:`OPKGBUILDCMD` 5838 The variable :term:`OPKGBUILDCMD` specifies the command used to build opkg 5839 packages when using the :ref:`ref-classes-package_ipk` class. It is 5840 defined in :ref:`ref-classes-package_ipk` as:: 5841 5842 OPKGBUILDCMD ??= 'opkg-build -Z zstd -a "${ZSTD_DEFAULTS}"' 5843 5844 :term:`OVERLAYFS_ETC_DEVICE` 5845 When the :ref:`ref-classes-overlayfs-etc` class is 5846 inherited, specifies the device to be mounted for the read/write 5847 layer of ``/etc``. There is no default, so you must set this if you 5848 wish to enable :ref:`ref-classes-overlayfs-etc`, for 5849 example, assuming ``/dev/mmcblk0p2`` was the desired device:: 5850 5851 OVERLAYFS_ETC_DEVICE = "/dev/mmcblk0p2" 5852 5853 :term:`OVERLAYFS_ETC_EXPOSE_LOWER` 5854 When the :ref:`ref-classes-overlayfs-etc` class is 5855 inherited, if set to "1" then a read-only access to the original 5856 ``/etc`` content will be provided as a ``lower/`` subdirectory of 5857 :term:`OVERLAYFS_ETC_MOUNT_POINT`. The default value is "0". 5858 5859 :term:`OVERLAYFS_ETC_FSTYPE` 5860 When the :ref:`ref-classes-overlayfs-etc` class is 5861 inherited, specifies the file system type for the read/write 5862 layer of ``/etc``. There is no default, so you must set this if you 5863 wish to enable :ref:`ref-classes-overlayfs-etc`, 5864 for example, assuming the file system is ext4:: 5865 5866 OVERLAYFS_ETC_FSTYPE = "ext4" 5867 5868 :term:`OVERLAYFS_ETC_MOUNT_OPTIONS` 5869 When the :ref:`ref-classes-overlayfs-etc` class is 5870 inherited, specifies the mount options for the read-write layer. 5871 The default value is "defaults". 5872 5873 :term:`OVERLAYFS_ETC_MOUNT_POINT` 5874 When the :ref:`ref-classes-overlayfs-etc` class is 5875 inherited, specifies the parent mount path for the filesystem layers. 5876 There is no default, so you must set this if you wish to enable 5877 :ref:`ref-classes-overlayfs-etc`, for example if the desired path is 5878 "/data":: 5879 5880 OVERLAYFS_ETC_MOUNT_POINT = "/data" 5881 5882 :term:`OVERLAYFS_ETC_USE_ORIG_INIT_NAME` 5883 When the :ref:`ref-classes-overlayfs-etc` class is inherited, controls 5884 how the generated init will be named. For more information, see the 5885 :ref:`ref-classes-overlayfs-etc` class documentation. The default value 5886 is "1". 5887 5888 :term:`OVERLAYFS_MOUNT_POINT` 5889 When inheriting the :ref:`ref-classes-overlayfs` class, 5890 specifies mount point(s) to be used. For example:: 5891 5892 OVERLAYFS_MOUNT_POINT[data] = "/data" 5893 5894 The assumes you have a ``data.mount`` systemd unit defined elsewhere in 5895 your BSP (e.g. in ``systemd-machine-units`` recipe) and it is installed 5896 into the image. For more information see :ref:`ref-classes-overlayfs`. 5897 5898 .. note:: 5899 5900 Although the :ref:`ref-classes-overlayfs` class is 5901 inherited by individual recipes, :term:`OVERLAYFS_MOUNT_POINT` 5902 should be set in your machine configuration. 5903 5904 :term:`OVERLAYFS_QA_SKIP` 5905 When inheriting the :ref:`ref-classes-overlayfs` class, 5906 provides the ability to disable QA checks for particular overlayfs 5907 mounts. For example:: 5908 5909 OVERLAYFS_QA_SKIP[data] = "mount-configured" 5910 5911 .. note:: 5912 5913 Although the :ref:`ref-classes-overlayfs` class is 5914 inherited by individual recipes, :term:`OVERLAYFS_QA_SKIP` 5915 should be set in your machine configuration. 5916 5917 :term:`OVERLAYFS_WRITABLE_PATHS` 5918 When inheriting the :ref:`ref-classes-overlayfs` class, 5919 specifies writable paths used at runtime for the recipe. For 5920 example:: 5921 5922 OVERLAYFS_WRITABLE_PATHS[data] = "/usr/share/my-custom-application" 5923 5924 :term:`OVERRIDES` 5925 A colon-separated list of overrides that currently apply. Overrides 5926 are a BitBake mechanism that allows variables to be selectively 5927 overridden at the end of parsing. The set of overrides in 5928 :term:`OVERRIDES` represents the "state" during building, which includes 5929 the current recipe being built, the machine for which it is being 5930 built, and so forth. 5931 5932 As an example, if the string "an-override" appears as an element in 5933 the colon-separated list in :term:`OVERRIDES`, then the following 5934 assignment will override ``FOO`` with the value "overridden" at the 5935 end of parsing:: 5936 5937 FOO:an-override = "overridden" 5938 5939 See the 5940 ":ref:`bitbake-user-manual/bitbake-user-manual-metadata:conditional syntax (overrides)`" 5941 section in the BitBake User Manual for more information on the 5942 overrides mechanism. 5943 5944 The default value of :term:`OVERRIDES` includes the values of the 5945 :term:`CLASSOVERRIDE`, 5946 :term:`MACHINEOVERRIDES`, and 5947 :term:`DISTROOVERRIDES` variables. Another 5948 important override included by default is ``pn-${PN}``. This override 5949 allows variables to be set for a single recipe within configuration 5950 (``.conf``) files. Here is an example:: 5951 5952 FOO:pn-myrecipe = "myrecipe-specific value" 5953 5954 .. note:: 5955 5956 An easy way to see what overrides apply is to search for :term:`OVERRIDES` 5957 in the output of the ``bitbake -e`` command. See the 5958 ":ref:`dev-manual/debugging:viewing variable values`" section in the Yocto 5959 Project Development Tasks Manual for more information. 5960 5961 :term:`P` 5962 The recipe name and version. :term:`P` is comprised of the following:: 5963 5964 ${PN}-${PV} 5965 5966 :term:`P4DIR` 5967 See :term:`bitbake:P4DIR` in the BitBake manual. 5968 5969 :term:`PACKAGE_ADD_METADATA` 5970 This variable defines additional metadata to add to packages. 5971 5972 You may find you need to inject additional metadata into packages. 5973 This variable allows you to do that by setting the injected data as 5974 the value. Multiple fields can be added by splitting the content with 5975 the literal separator "\n". 5976 5977 The suffixes '_IPK', '_DEB', or '_RPM' can be applied to the variable 5978 to do package type specific settings. It can also be made package 5979 specific by using the package name as a suffix. 5980 5981 You can find out more about applying this variable in the 5982 ":ref:`dev-manual/packages:adding custom metadata to packages`" 5983 section in the Yocto Project Development Tasks Manual. 5984 5985 :term:`PACKAGE_ARCH` 5986 The architecture of the resulting package or packages. 5987 5988 By default, the value of this variable is set to 5989 :term:`TUNE_PKGARCH` when building for the 5990 target, :term:`BUILD_ARCH` when building for the 5991 build host, and "${SDK_ARCH}-${SDKPKGSUFFIX}" when building for the 5992 SDK. 5993 5994 .. note:: 5995 5996 See :term:`SDK_ARCH` for more information. 5997 5998 However, if your recipe's output packages are built specific to the 5999 target machine rather than generally for the architecture of the 6000 machine, you should set :term:`PACKAGE_ARCH` to the value of 6001 :term:`MACHINE_ARCH` in the recipe as follows:: 6002 6003 PACKAGE_ARCH = "${MACHINE_ARCH}" 6004 6005 :term:`PACKAGE_ARCHS` 6006 Specifies a list of architectures compatible with the target machine. 6007 This variable is set automatically and should not normally be 6008 hand-edited. Entries are separated using spaces and listed in order 6009 of priority. The default value for :term:`PACKAGE_ARCHS` is "all any 6010 noarch ${PACKAGE_EXTRA_ARCHS} ${MACHINE_ARCH}". 6011 6012 :term:`PACKAGE_BEFORE_PN` 6013 Enables easily adding packages to :term:`PACKAGES` before ``${PN}`` so 6014 that those added packages can pick up files that would normally be 6015 included in the default package. 6016 6017 :term:`PACKAGE_CLASSES` 6018 This variable, which is set in the ``local.conf`` configuration file 6019 found in the ``conf`` folder of the 6020 :term:`Build Directory`, specifies the package manager the 6021 OpenEmbedded build system uses when packaging data. 6022 6023 You can provide one or more of the following arguments for the 6024 variable:: 6025 6026 PACKAGE_CLASSES ?= "package_rpm package_deb package_ipk" 6027 6028 The build system uses only the first argument in the list as the 6029 package manager when creating your image or SDK. However, packages 6030 will be created using any additional packaging classes you specify. 6031 For example, if you use the following in your ``local.conf`` file:: 6032 6033 PACKAGE_CLASSES ?= "package_ipk" 6034 6035 The OpenEmbedded build system uses 6036 the IPK package manager to create your image or SDK. 6037 6038 For information on packaging and build performance effects as a 6039 result of the package manager in use, see the 6040 ":ref:`ref-classes-package`" section. 6041 6042 :term:`PACKAGE_DEBUG_SPLIT_STYLE` 6043 Determines how to split up and package debug and source information 6044 when creating debugging packages to be used with the GNU Project 6045 Debugger (GDB). In general, based on the value of this variable, 6046 you can combine the source and debug info in a single package, 6047 you can break out the source into a separate package that can be 6048 installed independently, or you can choose to not have the source 6049 packaged at all. 6050 6051 The possible values of :term:`PACKAGE_DEBUG_SPLIT_STYLE` variable: 6052 6053 - "``.debug``": All debugging and source info is placed in a single 6054 ``*-dbg`` package; debug symbol files are placed next to the 6055 binary in a ``.debug`` directory so that, if a binary is installed 6056 into ``/bin``, the corresponding debug symbol file is installed 6057 in ``/bin/.debug``. Source files are installed in the same ``*-dbg`` 6058 package under ``/usr/src/debug``. 6059 6060 - "``debug-file-directory``": As above, all debugging and source info 6061 is placed in a single ``*-dbg`` package; debug symbol files are 6062 placed entirely under the directory ``/usr/lib/debug`` and separated 6063 by the path from where the binary is installed, so that if a binary 6064 is installed in ``/bin``, the corresponding debug symbols are installed 6065 in ``/usr/lib/debug/bin``, and so on. As above, source is installed 6066 in the same package under ``/usr/src/debug``. 6067 6068 - "``debug-with-srcpkg``": Debugging info is placed in the standard 6069 ``*-dbg`` package as with the ``.debug`` value, while source is 6070 placed in a separate ``*-src`` package, which can be installed 6071 independently. This is the default setting for this variable, 6072 as defined in Poky's ``bitbake.conf`` file. 6073 6074 - "``debug-without-src``": The same behavior as with the ``.debug`` 6075 setting, but no source is packaged at all. 6076 6077 .. note:: 6078 6079 Much of the above package splitting can be overridden via 6080 use of the :term:`INHIBIT_PACKAGE_DEBUG_SPLIT` variable. 6081 6082 You can find out more about debugging using GDB by reading the 6083 ":ref:`dev-manual/debugging:debugging with the gnu project debugger (gdb) remotely`" section 6084 in the Yocto Project Development Tasks Manual. 6085 6086 :term:`PACKAGE_EXCLUDE` 6087 Lists packages that should not be installed into an image. For 6088 example:: 6089 6090 PACKAGE_EXCLUDE = "package_name package_name package_name ..." 6091 6092 You can set this variable globally in your ``local.conf`` file or you 6093 can attach it to a specific image recipe by using the recipe name 6094 override:: 6095 6096 PACKAGE_EXCLUDE:pn-target_image = "package_name" 6097 6098 If you choose to not install a package using this variable and some 6099 other package is dependent on it (i.e. listed in a recipe's 6100 :term:`RDEPENDS` variable), the OpenEmbedded build 6101 system generates a fatal installation error. Because the build system 6102 halts the process with a fatal error, you can use the variable with 6103 an iterative development process to remove specific components from a 6104 system. 6105 6106 This variable is supported only when using the IPK and RPM 6107 packaging backends. DEB is not supported. 6108 6109 See the :term:`NO_RECOMMENDATIONS` and the 6110 :term:`BAD_RECOMMENDATIONS` variables for 6111 related information. 6112 6113 :term:`PACKAGE_EXCLUDE_COMPLEMENTARY` 6114 Prevents specific packages from being installed when you are 6115 installing complementary packages. 6116 6117 You might find that you want to prevent installing certain packages 6118 when you are installing complementary packages. For example, if you 6119 are using :term:`IMAGE_FEATURES` to install 6120 ``dev-pkgs``, you might not want to install all packages from a 6121 particular multilib. If you find yourself in this situation, you can 6122 use the :term:`PACKAGE_EXCLUDE_COMPLEMENTARY` variable to specify regular 6123 expressions to match the packages you want to exclude. 6124 6125 :term:`PACKAGE_EXTRA_ARCHS` 6126 Specifies the list of architectures compatible with the device CPU. 6127 This variable is useful when you build for several different devices 6128 that use miscellaneous processors such as XScale and ARM926-EJS. 6129 6130 :term:`PACKAGE_FEED_ARCHS` 6131 Optionally specifies the package architectures used as part of the 6132 package feed URIs during the build. When used, the 6133 :term:`PACKAGE_FEED_ARCHS` variable is appended to the final package feed 6134 URI, which is constructed using the 6135 :term:`PACKAGE_FEED_URIS` and 6136 :term:`PACKAGE_FEED_BASE_PATHS` 6137 variables. 6138 6139 .. note:: 6140 6141 You can use the :term:`PACKAGE_FEED_ARCHS` 6142 variable to allow specific package architectures. If you do 6143 not need to allow specific architectures, which is a common 6144 case, you can omit this variable. Omitting the variable results in 6145 all available architectures for the current machine being included 6146 into remote package feeds. 6147 6148 Consider the following example where the :term:`PACKAGE_FEED_URIS`, 6149 :term:`PACKAGE_FEED_BASE_PATHS`, and :term:`PACKAGE_FEED_ARCHS` variables are 6150 defined in your ``local.conf`` file:: 6151 6152 PACKAGE_FEED_URIS = "https://example.com/packagerepos/release \ 6153 https://example.com/packagerepos/updates" 6154 PACKAGE_FEED_BASE_PATHS = "rpm rpm-dev" 6155 PACKAGE_FEED_ARCHS = "all core2-64" 6156 6157 Given these settings, the resulting package feeds are as follows: 6158 6159 .. code-block:: none 6160 6161 https://example.com/packagerepos/release/rpm/all 6162 https://example.com/packagerepos/release/rpm/core2-64 6163 https://example.com/packagerepos/release/rpm-dev/all 6164 https://example.com/packagerepos/release/rpm-dev/core2-64 6165 https://example.com/packagerepos/updates/rpm/all 6166 https://example.com/packagerepos/updates/rpm/core2-64 6167 https://example.com/packagerepos/updates/rpm-dev/all 6168 https://example.com/packagerepos/updates/rpm-dev/core2-64 6169 6170 :term:`PACKAGE_FEED_BASE_PATHS` 6171 Specifies the base path used when constructing package feed URIs. The 6172 :term:`PACKAGE_FEED_BASE_PATHS` variable makes up the middle portion of a 6173 package feed URI used by the OpenEmbedded build system. The base path 6174 lies between the :term:`PACKAGE_FEED_URIS` 6175 and :term:`PACKAGE_FEED_ARCHS` variables. 6176 6177 Consider the following example where the :term:`PACKAGE_FEED_URIS`, 6178 :term:`PACKAGE_FEED_BASE_PATHS`, and :term:`PACKAGE_FEED_ARCHS` variables are 6179 defined in your ``local.conf`` file:: 6180 6181 PACKAGE_FEED_URIS = "https://example.com/packagerepos/release \ 6182 https://example.com/packagerepos/updates" 6183 PACKAGE_FEED_BASE_PATHS = "rpm rpm-dev" 6184 PACKAGE_FEED_ARCHS = "all core2-64" 6185 6186 Given these settings, the resulting package feeds are as follows: 6187 6188 .. code-block:: none 6189 6190 https://example.com/packagerepos/release/rpm/all 6191 https://example.com/packagerepos/release/rpm/core2-64 6192 https://example.com/packagerepos/release/rpm-dev/all 6193 https://example.com/packagerepos/release/rpm-dev/core2-64 6194 https://example.com/packagerepos/updates/rpm/all 6195 https://example.com/packagerepos/updates/rpm/core2-64 6196 https://example.com/packagerepos/updates/rpm-dev/all 6197 https://example.com/packagerepos/updates/rpm-dev/core2-64 6198 6199 :term:`PACKAGE_FEED_URIS` 6200 Specifies the front portion of the package feed URI used by the 6201 OpenEmbedded build system. Each final package feed URI is comprised 6202 of :term:`PACKAGE_FEED_URIS`, 6203 :term:`PACKAGE_FEED_BASE_PATHS`, and 6204 :term:`PACKAGE_FEED_ARCHS` variables. 6205 6206 Consider the following example where the :term:`PACKAGE_FEED_URIS`, 6207 :term:`PACKAGE_FEED_BASE_PATHS`, and :term:`PACKAGE_FEED_ARCHS` variables are 6208 defined in your ``local.conf`` file:: 6209 6210 PACKAGE_FEED_URIS = "https://example.com/packagerepos/release \ 6211 https://example.com/packagerepos/updates" 6212 PACKAGE_FEED_BASE_PATHS = "rpm rpm-dev" 6213 PACKAGE_FEED_ARCHS = "all core2-64" 6214 6215 Given these settings, the resulting package feeds are as follows: 6216 6217 .. code-block:: none 6218 6219 https://example.com/packagerepos/release/rpm/all 6220 https://example.com/packagerepos/release/rpm/core2-64 6221 https://example.com/packagerepos/release/rpm-dev/all 6222 https://example.com/packagerepos/release/rpm-dev/core2-64 6223 https://example.com/packagerepos/updates/rpm/all 6224 https://example.com/packagerepos/updates/rpm/core2-64 6225 https://example.com/packagerepos/updates/rpm-dev/all 6226 https://example.com/packagerepos/updates/rpm-dev/core2-64 6227 6228 :term:`PACKAGE_INSTALL` 6229 The final list of packages passed to the package manager for 6230 installation into the image. 6231 6232 Because the package manager controls actual installation of all 6233 packages, the list of packages passed using :term:`PACKAGE_INSTALL` is 6234 not the final list of packages that are actually installed. This 6235 variable is internal to the image construction code. Consequently, in 6236 general, you should use the 6237 :term:`IMAGE_INSTALL` variable to specify 6238 packages for installation. The exception to this is when working with 6239 the :ref:`core-image-minimal-initramfs <ref-manual/images:images>` 6240 image. When working with an initial RAM filesystem (:term:`Initramfs`) image, 6241 use the :term:`PACKAGE_INSTALL` variable. For information on creating an 6242 :term:`Initramfs`, see the ":ref:`dev-manual/building:building an initial ram filesystem (Initramfs) image`" section 6243 in the Yocto Project Development Tasks Manual. 6244 6245 :term:`PACKAGE_INSTALL_ATTEMPTONLY` 6246 Specifies a list of packages the OpenEmbedded build system attempts 6247 to install when creating an image. If a listed package fails to 6248 install, the build system does not generate an error. This variable 6249 is generally not user-defined. 6250 6251 :term:`PACKAGE_PREPROCESS_FUNCS` 6252 Specifies a list of functions run to pre-process the 6253 :term:`PKGD` directory prior to splitting the files out 6254 to individual packages. 6255 6256 :term:`PACKAGE_WRITE_DEPS` 6257 Specifies a list of dependencies for post-installation and 6258 pre-installation scripts on native/cross tools. If your 6259 post-installation or pre-installation script can execute at root filesystem 6260 creation time rather than on the target but depends on a native tool 6261 in order to execute, you need to list the tools in 6262 :term:`PACKAGE_WRITE_DEPS`. 6263 6264 For information on running post-installation scripts, see the 6265 ":ref:`dev-manual/new-recipe:post-installation scripts`" 6266 section in the Yocto Project Development Tasks Manual. 6267 6268 :term:`PACKAGECONFIG` 6269 This variable provides a means of enabling or disabling features of a 6270 recipe on a per-recipe basis. :term:`PACKAGECONFIG` blocks are defined in 6271 recipes when you specify features and then arguments that define 6272 feature behaviors. Here is the basic block structure (broken over 6273 multiple lines for readability):: 6274 6275 PACKAGECONFIG ??= "f1 f2 f3 ..." 6276 PACKAGECONFIG[f1] = "\ 6277 --with-f1, \ 6278 --without-f1, \ 6279 build-deps-for-f1, \ 6280 runtime-deps-for-f1, \ 6281 runtime-recommends-for-f1, \ 6282 packageconfig-conflicts-for-f1" 6283 PACKAGECONFIG[f2] = "\ 6284 ... and so on and so on ... 6285 6286 The :term:`PACKAGECONFIG` variable itself specifies a space-separated 6287 list of the features to enable. Following the features, you can 6288 determine the behavior of each feature by providing up to six 6289 order-dependent arguments, which are separated by commas. You can 6290 omit any argument you like but must retain the separating commas. The 6291 order is important and specifies the following: 6292 6293 #. Extra arguments that should be added to :term:`PACKAGECONFIG_CONFARGS` 6294 if the feature is enabled. 6295 6296 #. Extra arguments that should be added to :term:`PACKAGECONFIG_CONFARGS` 6297 if the feature is disabled. 6298 6299 #. Additional build dependencies (:term:`DEPENDS`) 6300 that should be added if the feature is enabled. 6301 6302 #. Additional runtime dependencies (:term:`RDEPENDS`) 6303 that should be added if the feature is enabled. 6304 6305 #. Additional runtime recommendations 6306 (:term:`RRECOMMENDS`) that should be added if 6307 the feature is enabled. 6308 6309 #. Any conflicting (that is, mutually exclusive) :term:`PACKAGECONFIG` 6310 settings for this feature. 6311 6312 Consider the following :term:`PACKAGECONFIG` block taken from the 6313 ``librsvg`` recipe. In this example the feature is ``gtk``, which has 6314 three arguments that determine the feature's behavior:: 6315 6316 PACKAGECONFIG[gtk] = "--with-gtk3,--without-gtk3,gtk+3" 6317 6318 The 6319 ``--with-gtk3`` and ``gtk+3`` arguments apply only if the feature is 6320 enabled. In this case, ``--with-gtk3`` is added to the configure 6321 script argument list and ``gtk+3`` is added to :term:`DEPENDS`. On the 6322 other hand, if the feature is disabled say through a ``.bbappend`` 6323 file in another layer, then the second argument ``--without-gtk3`` is 6324 added to the configure script instead. 6325 6326 The basic :term:`PACKAGECONFIG` structure previously described holds true 6327 regardless of whether you are creating a block or changing a block. 6328 When creating a block, use the structure inside your recipe. 6329 6330 If you want to change an existing :term:`PACKAGECONFIG` block, you can do 6331 so one of two ways: 6332 6333 - *Append file:* Create an append file named 6334 ``recipename.bbappend`` in your layer and override the value of 6335 :term:`PACKAGECONFIG`. You can either completely override the 6336 variable:: 6337 6338 PACKAGECONFIG = "f4 f5" 6339 6340 Or, you can just append the variable:: 6341 6342 PACKAGECONFIG:append = " f4" 6343 6344 - *Configuration file:* This method is identical to changing the 6345 block through an append file except you edit your ``local.conf`` 6346 or ``mydistro.conf`` file. As with append files previously 6347 described, you can either completely override the variable:: 6348 6349 PACKAGECONFIG:pn-recipename = "f4 f5" 6350 6351 Or, you can just amend the variable:: 6352 6353 PACKAGECONFIG:append:pn-recipename = " f4" 6354 6355 Consider the following example of a :ref:`ref-classes-cmake` recipe with a systemd service 6356 in which :term:`PACKAGECONFIG` is used to transform the systemd service 6357 into a feature that can be easily enabled or disabled via :term:`PACKAGECONFIG`:: 6358 6359 example.c 6360 example.service 6361 CMakeLists.txt 6362 6363 The ``CMakeLists.txt`` file contains:: 6364 6365 if(WITH_SYSTEMD) 6366 install(FILES ${PROJECT_SOURCE_DIR}/example.service DESTINATION /etc/systemd/systemd) 6367 endif(WITH_SYSTEMD) 6368 6369 In order to enable the installation of ``example.service`` we need to 6370 ensure that ``-DWITH_SYSTEMD=ON`` is passed to the ``cmake`` command 6371 execution. Recipes that have ``CMakeLists.txt`` generally inherit the 6372 :ref:`ref-classes-cmake` class, that runs ``cmake`` with 6373 :term:`EXTRA_OECMAKE`, which :term:`PACKAGECONFIG_CONFARGS` will be 6374 appended to. Now, knowing that :term:`PACKAGECONFIG_CONFARGS` is 6375 automatically filled with either the first or second element of 6376 :term:`PACKAGECONFIG` flag value, the recipe would be like:: 6377 6378 inherit cmake 6379 PACKAGECONFIG = "systemd" 6380 PACKAGECONFIG[systemd] = "-DWITH_SYSTEMD=ON,-DWITH_SYSTEMD=OFF" 6381 6382 A side note to this recipe is to check if ``systemd`` is in fact the used :term:`INIT_MANAGER` 6383 or not:: 6384 6385 PACKAGECONFIG = "${@'systemd' if d.getVar('INIT_MANAGER') == 'systemd' else ''}" 6386 6387 :term:`PACKAGECONFIG_CONFARGS` 6388 A space-separated list of configuration options generated from the 6389 :term:`PACKAGECONFIG` setting. 6390 6391 Classes such as :ref:`ref-classes-autotools` and :ref:`ref-classes-cmake` 6392 use :term:`PACKAGECONFIG_CONFARGS` to pass :term:`PACKAGECONFIG` options 6393 to ``configure`` and ``cmake``, respectively. If you are using 6394 :term:`PACKAGECONFIG` but not a class that handles the 6395 :ref:`ref-tasks-configure` task, then you need to use 6396 :term:`PACKAGECONFIG_CONFARGS` appropriately. 6397 6398 :term:`PACKAGEGROUP_DISABLE_COMPLEMENTARY` 6399 For recipes inheriting the :ref:`ref-classes-packagegroup` class, setting 6400 :term:`PACKAGEGROUP_DISABLE_COMPLEMENTARY` to "1" specifies that the 6401 normal complementary packages (i.e. ``-dev``, ``-dbg``, and so forth) 6402 should not be automatically created by the ``packagegroup`` recipe, 6403 which is the default behavior. 6404 6405 :term:`PACKAGES` 6406 The list of packages the recipe creates. The default value is the 6407 following:: 6408 6409 ${PN}-src ${PN}-dbg ${PN}-staticdev ${PN}-dev ${PN}-doc ${PN}-locale ${PACKAGE_BEFORE_PN} ${PN} 6410 6411 During packaging, the :ref:`ref-tasks-package` task 6412 goes through :term:`PACKAGES` and uses the :term:`FILES` 6413 variable corresponding to each package to assign files to the 6414 package. If a file matches the :term:`FILES` variable for more than one 6415 package in :term:`PACKAGES`, it will be assigned to the earliest 6416 (leftmost) package. 6417 6418 Packages in the variable's list that are empty (i.e. where none of 6419 the patterns in ``FILES:``\ pkg match any files installed by the 6420 :ref:`ref-tasks-install` task) are not generated, 6421 unless generation is forced through the 6422 :term:`ALLOW_EMPTY` variable. 6423 6424 :term:`PACKAGES_DYNAMIC` 6425 A promise that your recipe satisfies runtime dependencies for 6426 optional modules that are found in other recipes. 6427 :term:`PACKAGES_DYNAMIC` does not actually satisfy the dependencies, it 6428 only states that they should be satisfied. For example, if a hard, 6429 runtime dependency (:term:`RDEPENDS`) of another 6430 package is satisfied at build time through the :term:`PACKAGES_DYNAMIC` 6431 variable, but a package with the module name is never actually 6432 produced, then the other package will be broken. Thus, if you attempt 6433 to include that package in an image, you will get a dependency 6434 failure from the packaging system during the 6435 :ref:`ref-tasks-rootfs` task. 6436 6437 Typically, if there is a chance that such a situation can occur and 6438 the package that is not created is valid without the dependency being 6439 satisfied, then you should use :term:`RRECOMMENDS` 6440 (a soft runtime dependency) instead of :term:`RDEPENDS`. 6441 6442 For an example of how to use the :term:`PACKAGES_DYNAMIC` variable when 6443 you are splitting packages, see the 6444 ":ref:`dev-manual/packages:handling optional module packaging`" 6445 section in the Yocto Project Development Tasks Manual. 6446 6447 :term:`PACKAGESPLITFUNCS` 6448 Specifies a list of functions run to perform additional splitting of 6449 files into individual packages. Recipes can either prepend to this 6450 variable or prepend to the ``populate_packages`` function in order to 6451 perform additional package splitting. In either case, the function 6452 should set :term:`PACKAGES`, 6453 :term:`FILES`, :term:`RDEPENDS` and 6454 other packaging variables appropriately in order to perform the 6455 desired splitting. 6456 6457 :term:`PARALLEL_MAKE` 6458 6459 Extra options passed to the build tool command (``make``, 6460 ``ninja`` or more specific build engines, like the Go language one) 6461 during the :ref:`ref-tasks-compile` task, to specify parallel compilation 6462 on the local build host. This variable is usually in the form "-j x", 6463 where x represents the maximum number of parallel threads such engines 6464 can run. 6465 6466 .. note:: 6467 6468 For software compiled by ``make``, in order for :term:`PARALLEL_MAKE` 6469 to be effective, ``make`` must be called with 6470 ``${``\ :term:`EXTRA_OEMAKE`\ ``}``. An easy 6471 way to ensure this is to use the ``oe_runmake`` function. 6472 6473 By default, the OpenEmbedded build system automatically sets this 6474 variable to be equal to the number of cores the build system uses. 6475 6476 .. note:: 6477 6478 If the software being built experiences dependency issues during 6479 the :ref:`ref-tasks-compile` task that result in race conditions, you can clear 6480 the :term:`PARALLEL_MAKE` variable within the recipe as a workaround. For 6481 information on addressing race conditions, see the 6482 ":ref:`dev-manual/debugging:debugging parallel make races`" 6483 section in the Yocto Project Development Tasks Manual. 6484 6485 For single socket systems (i.e. one CPU), you should not have to 6486 override this variable to gain optimal parallelism during builds. 6487 However, if you have very large systems that employ multiple physical 6488 CPUs, you might want to make sure the :term:`PARALLEL_MAKE` variable is 6489 not set higher than "-j 20". 6490 6491 For more information on speeding up builds, see the 6492 ":ref:`dev-manual/speeding-up-build:speeding up a build`" 6493 section in the Yocto Project Development Tasks Manual. 6494 6495 :term:`PARALLEL_MAKEINST` 6496 Extra options passed to the build tool install command 6497 (``make install``, ``ninja install`` or more specific ones) 6498 during the :ref:`ref-tasks-install` task in order to specify 6499 parallel installation. This variable defaults to the value of 6500 :term:`PARALLEL_MAKE`. 6501 6502 .. note:: 6503 6504 For software compiled by ``make``, in order for :term:`PARALLEL_MAKEINST` 6505 to be effective, ``make`` must be called with 6506 ``${``\ :term:`EXTRA_OEMAKE`\ ``}``. An easy 6507 way to ensure this is to use the ``oe_runmake`` function. 6508 6509 If the software being built experiences dependency issues during 6510 the :ref:`ref-tasks-install` task that result in race conditions, you can 6511 clear the :term:`PARALLEL_MAKEINST` variable within the recipe as a 6512 workaround. For information on addressing race conditions, see the 6513 ":ref:`dev-manual/debugging:debugging parallel make races`" 6514 section in the Yocto Project Development Tasks Manual. 6515 6516 :term:`PATCHRESOLVE` 6517 Determines the action to take when a patch fails. You can set this 6518 variable to one of two values: "noop" and "user". 6519 6520 The default value of "noop" causes the build to simply fail when the 6521 OpenEmbedded build system cannot successfully apply a patch. Setting 6522 the value to "user" causes the build system to launch a shell and 6523 places you in the right location so that you can manually resolve the 6524 conflicts. 6525 6526 Set this variable in your ``local.conf`` file. 6527 6528 :term:`PATCHTOOL` 6529 Specifies the utility used to apply patches for a recipe during the 6530 :ref:`ref-tasks-patch` task. You can specify one of 6531 three utilities: "patch", "quilt", or "git". The default utility used 6532 is "quilt" except for the quilt-native recipe itself. Because the 6533 quilt tool is not available at the time quilt-native is being 6534 patched, it uses "patch". 6535 6536 If you wish to use an alternative patching tool, set the variable in 6537 the recipe using one of the following:: 6538 6539 PATCHTOOL = "patch" 6540 PATCHTOOL = "quilt" 6541 PATCHTOOL = "git" 6542 6543 :term:`PE` 6544 The epoch of the recipe. By default, this variable is unset. The 6545 variable is used to make upgrades possible when the versioning scheme 6546 changes in some backwards incompatible way. 6547 6548 :term:`PE` is the default value of the :term:`PKGE` variable. 6549 6550 :term:`PEP517_WHEEL_PATH` 6551 When used by recipes that inherit the :ref:`ref-classes-python_pep517` 6552 class, denotes the path to ``dist/`` (short for distribution) where the 6553 binary archive ``wheel`` is built. 6554 6555 :term:`PERSISTENT_DIR` 6556 See :term:`bitbake:PERSISTENT_DIR` in the BitBake manual. 6557 6558 :term:`PF` 6559 Specifies the recipe or package name and includes all version and 6560 revision numbers (i.e. ``glibc-2.13-r20+svnr15508/`` and 6561 ``bash-4.2-r1/``). This variable is comprised of the following: 6562 ${:term:`PN`}-${:term:`EXTENDPE`}${:term:`PV`}-${:term:`PR`} 6563 6564 :term:`PIXBUF_PACKAGES` 6565 When inheriting the :ref:`ref-classes-pixbufcache` 6566 class, this variable identifies packages that contain the pixbuf 6567 loaders used with ``gdk-pixbuf``. By default, the 6568 :ref:`ref-classes-pixbufcache` class assumes that 6569 the loaders are in the recipe's main package (i.e. 6570 ``${``\ :term:`PN`\ ``}``). Use this variable if the 6571 loaders you need are in a package other than that main package. 6572 6573 :term:`PKG` 6574 The name of the resulting package created by the OpenEmbedded build 6575 system. 6576 6577 .. note:: 6578 6579 When using the :term:`PKG` variable, you must use a package name override. 6580 6581 For example, when the :ref:`ref-classes-debian` class renames the output 6582 package, it does so by setting ``PKG:packagename``. 6583 6584 :term:`PKG_CONFIG_PATH` 6585 The path to ``pkg-config`` files for the current build context. 6586 ``pkg-config`` reads this variable from the environment. 6587 6588 :term:`PKGD` 6589 Points to the destination directory for files to be packaged before 6590 they are split into individual packages. This directory defaults to 6591 the following:: 6592 6593 ${WORKDIR}/package 6594 6595 Do not change this default. 6596 6597 :term:`PKGDATA_DIR` 6598 Points to a shared, global-state directory that holds data generated 6599 during the packaging process. During the packaging process, the 6600 :ref:`ref-tasks-packagedata` task packages data 6601 for each recipe and installs it into this temporary, shared area. 6602 This directory defaults to the following, which you should not 6603 change:: 6604 6605 ${STAGING_DIR_HOST}/pkgdata 6606 6607 For examples of how this data is used, see the 6608 ":ref:`overview-manual/concepts:automatically added runtime dependencies`" 6609 section in the Yocto Project Overview and Concepts Manual and the 6610 ":ref:`dev-manual/debugging:viewing package information with \`\`oe-pkgdata-util\`\``" 6611 section in the Yocto Project Development Tasks Manual. For more 6612 information on the shared, global-state directory, see 6613 :term:`STAGING_DIR_HOST`. 6614 6615 :term:`PKGDEST` 6616 Points to the parent directory for files to be packaged after they 6617 have been split into individual packages. This directory defaults to 6618 the following:: 6619 6620 ${WORKDIR}/packages-split 6621 6622 Under this directory, the build system creates directories for each 6623 package specified in :term:`PACKAGES`. Do not change 6624 this default. 6625 6626 :term:`PKGDESTWORK` 6627 Points to a temporary work area where the 6628 :ref:`ref-tasks-package` task saves package metadata. 6629 The :term:`PKGDESTWORK` location defaults to the following:: 6630 6631 ${WORKDIR}/pkgdata 6632 6633 Do not change this default. 6634 6635 The :ref:`ref-tasks-packagedata` task copies the 6636 package metadata from :term:`PKGDESTWORK` to 6637 :term:`PKGDATA_DIR` to make it available globally. 6638 6639 :term:`PKGE` 6640 The epoch of the package(s) built by the recipe. By default, :term:`PKGE` 6641 is set to :term:`PE`. 6642 6643 :term:`PKGR` 6644 The revision of the package(s) built by the recipe. By default, 6645 :term:`PKGR` is set to :term:`PR`. 6646 6647 :term:`PKGV` 6648 The version of the package(s) built by the recipe. By default, 6649 :term:`PKGV` is set to :term:`PV`. 6650 6651 :term:`PN` 6652 This variable can have two separate functions depending on the 6653 context: a recipe name or a resulting package name. 6654 6655 :term:`PN` refers to a recipe name in the context of a file used by the 6656 OpenEmbedded build system as input to create a package. The name is 6657 normally extracted from the recipe file name. For example, if the 6658 recipe is named ``expat_2.0.1.bb``, then the default value of :term:`PN` 6659 will be "expat". 6660 6661 The variable refers to a package name in the context of a file 6662 created or produced by the OpenEmbedded build system. 6663 6664 If applicable, the :term:`PN` variable also contains any special suffix 6665 or prefix. For example, using ``bash`` to build packages for the 6666 native machine, :term:`PN` is ``bash-native``. Using ``bash`` to build 6667 packages for the target and for Multilib, :term:`PN` would be ``bash`` 6668 and ``lib64-bash``, respectively. 6669 6670 :term:`POPULATE_SDK_POST_HOST_COMMAND` 6671 Specifies a list of functions to call once the OpenEmbedded build 6672 system has created the host part of the SDK. You can specify 6673 functions separated by spaces:: 6674 6675 POPULATE_SDK_POST_HOST_COMMAND += "function" 6676 6677 If you need to pass the SDK path to a command within a function, you 6678 can use ``${SDK_DIR}``, which points to the parent directory used by 6679 the OpenEmbedded build system when creating SDK output. See the 6680 :term:`SDK_DIR` variable for more information. 6681 6682 :term:`POPULATE_SDK_POST_TARGET_COMMAND` 6683 Specifies a list of functions to call once the OpenEmbedded build 6684 system has created the target part of the SDK. You can specify 6685 functions separated by spaces:: 6686 6687 POPULATE_SDK_POST_TARGET_COMMAND += "function" 6688 6689 If you need to pass the SDK path to a command within a function, you 6690 can use ``${SDK_DIR}``, which points to the parent directory used by 6691 the OpenEmbedded build system when creating SDK output. See the 6692 :term:`SDK_DIR` variable for more information. 6693 6694 :term:`PR` 6695 The revision of the recipe. The default value for this variable is 6696 "r0". Subsequent revisions of the recipe conventionally have the 6697 values "r1", "r2", and so forth. When :term:`PV` increases, 6698 :term:`PR` is conventionally reset to "r0". 6699 6700 .. note:: 6701 6702 The OpenEmbedded build system does not need the aid of :term:`PR` 6703 to know when to rebuild a recipe. The build system uses the task 6704 :ref:`input checksums <overview-manual/concepts:checksums (signatures)>` along with the 6705 :ref:`stamp <structure-build-tmp-stamps>` and 6706 :ref:`overview-manual/concepts:shared state cache` 6707 mechanisms. 6708 6709 The :term:`PR` variable primarily becomes significant when a package 6710 manager dynamically installs packages on an already built image. In 6711 this case, :term:`PR`, which is the default value of 6712 :term:`PKGR`, helps the package manager distinguish which 6713 package is the most recent one in cases where many packages have the 6714 same :term:`PV` (i.e. :term:`PKGV`). A component having many packages with 6715 the same :term:`PV` usually means that the packages all install the same 6716 upstream version, but with later (:term:`PR`) version packages including 6717 packaging fixes. 6718 6719 .. note:: 6720 6721 :term:`PR` does not need to be increased for changes that do not change the 6722 package contents or metadata. 6723 6724 Because manually managing :term:`PR` can be cumbersome and error-prone, 6725 an automated solution exists. See the 6726 ":ref:`dev-manual/packages:working with a pr service`" section 6727 in the Yocto Project Development Tasks Manual for more information. 6728 6729 :term:`PREFERRED_PROVIDER` 6730 If multiple recipes provide the same item, this variable determines 6731 which recipe is preferred and thus provides the item (i.e. the 6732 preferred provider). You should always suffix this variable with the 6733 name of the provided item. And, you should define the variable using 6734 the preferred recipe's name (:term:`PN`). Here is a common 6735 example:: 6736 6737 PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto" 6738 6739 In the previous example, multiple recipes are providing "virtual/kernel". 6740 The :term:`PREFERRED_PROVIDER` variable is set with the name (:term:`PN`) of 6741 the recipe you prefer to provide "virtual/kernel". 6742 6743 Here are more examples:: 6744 6745 PREFERRED_PROVIDER_virtual/xserver = "xserver-xf86" 6746 PREFERRED_PROVIDER_virtual/libgl ?= "mesa" 6747 6748 For more 6749 information, see the ":ref:`dev-manual/new-recipe:using virtual providers`" 6750 section in the Yocto Project Development Tasks Manual. 6751 6752 .. note:: 6753 6754 If you use a ``virtual/\*`` item with :term:`PREFERRED_PROVIDER`, then any 6755 recipe that :term:`PROVIDES` that item but is not selected (defined) 6756 by :term:`PREFERRED_PROVIDER` is prevented from building, which is usually 6757 desirable since this mechanism is designed to select between mutually 6758 exclusive alternative providers. 6759 6760 :term:`PREFERRED_PROVIDERS` 6761 See :term:`bitbake:PREFERRED_PROVIDERS` in the BitBake manual. 6762 6763 :term:`PREFERRED_RPROVIDER` 6764 The :term:`PREFERRED_RPROVIDER` variable works like the 6765 :term:`PREFERRED_PROVIDER` variable, but it denotes packages that provide a 6766 *runtime* component. Runtime providers are declared in recipes that set 6767 the :term:`RPROVIDES` variable for a specific package. 6768 6769 For example:: 6770 6771 PREFERRED_RPROVIDER_virtual-x-terminal-emulator = "rxvt-unicode" 6772 6773 This statement sets the runtime provider for the X terminal emulator to 6774 ``rxvt-unicode``. The ``rxvt-unicode`` package is a runtime provider of 6775 this component because the ``rxvt-unicode`` recipe set the following 6776 :term:`RPROVIDES` definition for the ``rxvt-unicode`` (``${PN}``) 6777 package:: 6778 6779 RPROVIDES:${PN} = "virtual-x-terminal-emulator" 6780 6781 For more information on virtual providers, see the 6782 ":ref:`dev-manual/new-recipe:using virtual providers`" section in the 6783 Yocto Project Development Tasks Manual. 6784 6785 :term:`PREFERRED_VERSION` 6786 If there are multiple versions of a recipe available, this variable 6787 determines which version should be given preference. You must always 6788 suffix the variable with the :term:`PN` you want to select (`python` in 6789 the first example below), and you should specify the :term:`PV` 6790 accordingly (`3.4.0` in the example). 6791 6792 The :term:`PREFERRED_VERSION` variable supports limited wildcard use 6793 through the "``%``" character. You can use the character to match any 6794 number of characters, which can be useful when specifying versions 6795 that contain long revision numbers that potentially change. Here are 6796 two examples:: 6797 6798 PREFERRED_VERSION_python = "3.4.0" 6799 PREFERRED_VERSION_linux-yocto = "5.0%" 6800 6801 .. note:: 6802 6803 The use of the "%" character is limited in that it only works at the end of the 6804 string. You cannot use the wildcard character in any other 6805 location of the string. 6806 6807 The specified version is matched against :term:`PV`, which does not 6808 necessarily match the version part of the recipe's filename. 6809 6810 If you want to select a recipe named ``foo_git.bb`` which has :term:`PV` 6811 set to ``1.2.3+git``, you can do so by setting ```PREFERRED_VERSION_foo`` 6812 to ``1.2.3%`` (i.e. simply setting ``PREFERRED_VERSION_foo`` to ``git`` 6813 will not work as the name of the recipe isn't used, but rather its 6814 :term:`PV` definition). 6815 6816 Sometimes the :term:`PREFERRED_VERSION` variable can be set by 6817 configuration files in a way that is hard to change. You can use 6818 :term:`OVERRIDES` to set a machine-specific 6819 override. Here is an example:: 6820 6821 PREFERRED_VERSION_linux-yocto:qemux86 = "5.0%" 6822 6823 Although not recommended, worst case, you can also use the 6824 "forcevariable" override, which is the strongest override possible. 6825 Here is an example:: 6826 6827 PREFERRED_VERSION_linux-yocto:forcevariable = "5.0%" 6828 6829 .. note:: 6830 6831 The ``:forcevariable`` override is not handled specially. This override 6832 only works because the default value of :term:`OVERRIDES` includes "forcevariable". 6833 6834 If a recipe with the specified version is not available, a warning 6835 message will be shown. See :term:`REQUIRED_VERSION` if you want this 6836 to be an error instead. 6837 6838 :term:`PREMIRRORS` 6839 Specifies additional paths from which the OpenEmbedded build system 6840 gets source code. When the build system searches for source code, it 6841 first tries the local download directory. If that location fails, the 6842 build system tries locations defined by :term:`PREMIRRORS`, the upstream 6843 source, and then locations specified by 6844 :term:`MIRRORS` in that order. 6845 6846 The default value for :term:`PREMIRRORS` is defined in the 6847 ``meta/classes-global/mirrors.bbclass`` file in the core metadata layer. 6848 6849 Typically, you could add a specific server for the build system to 6850 attempt before any others by adding something like the following to 6851 the ``local.conf`` configuration file in the 6852 :term:`Build Directory`:: 6853 6854 PREMIRRORS:prepend = "\ 6855 git://.*/.* &YOCTO_DL_URL;/mirror/sources/ \ 6856 ftp://.*/.* &YOCTO_DL_URL;/mirror/sources/ \ 6857 http://.*/.* &YOCTO_DL_URL;/mirror/sources/ \ 6858 https://.*/.* &YOCTO_DL_URL;/mirror/sources/" 6859 6860 These changes cause the 6861 build system to intercept Git, FTP, HTTP, and HTTPS requests and 6862 direct them to the ``http://`` sources mirror. You can use 6863 ``file://`` URLs to point to local directories or network shares as 6864 well. 6865 6866 :term:`PRIORITY` 6867 Indicates the importance of a package. 6868 6869 :term:`PRIORITY` is considered to be part of the distribution policy 6870 because the importance of any given recipe depends on the purpose for 6871 which the distribution is being produced. Thus, :term:`PRIORITY` is not 6872 normally set within recipes. 6873 6874 You can set :term:`PRIORITY` to "required", "standard", "extra", and 6875 "optional", which is the default. 6876 6877 :term:`PRIVATE_LIBS` 6878 Specifies libraries installed within a recipe that should be ignored 6879 by the OpenEmbedded build system's shared library resolver. This 6880 variable is typically used when software being built by a recipe has 6881 its own private versions of a library normally provided by another 6882 recipe. In this case, you would not want the package containing the 6883 private libraries to be set as a dependency on other unrelated 6884 packages that should instead depend on the package providing the 6885 standard version of the library. 6886 6887 Libraries specified in this variable should be specified by their 6888 file name. For example, from the Firefox recipe in meta-browser:: 6889 6890 PRIVATE_LIBS = "libmozjs.so \ 6891 libxpcom.so \ 6892 libnspr4.so \ 6893 libxul.so \ 6894 libmozalloc.so \ 6895 libplc4.so \ 6896 libplds4.so" 6897 6898 For more information, see the 6899 ":ref:`overview-manual/concepts:automatically added runtime dependencies`" 6900 section in the Yocto Project Overview and Concepts Manual. 6901 6902 :term:`PROVIDES` 6903 A list of aliases by which a particular recipe can be known. By 6904 default, a recipe's own :term:`PN` is implicitly already in its 6905 :term:`PROVIDES` list and therefore does not need to mention that it 6906 provides itself. If a recipe uses :term:`PROVIDES`, the additional 6907 aliases are synonyms for the recipe and can be useful for satisfying 6908 dependencies of other recipes during the build as specified by 6909 :term:`DEPENDS`. 6910 6911 Consider the following example :term:`PROVIDES` statement from the recipe 6912 file ``eudev_3.2.9.bb``:: 6913 6914 PROVIDES += "udev" 6915 6916 The :term:`PROVIDES` statement 6917 results in the "eudev" recipe also being available as simply "udev". 6918 6919 .. note:: 6920 6921 A recipe's own recipe name (:term:`PN`) is always implicitly prepended 6922 to :term:`PROVIDES`, so while using "+=" in the above example may not be 6923 strictly necessary it is recommended to avoid confusion. 6924 6925 In addition to providing recipes under alternate names, the 6926 :term:`PROVIDES` mechanism is also used to implement virtual targets. A 6927 virtual target is a name that corresponds to some particular 6928 functionality (e.g. a Linux kernel). Recipes that provide the 6929 functionality in question list the virtual target in :term:`PROVIDES`. 6930 Recipes that depend on the functionality in question can include the 6931 virtual target in :term:`DEPENDS` to leave the choice of provider open. 6932 6933 Conventionally, virtual targets have names on the form 6934 "virtual/function" (e.g. "virtual/kernel"). The slash is simply part 6935 of the name and has no syntactical significance. 6936 6937 The :term:`PREFERRED_PROVIDER` variable is 6938 used to select which particular recipe provides a virtual target. 6939 6940 .. note:: 6941 6942 A corresponding mechanism for virtual runtime dependencies (packages) 6943 exists. However, the mechanism does not depend on any special 6944 functionality beyond ordinary variable assignments. For example, 6945 :term:`VIRTUAL-RUNTIME_dev_manager <VIRTUAL-RUNTIME>` refers to the 6946 package of the component that manages the ``/dev`` directory. 6947 6948 Setting the "preferred provider" for runtime dependencies is as 6949 simple as using the following assignment in a configuration file:: 6950 6951 VIRTUAL-RUNTIME_dev_manager = "udev" 6952 6953 6954 :term:`PRSERV_HOST` 6955 The network based :term:`PR` service host and port. 6956 6957 The ``conf/templates/default/local.conf.sample.extended`` configuration 6958 file in the :term:`Source Directory` shows how the :term:`PRSERV_HOST` 6959 variable is set:: 6960 6961 PRSERV_HOST = "localhost:0" 6962 6963 You must 6964 set the variable if you want to automatically start a local :ref:`PR 6965 service <dev-manual/packages:working with a pr service>`. You can 6966 set :term:`PRSERV_HOST` to other values to use a remote PR service. 6967 6968 :term:`PRSERV_UPSTREAM` 6969 This variable can be used to specify an upstream PR server for the local 6970 PR server to connect to, in the form of ``host:port``. 6971 6972 This makes it possible to implement local fixes to an upstream package. 6973 6974 :term:`PSEUDO_IGNORE_PATHS` 6975 A comma-separated (without spaces) list of path prefixes that should be ignored 6976 by pseudo when monitoring and recording file operations, in order to avoid 6977 problems with files being written to outside of the pseudo context and 6978 reduce pseudo's overhead. A path is ignored if it matches any prefix in the list 6979 and can include partial directory (or file) names. 6980 6981 6982 :term:`PTEST_ENABLED` 6983 Specifies whether or not :ref:`Package 6984 Test <test-manual/ptest:testing packages with ptest>` (ptest) 6985 functionality is enabled when building a recipe. You should not set 6986 this variable directly. Enabling and disabling building Package Tests 6987 at build time should be done by adding "ptest" to (or removing it 6988 from) :term:`DISTRO_FEATURES`. 6989 6990 :term:`PV` 6991 The version of the recipe. The version is normally extracted from the 6992 recipe filename. For example, if the recipe is named 6993 ``expat_2.0.1.bb``, then the default value of :term:`PV` will be "2.0.1". 6994 :term:`PV` is generally not overridden within a recipe unless it is 6995 building an unstable (i.e. development) version from a source code 6996 repository (e.g. Git or Subversion). 6997 6998 :term:`PV` is the default value of the :term:`PKGV` variable. 6999 7000 :term:`PYPI_PACKAGE` 7001 When inheriting the :ref:`ref-classes-pypi` class, specifies the 7002 `PyPI <https://pypi.org/>`__ package name to be built. The default value 7003 is set based upon :term:`BPN` (stripping any "python-" or "python3-" 7004 prefix off if present), however for some packages it will need to be set 7005 explicitly if that will not match the package name (e.g. where the 7006 package name has a prefix, underscores, uppercase letters etc.) 7007 7008 :term:`PYPI_PACKAGE_EXT` 7009 When inheriting the :ref:`ref-classes-pypi` class, specifies the 7010 file extension to use when fetching a package from `PyPI 7011 <https://pypi.org/>`__. Default is ``tar.gz``. 7012 7013 :term:`PYPI_SRC_URI` 7014 When inheriting the :ref:`ref-classes-pypi` class, specifies the 7015 full `pythonhosted <https://files.pythonhosted.org/>`__ URI for 7016 fetching the package to be built. The default value is constructed 7017 based upon :term:`PYPI_PACKAGE`, :term:`PYPI_PACKAGE_EXT`, and 7018 :term:`PV`. Most recipes will not need to set this variable unless 7019 they are building an unstable (i.e. development) version. 7020 7021 :term:`PYTHON_ABI` 7022 When used by recipes that inherit the :ref:`ref-classes-setuptools3` 7023 class, denotes the Application Binary Interface (ABI) currently in use 7024 for Python. By default, the ABI is "m". You do not have to set this 7025 variable as the OpenEmbedded build system sets it for you. 7026 7027 The OpenEmbedded build system uses the ABI to construct directory 7028 names used when installing the Python headers and libraries in 7029 sysroot (e.g. ``.../python3.3m/...``). 7030 7031 :term:`QA_EMPTY_DIRS` 7032 Specifies a list of directories that are expected to be empty when 7033 packaging; if ``empty-dirs`` appears in :term:`ERROR_QA` or 7034 :term:`WARN_QA` these will be checked and an error or warning 7035 (respectively) will be produced. 7036 7037 The default :term:`QA_EMPTY_DIRS` value is set in 7038 :ref:`insane.bbclass <ref-classes-insane>`. 7039 7040 :term:`QA_EMPTY_DIRS_RECOMMENDATION` 7041 Specifies a recommendation for why a directory must be empty, 7042 which will be included in the error message if a specific directory 7043 is found to contain files. Must be overridden with the directory 7044 path to match on. 7045 7046 If no recommendation is specified for a directory, then the default 7047 "but it is expected to be empty" will be used. 7048 7049 An example message shows if files were present in '/dev':: 7050 7051 QA_EMPTY_DIRS_RECOMMENDATION:/dev = "but all devices must be created at runtime" 7052 7053 :term:`RANLIB` 7054 The minimal command and arguments to run ``ranlib``. 7055 7056 :term:`RCONFLICTS` 7057 The list of packages that conflict with packages. Note that packages 7058 will not be installed if conflicting packages are not first removed. 7059 7060 Like all package-controlling variables, you must always use them in 7061 conjunction with a package name override. Here is an example:: 7062 7063 RCONFLICTS:${PN} = "another_conflicting_package_name" 7064 7065 BitBake, which the OpenEmbedded build system uses, supports 7066 specifying versioned dependencies. Although the syntax varies 7067 depending on the packaging format, BitBake hides these differences 7068 from you. Here is the general syntax to specify versions with the 7069 :term:`RCONFLICTS` variable:: 7070 7071 RCONFLICTS:${PN} = "package (operator version)" 7072 7073 For ``operator``, you can specify the following: 7074 7075 - = 7076 - < 7077 - > 7078 - <= 7079 - >= 7080 7081 For example, the following sets up a dependency on version 1.2 or 7082 greater of the package ``foo``:: 7083 7084 RCONFLICTS:${PN} = "foo (>= 1.2)" 7085 7086 :term:`RDEPENDS` 7087 Lists runtime dependencies of a package. These dependencies are other 7088 packages that must be installed in order for the package to function 7089 correctly. As an example, the following assignment declares that the 7090 package ``foo`` needs the packages ``bar`` and ``baz`` to be 7091 installed:: 7092 7093 RDEPENDS:foo = "bar baz" 7094 7095 The most common types of package 7096 runtime dependencies are automatically detected and added. Therefore, 7097 most recipes do not need to set :term:`RDEPENDS`. For more information, 7098 see the 7099 ":ref:`overview-manual/concepts:automatically added runtime dependencies`" 7100 section in the Yocto Project Overview and Concepts Manual. 7101 7102 The practical effect of the above :term:`RDEPENDS` assignment is that 7103 ``bar`` and ``baz`` will be declared as dependencies inside the 7104 package ``foo`` when it is written out by one of the 7105 :ref:`do_package_write_* <ref-tasks-package_write_deb>` tasks. 7106 Exactly how this is done depends on which package format is used, 7107 which is determined by 7108 :term:`PACKAGE_CLASSES`. When the 7109 corresponding package manager installs the package, it will know to 7110 also install the packages on which it depends. 7111 7112 To ensure that the packages ``bar`` and ``baz`` get built, the 7113 previous :term:`RDEPENDS` assignment also causes a task dependency to be 7114 added. This dependency is from the recipe's 7115 :ref:`ref-tasks-build` (not to be confused with 7116 :ref:`ref-tasks-compile`) task to the 7117 :ref:`do_package_write_* <ref-tasks-package_write_deb>` task of the recipes that build ``bar`` and 7118 ``baz``. 7119 7120 The names of the packages you list within :term:`RDEPENDS` must be the 7121 names of other packages --- they cannot be recipe names. Although 7122 package names and recipe names usually match, the important point 7123 here is that you are providing package names within the :term:`RDEPENDS` 7124 variable. For an example of the default list of packages created from 7125 a recipe, see the :term:`PACKAGES` variable. 7126 7127 Because the :term:`RDEPENDS` variable applies to packages being built, 7128 you should always use the variable in a form with an attached package 7129 name (remember that a single recipe can build multiple packages). For 7130 example, suppose you are building a development package that depends 7131 on the ``perl`` package. In this case, you would use the following 7132 :term:`RDEPENDS` statement:: 7133 7134 RDEPENDS:${PN}-dev += "perl" 7135 7136 In the example, 7137 the development package depends on the ``perl`` package. Thus, the 7138 :term:`RDEPENDS` variable has the ``${PN}-dev`` package name as part of 7139 the variable. 7140 7141 .. note:: 7142 7143 ``RDEPENDS:${PN}-dev`` includes ``${``\ :term:`PN`\ ``}`` 7144 by default. This default is set in the BitBake configuration file 7145 (``meta/conf/bitbake.conf``). Be careful not to accidentally remove 7146 ``${PN}`` when modifying ``RDEPENDS:${PN}-dev``. Use the "+=" operator 7147 rather than the "=" operator. 7148 7149 The package names you use with :term:`RDEPENDS` must appear as they would 7150 in the :term:`PACKAGES` variable. The :term:`PKG` variable 7151 allows a different name to be used for the final package (e.g. the 7152 :ref:`ref-classes-debian` class uses this to rename 7153 packages), but this final package name cannot be used with 7154 :term:`RDEPENDS`, which makes sense as :term:`RDEPENDS` is meant to be 7155 independent of the package format used. 7156 7157 BitBake, which the OpenEmbedded build system uses, supports 7158 specifying versioned dependencies. Although the syntax varies 7159 depending on the packaging format, BitBake hides these differences 7160 from you. Here is the general syntax to specify versions with the 7161 :term:`RDEPENDS` variable:: 7162 7163 RDEPENDS:${PN} = "package (operator version)" 7164 7165 For ``operator``, you can specify the following: 7166 7167 - = 7168 - < 7169 - > 7170 - <= 7171 - >= 7172 7173 For version, provide the version number. 7174 7175 .. note:: 7176 7177 You can use :term:`EXTENDPKGV` to provide a full package version 7178 specification. 7179 7180 For example, the following sets up a dependency on version 1.2 or 7181 greater of the package ``foo``:: 7182 7183 RDEPENDS:${PN} = "foo (>= 1.2)" 7184 7185 For information on build-time dependencies, see the :term:`DEPENDS` 7186 variable. You can also see the 7187 ":ref:`bitbake-user-manual/bitbake-user-manual-metadata:tasks`" and 7188 ":ref:`bitbake-user-manual/bitbake-user-manual-execution:dependencies`" sections in the 7189 BitBake User Manual for additional information on tasks and dependencies. 7190 7191 :term:`RECIPE_MAINTAINER` 7192 This variable defines the name and e-mail address of the maintainer of a 7193 recipe. Such information can be used by human users submitted changes, 7194 and by automated tools to send notifications, for example about 7195 vulnerabilities or source updates. 7196 7197 The variable can be defined in a global distribution :oe_git:`maintainers.inc 7198 </openembedded-core/tree/meta/conf/distro/include/maintainers.inc>` file:: 7199 7200 meta/conf/distro/include/maintainers.inc:RECIPE_MAINTAINER:pn-sysvinit = "Ross Burton <ross.burton@arm.com>" 7201 7202 It can also be directly defined in a recipe, 7203 for example in the ``libgpiod`` one:: 7204 7205 RECIPE_MAINTAINER = "Bartosz Golaszewski <brgl@bgdev.pl>" 7206 7207 :term:`RECIPE_NO_UPDATE_REASON` 7208 If a recipe should not be replaced by a more recent upstream version, 7209 putting the reason why in this variable in a recipe allows 7210 ``devtool check-upgrade-status`` command to display it, as explained 7211 in the ":ref:`ref-manual/devtool-reference:checking on the upgrade status of a recipe`" 7212 section. 7213 7214 :term:`RECIPE_SYSROOT` 7215 This variable points to the directory that holds all files populated from 7216 recipes specified in :term:`DEPENDS`. As the name indicates, 7217 think of this variable as a custom root (``/``) for the recipe that will be 7218 used by the compiler in order to find headers and other files needed to complete 7219 its job. 7220 7221 This variable is related to :term:`STAGING_DIR_HOST` or :term:`STAGING_DIR_TARGET` 7222 according to the type of the recipe and the build target. 7223 7224 To better understand this variable, consider the following examples: 7225 7226 - For ``#include <header.h>``, ``header.h`` should be in ``"${RECIPE_SYSROOT}/usr/include"`` 7227 7228 - For ``-lexample``, ``libexample.so`` should be in ``"${RECIPE_SYSROOT}/lib"`` 7229 or other library sysroot directories. 7230 7231 The default value is ``"${WORKDIR}/recipe-sysroot"``. 7232 Do not modify it. 7233 7234 :term:`RECIPE_SYSROOT_NATIVE` 7235 This is similar to :term:`RECIPE_SYSROOT` but the populated files are from 7236 ``-native`` recipes. This allows a recipe built for the target machine to 7237 use ``native`` tools. 7238 7239 This variable is related to :term:`STAGING_DIR_NATIVE`. 7240 7241 The default value is ``"${WORKDIR}/recipe-sysroot-native"``. 7242 Do not modify it. 7243 7244 :term:`RECIPE_UPGRADE_EXTRA_TASKS` 7245 When upgrading a recipe with ``devtool upgrade``, the variable 7246 :term:`RECIPE_UPGRADE_EXTRA_TASKS` specifies a space-delimited list of 7247 tasks to run after the new sources have been unpacked. 7248 7249 For some recipes, after the new source has been unpacked, additional tasks 7250 may need to be run during an upgrade. A good example of this is recipes 7251 which inherit :ref:`ref-classes-cargo-update-recipe-crates`, where the 7252 `do_update_crates` task needs to be run whenever Cargo.toml/Cargo.lock have 7253 changed in the source. 7254 7255 :term:`REPODIR` 7256 See :term:`bitbake:REPODIR` in the BitBake manual. 7257 7258 :term:`REQUIRED_DISTRO_FEATURES` 7259 When inheriting the :ref:`ref-classes-features_check` 7260 class, this variable identifies distribution features that must exist 7261 in the current configuration in order for the OpenEmbedded build 7262 system to build the recipe. In other words, if the 7263 :term:`REQUIRED_DISTRO_FEATURES` variable lists a feature that does not 7264 appear in :term:`DISTRO_FEATURES` within the current configuration, then 7265 the recipe will be skipped, and if the build system attempts to build 7266 the recipe then an error will be triggered. 7267 7268 :term:`REQUIRED_VERSION` 7269 If there are multiple versions of a recipe available, this variable 7270 determines which version should be given preference. 7271 :term:`REQUIRED_VERSION` works in exactly the same manner as 7272 :term:`PREFERRED_VERSION`, except that if the specified version is not 7273 available then an error message is shown and the build fails 7274 immediately. 7275 7276 If both :term:`REQUIRED_VERSION` and :term:`PREFERRED_VERSION` are set 7277 for the same recipe, the :term:`REQUIRED_VERSION` value applies. 7278 7279 :term:`RETAIN_DIRS_ALWAYS` 7280 When inheriting the :ref:`ref-classes-retain` class, this variable holds 7281 space-separated recipe-specific directories to always save in a tarball 7282 whether the recipe build has failed or not. 7283 7284 :term:`RETAIN_DIRS_FAILURE` 7285 When inheriting the :ref:`ref-classes-retain` class, this variable holds 7286 space-separated recipe-specific directories to save in a tarball on 7287 failure of the recipe's build. 7288 7289 :term:`RETAIN_DIRS_GLOBAL_ALWAYS` 7290 When inheriting the :ref:`ref-classes-retain` class, this variable holds 7291 space-separated directories that are not specific to a recipe to save in a 7292 tarball whether the build has failed or not. 7293 7294 :term:`RETAIN_DIRS_GLOBAL_FAILURE` 7295 When inheriting the :ref:`ref-classes-retain` class, this variable holds 7296 space-separated directories that are not specific to a recipe to save in a 7297 tarball on build failure. 7298 7299 :term:`RETAIN_ENABLED` 7300 Disables the creation of a tarball of the work directory done by the 7301 :ref:`ref-classes-retain` class. Can be set to specific recipes to disable 7302 the class when the class was inherited globally with :term:`INHERIT`. 7303 7304 :term:`RETAIN_OUTDIR` 7305 When inheriting the :ref:`ref-classes-retain` class, this variable 7306 specifies the directory where to save the tarball of the work directory. 7307 The default directory is ``${TMPDIR}/retain``. 7308 7309 :term:`RETAIN_TARBALL_SUFFIX` 7310 When inheriting the :ref:`ref-classes-retain` class, this variable 7311 specifies the suffix of the tarball of the work directory. The default 7312 suffix is ``${DATETIME}.tar.gz``. 7313 7314 :term:`RM_WORK_EXCLUDE` 7315 With :ref:`ref-classes-rm-work` enabled, this variable 7316 specifies a list of recipes whose work directories should not be removed. 7317 See the ":ref:`ref-classes-rm-work`" section for more details. 7318 7319 :term:`ROOT_HOME` 7320 Defines the root home directory. By default, this directory is set as 7321 follows in the BitBake configuration file:: 7322 7323 ROOT_HOME ??= "/home/root" 7324 7325 .. note:: 7326 7327 This default value is likely used because some embedded solutions 7328 prefer to have a read-only root filesystem and prefer to keep 7329 writeable data in one place. 7330 7331 You can override the default by setting the variable in any layer or 7332 in the ``local.conf`` file. Because the default is set using a "weak" 7333 assignment (i.e. "??="), you can use either of the following forms to 7334 define your override:: 7335 7336 ROOT_HOME = "/root" 7337 ROOT_HOME ?= "/root" 7338 7339 These 7340 override examples use ``/root``, which is probably the most commonly 7341 used override. 7342 7343 :term:`ROOTFS` 7344 Indicates a filesystem image to include as the root filesystem. 7345 7346 The :term:`ROOTFS` variable is an optional variable used with the 7347 :ref:`ref-classes-image-live` class. 7348 7349 :term:`ROOTFS_POSTINSTALL_COMMAND` 7350 Specifies a list of functions to call after the OpenEmbedded build 7351 system has installed packages. You can specify functions separated by 7352 spaces:: 7353 7354 ROOTFS_POSTINSTALL_COMMAND += "function" 7355 7356 If you need to pass the root filesystem path to a command within a 7357 function, you can use ``${IMAGE_ROOTFS}``, which points to the 7358 directory that becomes the root filesystem image. See the 7359 :term:`IMAGE_ROOTFS` variable for more 7360 information. 7361 7362 :term:`ROOTFS_POSTPROCESS_COMMAND` 7363 Specifies a list of functions to call once the OpenEmbedded build 7364 system has created the root filesystem. You can specify functions 7365 separated by spaces:: 7366 7367 ROOTFS_POSTPROCESS_COMMAND += "function" 7368 7369 If you need to pass the root filesystem path to a command within a 7370 function, you can use ``${IMAGE_ROOTFS}``, which points to the 7371 directory that becomes the root filesystem image. See the 7372 :term:`IMAGE_ROOTFS` variable for more 7373 information. 7374 7375 :term:`ROOTFS_POSTUNINSTALL_COMMAND` 7376 Specifies a list of functions to call after the OpenEmbedded build 7377 system has removed unnecessary packages. When runtime package 7378 management is disabled in the image, several packages are removed 7379 including ``base-passwd``, ``shadow``, and ``update-alternatives``. 7380 You can specify functions separated by spaces:: 7381 7382 ROOTFS_POSTUNINSTALL_COMMAND += "function" 7383 7384 If you need to pass the root filesystem path to a command within a 7385 function, you can use ``${IMAGE_ROOTFS}``, which points to the 7386 directory that becomes the root filesystem image. See the 7387 :term:`IMAGE_ROOTFS` variable for more 7388 information. 7389 7390 :term:`ROOTFS_PREPROCESS_COMMAND` 7391 Specifies a list of functions to call before the OpenEmbedded build 7392 system has created the root filesystem. You can specify functions 7393 separated by spaces:: 7394 7395 ROOTFS_PREPROCESS_COMMAND += "function" 7396 7397 If you need to pass the root filesystem path to a command within a 7398 function, you can use ``${IMAGE_ROOTFS}``, which points to the 7399 directory that becomes the root filesystem image. See the 7400 :term:`IMAGE_ROOTFS` variable for more 7401 information. 7402 7403 :term:`RPMBUILD_EXTRA_PARAMS` 7404 Specifies extra user-defined parameters for the ``rpmbuild`` command. 7405 7406 :term:`RPROVIDES` 7407 A list of package name aliases that a package also provides. These 7408 aliases are useful for satisfying runtime dependencies of other 7409 packages both during the build and on the target (as specified by 7410 :term:`RDEPENDS`). 7411 7412 .. note:: 7413 7414 A package's own name is implicitly already in its :term:`RPROVIDES` list. 7415 7416 As with all package-controlling variables, you must always use the 7417 variable in conjunction with a package name override. Here is an 7418 example:: 7419 7420 RPROVIDES:${PN} = "widget-abi-2" 7421 7422 :term:`RRECOMMENDS` 7423 A list of packages that extends the usability of a package being 7424 built. The package being built does not depend on this list of 7425 packages in order to successfully build, but rather uses them for 7426 extended usability. To specify runtime dependencies for packages, see 7427 the :term:`RDEPENDS` variable. 7428 7429 The package manager will automatically install the :term:`RRECOMMENDS` 7430 list of packages when installing the built package. However, you can 7431 prevent listed packages from being installed by using the 7432 :term:`BAD_RECOMMENDATIONS`, 7433 :term:`NO_RECOMMENDATIONS`, and 7434 :term:`PACKAGE_EXCLUDE` variables. 7435 7436 Packages specified in :term:`RRECOMMENDS` need not actually be produced. 7437 However, there must be a recipe providing each package, either 7438 through the :term:`PACKAGES` or 7439 :term:`PACKAGES_DYNAMIC` variables or the 7440 :term:`RPROVIDES` variable, or an error will occur 7441 during the build. If such a recipe does exist and the package is not 7442 produced, the build continues without error. 7443 7444 Because the :term:`RRECOMMENDS` variable applies to packages being built, 7445 you should always attach an override to the variable to specify the 7446 particular package whose usability is being extended. For example, 7447 suppose you are building a development package that is extended to 7448 support wireless functionality. In this case, you would use the 7449 following:: 7450 7451 RRECOMMENDS:${PN}-dev += "wireless_package_name" 7452 7453 In the 7454 example, the package name (``${PN}-dev``) must appear as it would in 7455 the :term:`PACKAGES` namespace before any renaming of the output package 7456 by classes such as :ref:`ref-classes-debian`. 7457 7458 BitBake, which the OpenEmbedded build system uses, supports 7459 specifying versioned recommends. Although the syntax varies depending 7460 on the packaging format, BitBake hides these differences from you. 7461 Here is the general syntax to specify versions with the 7462 :term:`RRECOMMENDS` variable:: 7463 7464 RRECOMMENDS:${PN} = "package (operator version)" 7465 7466 For ``operator``, you can specify the following: 7467 7468 - = 7469 - < 7470 - > 7471 - <= 7472 - >= 7473 7474 For example, the following sets up a recommend on version 1.2 or 7475 greater of the package ``foo``:: 7476 7477 RRECOMMENDS:${PN} = "foo (>= 1.2)" 7478 7479 :term:`RREPLACES` 7480 A list of packages replaced by a package. The package manager uses 7481 this variable to determine which package should be installed to 7482 replace other package(s) during an upgrade. In order to also have the 7483 other package(s) removed at the same time, you must add the name of 7484 the other package to the :term:`RCONFLICTS` variable. 7485 7486 As with all package-controlling variables, you must use this variable 7487 in conjunction with a package name override. Here is an example:: 7488 7489 RREPLACES:${PN} = "other_package_being_replaced" 7490 7491 BitBake, which the OpenEmbedded build system uses, supports 7492 specifying versioned replacements. Although the syntax varies 7493 depending on the packaging format, BitBake hides these differences 7494 from you. Here is the general syntax to specify versions with the 7495 :term:`RREPLACES` variable:: 7496 7497 RREPLACES:${PN} = "package (operator version)" 7498 7499 For ``operator``, you can specify the following: 7500 7501 - = 7502 - < 7503 - > 7504 - <= 7505 - >= 7506 7507 For example, the following sets up a replacement using version 1.2 7508 or greater of the package ``foo``:: 7509 7510 RREPLACES:${PN} = "foo (>= 1.2)" 7511 7512 :term:`RSUGGESTS` 7513 A list of additional packages that you can suggest for installation 7514 by the package manager at the time a package is installed. Not all 7515 package managers support this functionality. 7516 7517 As with all package-controlling variables, you must always use this 7518 variable in conjunction with a package name override. Here is an 7519 example:: 7520 7521 RSUGGESTS:${PN} = "useful_package another_package" 7522 7523 :term:`RUST_CHANNEL` 7524 Specifies which version of Rust to build - "stable", "beta" or "nightly". 7525 The default value is "stable". Set this at your own risk, as values other 7526 than "stable" are not guaranteed to work at a given time. 7527 7528 :term:`S` 7529 The location in the :term:`Build Directory` where 7530 unpacked recipe source code resides. By default, this directory is 7531 ``${``\ :term:`WORKDIR`\ ``}/${``\ :term:`BPN`\ ``}-${``\ :term:`PV`\ ``}``, 7532 where ``${BPN}`` is the base recipe name and ``${PV}`` is the recipe 7533 version. If the source tarball extracts the code to a directory named 7534 anything other than ``${BPN}-${PV}``, or if the source code is 7535 fetched from an SCM such as Git or Subversion, then you must set 7536 :term:`S` in the recipe so that the OpenEmbedded build system knows where 7537 to find the unpacked source. 7538 7539 As an example, assume a :term:`Source Directory` 7540 top-level folder named ``poky`` and a default :term:`Build Directory` at 7541 ``poky/build``. In this case, the work directory the build system 7542 uses to keep the unpacked recipe for ``db`` is the following:: 7543 7544 poky/build/tmp/work/qemux86-poky-linux/db/5.1.19-r3/db-5.1.19 7545 7546 The unpacked source code resides in the ``db-5.1.19`` folder. 7547 7548 This next example assumes a Git repository. By default, Git 7549 repositories are cloned to ``${WORKDIR}/git`` during 7550 :ref:`ref-tasks-fetch`. Since this path is different 7551 from the default value of :term:`S`, you must set it specifically so the 7552 source can be located:: 7553 7554 SRC_URI = "git://path/to/repo.git;branch=main" 7555 S = "${WORKDIR}/git" 7556 7557 :term:`SANITY_REQUIRED_UTILITIES` 7558 Specifies a list of command-line utilities that should be checked for 7559 during the initial sanity checking process when running BitBake. If 7560 any of the utilities are not installed on the build host, then 7561 BitBake immediately exits with an error. 7562 7563 :term:`SANITY_TESTED_DISTROS` 7564 A list of the host distribution identifiers that the build system has 7565 been tested against. Identifiers consist of the host distributor ID 7566 followed by the release, as reported by the ``lsb_release`` tool or 7567 as read from ``/etc/lsb-release``. Separate the list items with 7568 explicit newline characters (``\n``). If :term:`SANITY_TESTED_DISTROS` is 7569 not empty and the current value of 7570 :term:`NATIVELSBSTRING` does not appear in the 7571 list, then the build system reports a warning that indicates the 7572 current host distribution has not been tested as a build host. 7573 7574 :term:`SDK_ARCH` 7575 The target architecture for the SDK. Typically, you do not directly 7576 set this variable. Instead, use :term:`SDKMACHINE`. 7577 7578 :term:`SDK_ARCHIVE_TYPE` 7579 Specifies the type of archive to create for the SDK. Valid values: 7580 7581 - ``tar.xz`` (default) 7582 - ``tar.zst`` 7583 - ``7zip`` 7584 - ``zip`` 7585 7586 Only one archive type can be specified. 7587 7588 :term:`SDK_BUILDINFO_FILE` 7589 When using the :ref:`ref-classes-image-buildinfo` class, 7590 specifies the file in the SDK to write the build information into. The 7591 default value is "``/buildinfo``". 7592 7593 :term:`SDK_CUSTOM_TEMPLATECONF` 7594 When building the extensible SDK, if :term:`SDK_CUSTOM_TEMPLATECONF` is set to 7595 "1" and a ``conf/templateconf.cfg`` file exists in the :term:`Build Directory` 7596 (:term:`TOPDIR`) then this will be copied into the SDK. 7597 7598 :term:`SDK_DEPLOY` 7599 The directory set up and used by the 7600 :ref:`populate_sdk_base <ref-classes-populate-sdk>` class to which the 7601 SDK is deployed. The :ref:`populate_sdk_base <ref-classes-populate-sdk>` 7602 class defines :term:`SDK_DEPLOY` as follows:: 7603 7604 SDK_DEPLOY = "${TMPDIR}/deploy/sdk" 7605 7606 :term:`SDK_DIR` 7607 The parent directory used by the OpenEmbedded build system when 7608 creating SDK output. The 7609 :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class defines 7610 the variable as follows:: 7611 7612 SDK_DIR = "${WORKDIR}/sdk" 7613 7614 .. note:: 7615 7616 The :term:`SDK_DIR` directory is a temporary directory as it is part of 7617 :term:`WORKDIR`. The final output directory is :term:`SDK_DEPLOY`. 7618 7619 :term:`SDK_EXT_TYPE` 7620 Controls whether or not shared state artifacts are copied into the 7621 extensible SDK. The default value of "full" copies all of the 7622 required shared state artifacts into the extensible SDK. The value 7623 "minimal" leaves these artifacts out of the SDK. 7624 7625 .. note:: 7626 7627 If you set the variable to "minimal", you need to ensure 7628 :term:`SSTATE_MIRRORS` is set in the SDK's configuration to enable the 7629 artifacts to be fetched as needed. 7630 7631 :term:`SDK_HOST_MANIFEST` 7632 The manifest file for the host part of the SDK. This file lists all 7633 the installed packages that make up the host part of the SDK. The 7634 file contains package information on a line-per-package basis as 7635 follows:: 7636 7637 packagename packagearch version 7638 7639 The :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class 7640 defines the manifest file as follows:: 7641 7642 SDK_HOST_MANIFEST = "${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.host.manifest" 7643 7644 The location is derived using the :term:`SDK_DEPLOY` and 7645 :term:`TOOLCHAIN_OUTPUTNAME` variables. 7646 7647 :term:`SDK_INCLUDE_PKGDATA` 7648 When set to "1", specifies to include the packagedata for all recipes 7649 in the "world" target in the extensible SDK. Including this data 7650 allows the ``devtool search`` command to find these recipes in search 7651 results, as well as allows the ``devtool add`` command to map 7652 dependencies more effectively. 7653 7654 .. note:: 7655 7656 Enabling the :term:`SDK_INCLUDE_PKGDATA` 7657 variable significantly increases build time because all of world 7658 needs to be built. Enabling the variable also slightly increases 7659 the size of the extensible SDK. 7660 7661 :term:`SDK_INCLUDE_TOOLCHAIN` 7662 When set to "1", specifies to include the toolchain in the extensible 7663 SDK. Including the toolchain is useful particularly when 7664 :term:`SDK_EXT_TYPE` is set to "minimal" to keep 7665 the SDK reasonably small but you still want to provide a usable 7666 toolchain. For example, suppose you want to use the toolchain from an 7667 IDE or from other tools and you do not want to perform additional 7668 steps to install the toolchain. 7669 7670 The :term:`SDK_INCLUDE_TOOLCHAIN` variable defaults to "0" if 7671 :term:`SDK_EXT_TYPE` is set to "minimal", and defaults to "1" if 7672 :term:`SDK_EXT_TYPE` is set to "full". 7673 7674 :term:`SDK_NAME` 7675 The base name for SDK output files. The default value (as set in 7676 ``meta-poky/conf/distro/poky.conf``) is derived from the 7677 :term:`DISTRO`, 7678 :term:`TCLIBC`, 7679 :term:`SDKMACHINE`, 7680 :term:`IMAGE_BASENAME`, 7681 :term:`TUNE_PKGARCH`, and 7682 :term:`MACHINE` variables:: 7683 7684 SDK_NAME = "${DISTRO}-${TCLIBC}-${SDKMACHINE}-${IMAGE_BASENAME}-${TUNE_PKGARCH}-${MACHINE}" 7685 7686 :term:`SDK_OS` 7687 Specifies the operating system for which the SDK will be built. The 7688 default value is the value of :term:`BUILD_OS`. 7689 7690 :term:`SDK_OUTPUT` 7691 The location used by the OpenEmbedded build system when creating SDK 7692 output. The :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` 7693 class defines the variable as follows:: 7694 7695 SDK_DIR = "${WORKDIR}/sdk" 7696 SDK_OUTPUT = "${SDK_DIR}/image" 7697 SDK_DEPLOY = "${DEPLOY_DIR}/sdk" 7698 7699 .. note:: 7700 7701 The :term:`SDK_OUTPUT` directory is a temporary directory as it is part of 7702 :term:`WORKDIR` by way of :term:`SDK_DIR`. The final output directory is 7703 :term:`SDK_DEPLOY`. 7704 7705 :term:`SDK_PACKAGE_ARCHS` 7706 Specifies a list of architectures compatible with the SDK machine. 7707 This variable is set automatically and should not normally be 7708 hand-edited. Entries are separated using spaces and listed in order 7709 of priority. The default value for :term:`SDK_PACKAGE_ARCHS` is "all any 7710 noarch ${SDK_ARCH}-${SDKPKGSUFFIX}". 7711 7712 :term:`SDK_POSTPROCESS_COMMAND` 7713 Specifies a list of functions to call once the OpenEmbedded build 7714 system creates the SDK. You can specify functions separated by 7715 spaces: 7716 7717 SDK_POSTPROCESS_COMMAND += "function" 7718 7719 If you need to pass an SDK path to a command within a function, you 7720 can use ``${SDK_DIR}``, which points to the parent directory used by 7721 the OpenEmbedded build system when creating SDK output. See the 7722 :term:`SDK_DIR` variable for more information. 7723 7724 :term:`SDK_PREFIX` 7725 The toolchain binary prefix used for 7726 :ref:`ref-classes-nativesdk` recipes. The 7727 OpenEmbedded build system uses the :term:`SDK_PREFIX` value to set the 7728 :term:`TARGET_PREFIX` when building 7729 ``nativesdk`` recipes. The default value is "${SDK_SYS}-". 7730 7731 :term:`SDK_RECRDEP_TASKS` 7732 A list of shared state tasks added to the extensible SDK. By default, 7733 the following tasks are added: 7734 7735 - :ref:`ref-tasks-populate_lic` 7736 - :ref:`ref-tasks-package_qa` 7737 - :ref:`ref-tasks-populate_sysroot` 7738 - :ref:`ref-tasks-deploy` 7739 7740 Despite the default value of "" for the 7741 :term:`SDK_RECRDEP_TASKS` variable, the above four tasks are always added 7742 to the SDK. To specify tasks beyond these four, you need to use the 7743 :term:`SDK_RECRDEP_TASKS` variable (e.g. you are defining additional 7744 tasks that are needed in order to build 7745 :term:`SDK_TARGETS`). 7746 7747 :term:`SDK_SYS` 7748 Specifies the system, including the architecture and the operating 7749 system, for which the SDK will be built. 7750 7751 The OpenEmbedded build system automatically sets this variable based 7752 on :term:`SDK_ARCH`, 7753 :term:`SDK_VENDOR`, and 7754 :term:`SDK_OS`. You do not need to set the :term:`SDK_SYS` 7755 variable yourself. 7756 7757 :term:`SDK_TARGET_MANIFEST` 7758 The manifest file for the target part of the SDK. This file lists all 7759 the installed packages that make up the target part of the SDK. The 7760 file contains package information on a line-per-package basis as 7761 follows:: 7762 7763 packagename packagearch version 7764 7765 The :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class 7766 defines the manifest file as follows:: 7767 7768 SDK_TARGET_MANIFEST = "${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.target.manifest" 7769 7770 The location is derived using the :term:`SDK_DEPLOY` and 7771 :term:`TOOLCHAIN_OUTPUTNAME` variables. 7772 7773 :term:`SDK_TARGETS` 7774 A list of targets to install from shared state as part of the 7775 standard or extensible SDK installation. The default value is "${PN}" 7776 (i.e. the image from which the SDK is built). 7777 7778 The :term:`SDK_TARGETS` variable is an internal variable and typically 7779 would not be changed. 7780 7781 :term:`SDK_TITLE` 7782 The title to be printed when running the SDK installer. By default, 7783 this title is based on the :term:`DISTRO_NAME` or 7784 :term:`DISTRO` variable and is set in the 7785 :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class as 7786 follows:: 7787 7788 SDK_TITLE ??= "${@d.getVar('DISTRO_NAME') or d.getVar('DISTRO')} SDK" 7789 7790 For the default distribution "poky", 7791 :term:`SDK_TITLE` is set to "Poky (Yocto Project Reference Distro)". 7792 7793 For information on how to change this default title, see the 7794 ":ref:`sdk-manual/appendix-customizing:changing the extensible sdk installer title`" 7795 section in the Yocto Project Application Development and the 7796 Extensible Software Development Kit (eSDK) manual. 7797 7798 :term:`SDK_TOOLCHAIN_LANGS` 7799 Specifies programming languages to support in the SDK, as a 7800 space-separated list. Currently supported items are ``rust`` and ``go``. 7801 7802 :term:`SDK_UPDATE_URL` 7803 An optional URL for an update server for the extensible SDK. If set, 7804 the value is used as the default update server when running 7805 ``devtool sdk-update`` within the extensible SDK. 7806 7807 :term:`SDK_VENDOR` 7808 Specifies the name of the SDK vendor. 7809 7810 :term:`SDK_VERSION` 7811 Specifies the version of the SDK. The Poky distribution configuration file 7812 (``/meta-poky/conf/distro/poky.conf``) sets the default 7813 :term:`SDK_VERSION` as follows:: 7814 7815 SDK_VERSION = "${@d.getVar('DISTRO_VERSION').replace('snapshot-${METADATA_REVISION}', 'snapshot')}" 7816 7817 For additional information, see the 7818 :term:`DISTRO_VERSION` and 7819 :term:`METADATA_REVISION` variables. 7820 7821 :term:`SDK_ZIP_OPTIONS` 7822 Specifies extra options to pass to the ``zip`` command when zipping the SDK 7823 (i.e. when :term:`SDK_ARCHIVE_TYPE` is set to "zip"). The default value is 7824 "-y". 7825 7826 :term:`SDKEXTPATH` 7827 The default installation directory for the Extensible SDK. By 7828 default, this directory is based on the :term:`DISTRO` 7829 variable and is set in the 7830 :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class as 7831 follows:: 7832 7833 SDKEXTPATH ??= "~/${@d.getVar('DISTRO')}_sdk" 7834 7835 For the 7836 default distribution "poky", the :term:`SDKEXTPATH` is set to "poky_sdk". 7837 7838 For information on how to change this default directory, see the 7839 ":ref:`sdk-manual/appendix-customizing:changing the default sdk installation directory`" 7840 section in the Yocto Project Application Development and the 7841 Extensible Software Development Kit (eSDK) manual. 7842 7843 :term:`SDKIMAGE_FEATURES` 7844 Equivalent to :term:`IMAGE_FEATURES`. However, this variable applies to 7845 the SDK generated from an image using the following command:: 7846 7847 $ bitbake -c populate_sdk imagename 7848 7849 :term:`SDKMACHINE` 7850 The machine for which the SDK is built. In other words, the SDK is built 7851 such that it runs on the target you specify with the :term:`SDKMACHINE` 7852 value. The value points to a corresponding ``.conf`` file under 7853 ``conf/machine-sdk/`` in the enabled layers, for example ``aarch64``, 7854 ``i586``, ``i686``, ``ppc64``, ``ppc64le``, and ``x86_64`` are 7855 :oe_git:`available in OpenEmbedded-Core </openembedded-core/tree/meta/conf/machine-sdk>`. 7856 7857 The variable defaults to :term:`BUILD_ARCH` so that SDKs are built for the 7858 architecture of the build machine. 7859 7860 .. note:: 7861 7862 You cannot set the :term:`SDKMACHINE` 7863 variable in your distribution configuration file. If you do, the 7864 configuration will not take effect. 7865 7866 :term:`SDKPATH` 7867 Defines the path used to collect the SDK components and build the 7868 installer. 7869 7870 :term:`SDKPATHINSTALL` 7871 Defines the path offered to the user for installation of the SDK that 7872 is generated by the OpenEmbedded build system. The path appears as 7873 the default location for installing the SDK when you run the SDK's 7874 installation script. You can override the offered path when you run 7875 the script. 7876 7877 :term:`SDKTARGETSYSROOT` 7878 The full path to the sysroot used for cross-compilation within an SDK 7879 as it will be when installed into the default 7880 :term:`SDKPATHINSTALL`. 7881 7882 :term:`SECTION` 7883 The section in which packages should be categorized. Package 7884 management utilities can make use of this variable. 7885 7886 :term:`SELECTED_OPTIMIZATION` 7887 Specifies the optimization flags passed to the C compiler when 7888 building for the target. The flags are passed through the default 7889 value of the :term:`TARGET_CFLAGS` variable. 7890 7891 The :term:`SELECTED_OPTIMIZATION` variable takes the value of 7892 :term:`FULL_OPTIMIZATION` unless :term:`DEBUG_BUILD` = "1", in which 7893 case the value of :term:`DEBUG_OPTIMIZATION` is used. 7894 7895 :term:`SERIAL_CONSOLES` 7896 Defines a serial console (TTY) to enable using 7897 :wikipedia:`getty <Getty_(Unix)>`. Provide a value that specifies the 7898 baud rate followed by the TTY device name separated by a semicolon. 7899 Use spaces to separate multiple devices:: 7900 7901 SERIAL_CONSOLES = "115200;ttyS0 115200;ttyS1" 7902 7903 :term:`SETUPTOOLS_BUILD_ARGS` 7904 When used by recipes that inherit the :ref:`ref-classes-setuptools3` 7905 class, this variable can be used to specify additional arguments to be 7906 passed to ``setup.py build`` in the ``setuptools3_do_compile()`` task. 7907 7908 :term:`SETUPTOOLS_SETUP_PATH` 7909 When used by recipes that inherit the :ref:`ref-classes-setuptools3` 7910 class, this variable should be used to specify the directory in which 7911 the ``setup.py`` file is located if it is not at the root of the source 7912 tree (as specified by :term:`S`). For example, in a recipe where the 7913 sources are fetched from a Git repository and ``setup.py`` is in a 7914 ``python/pythonmodule`` subdirectory, you would have this:: 7915 7916 S = "${WORKDIR}/git" 7917 SETUPTOOLS_SETUP_PATH = "${S}/python/pythonmodule" 7918 7919 :term:`SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS` 7920 A list of recipe dependencies that should not be used to determine 7921 signatures of tasks from one recipe when they depend on tasks from 7922 another recipe. For example:: 7923 7924 SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += "intone->mplayer2" 7925 7926 In the previous example, ``intone`` depends on ``mplayer2``. 7927 7928 You can use the special token ``"*"`` on the left-hand side of the 7929 dependency to match all recipes except the one on the right-hand 7930 side. Here is an example:: 7931 7932 SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += "*->quilt-native" 7933 7934 In the previous example, all recipes except ``quilt-native`` ignore 7935 task signatures from the ``quilt-native`` recipe when determining 7936 their task signatures. 7937 7938 Use of this variable is one mechanism to remove dependencies that 7939 affect task signatures and thus force rebuilds when a recipe changes. 7940 7941 .. note:: 7942 7943 If you add an inappropriate dependency for a recipe relationship, 7944 the software might break during runtime if the interface of the 7945 second recipe was changed after the first recipe had been built. 7946 7947 :term:`SIGGEN_EXCLUDERECIPES_ABISAFE` 7948 A list of recipes that are completely stable and will never change. 7949 The ABI for the recipes in the list are presented by output from the 7950 tasks run to build the recipe. Use of this variable is one way to 7951 remove dependencies from one recipe on another that affect task 7952 signatures and thus force rebuilds when the recipe changes. 7953 7954 .. note:: 7955 7956 If you add an inappropriate variable to this list, the software 7957 might break at runtime if the interface of the recipe was changed 7958 after the other had been built. 7959 7960 :term:`SIGGEN_LOCKEDSIGS` 7961 The list of locked tasks, with the form:: 7962 7963 SIGGEN_LOCKEDSIGS += "<package>:<task>:<signature>" 7964 7965 If ``<signature>`` exists for the specified ``<task>`` and ``<package>`` 7966 in the sstate cache, BitBake will use the cached output instead of 7967 rebuilding the ``<task>``. If it does not exist, BitBake will build the 7968 ``<task>`` and the sstate cache will be used next time. 7969 7970 Example:: 7971 7972 SIGGEN_LOCKEDSIGS += "bc:do_compile:09772aa4532512baf96d433484f27234d4b7c11dd9cda0d6f56fa1b7ce6f25f0" 7973 7974 You can obtain the signature of all the tasks for the recipe ``bc`` using:: 7975 7976 bitbake -S none bc 7977 7978 Then you can look at files in ``build/tmp/stamps/<arch>/bc`` and look for 7979 files like: ``<PV>.do_compile.sigdata.09772aa4532512baf96d433484f27234d4b7c11dd9cda0d6f56fa1b7ce6f25f0``. 7980 7981 Alternatively, you can also use :doc:`bblock </dev-manual/bblock>` to 7982 generate this line for you. 7983 7984 :term:`SIGGEN_LOCKEDSIGS_TASKSIG_CHECK` 7985 Specifies the debug level of task signature check. 3 levels are supported: 7986 7987 * ``info``: displays a "Note" message to remind the user that a task is locked 7988 and the current signature matches the locked one. 7989 * ``warn``: displays a "Warning" message if a task is locked and the current 7990 signature does not match the locked one. 7991 * ``error``: same as warn but displays an "Error" message and aborts. 7992 7993 :term:`SIGGEN_LOCKEDSIGS_TYPES` 7994 Allowed overrides for :term:`SIGGEN_LOCKEDSIGS`. This is mainly used 7995 for architecture specific locks. A common value for 7996 :term:`SIGGEN_LOCKEDSIGS_TYPES` is ``${PACKAGE_ARCHS}``:: 7997 7998 SIGGEN_LOCKEDSIGS_TYPES += "${PACKAGE_ARCHS}" 7999 8000 SIGGEN_LOCKEDSIGS_core2-64 += "bc:do_compile:09772aa4532512baf96d433484f27234d4b7c11dd9cda0d6f56fa1b7ce6f25f0" 8001 SIGGEN_LOCKEDSIGS_cortexa57 += "bc:do_compile:12178eb6d55ef602a8fe638e49862fd247e07b228f0f08967697b655bfe4bb61" 8002 8003 Here, the ``do_compile`` task from ``bc`` will be locked only for 8004 ``core2-64`` and ``cortexa57`` but not for other architectures such as 8005 ``mips32r2``. 8006 8007 :term:`SITEINFO_BITS` 8008 Specifies the number of bits for the target system CPU. The value 8009 should be either "32" or "64". 8010 8011 :term:`SITEINFO_ENDIANNESS` 8012 Specifies the endian byte order of the target system. The value 8013 should be either "le" for little-endian or "be" for big-endian. 8014 8015 :term:`SKIP_FILEDEPS` 8016 Enables removal of all files from the "Provides" section of an RPM 8017 package. Removal of these files is required for packages containing 8018 prebuilt binaries and libraries such as ``libstdc++`` and ``glibc``. 8019 8020 To enable file removal, set the variable to "1" in your 8021 ``conf/local.conf`` configuration file in your: 8022 :term:`Build Directory`:: 8023 8024 SKIP_FILEDEPS = "1" 8025 8026 :term:`SKIP_RECIPE` 8027 Used to prevent the OpenEmbedded build system from building a given 8028 recipe. Specify the :term:`PN` value as a variable flag (``varflag``) 8029 and provide a reason, which will be reported when attempting to 8030 build the recipe. 8031 8032 To prevent a recipe from being built, use the :term:`SKIP_RECIPE` 8033 variable in your ``local.conf`` file or distribution configuration. 8034 Here is an example which prevents ``myrecipe`` from being built:: 8035 8036 SKIP_RECIPE[myrecipe] = "Not supported by our organization." 8037 8038 :term:`SOC_FAMILY` 8039 A colon-separated list grouping together machines based upon the same 8040 family of SoC (System On Chip). You typically set this variable in a 8041 common ``.inc`` file that you include in the configuration files of all 8042 the machines. 8043 8044 .. note:: 8045 8046 You must include ``conf/machine/include/soc-family.inc`` for this 8047 variable to appear in :term:`MACHINEOVERRIDES`. 8048 8049 :term:`SOLIBS` 8050 Defines the suffix for shared libraries used on the target platform. 8051 By default, this suffix is ".so.*" for all Linux-based systems and is 8052 defined in the ``meta/conf/bitbake.conf`` configuration file. 8053 8054 You will see this variable referenced in the default values of 8055 ``FILES:${PN}``. 8056 8057 :term:`SOLIBSDEV` 8058 Defines the suffix for the development symbolic link (symlink) for 8059 shared libraries on the target platform. By default, this suffix is 8060 ".so" for Linux-based systems and is defined in the 8061 ``meta/conf/bitbake.conf`` configuration file. 8062 8063 You will see this variable referenced in the default values of 8064 ``FILES:${PN}-dev``. 8065 8066 :term:`SOURCE_DATE_EPOCH` 8067 This defines a date expressed in number of seconds since 8068 the UNIX EPOCH (01 Jan 1970 00:00:00 UTC), which is used by 8069 multiple build systems to force a timestamp in built binaries. 8070 Many upstream projects already support this variable. 8071 8072 You will find more details in the `official specifications 8073 <https://reproducible-builds.org/specs/source-date-epoch/>`__. 8074 8075 A value for each recipe is computed from the sources by 8076 :oe_git:`meta/lib/oe/reproducible.py </openembedded-core/tree/meta/lib/oe/reproducible.py>`. 8077 8078 If a recipe wishes to override the default behavior, it should set its 8079 own :term:`SOURCE_DATE_EPOCH` value:: 8080 8081 SOURCE_DATE_EPOCH = "1613559011" 8082 8083 :term:`SOURCE_MIRROR_FETCH` 8084 When you are fetching files to create a mirror of sources (i.e. 8085 creating a source mirror), setting :term:`SOURCE_MIRROR_FETCH` to "1" in 8086 your ``local.conf`` configuration file ensures the source for all 8087 recipes are fetched regardless of whether or not a recipe is 8088 compatible with the configuration. A recipe is considered 8089 incompatible with the currently configured machine when either or 8090 both the :term:`COMPATIBLE_MACHINE` 8091 variable and :term:`COMPATIBLE_HOST` variables 8092 specify compatibility with a machine other than that of the current 8093 machine or host. 8094 8095 .. note:: 8096 8097 Do not set the :term:`SOURCE_MIRROR_FETCH` 8098 variable unless you are creating a source mirror. In other words, 8099 do not set the variable during a normal build. 8100 8101 :term:`SOURCE_MIRROR_URL` 8102 Defines your own :term:`PREMIRRORS` from which to 8103 first fetch source before attempting to fetch from the upstream 8104 specified in :term:`SRC_URI`. 8105 8106 To use this variable, you must globally inherit the 8107 :ref:`ref-classes-own-mirrors` class and then provide 8108 the URL to your mirrors. Here is the general syntax:: 8109 8110 INHERIT += "own-mirrors" 8111 SOURCE_MIRROR_URL = "http://example.com/my_source_mirror" 8112 8113 .. note:: 8114 8115 You can specify only a single URL in :term:`SOURCE_MIRROR_URL`. 8116 8117 .. note:: 8118 8119 If the mirror is protected behind a username and password, the 8120 :term:`build host` needs to be configured so the :term:`build system 8121 <OpenEmbedded Build System>` is able to fetch from the mirror. 8122 8123 The recommended way to do that is by setting the following parameters 8124 in ``$HOME/.netrc`` (``$HOME`` being the :term:`build host` home 8125 directory):: 8126 8127 machine example.com 8128 login <user> 8129 password <password> 8130 8131 This file requires permissions set to ``400`` or ``600`` to prevent 8132 other users from reading the file:: 8133 8134 chmod 600 "$HOME/.netrc" 8135 8136 Another method to configure the username and password is from the URL 8137 in :term:`SOURCE_MIRROR_URL` directly, with the ``user`` and ``pswd`` 8138 parameters:: 8139 8140 SOURCE_MIRROR_URL = "http://example.com/my_source_mirror;user=<user>;pswd=<password>" 8141 8142 :term:`SPDX_ARCHIVE_PACKAGED` 8143 This option allows to add to :term:`SPDX` output compressed archives 8144 of the files in the generated target packages. 8145 8146 Such archives are available in 8147 ``tmp/deploy/spdx/MACHINE/packages/packagename.tar.zst`` 8148 under the :term:`Build Directory`. 8149 8150 Enable this option as follows:: 8151 8152 SPDX_ARCHIVE_PACKAGED = "1" 8153 8154 According to our tests on release 4.1 "langdale", building 8155 ``core-image-minimal`` for the ``qemux86-64`` machine, enabling this 8156 option multiplied the size of the ``tmp/deploy/spdx`` directory by a 8157 factor of 13 (+1.6 GiB for this image), compared to just using the 8158 :ref:`ref-classes-create-spdx` class with no option. 8159 8160 Note that this option doesn't increase the size of :term:`SPDX` 8161 files in ``tmp/deploy/images/MACHINE``. 8162 8163 :term:`SPDX_ARCHIVE_SOURCES` 8164 This option allows to add to :term:`SPDX` output compressed archives 8165 of the sources for packages installed on the target. It currently 8166 only works when :term:`SPDX_INCLUDE_SOURCES` is set. 8167 8168 This is one way of fulfilling "source code access" license 8169 requirements. 8170 8171 Such source archives are available in 8172 ``tmp/deploy/spdx/MACHINE/recipes/recipe-packagename.tar.zst`` 8173 under the :term:`Build Directory`. 8174 8175 Enable this option as follows:: 8176 8177 SPDX_INCLUDE_SOURCES = "1" 8178 SPDX_ARCHIVE_SOURCES = "1" 8179 8180 According to our tests on release 4.1 "langdale", building 8181 ``core-image-minimal`` for the ``qemux86-64`` machine, enabling 8182 these options multiplied the size of the ``tmp/deploy/spdx`` 8183 directory by a factor of 11 (+1.4 GiB for this image), 8184 compared to just using the :ref:`ref-classes-create-spdx` 8185 class with no option. 8186 8187 Note that using this option only marginally increases the size 8188 of the :term:`SPDX` output in ``tmp/deploy/images/MACHINE/`` 8189 (+ 0.07\% with the tested image), compared to just enabling 8190 :term:`SPDX_INCLUDE_SOURCES`. 8191 8192 :term:`SPDX_CUSTOM_ANNOTATION_VARS` 8193 This option allows to associate `SPDX annotations 8194 <https://spdx.github.io/spdx-spec/v2.3/annotations/>`__ to a recipe, 8195 using the values of variables in the recipe:: 8196 8197 ANNOTATION1 = "First annotation for recipe" 8198 ANNOTATION2 = "Second annotation for recipe" 8199 SPDX_CUSTOM_ANNOTATION_VARS = "ANNOTATION1 ANNOTATION2" 8200 8201 This will add a new block to the recipe ``.sdpx.json`` output:: 8202 8203 "annotations": [ 8204 { 8205 "annotationDate": "2023-04-18T08:32:12Z", 8206 "annotationType": "OTHER", 8207 "annotator": "Tool: oe-spdx-creator - 1.0", 8208 "comment": "ANNOTATION1=First annotation for recipe" 8209 }, 8210 { 8211 "annotationDate": "2023-04-18T08:32:12Z", 8212 "annotationType": "OTHER", 8213 "annotator": "Tool: oe-spdx-creator - 1.0", 8214 "comment": "ANNOTATION2=Second annotation for recipe" 8215 } 8216 ], 8217 8218 :term:`SPDX_INCLUDE_SOURCES` 8219 This option allows to add a description of the source files used to build 8220 the host tools and the target packages, to the ``spdx.json`` files in 8221 ``tmp/deploy/spdx/MACHINE/recipes/`` under the :term:`Build Directory`. 8222 As a consequence, the ``spdx.json`` files under the ``by-namespace`` and 8223 ``packages`` subdirectories in ``tmp/deploy/spdx/MACHINE`` are also 8224 modified to include references to such source file descriptions. 8225 8226 Enable this option as follows:: 8227 8228 SPDX_INCLUDE_SOURCES = "1" 8229 8230 According to our tests on release 4.1 "langdale", building 8231 ``core-image-minimal`` for the ``qemux86-64`` machine, enabling 8232 this option multiplied the total size of the ``tmp/deploy/spdx`` 8233 directory by a factor of 3 (+291 MiB for this image), 8234 and the size of the ``IMAGE-MACHINE.spdx.tar.zst`` in 8235 ``tmp/deploy/images/MACHINE`` by a factor of 130 (+15 MiB for this 8236 image), compared to just using the :ref:`ref-classes-create-spdx` class 8237 with no option. 8238 8239 :term:`SPDX_NAMESPACE_PREFIX` 8240 This option could be used in order to change the prefix of ``spdxDocument`` 8241 and the prefix of ``documentNamespace``. It is set by default to 8242 ``http://spdx.org/spdxdoc``. 8243 8244 :term:`SPDX_PRETTY` 8245 This option makes the SPDX output more human-readable, using 8246 identation and newlines, instead of the default output in a 8247 single line:: 8248 8249 SPDX_PRETTY = "1" 8250 8251 The generated SPDX files are approximately 20% bigger, but 8252 this option is recommended if you want to inspect the SPDX 8253 output files with a text editor. 8254 8255 :term:`SPDXLICENSEMAP` 8256 Maps commonly used license names to their SPDX counterparts found in 8257 ``meta/files/common-licenses/``. For the default :term:`SPDXLICENSEMAP` 8258 mappings, see the ``meta/conf/licenses.conf`` file. 8259 8260 For additional information, see the :term:`LICENSE` 8261 variable. 8262 8263 :term:`SPECIAL_PKGSUFFIX` 8264 A list of prefixes for :term:`PN` used by the OpenEmbedded 8265 build system to create variants of recipes or packages. The list 8266 specifies the prefixes to strip off during certain circumstances such 8267 as the generation of the :term:`BPN` variable. 8268 8269 :term:`SPL_BINARY` 8270 The file type for the Secondary Program Loader (SPL). Some devices 8271 use an SPL from which to boot (e.g. the BeagleBone development 8272 board). For such cases, you can declare the file type of the SPL 8273 binary in the ``u-boot.inc`` include file, which is used in the 8274 U-Boot recipe. 8275 8276 The SPL file type is set to "null" by default in the ``u-boot.inc`` 8277 file as follows:: 8278 8279 # Some versions of u-boot build an SPL (Second Program Loader) image that 8280 # should be packaged along with the u-boot binary as well as placed in the 8281 # deploy directory. For those versions they can set the following variables 8282 # to allow packaging the SPL. 8283 SPL_BINARY ?= "" 8284 SPL_BINARYNAME ?= "${@os.path.basename(d.getVar("SPL_BINARY"))}" 8285 SPL_IMAGE ?= "${SPL_BINARYNAME}-${MACHINE}-${PV}-${PR}" 8286 SPL_SYMLINK ?= "${SPL_BINARYNAME}-${MACHINE}" 8287 8288 The :term:`SPL_BINARY` variable helps form 8289 various ``SPL_*`` variables used by the OpenEmbedded build system. 8290 8291 See the BeagleBone machine configuration example in the 8292 ":ref:`dev-manual/layers:adding a layer using the \`\`bitbake-layers\`\` script`" 8293 section in the Yocto Project Board Support Package Developer's Guide 8294 for additional information. 8295 8296 :term:`SPL_MKIMAGE_DTCOPTS` 8297 Options for the device tree compiler passed to ``mkimage -D`` feature 8298 while creating a FIT image with the :ref:`ref-classes-uboot-sign` 8299 class. If :term:`SPL_MKIMAGE_DTCOPTS` is not set then the 8300 :ref:`ref-classes-uboot-sign` class will not pass the ``-D`` option 8301 to ``mkimage``. 8302 8303 The default value is set to "" by the :ref:`ref-classes-uboot-config` 8304 class. 8305 8306 :term:`SPL_SIGN_ENABLE` 8307 Enable signing of the U-Boot FIT image. The default value is "0". 8308 This variable is used by the :ref:`ref-classes-uboot-sign` class. 8309 8310 :term:`SPL_SIGN_KEYDIR` 8311 Location of the directory containing the RSA key and certificate used for 8312 signing the U-Boot FIT image, used by the :ref:`ref-classes-uboot-sign` 8313 class. 8314 8315 :term:`SPL_SIGN_KEYNAME` 8316 The name of keys used by the :ref:`ref-classes-kernel-fitimage` class 8317 for signing U-Boot FIT image stored in the :term:`SPL_SIGN_KEYDIR` 8318 directory. If we have for example a ``dev.key`` key and a ``dev.crt`` 8319 certificate stored in the :term:`SPL_SIGN_KEYDIR` directory, you will 8320 have to set :term:`SPL_SIGN_KEYNAME` to ``dev``. 8321 8322 :term:`SPLASH` 8323 This variable, used by the :ref:`ref-classes-image` class, allows 8324 to choose splashscreen applications. Set it to the names of packages 8325 for such applications to use. This variable is set by default to 8326 ``psplash``. 8327 8328 :term:`SPLASH_IMAGES` 8329 This variable, used by the ``psplash`` recipe, allows to customize 8330 the default splashscreen image. 8331 8332 Specified images in PNG format are converted to ``.h`` files by the recipe, 8333 and are included in the ``psplash`` binary, so you won't find them in 8334 the root filesystem. 8335 8336 To make such a change, it is recommended to customize the 8337 ``psplash`` recipe in a custom layer. Here is an example structure for 8338 an ``ACME`` board:: 8339 8340 meta-acme/recipes-core/psplash 8341 ├── files 8342 │ └── logo-acme.png 8343 └── psplash_%.bbappend 8344 8345 And here are the contents of the ``psplash_%.bbappend`` file in 8346 this example:: 8347 8348 SPLASH_IMAGES = "file://logo-acme.png;outsuffix=default" 8349 FILESEXTRAPATHS:prepend := "${THISDIR}/files:" 8350 8351 You could even add specific configuration options for ``psplash``, 8352 for example:: 8353 8354 EXTRA_OECONF += "--disable-startup-msg --enable-img-fullscreen" 8355 8356 For information on append files, see the 8357 ":ref:`dev-manual/layers:appending other layers metadata with your layer`" 8358 section. 8359 8360 :term:`SRCREV_FORMAT` 8361 See :term:`bitbake:SRCREV_FORMAT` in the BitBake manual. 8362 8363 :term:`SRC_URI` 8364 8365 See the BitBake manual for the initial description for this variable: 8366 :term:`bitbake:SRC_URI`. 8367 8368 The following features are added by OpenEmbedded and the Yocto Project. 8369 8370 There are standard and recipe-specific options. Here are standard ones: 8371 8372 - ``apply`` --- whether to apply the patch or not. The default 8373 action is to apply the patch. 8374 8375 - ``striplevel`` --- which striplevel to use when applying the 8376 patch. The default level is 1. 8377 8378 - ``patchdir`` --- specifies the directory in which the patch should 8379 be applied. The default is ``${``\ :term:`S`\ ``}``. 8380 8381 Here are options specific to recipes building code from a revision 8382 control system: 8383 8384 - ``mindate`` --- apply the patch only if 8385 :term:`SRCDATE` is equal to or greater than 8386 ``mindate``. 8387 8388 - ``maxdate`` --- apply the patch only if :term:`SRCDATE` is not later 8389 than ``maxdate``. 8390 8391 - ``minrev`` --- apply the patch only if :term:`SRCREV` is equal to or 8392 greater than ``minrev``. 8393 8394 - ``maxrev`` --- apply the patch only if :term:`SRCREV` is not later 8395 than ``maxrev``. 8396 8397 - ``rev`` --- apply the patch only if :term:`SRCREV` is equal to 8398 ``rev``. 8399 8400 - ``notrev`` --- apply the patch only if :term:`SRCREV` is not equal to 8401 ``rev``. 8402 8403 .. note:: 8404 8405 If you want the build system to pick up files specified through 8406 a :term:`SRC_URI` statement from your append file, you need to be 8407 sure to extend the :term:`FILESPATH` variable by also using the 8408 :term:`FILESEXTRAPATHS` variable from within your append file. 8409 8410 :term:`SRC_URI_OVERRIDES_PACKAGE_ARCH` 8411 By default, the OpenEmbedded build system automatically detects 8412 whether :term:`SRC_URI` contains files that are machine-specific. If so, 8413 the build system automatically changes :term:`PACKAGE_ARCH`. Setting this 8414 variable to "0" disables this behavior. 8415 8416 :term:`SRCDATE` 8417 The date of the source code used to build the package. This variable 8418 applies only if the source was fetched from a Source Code Manager 8419 (SCM). 8420 8421 :term:`SRCPV` 8422 The variable :term:`SRCPV` is deprecated. It was previously used to 8423 include source control information in :term:`PV` for :term:`bitbake` to 8424 work correctly but this is no longer a requirement. Source control 8425 information will be automatically included by :term:`bitbake` in the 8426 variable :term:`PKGV` during packaging if the ``+`` sign is present in 8427 :term:`PV`. 8428 8429 .. note:: 8430 8431 The :term:`SRCPV` variable used to be defined in the 8432 ``meta/conf/bitbake.conf`` configuration file in the :term:`Source 8433 Directory` as follows:: 8434 8435 SRCPV = "${@bb.fetch2.get_srcrev(d)}" 8436 8437 The ``get_srcrev`` function can still be used to include source control 8438 information in variables manually. 8439 8440 :term:`SRCREV` 8441 The revision of the source code used to build the package. This 8442 variable applies to Subversion, Git, Mercurial, and Bazaar only. Note 8443 that if you want to build a fixed revision and you want to avoid 8444 performing a query on the remote repository every time BitBake parses 8445 your recipe, you should specify a :term:`SRCREV` that is a full revision 8446 identifier (e.g. the full SHA hash in git) and not just a tag. 8447 8448 .. note:: 8449 8450 For information on limitations when inheriting the latest revision 8451 of software using :term:`SRCREV`, see the :term:`AUTOREV` variable 8452 description and the 8453 ":ref:`dev-manual/packages:automatically incrementing a package version number`" 8454 section, which is in the Yocto Project Development Tasks Manual. 8455 8456 :term:`SRCTREECOVEREDTASKS` 8457 A list of tasks that are typically not relevant (and therefore skipped) 8458 when building using the :ref:`ref-classes-externalsrc` 8459 class. The default value as set in that class file is the set of tasks 8460 that are rarely needed when using external source:: 8461 8462 SRCTREECOVEREDTASKS ?= "do_patch do_unpack do_fetch" 8463 8464 The notable exception is when processing external kernel source as 8465 defined in the :ref:`ref-classes-kernel-yocto` class file (formatted for 8466 aesthetics):: 8467 8468 SRCTREECOVEREDTASKS += "\ 8469 do_validate_branches \ 8470 do_kernel_configcheck \ 8471 do_kernel_checkout \ 8472 do_fetch \ 8473 do_unpack \ 8474 do_patch \ 8475 " 8476 8477 See the associated :term:`EXTERNALSRC` and :term:`EXTERNALSRC_BUILD` 8478 variables for more information. 8479 8480 :term:`SSTATE_DIR` 8481 The directory for the shared state cache. 8482 8483 :term:`SSTATE_EXCLUDEDEPS_SYSROOT` 8484 This variable allows to specify indirect dependencies to exclude 8485 from sysroots, for example to avoid the situations when a dependency on 8486 any ``-native`` recipe will pull in all dependencies of that recipe 8487 in the recipe sysroot. This behaviour might not always be wanted, 8488 for example when that ``-native`` recipe depends on build tools 8489 that are not relevant for the current recipe. 8490 8491 This way, irrelevant dependencies are ignored, which could have 8492 prevented the reuse of prebuilt artifacts stored in the Shared 8493 State Cache. 8494 8495 :term:`SSTATE_EXCLUDEDEPS_SYSROOT` is evaluated as two regular 8496 expressions of recipe and dependency to ignore. An example 8497 is the rule in :oe_git:`meta/conf/layer.conf </openembedded-core/tree/meta/conf/layer.conf>`:: 8498 8499 # Nothing needs to depend on libc-initial 8500 # base-passwd/shadow-sysroot don't need their dependencies 8501 SSTATE_EXCLUDEDEPS_SYSROOT += "\ 8502 .*->.*-initial.* \ 8503 .*(base-passwd|shadow-sysroot)->.* \ 8504 " 8505 8506 The ``->`` substring represents the dependency between 8507 the two regular expressions. 8508 8509 :term:`SSTATE_MIRROR_ALLOW_NETWORK` 8510 If set to "1", allows fetches from mirrors that are specified in 8511 :term:`SSTATE_MIRRORS` to work even when 8512 fetching from the network is disabled by setting :term:`BB_NO_NETWORK` to 8513 "1". Using the :term:`SSTATE_MIRROR_ALLOW_NETWORK` variable is useful if 8514 you have set :term:`SSTATE_MIRRORS` to point to an internal server for 8515 your shared state cache, but you want to disable any other fetching 8516 from the network. 8517 8518 :term:`SSTATE_MIRRORS` 8519 Configures the OpenEmbedded build system to search other mirror 8520 locations for prebuilt cache data objects before building out the 8521 data. This variable works like fetcher :term:`MIRRORS` 8522 and :term:`PREMIRRORS` and points to the cache 8523 locations to check for the shared state (sstate) objects. 8524 8525 You can specify a filesystem directory or a remote URL such as HTTP 8526 or FTP. The locations you specify need to contain the shared state 8527 cache (sstate-cache) results from previous builds. The sstate-cache 8528 you point to can also be from builds on other machines. 8529 8530 When pointing to sstate build artifacts on another machine that uses 8531 a different GCC version for native builds, you must configure 8532 :term:`SSTATE_MIRRORS` with a regular expression that maps local search 8533 paths to server paths. The paths need to take into account 8534 :term:`NATIVELSBSTRING` set by the :ref:`ref-classes-uninative` class. 8535 For example, the following maps the local search path ``universal-4.9`` 8536 to the server-provided path server_url_sstate_path:: 8537 8538 SSTATE_MIRRORS ?= "file://universal-4.9/(.*) https://server_url_sstate_path/universal-4.8/\1" 8539 8540 If a mirror uses the same structure as 8541 :term:`SSTATE_DIR`, you need to add "PATH" at the 8542 end as shown in the examples below. The build system substitutes the 8543 correct path within the directory structure:: 8544 8545 SSTATE_MIRRORS ?= "\ 8546 file://.* https://someserver.tld/share/sstate/PATH;downloadfilename=PATH \ 8547 file://.* file:///some-local-dir/sstate/PATH" 8548 8549 .. note:: 8550 8551 If the mirror is protected behind a username and password, the 8552 :term:`build host` needs to be configured so the :term:`build system 8553 <OpenEmbedded Build System>` is able to download the sstate cache using 8554 authentication. 8555 8556 The recommended way to do that is by setting the following parameters 8557 in ``$HOME/.netrc`` (``$HOME`` being the :term:`build host` home 8558 directory):: 8559 8560 machine someserver.tld 8561 login <user> 8562 password <password> 8563 8564 This file requires permissions set to ``400`` or ``600`` to prevent 8565 other users from reading the file:: 8566 8567 chmod 600 "$HOME/.netrc" 8568 8569 Another method to configure the username and password is from the 8570 URL in :term:`SSTATE_MIRRORS` directly, with the ``user`` and ``pswd`` 8571 parameters:: 8572 8573 SSTATE_MIRRORS ?= "\ 8574 file://.* https://someserver.tld/share/sstate/PATH;user=<user>;pswd=<password>;downloadfilename=PATH \ 8575 " 8576 8577 The Yocto Project actually shares the cache data objects built by its 8578 autobuilder:: 8579 8580 SSTATE_MIRRORS ?= "file://.* http://cdn.jsdelivr.net/yocto/sstate/all/PATH;downloadfilename=PATH" 8581 8582 As such binary artifacts are built for the generic QEMU machines 8583 supported by the various Poky releases, they are less likely to be 8584 reusable in real projects building binaries optimized for a specific 8585 CPU family. 8586 8587 :term:`SSTATE_SCAN_FILES` 8588 Controls the list of files the OpenEmbedded build system scans for 8589 hardcoded installation paths. The variable uses a space-separated 8590 list of filenames (not paths) with standard wildcard characters 8591 allowed. 8592 8593 During a build, the OpenEmbedded build system creates a shared state 8594 (sstate) object during the first stage of preparing the sysroots. 8595 That object is scanned for hardcoded paths for original installation 8596 locations. The list of files that are scanned for paths is controlled 8597 by the :term:`SSTATE_SCAN_FILES` variable. Typically, recipes add files 8598 they want to be scanned to the value of :term:`SSTATE_SCAN_FILES` rather 8599 than the variable being comprehensively set. The 8600 :ref:`ref-classes-sstate` class specifies the default list of files. 8601 8602 For details on the process, see the :ref:`ref-classes-staging` class. 8603 8604 :term:`STAGING_BASE_LIBDIR_NATIVE` 8605 Specifies the path to the ``/lib`` subdirectory of the sysroot 8606 directory for the build host. 8607 8608 :term:`STAGING_BASELIBDIR` 8609 Specifies the path to the ``/lib`` subdirectory of the sysroot 8610 directory for the target for which the current recipe is being built 8611 (:term:`STAGING_DIR_HOST`). 8612 8613 :term:`STAGING_BINDIR` 8614 Specifies the path to the ``/usr/bin`` subdirectory of the sysroot 8615 directory for the target for which the current recipe is being built 8616 (:term:`STAGING_DIR_HOST`). 8617 8618 :term:`STAGING_BINDIR_CROSS` 8619 Specifies the path to the directory containing binary configuration 8620 scripts. These scripts provide configuration information for other 8621 software that wants to make use of libraries or include files 8622 provided by the software associated with the script. 8623 8624 .. note:: 8625 8626 This style of build configuration has been largely replaced by 8627 ``pkg-config``. Consequently, if ``pkg-config`` is supported by the 8628 library to which you are linking, it is recommended you use 8629 ``pkg-config`` instead of a provided configuration script. 8630 8631 :term:`STAGING_BINDIR_NATIVE` 8632 Specifies the path to the ``/usr/bin`` subdirectory of the sysroot 8633 directory for the build host. 8634 8635 :term:`STAGING_DATADIR` 8636 Specifies the path to the ``/usr/share`` subdirectory of the sysroot 8637 directory for the target for which the current recipe is being built 8638 (:term:`STAGING_DIR_HOST`). 8639 8640 :term:`STAGING_DATADIR_NATIVE` 8641 Specifies the path to the ``/usr/share`` subdirectory of the sysroot 8642 directory for the build host. 8643 8644 :term:`STAGING_DIR` 8645 Helps construct the ``recipe-sysroots`` directory, which is used 8646 during packaging. 8647 8648 For information on how staging for recipe-specific sysroots occurs, 8649 see the :ref:`ref-tasks-populate_sysroot` 8650 task, the ":ref:`dev-manual/devtool:sharing files between recipes`" 8651 section in the Yocto Project Development Tasks Manual, the 8652 ":ref:`overview-manual/concepts:configuration, compilation, and staging`" 8653 section in the Yocto Project Overview and Concepts Manual, and the 8654 :term:`SYSROOT_DIRS` variable. 8655 8656 .. note:: 8657 8658 Recipes should never write files directly under the :term:`STAGING_DIR` 8659 directory because the OpenEmbedded build system manages the 8660 directory automatically. Instead, files should be installed to 8661 ``${``\ :term:`D`\ ``}`` within your recipe's :ref:`ref-tasks-install` 8662 task and then the OpenEmbedded build system will stage a subset of 8663 those files into the sysroot. 8664 8665 :term:`STAGING_DIR_HOST` 8666 Specifies the path to the sysroot directory for the system on which 8667 the component is built to run (the system that hosts the component). 8668 For most recipes, this sysroot is the one in which that recipe's 8669 :ref:`ref-tasks-populate_sysroot` task copies 8670 files. Exceptions include ``-native`` recipes, where the 8671 :ref:`ref-tasks-populate_sysroot` task instead uses 8672 :term:`STAGING_DIR_NATIVE`. Depending on 8673 the type of recipe and the build target, :term:`STAGING_DIR_HOST` can 8674 have the following values: 8675 8676 - For recipes building for the target machine, the value is 8677 "${:term:`STAGING_DIR`}/${:term:`MACHINE`}". 8678 8679 - For native recipes building for the build host, the value is empty 8680 given the assumption that when building for the build host, the 8681 build host's own directories should be used. 8682 8683 .. note:: 8684 8685 ``-native`` recipes are not installed into host paths like such 8686 as ``/usr``. Rather, these recipes are installed into 8687 :term:`STAGING_DIR_NATIVE`. When compiling ``-native`` recipes, 8688 standard build environment variables such as 8689 :term:`CPPFLAGS` and 8690 :term:`CFLAGS` are set up so that both host paths 8691 and :term:`STAGING_DIR_NATIVE` are searched for libraries and 8692 headers using, for example, GCC's ``-isystem`` option. 8693 8694 Thus, the emphasis is that the ``STAGING_DIR*`` variables 8695 should be viewed as input variables by tasks such as 8696 :ref:`ref-tasks-configure`, 8697 :ref:`ref-tasks-compile`, and 8698 :ref:`ref-tasks-install`. Having the real system 8699 root correspond to :term:`STAGING_DIR_HOST` makes conceptual sense 8700 for ``-native`` recipes, as they make use of host headers and 8701 libraries. 8702 8703 Check :term:`RECIPE_SYSROOT` and :term:`RECIPE_SYSROOT_NATIVE`. 8704 8705 :term:`STAGING_DIR_NATIVE` 8706 Specifies the path to the sysroot directory used when building 8707 components that run on the build host itself. 8708 8709 The default value is ``"${RECIPE_SYSROOT_NATIVE}"``, 8710 check :term:`RECIPE_SYSROOT_NATIVE`. 8711 8712 :term:`STAGING_DIR_TARGET` 8713 Specifies the path to the sysroot used for the system for which the 8714 component generates code. For components that do not generate code, 8715 which is the majority, :term:`STAGING_DIR_TARGET` is set to match 8716 :term:`STAGING_DIR_HOST`. 8717 8718 Some recipes build binaries that can run on the target system but those 8719 binaries in turn generate code for another different system (e.g. 8720 :ref:`ref-classes-cross-canadian` recipes). Using terminology from GNU, 8721 the primary system is referred to as the "HOST" and the secondary, or 8722 different, system is referred to as the "TARGET". Thus, the binaries 8723 run on the "HOST" system and generate binaries for the "TARGET" 8724 system. The :term:`STAGING_DIR_HOST` variable points to the sysroot used 8725 for the "HOST" system, while :term:`STAGING_DIR_TARGET` points to the 8726 sysroot used for the "TARGET" system. 8727 8728 :term:`STAGING_ETCDIR_NATIVE` 8729 Specifies the path to the ``/etc`` subdirectory of the sysroot 8730 directory for the build host. 8731 8732 :term:`STAGING_EXECPREFIXDIR` 8733 Specifies the path to the ``/usr`` subdirectory of the sysroot 8734 directory for the target for which the current recipe is being built 8735 (:term:`STAGING_DIR_HOST`). 8736 8737 :term:`STAGING_INCDIR` 8738 Specifies the path to the ``/usr/include`` subdirectory of the 8739 sysroot directory for the target for which the current recipe being 8740 built (:term:`STAGING_DIR_HOST`). 8741 8742 :term:`STAGING_INCDIR_NATIVE` 8743 Specifies the path to the ``/usr/include`` subdirectory of the 8744 sysroot directory for the build host. 8745 8746 :term:`STAGING_KERNEL_BUILDDIR` 8747 Points to the directory containing the kernel build artifacts. 8748 Recipes building software that needs to access kernel build artifacts 8749 (e.g. ``systemtap-uprobes``) can look in the directory specified with 8750 the :term:`STAGING_KERNEL_BUILDDIR` variable to find these artifacts 8751 after the kernel has been built. 8752 8753 :term:`STAGING_KERNEL_DIR` 8754 The directory with kernel headers that are required to build 8755 out-of-tree modules. 8756 8757 :term:`STAGING_LIBDIR` 8758 Specifies the path to the ``/usr/lib`` subdirectory of the sysroot 8759 directory for the target for which the current recipe is being built 8760 (:term:`STAGING_DIR_HOST`). 8761 8762 :term:`STAGING_LIBDIR_NATIVE` 8763 Specifies the path to the ``/usr/lib`` subdirectory of the sysroot 8764 directory for the build host. 8765 8766 :term:`STAMP` 8767 Specifies the base path used to create recipe stamp files. The path 8768 to an actual stamp file is constructed by evaluating this string and 8769 then appending additional information. Currently, the default 8770 assignment for :term:`STAMP` as set in the ``meta/conf/bitbake.conf`` 8771 file is:: 8772 8773 STAMP = "${STAMPS_DIR}/${MULTIMACH_TARGET_SYS}/${PN}/${EXTENDPE}${PV}-${PR}" 8774 8775 For information on how BitBake uses stamp files to determine if a 8776 task should be rerun, see the 8777 ":ref:`overview-manual/concepts:stamp files and the rerunning of tasks`" 8778 section in the Yocto Project Overview and Concepts Manual. 8779 8780 See :term:`STAMPS_DIR`, 8781 :term:`MULTIMACH_TARGET_SYS`, 8782 :term:`PN`, :term:`EXTENDPE`, 8783 :term:`PV`, and :term:`PR` for related variable 8784 information. 8785 8786 :term:`STAMPCLEAN` 8787 See :term:`bitbake:STAMPCLEAN` in the BitBake manual. 8788 8789 :term:`STAMPS_DIR` 8790 Specifies the base directory in which the OpenEmbedded build system 8791 places stamps. The default directory is ``${TMPDIR}/stamps``. 8792 8793 :term:`STRIP` 8794 The minimal command and arguments to run ``strip``, which is used to 8795 strip symbols. 8796 8797 :term:`SUMMARY` 8798 The short (72 characters or less) summary of the binary package for 8799 packaging systems such as ``opkg``, ``rpm``, or ``dpkg``. By default, 8800 :term:`SUMMARY` is used to define the 8801 :term:`DESCRIPTION` variable if :term:`DESCRIPTION` is 8802 not set in the recipe. 8803 8804 :term:`SVNDIR` 8805 The directory in which files checked out of a Subversion system are 8806 stored. 8807 8808 :term:`SYSLINUX_DEFAULT_CONSOLE` 8809 Specifies the kernel boot default console. If you want to use a 8810 console other than the default, set this variable in your recipe as 8811 follows where "X" is the console number you want to use:: 8812 8813 SYSLINUX_DEFAULT_CONSOLE = "console=ttyX" 8814 8815 The :ref:`ref-classes-syslinux` class initially sets 8816 this variable to null but then checks for a value later. 8817 8818 :term:`SYSLINUX_OPTS` 8819 Lists additional options to add to the syslinux file. You need to set 8820 this variable in your recipe. If you want to list multiple options, 8821 separate the options with a semicolon character (``;``). 8822 8823 The :ref:`ref-classes-syslinux` class uses this variable 8824 to create a set of options. 8825 8826 :term:`SYSLINUX_SERIAL` 8827 Specifies the alternate serial port or turns it off. To turn off 8828 serial, set this variable to an empty string in your recipe. The 8829 variable's default value is set in the 8830 :ref:`ref-classes-syslinux` class as follows:: 8831 8832 SYSLINUX_SERIAL ?= "0 115200" 8833 8834 The class checks for and uses the variable as needed. 8835 8836 :term:`SYSLINUX_SERIAL_TTY` 8837 Specifies the alternate console=tty... kernel boot argument. The 8838 variable's default value is set in the :ref:`ref-classes-syslinux` 8839 class as follows:: 8840 8841 SYSLINUX_SERIAL_TTY ?= "console=ttyS0,115200" 8842 8843 The class checks for and uses the variable as needed. 8844 8845 :term:`SYSLINUX_SPLASH` 8846 An ``.LSS`` file used as the background for the VGA boot menu when 8847 you use the boot menu. You need to set this variable in your recipe. 8848 8849 The :ref:`ref-classes-syslinux` class checks for this 8850 variable and if found, the OpenEmbedded build system installs the 8851 splash screen. 8852 8853 :term:`SYSROOT_DESTDIR` 8854 Points to the temporary directory under the work directory (default 8855 "``${``\ :term:`WORKDIR`\ ``}/sysroot-destdir``") 8856 where the files populated into the sysroot are assembled during the 8857 :ref:`ref-tasks-populate_sysroot` task. 8858 8859 :term:`SYSROOT_DIRS` 8860 Directories that are staged into the sysroot by the 8861 :ref:`ref-tasks-populate_sysroot` task. By 8862 default, the following directories are staged:: 8863 8864 SYSROOT_DIRS = " \ 8865 ${includedir} \ 8866 ${libdir} \ 8867 ${base_libdir} \ 8868 ${nonarch_base_libdir} \ 8869 ${datadir} \ 8870 /sysroot-only \ 8871 " 8872 8873 Consider the following example in which you need to manipulate this variable. 8874 Assume you have a recipe ``A`` that provides a shared library ``.so.*`` that is 8875 installed into a custom folder other than "``${libdir}``" 8876 or "``${base_libdir}``", let's say "``/opt/lib``". 8877 8878 .. note:: 8879 8880 This is not a recommended way to deal with shared libraries, but this 8881 is just to show the usefulness of setting :term:`SYSROOT_DIRS`. 8882 8883 When a recipe ``B`` :term:`DEPENDS` on ``A``, it means what is in 8884 :term:`SYSROOT_DIRS` will be copied from :term:`D` of the recipe ``A`` 8885 into ``B``'s :term:`SYSROOT_DESTDIR` that is "``${WORKDIR}/sysroot-destdir``". 8886 8887 Now, since ``/opt/lib`` is not in :term:`SYSROOT_DIRS`, it will never be copied to 8888 ``A``'s :term:`RECIPE_SYSROOT`, which is "``${WORKDIR}/recipe-sysroot``". So, 8889 the linking process will fail. 8890 8891 To fix this, you need to add ``/opt/lib`` to :term:`SYSROOT_DIRS`:: 8892 8893 SYSROOT_DIRS:append = " /opt/lib" 8894 8895 .. note:: 8896 Even after setting ``/opt/lib`` to :term:`SYSROOT_DIRS`, the linking process will still fail 8897 because the linker does not know that location, since :term:`TARGET_LDFLAGS` 8898 doesn't contain it (if your recipe is for the target). Therefore, so you should add:: 8899 8900 TARGET_LDFLAGS:append = " -L${RECIPE_SYSROOT}/opt/lib" 8901 8902 :term:`SYSROOT_DIRS_IGNORE` 8903 Directories that are not staged into the sysroot by the 8904 :ref:`ref-tasks-populate_sysroot` task. You 8905 can use this variable to exclude certain subdirectories of 8906 directories listed in :term:`SYSROOT_DIRS` from 8907 staging. By default, the following directories are not staged:: 8908 8909 SYSROOT_DIRS_IGNORE = " \ 8910 ${mandir} \ 8911 ${docdir} \ 8912 ${infodir} \ 8913 ${datadir}/X11/locale \ 8914 ${datadir}/applications \ 8915 ${datadir}/bash-completion \ 8916 ${datadir}/fonts \ 8917 ${datadir}/gtk-doc/html \ 8918 ${datadir}/installed-tests \ 8919 ${datadir}/locale \ 8920 ${datadir}/pixmaps \ 8921 ${datadir}/terminfo \ 8922 ${libdir}/${BPN}/ptest \ 8923 " 8924 8925 :term:`SYSROOT_DIRS_NATIVE` 8926 Extra directories staged into the sysroot by the 8927 :ref:`ref-tasks-populate_sysroot` task for 8928 ``-native`` recipes, in addition to those specified in 8929 :term:`SYSROOT_DIRS`. By default, the following 8930 extra directories are staged:: 8931 8932 SYSROOT_DIRS_NATIVE = " \ 8933 ${bindir} \ 8934 ${sbindir} \ 8935 ${base_bindir} \ 8936 ${base_sbindir} \ 8937 ${libexecdir} \ 8938 ${sysconfdir} \ 8939 ${localstatedir} \ 8940 " 8941 8942 .. note:: 8943 8944 Programs built by ``-native`` recipes run directly from the sysroot 8945 (:term:`STAGING_DIR_NATIVE`), which is why additional directories 8946 containing program executables and supporting files need to be staged. 8947 8948 :term:`SYSROOT_PREPROCESS_FUNCS` 8949 A list of functions to execute after files are staged into the 8950 sysroot. These functions are usually used to apply additional 8951 processing on the staged files, or to stage additional files. 8952 8953 :term:`SYSTEMD_AUTO_ENABLE` 8954 When inheriting the :ref:`ref-classes-systemd` class, 8955 this variable specifies whether the specified service in 8956 :term:`SYSTEMD_SERVICE` should start 8957 automatically or not. By default, the service is enabled to 8958 automatically start at boot time. The default setting is in the 8959 :ref:`ref-classes-systemd` class as follows:: 8960 8961 SYSTEMD_AUTO_ENABLE ??= "enable" 8962 8963 You can disable the service by setting the variable to "disable". 8964 8965 :term:`SYSTEMD_BOOT_CFG` 8966 When :term:`EFI_PROVIDER` is set to 8967 "systemd-boot", the :term:`SYSTEMD_BOOT_CFG` variable specifies the 8968 configuration file that should be used. By default, the 8969 :ref:`ref-classes-systemd-boot` class sets the 8970 :term:`SYSTEMD_BOOT_CFG` as follows:: 8971 8972 SYSTEMD_BOOT_CFG ?= "${S}/loader.conf" 8973 8974 For information on Systemd-boot, see the `Systemd-boot 8975 documentation <https://www.freedesktop.org/wiki/Software/systemd/systemd-boot/>`__. 8976 8977 :term:`SYSTEMD_BOOT_ENTRIES` 8978 When :term:`EFI_PROVIDER` is set to 8979 "systemd-boot", the :term:`SYSTEMD_BOOT_ENTRIES` variable specifies a 8980 list of entry files (``*.conf``) to install that contain one boot 8981 entry per file. By default, the :ref:`ref-classes-systemd-boot` class 8982 sets the :term:`SYSTEMD_BOOT_ENTRIES` as follows:: 8983 8984 SYSTEMD_BOOT_ENTRIES ?= "" 8985 8986 For information on Systemd-boot, see the `Systemd-boot 8987 documentation <https://www.freedesktop.org/wiki/Software/systemd/systemd-boot/>`__. 8988 8989 :term:`SYSTEMD_BOOT_TIMEOUT` 8990 When :term:`EFI_PROVIDER` is set to 8991 "systemd-boot", the :term:`SYSTEMD_BOOT_TIMEOUT` variable specifies the 8992 boot menu timeout in seconds. By default, the 8993 :ref:`ref-classes-systemd-boot` class sets the 8994 :term:`SYSTEMD_BOOT_TIMEOUT` as follows:: 8995 8996 SYSTEMD_BOOT_TIMEOUT ?= "10" 8997 8998 For information on Systemd-boot, see the `Systemd-boot 8999 documentation <https://www.freedesktop.org/wiki/Software/systemd/systemd-boot/>`__. 9000 9001 :term:`SYSTEMD_DEFAULT_TARGET` 9002 9003 This variable allows to set the default unit that systemd starts at bootup. 9004 Usually, this is either ``multi-user.target`` or ``graphical.target``. 9005 This works by creating a ``default.target`` symbolic link to the chosen systemd 9006 target file. 9007 9008 See `systemd's documentation 9009 <https://www.freedesktop.org/software/systemd/man/systemd.special.html>`__ 9010 for details. 9011 9012 For example, this variable is used in the :oe_git:`core-image-minimal-xfce.bb 9013 </meta-openembedded/tree/meta-xfce/recipes-core/images/core-image-minimal-xfce.bb>` 9014 recipe:: 9015 9016 SYSTEMD_DEFAULT_TARGET = "graphical.target" 9017 9018 :term:`SYSTEMD_PACKAGES` 9019 When inheriting the :ref:`ref-classes-systemd` class, 9020 this variable locates the systemd unit files when they are not found 9021 in the main recipe's package. By default, the :term:`SYSTEMD_PACKAGES` 9022 variable is set such that the systemd unit files are assumed to 9023 reside in the recipes main package:: 9024 9025 SYSTEMD_PACKAGES ?= "${PN}" 9026 9027 If these unit files are not in this recipe's main package, you need 9028 to use :term:`SYSTEMD_PACKAGES` to list the package or packages in which 9029 the build system can find the systemd unit files. 9030 9031 :term:`SYSTEMD_SERVICE` 9032 When inheriting the :ref:`ref-classes-systemd` class, 9033 this variable specifies the systemd service name for a package. 9034 9035 Multiple services can be specified, each one separated by a space. 9036 9037 When you specify this file in your recipe, use a package name 9038 override to indicate the package to which the value applies. Here is 9039 an example from the connman recipe:: 9040 9041 SYSTEMD_SERVICE:${PN} = "connman.service" 9042 9043 The package overrides that can be specified are directly related to the value of 9044 :term:`SYSTEMD_PACKAGES`. Overrides not included in :term:`SYSTEMD_PACKAGES` 9045 will be silently ignored. 9046 9047 :term:`SYSVINIT_ENABLED_GETTYS` 9048 When using :ref:`SysVinit <dev-manual/new-recipe:enabling system services>`, 9049 specifies a space-separated list of the virtual terminals that should 9050 run a :wikipedia:`getty <Getty_(Unix)>` (allowing login), assuming 9051 :term:`USE_VT` is not set to "0". 9052 9053 The default value for :term:`SYSVINIT_ENABLED_GETTYS` is "1" (i.e. only 9054 run a getty on the first virtual terminal). 9055 9056 :term:`T` 9057 This variable points to a directory were BitBake places temporary 9058 files, which consist mostly of task logs and scripts, when building a 9059 particular recipe. The variable is typically set as follows:: 9060 9061 T = "${WORKDIR}/temp" 9062 9063 The :term:`WORKDIR` is the directory into which 9064 BitBake unpacks and builds the recipe. The default ``bitbake.conf`` 9065 file sets this variable. 9066 9067 The :term:`T` variable is not to be confused with the 9068 :term:`TMPDIR` variable, which points to the root of 9069 the directory tree where BitBake places the output of an entire 9070 build. 9071 9072 :term:`TARGET_ARCH` 9073 The target machine's architecture. The OpenEmbedded build system 9074 supports many architectures. Here is an example list of architectures 9075 supported. This list is by no means complete as the architecture is 9076 configurable: 9077 9078 - arm 9079 - i586 9080 - x86_64 9081 - powerpc 9082 - powerpc64 9083 - mips 9084 - mipsel 9085 9086 For additional information on machine architectures, see the 9087 :term:`TUNE_ARCH` variable. 9088 9089 :term:`TARGET_AS_ARCH` 9090 Specifies architecture-specific assembler flags for the target 9091 system. :term:`TARGET_AS_ARCH` is initialized from 9092 :term:`TUNE_ASARGS` by default in the BitBake 9093 configuration file (``meta/conf/bitbake.conf``):: 9094 9095 TARGET_AS_ARCH = "${TUNE_ASARGS}" 9096 9097 :term:`TARGET_CC_ARCH` 9098 Specifies architecture-specific C compiler flags for the target 9099 system. :term:`TARGET_CC_ARCH` is initialized from 9100 :term:`TUNE_CCARGS` by default. 9101 9102 .. note:: 9103 9104 It is a common workaround to append :term:`LDFLAGS` to 9105 :term:`TARGET_CC_ARCH` in recipes that build software for the target that 9106 would not otherwise respect the exported :term:`LDFLAGS` variable. 9107 9108 :term:`TARGET_CC_KERNEL_ARCH` 9109 This is a specific kernel compiler flag for a CPU or Application 9110 Binary Interface (ABI) tune. The flag is used rarely and only for 9111 cases where a userspace :term:`TUNE_CCARGS` is not 9112 compatible with the kernel compilation. The :term:`TARGET_CC_KERNEL_ARCH` 9113 variable allows the kernel (and associated modules) to use a 9114 different configuration. See the 9115 ``meta/conf/machine/include/arm/feature-arm-thumb.inc`` file in the 9116 :term:`Source Directory` for an example. 9117 9118 :term:`TARGET_CFLAGS` 9119 Specifies the flags to pass to the C compiler when building for the 9120 target. When building in the target context, 9121 :term:`CFLAGS` is set to the value of this variable by 9122 default. 9123 9124 Additionally, the SDK's environment setup script sets the :term:`CFLAGS` 9125 variable in the environment to the :term:`TARGET_CFLAGS` value so that 9126 executables built using the SDK also have the flags applied. 9127 9128 :term:`TARGET_CPPFLAGS` 9129 Specifies the flags to pass to the C pre-processor (i.e. to both the 9130 C and the C++ compilers) when building for the target. When building 9131 in the target context, :term:`CPPFLAGS` is set to the 9132 value of this variable by default. 9133 9134 Additionally, the SDK's environment setup script sets the 9135 :term:`CPPFLAGS` variable in the environment to the :term:`TARGET_CPPFLAGS` 9136 value so that executables built using the SDK also have the flags 9137 applied. 9138 9139 :term:`TARGET_CXXFLAGS` 9140 Specifies the flags to pass to the C++ compiler when building for the 9141 target. When building in the target context, 9142 :term:`CXXFLAGS` is set to the value of this variable 9143 by default. 9144 9145 Additionally, the SDK's environment setup script sets the 9146 :term:`CXXFLAGS` variable in the environment to the :term:`TARGET_CXXFLAGS` 9147 value so that executables built using the SDK also have the flags 9148 applied. 9149 9150 :term:`TARGET_DBGSRC_DIR` 9151 Specifies the target path to debug source files. The default is 9152 ``/usr/src/debug/${PN}/${PV}``. 9153 9154 :term:`TARGET_FPU` 9155 Specifies the method for handling FPU code. For FPU-less targets, 9156 which include most ARM CPUs, the variable must be set to "soft". If 9157 not, the kernel emulation gets used, which results in a performance 9158 penalty. 9159 9160 :term:`TARGET_LD_ARCH` 9161 Specifies architecture-specific linker flags for the target system. 9162 :term:`TARGET_LD_ARCH` is initialized from 9163 :term:`TUNE_LDARGS` by default in the BitBake 9164 configuration file (``meta/conf/bitbake.conf``):: 9165 9166 TARGET_LD_ARCH = "${TUNE_LDARGS}" 9167 9168 :term:`TARGET_LDFLAGS` 9169 Specifies the flags to pass to the linker when building for the 9170 target. When building in the target context, 9171 :term:`LDFLAGS` is set to the value of this variable 9172 by default. 9173 9174 Additionally, the SDK's environment setup script sets the 9175 :term:`LDFLAGS` variable in the environment to the 9176 :term:`TARGET_LDFLAGS` value so that executables built using the SDK also 9177 have the flags applied. 9178 9179 :term:`TARGET_OS` 9180 Specifies the target's operating system. The variable can be set to 9181 "linux" for glibc-based systems (GNU C Library) and to "linux-musl" 9182 for musl libc. For ARM/EABI targets, the possible values are 9183 "linux-gnueabi" and "linux-musleabi". 9184 9185 :term:`TARGET_PREFIX` 9186 Specifies the prefix used for the toolchain binary target tools. 9187 9188 Depending on the type of recipe and the build target, 9189 :term:`TARGET_PREFIX` is set as follows: 9190 9191 - For recipes building for the target machine, the value is 9192 "${:term:`TARGET_SYS`}-". 9193 9194 - For native recipes, the build system sets the variable to the 9195 value of :term:`BUILD_PREFIX`. 9196 9197 - For native SDK recipes (:ref:`ref-classes-nativesdk`), 9198 the build system sets the variable to the value of :term:`SDK_PREFIX`. 9199 9200 :term:`TARGET_SYS` 9201 Specifies the system, including the architecture and the operating 9202 system, for which the build is occurring in the context of the 9203 current recipe. 9204 9205 The OpenEmbedded build system automatically sets this variable based 9206 on :term:`TARGET_ARCH`, 9207 :term:`TARGET_VENDOR`, and 9208 :term:`TARGET_OS` variables. 9209 9210 .. note:: 9211 9212 You do not need to set the :term:`TARGET_SYS` variable yourself. 9213 9214 Consider these two examples: 9215 9216 - Given a native recipe on a 32-bit, x86 machine running Linux, the 9217 value is "i686-linux". 9218 9219 - Given a recipe being built for a little-endian, MIPS target 9220 running Linux, the value might be "mipsel-linux". 9221 9222 :term:`TARGET_VENDOR` 9223 Specifies the name of the target vendor. 9224 9225 :term:`TCLIBC` 9226 Specifies the GNU standard C library (``libc``) variant to use during 9227 the build process. 9228 9229 You can select "glibc", "musl", "newlib", or "baremetal". 9230 9231 :term:`TCMODE` 9232 Specifies the toolchain selector. :term:`TCMODE` controls the 9233 characteristics of the generated packages and images by telling the 9234 OpenEmbedded build system which toolchain profile to use. By default, 9235 the OpenEmbedded build system builds its own internal toolchain. The 9236 variable's default value is "default", which uses that internal 9237 toolchain. 9238 9239 .. note:: 9240 9241 If :term:`TCMODE` is set to a value other than "default", then it is your 9242 responsibility to ensure that the toolchain is compatible with the 9243 default toolchain. Using older or newer versions of these 9244 components might cause build problems. See 9245 :doc:`Release Information </migration-guides/index>` for your 9246 version of the Yocto Project, to find the specific components with 9247 which the toolchain must be compatible. 9248 9249 The :term:`TCMODE` variable is similar to :term:`TCLIBC`, 9250 which controls the variant of the GNU standard C library (``libc``) 9251 used during the build process: ``glibc`` or ``musl``. 9252 9253 With additional layers, it is possible to use a pre-compiled external 9254 toolchain. One example is the Sourcery G++ Toolchain. The support for 9255 this toolchain resides in the separate Mentor Graphics 9256 ``meta-sourcery`` layer at 9257 https://github.com/MentorEmbedded/meta-sourcery/. 9258 9259 The layer's ``README`` file contains information on how to use the 9260 Sourcery G++ Toolchain as an external toolchain. You will have to 9261 add the layer to your ``bblayers.conf`` file and then set the 9262 :term:`EXTERNAL_TOOLCHAIN` variable in your ``local.conf`` file to 9263 the location of the toolchain. 9264 9265 The fundamentals used for this example apply to any external 9266 toolchain. You can use ``meta-sourcery`` as a template for adding 9267 support for other external toolchains. 9268 9269 In addition to toolchain configuration, you will also need a 9270 corresponding toolchain recipe file. This recipe file needs to package 9271 up any pre-built objects in the toolchain such as ``libgcc``, 9272 ``libstdcc++``, any locales, and ``libc``. 9273 9274 :term:`TC_CXX_RUNTIME` 9275 Specifies the C/C++ STL and runtime variant to use during 9276 the build process. Default value is 'gnu' 9277 9278 You can select "gnu", "llvm", or "android". 9279 9280 :term:`TEMPLATECONF` 9281 Specifies the directory used by the build system to find templates 9282 from which to build the ``bblayers.conf`` and ``local.conf`` files. 9283 Use this variable if you wish to customize such files, and the default 9284 BitBake targets shown when sourcing the ``oe-init-build-env`` script. 9285 9286 For details, see the 9287 :ref:`dev-manual/custom-template-configuration-directory:creating a custom template configuration directory` 9288 section in the Yocto Project Development Tasks manual. 9289 9290 .. note:: 9291 9292 You must set this variable in the external environment in order 9293 for it to work. 9294 9295 :term:`TEST_EXPORT_DIR` 9296 The location the OpenEmbedded build system uses to export tests when 9297 the :term:`TEST_EXPORT_ONLY` variable is set 9298 to "1". 9299 9300 The :term:`TEST_EXPORT_DIR` variable defaults to 9301 ``"${TMPDIR}/testimage/${PN}"``. 9302 9303 :term:`TEST_EXPORT_ONLY` 9304 Specifies to export the tests only. Set this variable to "1" if you 9305 do not want to run the tests but you want them to be exported in a 9306 manner that you to run them outside of the build system. 9307 9308 :term:`TEST_LOG_DIR` 9309 Holds the SSH log and the boot log for QEMU machines. The 9310 :term:`TEST_LOG_DIR` variable defaults to ``"${WORKDIR}/testimage"``. 9311 9312 .. note:: 9313 9314 Actual test results reside in the task log (``log.do_testimage``), 9315 which is in the ``${WORKDIR}/temp/`` directory. 9316 9317 :term:`TEST_POWERCONTROL_CMD` 9318 For automated hardware testing, specifies the command to use to 9319 control the power of the target machine under test. Typically, this 9320 command would point to a script that performs the appropriate action 9321 (e.g. interacting with a web-enabled power strip). The specified 9322 command should expect to receive as the last argument "off", "on" or 9323 "cycle" specifying to power off, on, or cycle (power off and then 9324 power on) the device, respectively. 9325 9326 :term:`TEST_POWERCONTROL_EXTRA_ARGS` 9327 For automated hardware testing, specifies additional arguments to 9328 pass through to the command specified in 9329 :term:`TEST_POWERCONTROL_CMD`. Setting 9330 :term:`TEST_POWERCONTROL_EXTRA_ARGS` is optional. You can use it if you 9331 wish, for example, to separate the machine-specific and 9332 non-machine-specific parts of the arguments. 9333 9334 :term:`TEST_QEMUBOOT_TIMEOUT` 9335 The time in seconds allowed for an image to boot before automated 9336 runtime tests begin to run against an image. The default timeout 9337 period to allow the boot process to reach the login prompt is 500 9338 seconds. You can specify a different value in the ``local.conf`` 9339 file. 9340 9341 For more information on testing images, see the 9342 ":ref:`test-manual/runtime-testing:performing automated runtime testing`" 9343 section in the Yocto Project Test Environment Manual. 9344 9345 :term:`TEST_SERIALCONTROL_CMD` 9346 For automated hardware testing, specifies the command to use to 9347 connect to the serial console of the target machine under test. This 9348 command simply needs to connect to the serial console and forward 9349 that connection to standard input and output as any normal terminal 9350 program does. 9351 9352 For example, to use the Picocom terminal program on serial device 9353 ``/dev/ttyUSB0`` at 115200bps, you would set the variable as follows:: 9354 9355 TEST_SERIALCONTROL_CMD = "picocom /dev/ttyUSB0 -b 115200" 9356 9357 :term:`TEST_SERIALCONTROL_EXTRA_ARGS` 9358 For automated hardware testing, specifies additional arguments to 9359 pass through to the command specified in 9360 :term:`TEST_SERIALCONTROL_CMD`. Setting 9361 :term:`TEST_SERIALCONTROL_EXTRA_ARGS` is optional. You can use it if you 9362 wish, for example, to separate the machine-specific and 9363 non-machine-specific parts of the command. 9364 9365 :term:`TEST_SERVER_IP` 9366 The IP address of the build machine (host machine). This IP address 9367 is usually automatically detected. However, if detection fails, this 9368 variable needs to be set to the IP address of the build machine (i.e. 9369 where the build is taking place). 9370 9371 .. note:: 9372 9373 The :term:`TEST_SERVER_IP` variable is only used for a small number of 9374 tests such as the "dnf" test suite, which needs to download packages 9375 from ``WORKDIR/oe-rootfs-repo``. 9376 9377 :term:`TEST_SUITES` 9378 An ordered list of tests (modules) to run against an image when 9379 performing automated runtime testing. 9380 9381 The OpenEmbedded build system provides a core set of tests that can 9382 be used against images. 9383 9384 .. note:: 9385 9386 Currently, there is only support for running these tests under 9387 QEMU. 9388 9389 Tests include ``ping``, ``ssh``, ``df`` among others. You can add 9390 your own tests to the list of tests by appending :term:`TEST_SUITES` as 9391 follows:: 9392 9393 TEST_SUITES:append = " mytest" 9394 9395 Alternatively, you can 9396 provide the "auto" option to have all applicable tests run against 9397 the image:: 9398 9399 TEST_SUITES:append = " auto" 9400 9401 Using this option causes the 9402 build system to automatically run tests that are applicable to the 9403 image. Tests that are not applicable are skipped. 9404 9405 The order in which tests are run is important. Tests that depend on 9406 another test must appear later in the list than the test on which 9407 they depend. For example, if you append the list of tests with two 9408 tests (``test_A`` and ``test_B``) where ``test_B`` is dependent on 9409 ``test_A``, then you must order the tests as follows:: 9410 9411 TEST_SUITES = "test_A test_B" 9412 9413 For more information on testing images, see the 9414 ":ref:`test-manual/runtime-testing:performing automated runtime testing`" 9415 section in the Yocto Project Test Environment Manual. 9416 9417 :term:`TEST_TARGET` 9418 Specifies the target controller to use when running tests against a 9419 test image. The default controller to use is "qemu":: 9420 9421 TEST_TARGET = "qemu" 9422 9423 A target controller is a class that defines how an image gets 9424 deployed on a target and how a target is started. A layer can extend 9425 the controllers by adding a module in the layer's 9426 ``/lib/oeqa/controllers`` directory and by inheriting the 9427 ``BaseTarget`` class, which is an abstract class that cannot be used 9428 as a value of :term:`TEST_TARGET`. 9429 9430 You can provide the following arguments with :term:`TEST_TARGET`: 9431 9432 - *"qemu":* Boots a QEMU image and runs the tests. See the 9433 ":ref:`test-manual/runtime-testing:enabling runtime tests on qemu`" section 9434 in the Yocto Project Test Environment Manual for more 9435 information. 9436 9437 - *"simpleremote":* Runs the tests on target hardware that is 9438 already up and running. The hardware can be on the network or it 9439 can be a device running an image on QEMU. You must also set 9440 :term:`TEST_TARGET_IP` when you use 9441 "simpleremote". 9442 9443 .. note:: 9444 9445 This argument is defined in 9446 ``meta/lib/oeqa/controllers/simpleremote.py``. 9447 9448 For information on running tests on hardware, see the 9449 ":ref:`test-manual/runtime-testing:enabling runtime tests on hardware`" 9450 section in the Yocto Project Test Environment Manual. 9451 9452 :term:`TEST_TARGET_IP` 9453 The IP address of your hardware under test. The :term:`TEST_TARGET_IP` 9454 variable has no effect when :term:`TEST_TARGET` is 9455 set to "qemu". 9456 9457 When you specify the IP address, you can also include a port. Here is 9458 an example:: 9459 9460 TEST_TARGET_IP = "192.168.1.4:2201" 9461 9462 Specifying a port is 9463 useful when SSH is started on a non-standard port or in cases when 9464 your hardware under test is behind a firewall or network that is not 9465 directly accessible from your host and you need to do port address 9466 translation. 9467 9468 :term:`TESTIMAGE_AUTO` 9469 Automatically runs the series of automated tests for images when an 9470 image is successfully built. Setting :term:`TESTIMAGE_AUTO` to "1" causes 9471 any image that successfully builds to automatically boot under QEMU. 9472 Using the variable also adds in dependencies so that any SDK for 9473 which testing is requested is automatically built first. 9474 9475 These tests are written in Python making use of the ``unittest`` 9476 module, and the majority of them run commands on the target system 9477 over ``ssh``. You can set this variable to "1" in your ``local.conf`` 9478 file in the :term:`Build Directory` to have the 9479 OpenEmbedded build system automatically run these tests after an 9480 image successfully builds: 9481 9482 TESTIMAGE_AUTO = "1" 9483 9484 For more information 9485 on enabling, running, and writing these tests, see the 9486 ":ref:`test-manual/runtime-testing:performing automated runtime testing`" 9487 section in the Yocto Project Test Environment Manual and the 9488 ":ref:`ref-classes-testimage`" section. 9489 9490 :term:`TESTIMAGE_FAILED_QA_ARTIFACTS` 9491 When using the :ref:`ref-classes-testimage` class, the variable 9492 :term:`TESTIMAGE_FAILED_QA_ARTIFACTS` lists space-separated paths on the 9493 target to retrieve onto the host. 9494 9495 :term:`THISDIR` 9496 The directory in which the file BitBake is currently parsing is 9497 located. Do not manually set this variable. 9498 9499 :term:`TIME` 9500 The time the build was started. Times appear using the hour, minute, 9501 and second (HMS) format (e.g. "140159" for one minute and fifty-nine 9502 seconds past 1400 hours). 9503 9504 :term:`TMPDIR` 9505 This variable is the base directory the OpenEmbedded build system 9506 uses for all build output and intermediate files (other than the 9507 shared state cache). By default, the :term:`TMPDIR` variable points to 9508 ``tmp`` within the :term:`Build Directory`. 9509 9510 If you want to establish this directory in a location other than the 9511 default, you can uncomment and edit the following statement in the 9512 ``conf/local.conf`` file in the :term:`Source Directory`:: 9513 9514 #TMPDIR = "${TOPDIR}/tmp" 9515 9516 An example use for this scenario is to set :term:`TMPDIR` to a local disk, 9517 which does not use NFS, while having the :term:`Build Directory` use NFS. 9518 9519 The filesystem used by :term:`TMPDIR` must have standard filesystem 9520 semantics (i.e. mixed-case files are unique, POSIX file locking, and 9521 persistent inodes). Due to various issues with NFS and bugs in some 9522 implementations, NFS does not meet this minimum requirement. 9523 Consequently, :term:`TMPDIR` cannot be on NFS. 9524 9525 :term:`TOOLCHAIN_HOST_TASK` 9526 This variable lists packages the OpenEmbedded build system uses when 9527 building an SDK, which contains a cross-development environment. The 9528 packages specified by this variable are part of the toolchain set 9529 that runs on the :term:`SDKMACHINE`, and each 9530 package should usually have the prefix ``nativesdk-``. For example, 9531 consider the following command when building an SDK:: 9532 9533 $ bitbake -c populate_sdk imagename 9534 9535 In this case, a default list of packages is 9536 set in this variable, but you can add additional packages to the 9537 list. See the 9538 ":ref:`sdk-manual/appendix-customizing-standard:adding individual packages to the standard sdk`" section 9539 in the Yocto Project Application Development and the Extensible 9540 Software Development Kit (eSDK) manual for more information. 9541 9542 For background information on cross-development toolchains in the 9543 Yocto Project development environment, see the 9544 ":ref:`sdk-manual/intro:the cross-development toolchain`" 9545 section in the Yocto Project Overview and Concepts Manual. For 9546 information on setting up a cross-development environment, see the 9547 :doc:`/sdk-manual/index` manual. 9548 9549 Note that this variable applies to building an SDK, not an eSDK, 9550 in which case the :term:`TOOLCHAIN_HOST_TASK_ESDK` setting should be 9551 used instead. 9552 9553 :term:`TOOLCHAIN_HOST_TASK_ESDK` 9554 This variable allows to extend what is installed in the host 9555 portion of an eSDK. This is similar to :term:`TOOLCHAIN_HOST_TASK` 9556 applying to SDKs. 9557 9558 :term:`TOOLCHAIN_OPTIONS` 9559 This variable holds extra options passed to the compiler and the linker 9560 for non ``-native`` recipes as they have to point to their custom 9561 ``sysroot`` folder pointed to by :term:`RECIPE_SYSROOT`:: 9562 9563 TOOLCHAIN_OPTIONS = " --sysroot=${RECIPE_SYSROOT}" 9564 9565 Native recipes don't need this variable to be set, as they are 9566 built for the host machine with the native compiler. 9567 9568 :term:`TOOLCHAIN_OUTPUTNAME` 9569 This variable defines the name used for the toolchain output. The 9570 :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class sets 9571 the :term:`TOOLCHAIN_OUTPUTNAME` variable as follows:: 9572 9573 TOOLCHAIN_OUTPUTNAME ?= "${SDK_NAME}-toolchain-${SDK_VERSION}" 9574 9575 See 9576 the :term:`SDK_NAME` and 9577 :term:`SDK_VERSION` variables for additional 9578 information. 9579 9580 :term:`TOOLCHAIN_TARGET_TASK` 9581 This variable lists packages the OpenEmbedded build system uses when 9582 it creates the target part of an SDK (i.e. the part built for the 9583 target hardware), which includes libraries and headers. Use this 9584 variable to add individual packages to the part of the SDK that runs 9585 on the target. See the 9586 ":ref:`sdk-manual/appendix-customizing-standard:adding individual packages to the standard sdk`" section 9587 in the Yocto Project Application Development and the Extensible 9588 Software Development Kit (eSDK) manual for more information. 9589 9590 For background information on cross-development toolchains in the 9591 Yocto Project development environment, see the 9592 ":ref:`sdk-manual/intro:the cross-development toolchain`" 9593 section in the Yocto Project Overview and Concepts Manual. For 9594 information on setting up a cross-development environment, see the 9595 :doc:`/sdk-manual/index` manual. 9596 9597 :term:`TOPDIR` 9598 See :term:`bitbake:TOPDIR` in the BitBake manual. 9599 9600 :term:`TRANSLATED_TARGET_ARCH` 9601 A sanitized version of :term:`TARGET_ARCH`. This 9602 variable is used where the architecture is needed in a value where 9603 underscores are not allowed, for example within package filenames. In 9604 this case, dash characters replace any underscore characters used in 9605 :term:`TARGET_ARCH`. 9606 9607 Do not edit this variable. 9608 9609 :term:`TUNE_ARCH` 9610 The GNU canonical architecture for a specific architecture (i.e. 9611 ``arm``, ``armeb``, ``mips``, ``mips64``, and so forth). BitBake uses 9612 this value to setup configuration. 9613 9614 :term:`TUNE_ARCH` definitions are specific to a given architecture. The 9615 definitions can be a single static definition, or can be dynamically 9616 adjusted. You can see details for a given CPU family by looking at 9617 the architecture's ``README`` file. For example, the 9618 ``meta/conf/machine/include/mips/README`` file in the 9619 :term:`Source Directory` provides information for 9620 :term:`TUNE_ARCH` specific to the ``mips`` architecture. 9621 9622 :term:`TUNE_ARCH` is tied closely to 9623 :term:`TARGET_ARCH`, which defines the target 9624 machine's architecture. The BitBake configuration file 9625 (``meta/conf/bitbake.conf``) sets :term:`TARGET_ARCH` as follows:: 9626 9627 TARGET_ARCH = "${TUNE_ARCH}" 9628 9629 The following list, which is by no means complete since architectures 9630 are configurable, shows supported machine architectures: 9631 9632 - arm 9633 - i586 9634 - x86_64 9635 - powerpc 9636 - powerpc64 9637 - mips 9638 - mipsel 9639 9640 :term:`TUNE_ASARGS` 9641 Specifies architecture-specific assembler flags for the target 9642 system. The set of flags is based on the selected tune features. 9643 :term:`TUNE_ASARGS` is set using the tune include files, which are 9644 typically under ``meta/conf/machine/include/`` and are influenced 9645 through :term:`TUNE_FEATURES`. For example, the 9646 ``meta/conf/machine/include/x86/arch-x86.inc`` file defines the flags 9647 for the x86 architecture as follows:: 9648 9649 TUNE_ASARGS += "${@bb.utils.contains("TUNE_FEATURES", "mx32", "-x32", "", d)}" 9650 9651 .. note:: 9652 9653 Board Support Packages (BSPs) select the tune. The selected tune, 9654 in turn, affects the tune variables themselves (i.e. the tune can 9655 supply its own set of flags). 9656 9657 :term:`TUNE_CCARGS` 9658 Specifies architecture-specific C compiler flags for the target 9659 system. The set of flags is based on the selected tune features. 9660 :term:`TUNE_CCARGS` is set using the tune include files, which are 9661 typically under ``meta/conf/machine/include/`` and are influenced 9662 through :term:`TUNE_FEATURES`. 9663 9664 .. note:: 9665 9666 Board Support Packages (BSPs) select the tune. The selected tune, 9667 in turn, affects the tune variables themselves (i.e. the tune can 9668 supply its own set of flags). 9669 9670 :term:`TUNE_FEATURES` 9671 Features used to "tune" a compiler for optimal use given a specific 9672 processor. The features are defined within the tune files and allow 9673 arguments (i.e. ``TUNE_*ARGS``) to be dynamically generated based on 9674 the features. 9675 9676 The OpenEmbedded build system verifies the features to be sure they 9677 are not conflicting and that they are supported. 9678 9679 The BitBake configuration file (``meta/conf/bitbake.conf``) defines 9680 :term:`TUNE_FEATURES` as follows:: 9681 9682 TUNE_FEATURES ??= "${TUNE_FEATURES:tune-${DEFAULTTUNE}}" 9683 9684 See the :term:`DEFAULTTUNE` variable for more information. 9685 9686 :term:`TUNE_LDARGS` 9687 Specifies architecture-specific linker flags for the target system. 9688 The set of flags is based on the selected tune features. 9689 :term:`TUNE_LDARGS` is set using the tune include files, which are 9690 typically under ``meta/conf/machine/include/`` and are influenced 9691 through :term:`TUNE_FEATURES`. For example, the 9692 ``meta/conf/machine/include/x86/arch-x86.inc`` file defines the flags 9693 for the x86 architecture as follows:: 9694 9695 TUNE_LDARGS += "${@bb.utils.contains("TUNE_FEATURES", "mx32", "-m elf32_x86_64", "", d)}" 9696 9697 .. note:: 9698 9699 Board Support Packages (BSPs) select the tune. The selected tune, 9700 in turn, affects the tune variables themselves (i.e. the tune can 9701 supply its own set of flags). 9702 9703 :term:`TUNE_PKGARCH` 9704 The package architecture understood by the packaging system to define 9705 the architecture, ABI, and tuning of output packages. The specific 9706 tune is defined using the "_tune" override as follows:: 9707 9708 TUNE_PKGARCH:tune-tune = "tune" 9709 9710 These tune-specific package architectures are defined in the machine 9711 include files. Here is an example of the "core2-32" tuning as used in 9712 the ``meta/conf/machine/include/x86/tune-core2.inc`` file:: 9713 9714 TUNE_PKGARCH:tune-core2-32 = "core2-32" 9715 9716 :term:`TUNECONFLICTS[feature]` 9717 Specifies CPU or Application Binary Interface (ABI) tuning features 9718 that conflict with feature. 9719 9720 Known tuning conflicts are specified in the machine include files in 9721 the :term:`Source Directory`. Here is an example from 9722 the ``meta/conf/machine/include/mips/arch-mips.inc`` include file 9723 that lists the "o32" and "n64" features as conflicting with the "n32" 9724 feature:: 9725 9726 TUNECONFLICTS[n32] = "o32 n64" 9727 9728 :term:`TUNEVALID[feature]` 9729 Specifies a valid CPU or Application Binary Interface (ABI) tuning 9730 feature. The specified feature is stored as a flag. Valid features 9731 are specified in the machine include files (e.g. 9732 ``meta/conf/machine/include/arm/arch-arm.inc``). Here is an example 9733 from that file:: 9734 9735 TUNEVALID[bigendian] = "Enable big-endian mode." 9736 9737 See the machine include files in the :term:`Source Directory` 9738 for these features. 9739 9740 :term:`UBOOT_BINARY` 9741 Specifies the name of the binary build by U-Boot. 9742 9743 :term:`UBOOT_CONFIG` 9744 Configures one or more U-Boot configurations to build. Each 9745 configuration can define the :term:`UBOOT_MACHINE` and optionally the 9746 :term:`IMAGE_FSTYPES` and the :term:`UBOOT_BINARY`. 9747 9748 Here is an example from the ``meta-freescale`` layer. :: 9749 9750 UBOOT_CONFIG ??= "sdcard-ifc-secure-boot sdcard-ifc sdcard-qspi lpuart qspi secure-boot nor" 9751 UBOOT_CONFIG[nor] = "ls1021atwr_nor_defconfig" 9752 UBOOT_CONFIG[sdcard-ifc] = "ls1021atwr_sdcard_ifc_defconfig,,u-boot-with-spl-pbl.bin" 9753 UBOOT_CONFIG[sdcard-qspi] = "ls1021atwr_sdcard_qspi_defconfig,,u-boot-with-spl-pbl.bin" 9754 UBOOT_CONFIG[lpuart] = "ls1021atwr_nor_lpuart_defconfig" 9755 UBOOT_CONFIG[qspi] = "ls1021atwr_qspi_defconfig" 9756 UBOOT_CONFIG[secure-boot] = "ls1021atwr_nor_SECURE_BOOT_defconfig" 9757 UBOOT_CONFIG[sdcard-ifc-secure-boot] = "ls1021atwr_sdcard_ifc_SECURE_BOOT_defconfig,,u-boot-with-spl-pbl.bin" 9758 9759 In this example, all possible seven configurations are selected. Each 9760 configuration specifies "..._defconfig" as :term:`UBOOT_MACHINE`, and 9761 the "sd..." configurations define an individual name for 9762 :term:`UBOOT_BINARY`. No configuration defines a second parameter for 9763 :term:`IMAGE_FSTYPES` to use for the U-Boot image. 9764 9765 For more information on how the :term:`UBOOT_CONFIG` is handled, see the 9766 :ref:`ref-classes-uboot-config` class. 9767 9768 :term:`UBOOT_DTB_LOADADDRESS` 9769 Specifies the load address for the dtb image used by U-Boot. During FIT 9770 image creation, the :term:`UBOOT_DTB_LOADADDRESS` variable is used in 9771 :ref:`ref-classes-kernel-fitimage` class to specify the load address to be 9772 used in creating the dtb sections of Image Tree Source for the FIT image. 9773 9774 :term:`UBOOT_DTBO_LOADADDRESS` 9775 Specifies the load address for the dtbo image used by U-Boot. During FIT 9776 image creation, the :term:`UBOOT_DTBO_LOADADDRESS` variable is used in 9777 :ref:`ref-classes-kernel-fitimage` class to specify the load address to be 9778 used in creating the dtbo sections of Image Tree Source for the FIT image. 9779 9780 :term:`UBOOT_ENTRYPOINT` 9781 Specifies the entry point for the U-Boot image. During U-Boot image 9782 creation, the :term:`UBOOT_ENTRYPOINT` variable is passed as a 9783 command-line parameter to the ``uboot-mkimage`` utility. 9784 9785 To pass a 64 bit address for FIT image creation, you will need to set: 9786 - The :term:`FIT_ADDRESS_CELLS` variable for FIT image creation. 9787 - The :term:`UBOOT_FIT_ADDRESS_CELLS` variable for U-Boot FIT image creation. 9788 9789 This variable is used by the :ref:`ref-classes-kernel-fitimage`, 9790 :ref:`ref-classes-kernel-uimage`, :ref:`ref-classes-kernel`, 9791 :ref:`ref-classes-uboot-config` and :ref:`ref-classes-uboot-sign` 9792 classes. 9793 9794 :term:`UBOOT_FIT_ADDRESS_CELLS` 9795 Specifies the value of the ``#address-cells`` value for the 9796 description of the U-Boot FIT image. 9797 9798 The default value is set to "1" by the :ref:`ref-classes-uboot-sign` 9799 class, which corresponds to 32 bit addresses. 9800 9801 For platforms that need to set 64 bit addresses in 9802 :term:`UBOOT_LOADADDRESS` and :term:`UBOOT_ENTRYPOINT`, you need to 9803 set this value to "2", as two 32 bit values (cells) will be needed 9804 to represent such addresses. 9805 9806 Here is an example setting "0x400000000" as a load address:: 9807 9808 UBOOT_FIT_ADDRESS_CELLS = "2" 9809 UBOOT_LOADADDRESS= "0x04 0x00000000" 9810 9811 See `more details about #address-cells <https://elinux.org/Device_Tree_Usage#How_Addressing_Works>`__. 9812 9813 :term:`UBOOT_FIT_DESC` 9814 Specifies the description string encoded into a U-Boot fitImage. The default 9815 value is set by the :ref:`ref-classes-uboot-sign` class as follows:: 9816 9817 UBOOT_FIT_DESC ?= "U-Boot fitImage for ${DISTRO_NAME}/${PV}/${MACHINE}" 9818 9819 :term:`UBOOT_FIT_GENERATE_KEYS` 9820 Decides whether to generate the keys for signing the U-Boot fitImage if 9821 they don't already exist. The keys are created in :term:`SPL_SIGN_KEYDIR`. 9822 The default value is "0". 9823 9824 Enable this as follows:: 9825 9826 UBOOT_FIT_GENERATE_KEYS = "1" 9827 9828 This variable is used in the :ref:`ref-classes-uboot-sign` class. 9829 9830 :term:`UBOOT_FIT_HASH_ALG` 9831 Specifies the hash algorithm used in creating the U-Boot FIT Image. 9832 It is set by default to ``sha256`` by the :ref:`ref-classes-uboot-sign` 9833 class. 9834 9835 :term:`UBOOT_FIT_KEY_GENRSA_ARGS` 9836 Arguments to ``openssl genrsa`` for generating a RSA private key for 9837 signing the U-Boot FIT image. The default value of this variable 9838 is set to "-F4" by the :ref:`ref-classes-uboot-sign` class. 9839 9840 :term:`UBOOT_FIT_KEY_REQ_ARGS` 9841 Arguments to ``openssl req`` for generating a certificate for signing 9842 the U-Boot FIT image. The default value is "-batch -new" by the 9843 :ref:`ref-classes-uboot-sign` class, "batch" for 9844 non interactive mode and "new" for generating new keys. 9845 9846 :term:`UBOOT_FIT_KEY_SIGN_PKCS` 9847 Format for the public key certificate used for signing the U-Boot FIT 9848 image. The default value is set to "x509" by the 9849 :ref:`ref-classes-uboot-sign` class. 9850 9851 :term:`UBOOT_FIT_SIGN_ALG` 9852 Specifies the signature algorithm used in creating the U-Boot FIT Image. 9853 This variable is set by default to "rsa2048" by the 9854 :ref:`ref-classes-uboot-sign` class. 9855 9856 :term:`UBOOT_FIT_SIGN_NUMBITS` 9857 Size of the private key used in signing the U-Boot FIT image, in number 9858 of bits. The default value for this variable is set to "2048" 9859 by the :ref:`ref-classes-uboot-sign` class. 9860 9861 :term:`UBOOT_FITIMAGE_ENABLE` 9862 This variable allows to generate a FIT image for U-Boot, which is one 9863 of the ways to implement a verified boot process. 9864 9865 Its default value is "0", so set it to "1" to enable this functionality:: 9866 9867 UBOOT_FITIMAGE_ENABLE = "1" 9868 9869 See the :ref:`ref-classes-uboot-sign` class for details. 9870 9871 :term:`UBOOT_LOADADDRESS` 9872 Specifies the load address for the U-Boot image. During U-Boot image 9873 creation, the :term:`UBOOT_LOADADDRESS` variable is passed as a 9874 command-line parameter to the ``uboot-mkimage`` utility. 9875 9876 To pass a 64 bit address, you will also need to set: 9877 9878 - The :term:`FIT_ADDRESS_CELLS` variable for FIT image creation. 9879 - The :term:`UBOOT_FIT_ADDRESS_CELLS` variable for U-Boot FIT image creation. 9880 9881 This variable is used by the :ref:`ref-classes-kernel-fitimage`, 9882 :ref:`ref-classes-kernel-uimage`, :ref:`ref-classes-kernel`, 9883 :ref:`ref-classes-uboot-config` and :ref:`ref-classes-uboot-sign` 9884 classes. 9885 9886 :term:`UBOOT_LOCALVERSION` 9887 Appends a string to the name of the local version of the U-Boot 9888 image. For example, assuming the version of the U-Boot image built 9889 was "2013.10", the full version string reported by U-Boot would be 9890 "2013.10-yocto" given the following statement:: 9891 9892 UBOOT_LOCALVERSION = "-yocto" 9893 9894 :term:`UBOOT_MACHINE` 9895 Specifies the value passed on the ``make`` command line when building 9896 a U-Boot image. The value indicates the target platform 9897 configuration. You typically set this variable from the machine 9898 configuration file (i.e. ``conf/machine/machine_name.conf``). 9899 9900 Please see the "Selection of Processor Architecture and Board Type" 9901 section in the U-Boot README for valid values for this variable. 9902 9903 :term:`UBOOT_MAKE_TARGET` 9904 Specifies the target called in the ``Makefile``. The default target 9905 is "all". 9906 9907 :term:`UBOOT_MKIMAGE` 9908 Specifies the name of the mkimage command as used by the 9909 :ref:`ref-classes-kernel-fitimage` class to assemble 9910 the FIT image. This can be used to substitute an alternative command, wrapper 9911 script or function if desired. The default is "uboot-mkimage". 9912 9913 :term:`UBOOT_MKIMAGE_DTCOPTS` 9914 Options for the device tree compiler passed to ``mkimage -D`` feature 9915 while creating a FIT image with the :ref:`ref-classes-kernel-fitimage` 9916 class. If :term:`UBOOT_MKIMAGE_DTCOPTS` is not set then the 9917 :ref:`ref-classes-kernel-fitimage` class will not pass the ``-D`` option 9918 to ``mkimage``. 9919 9920 This variable is also used by the :ref:`ref-classes-uboot-sign` class. 9921 9922 :term:`UBOOT_MKIMAGE_KERNEL_TYPE` 9923 Specifies the type argument for the kernel as passed to ``uboot-mkimage``. 9924 The default value is "kernel". 9925 9926 :term:`UBOOT_MKIMAGE_SIGN` 9927 Specifies the name of the mkimage command as used by the 9928 :ref:`ref-classes-kernel-fitimage` class to sign 9929 the FIT image after it has been assembled (if enabled). This can be used 9930 to substitute an alternative command, wrapper script or function if 9931 desired. The default is "${:term:`UBOOT_MKIMAGE`}". 9932 9933 :term:`UBOOT_MKIMAGE_SIGN_ARGS` 9934 Optionally specifies additional arguments for the 9935 :ref:`ref-classes-kernel-fitimage` class to pass to the 9936 mkimage command when signing the FIT image. 9937 9938 :term:`UBOOT_RD_ENTRYPOINT` 9939 Specifies the entrypoint for the RAM disk image. During FIT image 9940 creation, the :term:`UBOOT_RD_ENTRYPOINT` variable is used in 9941 :ref:`ref-classes-kernel-fitimage` class to specify the entrypoint to be 9942 used in creating the Image Tree Source for the FIT image. 9943 9944 :term:`UBOOT_RD_LOADADDRESS` 9945 Specifies the load address for the RAM disk image. During FIT image 9946 creation, the :term:`UBOOT_RD_LOADADDRESS` variable is used in 9947 :ref:`ref-classes-kernel-fitimage` class to specify the load address to 9948 be used in creating the Image Tree Source for the FIT image. 9949 9950 :term:`UBOOT_SIGN_ENABLE` 9951 Enable signing of FIT image. The default value is "0". 9952 9953 This variable is used by the :ref:`ref-classes-kernel-fitimage`, 9954 :ref:`ref-classes-uboot-config` and :ref:`ref-classes-uboot-sign` 9955 classes. 9956 9957 :term:`UBOOT_SIGN_KEYDIR` 9958 Location of the directory containing the RSA key and certificate used for 9959 signing FIT image, used by the :ref:`ref-classes-kernel-fitimage` and 9960 :ref:`ref-classes-uboot-sign` classes. 9961 9962 :term:`UBOOT_SIGN_KEYNAME` 9963 The name of keys used by the :ref:`ref-classes-kernel-fitimage` class 9964 for signing U-Boot FIT image stored in the :term:`UBOOT_SIGN_KEYDIR` 9965 directory. If we have for example a ``dev.key`` key and a ``dev.crt`` 9966 certificate stored in the :term:`UBOOT_SIGN_KEYDIR` directory, you will 9967 have to set :term:`UBOOT_SIGN_KEYNAME` to ``dev``. 9968 9969 :term:`UBOOT_SUFFIX` 9970 Points to the generated U-Boot extension. For example, ``u-boot.sb`` 9971 has a ``.sb`` extension. 9972 9973 The default U-Boot extension is ``.bin`` 9974 9975 :term:`UBOOT_TARGET` 9976 Specifies the target used for building U-Boot. The target is passed 9977 directly as part of the "make" command (e.g. SPL and AIS). If you do 9978 not specifically set this variable, the OpenEmbedded build process 9979 passes and uses "all" for the target during the U-Boot building 9980 process. 9981 9982 :term:`UKIFY_CMD` 9983 When inheriting the :ref:`ref-classes-uki` class, 9984 `ukify <https://www.freedesktop.org/software/systemd/man/latest/ukify.html>`__ command to build 9985 `Unified Kernel Image (UKI) <https://uapi-group.org/specifications/specs/unified_kernel_image/>`__. 9986 Defaults to ``ukify build``. 9987 9988 :term:`UKI_CMDLINE` 9989 When inheriting the :ref:`ref-classes-uki` class, the kernel command line 9990 to use when booting the `Unified Kernel Image (UKI) 9991 <https://uapi-group.org/specifications/specs/unified_kernel_image/>`__. 9992 Defaults to ``rootwait root=LABEL=root console=${KERNEL_CONSOLE}``. 9993 9994 :term:`UKI_CONFIG_FILE` 9995 When inheriting the :ref:`ref-classes-uki` class, an optional config 9996 file for the `ukify 9997 <https://www.freedesktop.org/software/systemd/man/latest/ukify.html>`__ 9998 command. 9999 10000 :term:`UKI_FILENAME` 10001 When inheriting the :ref:`ref-classes-uki` class, the output file name 10002 for the generated `Unified Kernel Image (UKI) 10003 <https://uapi-group.org/specifications/specs/unified_kernel_image/>`__. 10004 Defaults to ``uki.efi``. 10005 10006 :term:`UKI_KERNEL_FILENAME` 10007 When inheriting the :ref:`ref-classes-uki` class, the kernel image file 10008 name to use as input. Defaults to :term:`KERNEL_IMAGETYPE`. 10009 10010 :term:`UKI_SB_CERT` 10011 When inheriting the :ref:`ref-classes-uki` class, optional UEFI 10012 secureboot certificate matching the private key in :term:`UKI_SB_KEY`. 10013 10014 :term:`UKI_SB_KEY` 10015 When inheriting the :ref:`ref-classes-uki` class, optional UEFI 10016 secureboot private key to sign the `Unified Kernel Image (UKI) 10017 <https://uapi-group.org/specifications/specs/unified_kernel_image/>`__. 10018 10019 :term:`UNKNOWN_CONFIGURE_OPT_IGNORE` 10020 Specifies a list of options that, if reported by the configure script 10021 as being invalid, should not generate a warning during the 10022 :ref:`ref-tasks-configure` task. Normally, invalid 10023 configure options are simply not passed to the configure script (e.g. 10024 should be removed from :term:`EXTRA_OECONF` or 10025 :term:`PACKAGECONFIG_CONFARGS`). 10026 However, there are common options that are passed to all 10027 configure scripts at a class level, but might not be valid for some 10028 configure scripts. Therefore warnings about these options are useless. 10029 For these cases, the options are added to :term:`UNKNOWN_CONFIGURE_OPT_IGNORE`. 10030 10031 The configure arguments check that uses 10032 :term:`UNKNOWN_CONFIGURE_OPT_IGNORE` is part of the 10033 :ref:`ref-classes-insane` class and is only enabled if the 10034 recipe inherits the :ref:`ref-classes-autotools` class. 10035 10036 :term:`UNPACKDIR` 10037 This variable, used by the :ref:`ref-classes-base` class, 10038 specifies where fetches sources should be unpacked by the 10039 :ref:`ref-tasks-unpack` task. 10040 10041 :term:`UPDATERCPN` 10042 For recipes inheriting the 10043 :ref:`ref-classes-update-rc.d` class, :term:`UPDATERCPN` 10044 specifies the package that contains the initscript that is enabled. 10045 10046 The default value is "${PN}". Given that almost all recipes that 10047 install initscripts package them in the main package for the recipe, 10048 you rarely need to set this variable in individual recipes. 10049 10050 :term:`UPSTREAM_CHECK_COMMITS` 10051 You can perform a per-recipe check for what the latest upstream 10052 source code version is by calling ``devtool latest-version recipe``. If 10053 the recipe source code is provided from Git repositories, but 10054 releases are not identified by Git tags, set :term:`UPSTREAM_CHECK_COMMITS` 10055 to ``1`` in the recipe, and the OpenEmbedded build system 10056 will compare the latest commit with the one currently specified 10057 by the recipe (:term:`SRCREV`):: 10058 10059 UPSTREAM_CHECK_COMMITS = "1" 10060 10061 :term:`UPSTREAM_CHECK_GITTAGREGEX` 10062 You can perform a per-recipe check for what the latest upstream 10063 source code version is by calling ``devtool latest-version recipe``. If 10064 the recipe source code is provided from Git repositories, the 10065 OpenEmbedded build system determines the latest upstream version by 10066 picking the latest tag from the list of all repository tags. 10067 10068 You can use the :term:`UPSTREAM_CHECK_GITTAGREGEX` variable to provide a 10069 regular expression to filter only the relevant tags should the 10070 default filter not work correctly:: 10071 10072 UPSTREAM_CHECK_GITTAGREGEX = "git_tag_regex" 10073 10074 :term:`UPSTREAM_CHECK_REGEX` 10075 Use the :term:`UPSTREAM_CHECK_REGEX` variable to specify a different 10076 regular expression instead of the default one when the package 10077 checking system is parsing the page found using 10078 :term:`UPSTREAM_CHECK_URI`:: 10079 10080 UPSTREAM_CHECK_REGEX = "package_regex" 10081 10082 :term:`UPSTREAM_CHECK_URI` 10083 You can perform a per-recipe check for what the latest upstream 10084 source code version is by calling ``devtool latest-version recipe``. If 10085 the source code is provided from tarballs, the latest version is 10086 determined by fetching the directory listing where the tarball is and 10087 attempting to find a later tarball. When this approach does not work, 10088 you can use :term:`UPSTREAM_CHECK_URI` to provide a different URI that 10089 contains the link to the latest tarball:: 10090 10091 UPSTREAM_CHECK_URI = "recipe_url" 10092 10093 :term:`UPSTREAM_VERSION_UNKNOWN` 10094 You can perform a per-recipe check for what the latest upstream 10095 source code version is by calling ``devtool latest-version recipe``. 10096 If no combination of the :term:`UPSTREAM_CHECK_URI`, :term:`UPSTREAM_CHECK_REGEX`, 10097 :term:`UPSTREAM_CHECK_GITTAGREGEX` and :term:`UPSTREAM_CHECK_COMMITS` variables in 10098 the recipe allows to determine what the latest upstream version is, 10099 you can set :term:`UPSTREAM_VERSION_UNKNOWN` to ``1`` in the recipe 10100 to acknowledge that the check cannot be performed:: 10101 10102 UPSTREAM_VERSION_UNKNOWN = "1" 10103 10104 :term:`USE_DEVFS` 10105 Determines if ``devtmpfs`` is used for ``/dev`` population. The 10106 default value used for :term:`USE_DEVFS` is "1" when no value is 10107 specifically set. Typically, you would set :term:`USE_DEVFS` to "0" for a 10108 statically populated ``/dev`` directory. 10109 10110 See the ":ref:`dev-manual/device-manager:selecting a device manager`" section in 10111 the Yocto Project Development Tasks Manual for information on how to 10112 use this variable. 10113 10114 :term:`USE_VT` 10115 When using 10116 :ref:`SysVinit <dev-manual/new-recipe:enabling system services>`, 10117 determines whether or not to run a :wikipedia:`getty <Getty_(Unix)>` 10118 on any virtual terminals in order to enable logging in through those 10119 terminals. 10120 10121 The default value used for :term:`USE_VT` is "1" when no default value is 10122 specifically set. Typically, you would set :term:`USE_VT` to "0" in the 10123 machine configuration file for machines that do not have a graphical 10124 display attached and therefore do not need virtual terminal 10125 functionality. 10126 10127 :term:`USER_CLASSES` 10128 A list of classes to globally inherit. These classes are used by the 10129 OpenEmbedded build system to enable extra features. 10130 10131 Classes inherited using :term:`USER_CLASSES` must be located in the 10132 ``classes-global/`` or ``classes/`` subdirectories. 10133 10134 The default list is set in your ``local.conf`` file:: 10135 10136 USER_CLASSES ?= "buildstats" 10137 10138 For more information, see 10139 ``meta-poky/conf/templates/default/local.conf.sample`` in the 10140 :term:`Source Directory`. 10141 10142 :term:`USERADD_DEPENDS` 10143 Specifies a list of recipes that create users / groups (via 10144 :term:`USERADD_PARAM` / :term:`GROUPADD_PARAM`) which a recipe 10145 depends upon. This ensures that those users / groups are available 10146 when building a recipe. 10147 10148 :term:`USERADD_ERROR_DYNAMIC` 10149 If set to ``error``, forces the OpenEmbedded build system to produce 10150 an error if the user identification (``uid``) and group 10151 identification (``gid``) values are not defined in any of the files 10152 listed in :term:`USERADD_UID_TABLES` and 10153 :term:`USERADD_GID_TABLES`. If set to 10154 ``warn``, a warning will be issued instead. 10155 10156 The default behavior for the build system is to dynamically apply 10157 ``uid`` and ``gid`` values. Consequently, the 10158 :term:`USERADD_ERROR_DYNAMIC` variable is by default not set. If you plan 10159 on using statically assigned ``gid`` and ``uid`` values, you should 10160 set the :term:`USERADD_ERROR_DYNAMIC` variable in your ``local.conf`` 10161 file as follows:: 10162 10163 USERADD_ERROR_DYNAMIC = "error" 10164 10165 Overriding the 10166 default behavior implies you are going to also take steps to set 10167 static ``uid`` and ``gid`` values through use of the 10168 :term:`USERADDEXTENSION`, 10169 :term:`USERADD_UID_TABLES`, and 10170 :term:`USERADD_GID_TABLES` variables. 10171 10172 .. note:: 10173 10174 There is a difference in behavior between setting 10175 :term:`USERADD_ERROR_DYNAMIC` to ``error`` and setting it to ``warn``. 10176 When it is set to ``warn``, the build system will report a warning for 10177 every undefined ``uid`` and ``gid`` in any recipe. But when it is set 10178 to ``error``, it will only report errors for recipes that are actually 10179 built. 10180 This saves you from having to add static IDs for recipes that you 10181 know will never be built. 10182 10183 :term:`USERADD_GID_TABLES` 10184 Specifies a password file to use for obtaining static group 10185 identification (``gid``) values when the OpenEmbedded build system 10186 adds a group to the system during package installation. 10187 10188 When applying static group identification (``gid``) values, the 10189 OpenEmbedded build system looks in :term:`BBPATH` for a 10190 ``files/group`` file and then applies those ``uid`` values. Set the 10191 variable as follows in your ``local.conf`` file:: 10192 10193 10194 USERADD_GID_TABLES = "files/group" 10195 10196 .. note:: 10197 10198 Setting the :term:`USERADDEXTENSION` variable to "useradd-staticids" 10199 causes the build system to use static ``gid`` values. 10200 10201 :term:`USERADD_PACKAGES` 10202 When inheriting the :ref:`ref-classes-useradd` class, 10203 this variable specifies the individual packages within the recipe 10204 that require users and/or groups to be added. 10205 10206 You must set this variable if the recipe inherits the class. For 10207 example, the following enables adding a user for the main package in 10208 a recipe:: 10209 10210 USERADD_PACKAGES = "${PN}" 10211 10212 .. note:: 10213 10214 It follows that if you are going to use the :term:`USERADD_PACKAGES` 10215 variable, you need to set one or more of the :term:`USERADD_PARAM`, 10216 :term:`GROUPADD_PARAM`, or :term:`GROUPMEMS_PARAM` variables. 10217 10218 :term:`USERADD_PARAM` 10219 When inheriting the :ref:`ref-classes-useradd` class, 10220 this variable specifies for a package what parameters should pass to 10221 the ``useradd`` command if you add a user to the system when the 10222 package is installed. 10223 10224 Here is an example from the ``dbus`` recipe:: 10225 10226 USERADD_PARAM:${PN} = "--system --home ${localstatedir}/lib/dbus \ 10227 --no-create-home --shell /bin/false \ 10228 --user-group messagebus" 10229 10230 For information on the 10231 standard Linux shell command ``useradd``, see 10232 https://linux.die.net/man/8/useradd. 10233 10234 :term:`USERADD_UID_TABLES` 10235 Specifies a password file to use for obtaining static user 10236 identification (``uid``) values when the OpenEmbedded build system 10237 adds a user to the system during package installation. 10238 10239 When applying static user identification (``uid``) values, the 10240 OpenEmbedded build system looks in :term:`BBPATH` for a 10241 ``files/passwd`` file and then applies those ``uid`` values. Set the 10242 variable as follows in your ``local.conf`` file:: 10243 10244 USERADD_UID_TABLES = "files/passwd" 10245 10246 .. note:: 10247 10248 Setting the :term:`USERADDEXTENSION` variable to "useradd-staticids" 10249 causes the build system to use static ``uid`` values. 10250 10251 :term:`USERADDEXTENSION` 10252 When set to "useradd-staticids", causes the OpenEmbedded build system 10253 to base all user and group additions on a static ``passwd`` and 10254 ``group`` files found in :term:`BBPATH`. 10255 10256 To use static user identification (``uid``) and group identification 10257 (``gid``) values, set the variable as follows in your ``local.conf`` 10258 file: USERADDEXTENSION = "useradd-staticids" 10259 10260 .. note:: 10261 10262 Setting this variable to use static ``uid`` and ``gid`` 10263 values causes the OpenEmbedded build system to employ the 10264 :ref:`ref-classes-useradd` class. 10265 10266 If you use static ``uid`` and ``gid`` information, you must also 10267 specify the ``files/passwd`` and ``files/group`` files by setting the 10268 :term:`USERADD_UID_TABLES` and 10269 :term:`USERADD_GID_TABLES` variables. 10270 Additionally, you should also set the 10271 :term:`USERADD_ERROR_DYNAMIC` variable. 10272 10273 :term:`VIRTUAL-RUNTIME` 10274 :term:`VIRTUAL-RUNTIME` is a commonly used prefix for defining virtual 10275 packages for runtime usage, typically for use in :term:`RDEPENDS` 10276 or in image definitions. 10277 10278 An example is ``VIRTUAL-RUNTIME_base-utils`` that makes it possible 10279 to either use BusyBox based utilities:: 10280 10281 VIRTUAL-RUNTIME_base-utils = "busybox" 10282 10283 or their full featured implementations from GNU Coreutils 10284 and other projects:: 10285 10286 VIRTUAL-RUNTIME_base-utils = "packagegroup-core-base-utils" 10287 10288 Here are two examples using this virtual runtime package. The 10289 first one is in :yocto_git:`initramfs-framework_1.0.bb 10290 </poky/tree/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb?h=scarthgap>`:: 10291 10292 RDEPENDS:${PN} += "${VIRTUAL-RUNTIME_base-utils}" 10293 10294 The second example is in the :yocto_git:`core-image-initramfs-boot 10295 </poky/tree/meta/recipes-core/images/core-image-initramfs-boot.bb?h=scarthgap>` 10296 image definition:: 10297 10298 PACKAGE_INSTALL = "${INITRAMFS_SCRIPTS} ${VIRTUAL-RUNTIME_base-utils} base-passwd" 10299 10300 :term:`WARN_QA` 10301 Specifies the quality assurance checks whose failures are reported as 10302 warnings by the OpenEmbedded build system. You set this variable in 10303 your distribution configuration file. For a list of the checks you 10304 can control with this variable, see the 10305 ":ref:`ref-classes-insane`" section. 10306 10307 :term:`WATCHDOG_TIMEOUT` 10308 Specifies the timeout in seconds used by the ``watchdog`` recipe and 10309 also by ``systemd`` during reboot. The default is 60 seconds. 10310 10311 :term:`WIC_SECTOR_SIZE` 10312 The variable :term:`WIC_SECTOR_SIZE` controls the sector size of Wic 10313 images. In the background, this controls the value of the 10314 ``PARTED_SECTOR_SIZE`` environment variable passed to the ``parted`` 10315 command-line utility, used to generated the images. The default value is 10316 ``512``. 10317 10318 For more information on how to create Wic images, see the 10319 ":ref:`dev-manual/wic:creating partitioned images using wic`" section in 10320 the Yocto Project Development Tasks Manual. 10321 10322 :term:`WIRELESS_DAEMON` 10323 For ``connman`` and ``packagegroup-base``, specifies the wireless 10324 daemon to use. The default is "wpa-supplicant" (note that the value 10325 uses a dash and not an underscore). 10326 10327 :term:`WKS_FILE` 10328 Specifies the location of the Wic kickstart file that is used by the 10329 OpenEmbedded build system to create a partitioned image 10330 (``image.wic``). For information on how to create a partitioned 10331 image, see the 10332 ":ref:`dev-manual/wic:creating partitioned images using wic`" 10333 section in the Yocto Project Development Tasks Manual. For details on 10334 the kickstart file format, see the ":doc:`/ref-manual/kickstart`" Chapter. 10335 10336 :term:`WKS_FILE_DEPENDS` 10337 When placed in the recipe that builds your image, this variable lists 10338 build-time dependencies. The :term:`WKS_FILE_DEPENDS` variable is only 10339 applicable when Wic images are active (i.e. when 10340 :term:`IMAGE_FSTYPES` contains entries related 10341 to Wic). If your recipe does not create Wic images, the variable has 10342 no effect. 10343 10344 The :term:`WKS_FILE_DEPENDS` variable is similar to the 10345 :term:`DEPENDS` variable. When you use the variable in 10346 your recipe that builds the Wic image, dependencies you list in the 10347 :term:`WKS_FILE_DEPENDS` variable are added to the :term:`DEPENDS` variable. 10348 10349 With the :term:`WKS_FILE_DEPENDS` variable, you have the possibility to 10350 specify a list of additional dependencies (e.g. native tools, 10351 bootloaders, and so forth), that are required to build Wic images. 10352 Here is an example:: 10353 10354 WKS_FILE_DEPENDS = "some-native-tool" 10355 10356 In the 10357 previous example, some-native-tool would be replaced with an actual 10358 native tool on which the build would depend. 10359 10360 :term:`WKS_FILES` 10361 Specifies a list of candidate Wic kickstart files to be used by the 10362 OpenEmbedded build system to create a partitioned image. Only the 10363 first one that is found, from left to right, will be used. 10364 10365 This is only useful when there are multiple ``.wks`` files that can be 10366 used to produce an image. A typical case is when multiple layers are 10367 used for different hardware platforms, each supplying a different 10368 ``.wks`` file. In this case, you specify all possible ones through 10369 :term:`WKS_FILES`. 10370 10371 If only one ``.wks`` file is used, set :term:`WKS_FILE` instead. 10372 10373 :term:`WORKDIR` 10374 The pathname of the work directory in which the OpenEmbedded build 10375 system builds a recipe. This directory is located within the 10376 :term:`TMPDIR` directory structure and is specific to 10377 the recipe being built and the system for which it is being built. 10378 10379 The :term:`WORKDIR` directory is defined as follows:: 10380 10381 ${TMPDIR}/work/${MULTIMACH_TARGET_SYS}/${PN}/${EXTENDPE}${PV}-${PR} 10382 10383 The actual directory depends on several things: 10384 10385 - :term:`TMPDIR`: The top-level build output directory 10386 - :term:`MULTIMACH_TARGET_SYS`: The target system identifier 10387 - :term:`PN`: The recipe name 10388 - :term:`EXTENDPE`: The epoch --- if :term:`PE` is not specified, which 10389 is usually the case for most recipes, then :term:`EXTENDPE` is blank. 10390 - :term:`PV`: The recipe version 10391 - :term:`PR`: The recipe revision 10392 10393 As an example, assume a Source Directory top-level folder name 10394 ``poky``, a default :term:`Build Directory` at ``poky/build``, and a 10395 ``qemux86-poky-linux`` machine target system. Furthermore, suppose 10396 your recipe is named ``foo_1.3.0-r0.bb``. In this case, the work 10397 directory the build system uses to build the package would be as 10398 follows:: 10399 10400 poky/build/tmp/work/qemux86-poky-linux/foo/1.3.0-r0 10401 10402 :term:`XSERVER` 10403 Specifies the packages that should be installed to provide an X 10404 server and drivers for the current machine, assuming your image 10405 directly includes ``packagegroup-core-x11-xserver`` or, perhaps 10406 indirectly, includes "x11-base" in 10407 :term:`IMAGE_FEATURES`. 10408 10409 The default value of :term:`XSERVER`, if not specified in the machine 10410 configuration, is "xserver-xorg xf86-video-fbdev xf86-input-evdev". 10411 10412 :term:`XZ_THREADS` 10413 Specifies the number of parallel threads that should be used when 10414 using xz compression. 10415 10416 By default this scales with core count, but is never set less than 2 10417 to ensure that multi-threaded mode is always used so that the output 10418 file contents are deterministic. Builds will work with a value of 1 10419 but the output will differ compared to the output from the compression 10420 generated when more than one thread is used. 10421 10422 On systems where many tasks run in parallel, setting a limit to this 10423 can be helpful in controlling system resource usage. 10424 10425 :term:`XZ_MEMLIMIT` 10426 Specifies the maximum memory the xz compression should use as a percentage 10427 of system memory. If unconstrained the xz compressor can use large amounts of 10428 memory and become problematic with parallelism elsewhere in the build. 10429 "50%" has been found to be a good value. 10430 10431 :term:`ZSTD_COMPRESSION_LEVEL` 10432 Specifies the compression level to be used with ZStandard compression 10433 (from ``1`` to ``19``, set to ``3`` by default, following upstream choice). 10434 Higher levels produce smaller files, but take longer to complete. 10435 10436 :term:`ZSTD_THREADS` 10437 Specifies the number of parallel threads that should be used when 10438 using ZStandard compression. 10439 10440 By default this scales with core count, but is never set less than 2 10441 to ensure that multi-threaded mode is always used so that the output 10442 file contents are deterministic. Builds will work with a value of 1 10443 but the output will differ compared to the output from the compression 10444 generated when more than one thread is used. 10445 10446 On systems where many tasks run in parallel, setting a limit to this 10447 can be helpful in controlling system resource usage. 10448