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 <FEATURE_PACKAGES>` 12:term:`G <GCCPIE>` :term:`H <HOMEPAGE>` :term:`I <ICECC_DISABLED>` 13:term:`K <KARCH>` :term:`L <LABELS>` :term:`M <MACHINE>` 14:term:`N <NATIVELSBSTRING>` :term:`O <OBJCOPY>` :term:`P` 15:term:`R <RANLIB>` :term:`S` :term:`T` 16:term:`U <UBOOT_CONFIG>` :term:`V <VOLATILE_LOG_DIR>` 17:term:`W <WARN_QA>` :term:`X <XSERVER>` 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 be sure :term:`PV` contains 213 ``${``\ :term:`SRCPV`\ ``}``. For example, suppose you have a kernel 214 recipe that inherits the :ref:`ref-classes-kernel` class and you 215 use the previous statement. In this example, ``${SRCPV}`` does not 216 automatically get into :term:`PV`. Consequently, you need to change 217 :term:`PV` in your recipe so that it does contain ``${SRCPV}``. 218 219 For more information see the 220 ":ref:`dev-manual/packages:automatically incrementing a package version number`" 221 section in the Yocto Project Development Tasks Manual. 222 223 :term:`AUTO_SYSLINUXMENU` 224 Enables creating an automatic menu for the syslinux bootloader. You 225 must set this variable in your recipe. The 226 :ref:`ref-classes-syslinux` class checks this variable. 227 228 :term:`AVAILTUNES` 229 The list of defined CPU and Application Binary Interface (ABI) 230 tunings (i.e. "tunes") available for use by the OpenEmbedded build 231 system. 232 233 The list simply presents the tunes that are available. Not all tunes 234 may be compatible with a particular machine configuration, or with 235 each other in a 236 :ref:`Multilib <dev-manual/libraries:combining multiple versions of library files into one image>` 237 configuration. 238 239 To add a tune to the list, be sure to append it with spaces using the 240 "+=" BitBake operator. Do not simply replace the list by using the 241 "=" operator. See the 242 ":ref:`bitbake-user-manual/bitbake-user-manual-metadata:basic syntax`" section in the BitBake 243 User Manual for more information. 244 245 :term:`AZ_SAS` 246 Azure Storage Shared Access Signature, when using the 247 :ref:`Azure Storage fetcher (az://) <bitbake-user-manual/bitbake-user-manual-fetching:fetchers>` 248 This variable can be defined to be used by the fetcher to authenticate 249 and gain access to non-public artifacts:: 250 251 AZ_SAS = ""se=2021-01-01&sp=r&sv=2018-11-09&sr=c&skoid=<skoid>&sig=<signature>"" 252 253 For more information see Microsoft's Azure Storage documentation at 254 https://docs.microsoft.com/en-us/azure/storage/common/storage-sas-overview 255 256 :term:`B` 257 The directory within the :term:`Build Directory` in which the 258 OpenEmbedded build system places generated objects during a recipe's 259 build process. By default, this directory is the same as the 260 :term:`S` directory, which is defined as:: 261 262 S = "${WORKDIR}/${BP}" 263 264 You can separate the (:term:`S`) directory and the directory pointed to 265 by the :term:`B` variable. Most Autotools-based recipes support 266 separating these directories. The build system defaults to using 267 separate directories for ``gcc`` and some kernel recipes. 268 269 :term:`BAD_RECOMMENDATIONS` 270 Lists "recommended-only" packages to not install. Recommended-only 271 packages are packages installed only through the 272 :term:`RRECOMMENDS` variable. You can prevent any 273 of these "recommended" packages from being installed by listing them 274 with the :term:`BAD_RECOMMENDATIONS` variable:: 275 276 BAD_RECOMMENDATIONS = "package_name package_name package_name ..." 277 278 You can set this variable globally in your ``local.conf`` file or you 279 can attach it to a specific image recipe by using the recipe name 280 override:: 281 282 BAD_RECOMMENDATIONS:pn-target_image = "package_name" 283 284 It is important to realize that if you choose to not install packages 285 using this variable and some other packages are dependent on them 286 (i.e. listed in a recipe's :term:`RDEPENDS` 287 variable), the OpenEmbedded build system ignores your request and 288 will install the packages to avoid dependency errors. 289 290 This variable is supported only when using the IPK and RPM 291 packaging backends. DEB is not supported. 292 293 See the :term:`NO_RECOMMENDATIONS` and the 294 :term:`PACKAGE_EXCLUDE` variables for related 295 information. 296 297 :term:`BASE_LIB` 298 The library directory name for the CPU or Application Binary 299 Interface (ABI) tune. The :term:`BASE_LIB` applies only in the Multilib 300 context. See the ":ref:`dev-manual/libraries:combining multiple versions of library files into one image`" 301 section in the Yocto Project Development Tasks Manual for information 302 on Multilib. 303 304 The :term:`BASE_LIB` variable is defined in the machine include files in 305 the :term:`Source Directory`. If Multilib is not 306 being used, the value defaults to "lib". 307 308 :term:`BASE_WORKDIR` 309 Points to the base of the work directory for all recipes. The default 310 value is "${TMPDIR}/work". 311 312 :term:`BB_ALLOWED_NETWORKS` 313 Specifies a space-delimited list of hosts that the fetcher is allowed 314 to use to obtain the required source code. Here are 315 considerations surrounding this variable: 316 317 - This host list is only used if :term:`BB_NO_NETWORK` is either not set 318 or set to "0". 319 320 - There is limited support for wildcard matching against the beginning of 321 host names. For example, the following setting matches 322 ``git.gnu.org``, ``ftp.gnu.org``, and ``foo.git.gnu.org``:: 323 324 BB_ALLOWED_NETWORKS = "*.gnu.org" 325 326 .. note:: 327 328 The use of the "``*``" character only works at the beginning of 329 a host name and it must be isolated from the remainder of the 330 host name. You cannot use the wildcard character in any other 331 location of the name or combined with the front part of the 332 name. 333 334 For example, ``*.foo.bar`` is supported, while ``*aa.foo.bar`` 335 is not. 336 337 - Mirrors not in the host list are skipped and logged in debug. 338 339 - Attempts to access networks not in the host list cause a failure. 340 341 Using :term:`BB_ALLOWED_NETWORKS` in conjunction with 342 :term:`PREMIRRORS` is very useful. Adding the host 343 you want to use to :term:`PREMIRRORS` results in the source code being 344 fetched from an allowed location and avoids raising an error when a 345 host that is not allowed is in a :term:`SRC_URI` 346 statement. This is because the fetcher does not attempt to use the 347 host listed in :term:`SRC_URI` after a successful fetch from the 348 :term:`PREMIRRORS` occurs. 349 350 :term:`BB_BASEHASH_IGNORE_VARS` 351 See :term:`bitbake:BB_BASEHASH_IGNORE_VARS` in the BitBake manual. 352 353 :term:`BB_CACHEDIR` 354 See :term:`bitbake:BB_CACHEDIR` in the BitBake manual. 355 356 :term:`BB_CHECK_SSL_CERTS` 357 See :term:`bitbake:BB_CHECK_SSL_CERTS` in the BitBake manual. 358 359 :term:`BB_CONSOLELOG` 360 See :term:`bitbake:BB_CONSOLELOG` in the BitBake manual. 361 362 :term:`BB_CURRENTTASK` 363 See :term:`bitbake:BB_CURRENTTASK` in the BitBake manual. 364 365 :term:`BB_DANGLINGAPPENDS_WARNONLY` 366 Defines how BitBake handles situations where an append file 367 (``.bbappend``) has no corresponding recipe file (``.bb``). This 368 condition often occurs when layers get out of sync (e.g. ``oe-core`` 369 bumps a recipe version and the old recipe no longer exists and the 370 other layer has not been updated to the new version of the recipe 371 yet). 372 373 The default fatal behavior is safest because it is the sane reaction 374 given something is out of sync. It is important to realize when your 375 changes are no longer being applied. 376 377 You can change the default behavior by setting this variable to "1", 378 "yes", or "true" in your ``local.conf`` file, which is located in the 379 :term:`Build Directory`: Here is an example:: 380 381 BB_DANGLINGAPPENDS_WARNONLY = "1" 382 383 :term:`BB_DEFAULT_TASK` 384 See :term:`bitbake:BB_DEFAULT_TASK` in the BitBake manual. 385 386 :term:`BB_DEFAULT_UMASK` 387 See :term:`bitbake:BB_DEFAULT_UMASK` in the BitBake manual. 388 389 :term:`BB_DISKMON_DIRS` 390 Monitors disk space and available inodes during the build and allows 391 you to control the build based on these parameters. 392 393 Disk space monitoring is disabled by default. To enable monitoring, 394 add the :term:`BB_DISKMON_DIRS` variable to your ``conf/local.conf`` file 395 found in the :term:`Build Directory`. Use the 396 following form: 397 398 .. code-block:: none 399 400 BB_DISKMON_DIRS = "action,dir,threshold [...]" 401 402 where: 403 404 action is: 405 ABORT: Immediately stop the build when 406 a threshold is broken. 407 STOPTASKS: Stop the build after the currently 408 executing tasks have finished when 409 a threshold is broken. 410 WARN: Issue a warning but continue the 411 build when a threshold is broken. 412 Subsequent warnings are issued as 413 defined by the BB_DISKMON_WARNINTERVAL 414 variable, which must be defined in 415 the conf/local.conf file. 416 417 dir is: 418 Any directory you choose. You can specify one or 419 more directories to monitor by separating the 420 groupings with a space. If two directories are 421 on the same device, only the first directory 422 is monitored. 423 424 threshold is: 425 Either the minimum available disk space, 426 the minimum number of free inodes, or 427 both. You must specify at least one. To 428 omit one or the other, simply omit the value. 429 Specify the threshold using G, M, K for Gbytes, 430 Mbytes, and Kbytes, respectively. If you do 431 not specify G, M, or K, Kbytes is assumed by 432 default. Do not use GB, MB, or KB. 433 434 Here are some examples:: 435 436 BB_DISKMON_DIRS = "ABORT,${TMPDIR},1G,100K WARN,${SSTATE_DIR},1G,100K" 437 BB_DISKMON_DIRS = "STOPTASKS,${TMPDIR},1G" 438 BB_DISKMON_DIRS = "ABORT,${TMPDIR},,100K" 439 440 The first example works only if you also provide the 441 :term:`BB_DISKMON_WARNINTERVAL` 442 variable in the ``conf/local.conf``. This example causes the build 443 system to immediately stop when either the disk space in 444 ``${TMPDIR}`` drops below 1 Gbyte or the available free inodes drops 445 below 100 Kbytes. Because two directories are provided with the 446 variable, the build system also issue a warning when the disk space 447 in the ``${SSTATE_DIR}`` directory drops below 1 Gbyte or the number 448 of free inodes drops below 100 Kbytes. Subsequent warnings are issued 449 during intervals as defined by the :term:`BB_DISKMON_WARNINTERVAL` 450 variable. 451 452 The second example stops the build after all currently executing 453 tasks complete when the minimum disk space in the ``${TMPDIR}`` 454 directory drops below 1 Gbyte. No disk monitoring occurs for the free 455 inodes in this case. 456 457 The final example immediately stops the build when the number of 458 free inodes in the ``${TMPDIR}`` directory drops below 100 Kbytes. No 459 disk space monitoring for the directory itself occurs in this case. 460 461 :term:`BB_DISKMON_WARNINTERVAL` 462 Defines the disk space and free inode warning intervals. To set these 463 intervals, define the variable in your ``conf/local.conf`` file in 464 the :term:`Build Directory`. 465 466 If you are going to use the :term:`BB_DISKMON_WARNINTERVAL` variable, you 467 must also use the :term:`BB_DISKMON_DIRS` 468 variable and define its action as "WARN". During the build, 469 subsequent warnings are issued each time disk space or number of free 470 inodes further reduces by the respective interval. 471 472 If you do not provide a :term:`BB_DISKMON_WARNINTERVAL` variable and you 473 do use :term:`BB_DISKMON_DIRS` with the "WARN" action, the disk 474 monitoring interval defaults to the following:: 475 476 BB_DISKMON_WARNINTERVAL = "50M,5K" 477 478 When specifying the variable in your configuration file, use the 479 following form: 480 481 .. code-block:: none 482 483 BB_DISKMON_WARNINTERVAL = "disk_space_interval,disk_inode_interval" 484 485 where: 486 487 disk_space_interval is: 488 An interval of memory expressed in either 489 G, M, or K for Gbytes, Mbytes, or Kbytes, 490 respectively. You cannot use GB, MB, or KB. 491 492 disk_inode_interval is: 493 An interval of free inodes expressed in either 494 G, M, or K for Gbytes, Mbytes, or Kbytes, 495 respectively. You cannot use GB, MB, or KB. 496 497 Here is an example:: 498 499 BB_DISKMON_DIRS = "WARN,${SSTATE_DIR},1G,100K" 500 BB_DISKMON_WARNINTERVAL = "50M,5K" 501 502 These variables cause the 503 OpenEmbedded build system to issue subsequent warnings each time the 504 available disk space further reduces by 50 Mbytes or the number of 505 free inodes further reduces by 5 Kbytes in the ``${SSTATE_DIR}`` 506 directory. Subsequent warnings based on the interval occur each time 507 a respective interval is reached beyond the initial warning (i.e. 1 508 Gbytes and 100 Kbytes). 509 510 :term:`BB_ENV_PASSTHROUGH` 511 See :term:`bitbake:BB_ENV_PASSTHROUGH` in the BitBake manual. 512 513 :term:`BB_ENV_PASSTHROUGH_ADDITIONS` 514 See :term:`bitbake:BB_ENV_PASSTHROUGH_ADDITIONS` in the BitBake manual. 515 516 :term:`BB_FETCH_PREMIRRORONLY` 517 See :term:`bitbake:BB_FETCH_PREMIRRORONLY` in the BitBake manual. 518 519 :term:`BB_FILENAME` 520 See :term:`bitbake:BB_FILENAME` in the BitBake manual. 521 522 :term:`BB_GENERATE_MIRROR_TARBALLS` 523 Causes tarballs of the source control repositories (e.g. Git 524 repositories), including metadata, to be placed in the 525 :term:`DL_DIR` directory. 526 527 For performance reasons, creating and placing tarballs of these 528 repositories is not the default action by the OpenEmbedded build 529 system:: 530 531 BB_GENERATE_MIRROR_TARBALLS = "1" 532 533 Set this variable in your 534 ``local.conf`` file in the :term:`Build Directory`. 535 536 Once you have the tarballs containing your source files, you can 537 clean up your :term:`DL_DIR` directory by deleting any Git or other 538 source control work directories. 539 540 :term:`BB_GENERATE_SHALLOW_TARBALLS` 541 See :term:`bitbake:BB_GENERATE_SHALLOW_TARBALLS` in the BitBake manual. 542 543 :term:`BB_GIT_SHALLOW` 544 See :term:`bitbake:BB_GIT_SHALLOW` in the BitBake manual. 545 546 :term:`BB_GIT_SHALLOW_DEPTH` 547 See :term:`bitbake:BB_GIT_SHALLOW_DEPTH` in the BitBake manual. 548 549 :term:`BB_HASHCHECK_FUNCTION` 550 See :term:`bitbake:BB_HASHCHECK_FUNCTION` in the BitBake manual. 551 552 :term:`BB_HASHCONFIG_IGNORE_VARS` 553 See :term:`bitbake:BB_HASHCONFIG_IGNORE_VARS` in the BitBake manual. 554 555 :term:`BB_HASHSERVE` 556 See :term:`bitbake:BB_HASHSERVE` in the BitBake manual. 557 558 :term:`BB_HASHSERVE_UPSTREAM` 559 See :term:`bitbake:BB_HASHSERVE_UPSTREAM` in the BitBake manual. 560 561 :term:`BB_INVALIDCONF` 562 See :term:`bitbake:BB_INVALIDCONF` in the BitBake manual. 563 564 :term:`BB_LOADFACTOR_MAX` 565 The system load threshold above which BitBake will stop runnig extra 566 tasks. 567 568 :term:`BB_LOGCONFIG` 569 See :term:`bitbake:BB_LOGCONFIG` in the BitBake manual. 570 571 :term:`BB_LOGFMT` 572 See :term:`bitbake:BB_LOGFMT` in the BitBake manual. 573 574 :term:`BB_MULTI_PROVIDER_ALLOWED` 575 See :term:`bitbake:BB_MULTI_PROVIDER_ALLOWED` in the BitBake manual. 576 577 :term:`BB_NICE_LEVEL` 578 See :term:`bitbake:BB_NICE_LEVEL` in the BitBake manual. 579 580 :term:`BB_NO_NETWORK` 581 See :term:`bitbake:BB_NO_NETWORK` in the BitBake manual. 582 583 :term:`BB_NUMBER_PARSE_THREADS` 584 See :term:`bitbake:BB_NUMBER_PARSE_THREADS` in the BitBake manual. 585 586 :term:`BB_NUMBER_THREADS` 587 The maximum number of tasks BitBake should run in parallel at any one 588 time. The OpenEmbedded build system automatically configures this 589 variable to be equal to the number of cores on the build system. For 590 example, a system with a dual core processor that also uses 591 hyper-threading causes the :term:`BB_NUMBER_THREADS` variable to default 592 to "4". 593 594 For single socket systems (i.e. one CPU), you should not have to 595 override this variable to gain optimal parallelism during builds. 596 However, if you have very large systems that employ multiple physical 597 CPUs, you might want to make sure the :term:`BB_NUMBER_THREADS` variable 598 is not set higher than "20". 599 600 For more information on speeding up builds, see the 601 ":ref:`dev-manual/speeding-up-build:speeding up a build`" 602 section in the Yocto Project Development Tasks Manual. 603 604 On the other hand, if your goal is to limit the amount of system 605 resources consumed by BitBake tasks, setting :term:`BB_NUMBER_THREADS` 606 to a number lower than the number of CPU threads in your machine 607 won't be sufficient. That's because each package will still be built 608 and installed through a number of parallel jobs specified by the 609 :term:`PARALLEL_MAKE` variable, which is by default the number of CPU 610 threads in your system, and is not impacted by the 611 :term:`BB_NUMBER_THREADS` value. 612 613 So, if you set :term:`BB_NUMBER_THREADS` to "1" but don't set 614 :term:`PARALLEL_MAKE`, most of your system resources will be consumed 615 anyway. 616 617 Therefore, if you intend to reduce the load of your build system by 618 setting :term:`BB_NUMBER_THREADS` to a relatively low value compared 619 to the number of CPU threads on your system, you should also set 620 :term:`PARALLEL_MAKE` to a similarly low value. 621 622 An alternative to using :term:`BB_NUMBER_THREADS` to keep the usage 623 of build system resources under control is to use the smarter 624 :term:`BB_PRESSURE_MAX_CPU`, :term:`BB_PRESSURE_MAX_IO` or 625 :term:`BB_PRESSURE_MAX_MEMORY` controls. They will prevent BitBake 626 from starting new tasks as long as thresholds are exceeded. Anyway, 627 as with :term:`BB_NUMBER_THREADS`, such controls won't prevent the 628 tasks already being run from using all CPU threads on the system 629 if :term:`PARALLEL_MAKE` is not set to a low value. 630 631 :term:`BB_ORIGENV` 632 See :term:`bitbake:BB_ORIGENV` in the BitBake manual. 633 634 :term:`BB_PRESERVE_ENV` 635 See :term:`bitbake:BB_PRESERVE_ENV` in the BitBake manual. 636 637 :term:`BB_PRESSURE_MAX_CPU` 638 See :term:`bitbake:BB_PRESSURE_MAX_CPU` in the BitBake manual. 639 640 :term:`BB_PRESSURE_MAX_IO` 641 See :term:`bitbake:BB_PRESSURE_MAX_IO` in the BitBake manual. 642 643 :term:`BB_PRESSURE_MAX_MEMORY` 644 See :term:`bitbake:BB_PRESSURE_MAX_MEMORY` in the BitBake manual. 645 646 :term:`BB_RUNFMT` 647 See :term:`bitbake:BB_RUNFMT` in the BitBake manual. 648 649 :term:`BB_RUNTASK` 650 See :term:`bitbake:BB_RUNTASK` in the BitBake manual. 651 652 :term:`BB_SCHEDULER` 653 See :term:`bitbake:BB_SCHEDULER` in the BitBake manual. 654 655 :term:`BB_SCHEDULERS` 656 See :term:`bitbake:BB_SCHEDULERS` in the BitBake manual. 657 658 :term:`BB_SERVER_TIMEOUT` 659 Specifies the time (in seconds) after which to unload the BitBake 660 server due to inactivity. Set :term:`BB_SERVER_TIMEOUT` to determine how 661 long the BitBake server stays resident between invocations. 662 663 For example, the following statement in your ``local.conf`` file 664 instructs the server to be unloaded after 20 seconds of inactivity:: 665 666 BB_SERVER_TIMEOUT = "20" 667 668 If you want the server to never be unloaded, 669 set :term:`BB_SERVER_TIMEOUT` to "-1". 670 671 :term:`BB_SETSCENE_DEPVALID` 672 See :term:`bitbake:BB_SETSCENE_DEPVALID` in the BitBake manual. 673 674 :term:`BB_SIGNATURE_EXCLUDE_FLAGS` 675 See :term:`bitbake:BB_SIGNATURE_EXCLUDE_FLAGS` in the BitBake manual. 676 677 :term:`BB_SIGNATURE_HANDLER` 678 See :term:`bitbake:BB_SIGNATURE_HANDLER` in the BitBake manual. 679 680 :term:`BB_SRCREV_POLICY` 681 See :term:`bitbake:BB_SRCREV_POLICY` in the BitBake manual. 682 683 :term:`BB_STRICT_CHECKSUM` 684 See :term:`bitbake:BB_STRICT_CHECKSUM` in the BitBake manual. 685 686 :term:`BB_TASK_IONICE_LEVEL` 687 See :term:`bitbake:BB_TASK_IONICE_LEVEL` in the BitBake manual. 688 689 :term:`BB_TASK_NICE_LEVEL` 690 See :term:`bitbake:BB_TASK_NICE_LEVEL` in the BitBake manual. 691 692 :term:`BB_TASKHASH` 693 See :term:`bitbake:BB_TASKHASH` in the BitBake manual. 694 695 :term:`BB_VERBOSE_LOGS` 696 See :term:`bitbake:BB_VERBOSE_LOGS` in the BitBake manual. 697 698 :term:`BB_WORKERCONTEXT` 699 See :term:`bitbake:BB_WORKERCONTEXT` in the BitBake manual. 700 701 :term:`BBCLASSEXTEND` 702 Allows you to extend a recipe so that it builds variants of the 703 software. There are common variants for recipes as "natives" like 704 ``quilt-native``, which is a copy of Quilt built to run on the build 705 system; "crosses" such as ``gcc-cross``, which is a compiler built to 706 run on the build machine but produces binaries that run on the target 707 :term:`MACHINE`; ":ref:`ref-classes-nativesdk`", which 708 targets the SDK machine instead of :term:`MACHINE`; and "mulitlibs" in 709 the form "``multilib:``\ multilib_name". 710 711 To build a different variant of the recipe with a minimal amount of 712 code, it usually is as simple as adding the following to your recipe:: 713 714 BBCLASSEXTEND =+ "native nativesdk" 715 BBCLASSEXTEND =+ "multilib:multilib_name" 716 717 .. note:: 718 719 Internally, the :term:`BBCLASSEXTEND` mechanism generates recipe 720 variants by rewriting variable values and applying overrides such 721 as ``:class-native``. For example, to generate a native version of 722 a recipe, a :term:`DEPENDS` on "foo" is rewritten 723 to a :term:`DEPENDS` on "foo-native". 724 725 Even when using :term:`BBCLASSEXTEND`, the recipe is only parsed once. 726 Parsing once adds some limitations. For example, it is not 727 possible to include a different file depending on the variant, 728 since ``include`` statements are processed when the recipe is 729 parsed. 730 731 :term:`BBDEBUG` 732 See :term:`bitbake:BBDEBUG` in the BitBake manual. 733 734 :term:`BBFILE_COLLECTIONS` 735 Lists the names of configured layers. These names are used to find 736 the other ``BBFILE_*`` variables. Typically, each layer will append 737 its name to this variable in its ``conf/layer.conf`` file. 738 739 :term:`BBFILE_PATTERN` 740 Variable that expands to match files from 741 :term:`BBFILES` in a particular layer. This variable 742 is used in the ``conf/layer.conf`` file and must be suffixed with the 743 name of the specific layer (e.g. ``BBFILE_PATTERN_emenlow``). 744 745 :term:`BBFILE_PRIORITY` 746 Assigns the priority for recipe files in each layer. 747 748 This variable is useful in situations where the same recipe appears 749 in more than one layer. Setting this variable allows you to 750 prioritize a layer against other layers that contain the same recipe 751 --- effectively letting you control the precedence for the multiple 752 layers. The precedence established through this variable stands 753 regardless of a recipe's version (:term:`PV` variable). For 754 example, a layer that has a recipe with a higher :term:`PV` value but for 755 which the :term:`BBFILE_PRIORITY` is set to have a lower precedence still 756 has a lower precedence. 757 758 A larger value for the :term:`BBFILE_PRIORITY` variable results in a 759 higher precedence. For example, the value 6 has a higher precedence 760 than the value 5. If not specified, the :term:`BBFILE_PRIORITY` variable 761 is set based on layer dependencies (see the :term:`LAYERDEPENDS` variable 762 for more information. The default priority, if unspecified for a 763 layer with no dependencies, is the lowest defined priority + 1 (or 1 764 if no priorities are defined). 765 766 .. tip:: 767 768 You can use the command ``bitbake-layers show-layers`` 769 to list all configured layers along with their priorities. 770 771 :term:`BBFILES` 772 A space-separated list of recipe files BitBake uses to build 773 software. 774 775 When specifying recipe files, you can pattern match using Python's 776 `glob <https://docs.python.org/3/library/glob.html>`__ syntax. 777 For details on the syntax, see the documentation by following the 778 previous link. 779 780 :term:`BBFILES_DYNAMIC` 781 Activates content when identified layers are present. You identify 782 the layers by the collections that the layers define. 783 784 Use the :term:`BBFILES_DYNAMIC` variable to avoid ``.bbappend`` files 785 whose corresponding ``.bb`` file is in a layer that attempts to 786 modify other layers through ``.bbappend`` but does not want to 787 introduce a hard dependency on those other layers. 788 789 Use the following form for :term:`BBFILES_DYNAMIC`: 790 ``collection_name:filename_pattern``. 791 792 The following example identifies two collection names and two 793 filename patterns:: 794 795 BBFILES_DYNAMIC += " \ 796 clang-layer:${LAYERDIR}/bbappends/meta-clang/*/*/*.bbappend \ 797 core:${LAYERDIR}/bbappends/openembedded-core/meta/*/*/*.bbappend \ 798 " 799 800 This next example shows an error message that occurs because invalid 801 entries are found, which cause parsing to fail: 802 803 .. code-block:: none 804 805 ERROR: BBFILES_DYNAMIC entries must be of the form <collection name>:<filename pattern>, not: 806 /work/my-layer/bbappends/meta-security-isafw/*/*/*.bbappend 807 /work/my-layer/bbappends/openembedded-core/meta/*/*/*.bbappend 808 809 :term:`BBINCLUDED` 810 See :term:`bitbake:BBINCLUDED` in the BitBake manual. 811 812 :term:`BBINCLUDELOGS` 813 Variable that controls how BitBake displays logs on build failure. 814 815 :term:`BBINCLUDELOGS_LINES` 816 If :term:`BBINCLUDELOGS` is set, specifies the 817 maximum number of lines from the task log file to print when 818 reporting a failed task. If you do not set :term:`BBINCLUDELOGS_LINES`, 819 the entire log is printed. 820 821 :term:`BBLAYERS` 822 Lists the layers to enable during the build. This variable is defined 823 in the ``bblayers.conf`` configuration file in the :term:`Build Directory`. 824 Here is an example:: 825 826 BBLAYERS = " \ 827 /home/scottrif/poky/meta \ 828 /home/scottrif/poky/meta-poky \ 829 /home/scottrif/poky/meta-yocto-bsp \ 830 /home/scottrif/poky/meta-mykernel \ 831 " 832 833 This example enables four layers, one of which is a custom, 834 user-defined layer named ``meta-mykernel``. 835 836 :term:`BBLAYERS_FETCH_DIR` 837 See :term:`bitbake:BBLAYERS_FETCH_DIR` in the BitBake manual. 838 839 :term:`BBMASK` 840 Prevents BitBake from processing recipes and recipe append files. 841 842 You can use the :term:`BBMASK` variable to "hide" these ``.bb`` and 843 ``.bbappend`` files. BitBake ignores any recipe or recipe append 844 files that match any of the expressions. It is as if BitBake does not 845 see them at all. Consequently, matching files are not parsed or 846 otherwise used by BitBake. 847 848 The values you provide are passed to Python's regular expression 849 compiler. Consequently, the syntax follows Python's Regular 850 Expression (re) syntax. The expressions are compared against the full 851 paths to the files. For complete syntax information, see Python's 852 documentation at https://docs.python.org/3/library/re.html#regular-expression-syntax. 853 854 The following example uses a complete regular expression to tell 855 BitBake to ignore all recipe and recipe append files in the 856 ``meta-ti/recipes-misc/`` directory:: 857 858 BBMASK = "meta-ti/recipes-misc/" 859 860 If you want to mask out multiple directories or recipes, you can 861 specify multiple regular expression fragments. This next example 862 masks out multiple directories and individual recipes:: 863 864 BBMASK += "/meta-ti/recipes-misc/ meta-ti/recipes-ti/packagegroup/" 865 BBMASK += "/meta-oe/recipes-support/" 866 BBMASK += "/meta-foo/.*/openldap" 867 BBMASK += "opencv.*\.bbappend" 868 BBMASK += "lzma" 869 870 .. note:: 871 872 When specifying a directory name, use the trailing slash character 873 to ensure you match just that directory name. 874 875 :term:`BBMULTICONFIG` 876 Specifies each additional separate configuration when you are 877 building targets with multiple configurations. Use this variable in 878 your ``conf/local.conf`` configuration file. Specify a 879 multiconfigname for each configuration file you are using. For 880 example, the following line specifies three configuration files:: 881 882 BBMULTICONFIG = "configA configB configC" 883 884 Each configuration file you use must reside in a ``multiconfig`` 885 subdirectory of a configuration directory within a layer, or 886 within the :term:`Build Directory` (e.g. 887 ``build_directory/conf/multiconfig/configA.conf`` or 888 ``mylayer/conf/multiconfig/configB.conf``). 889 890 For information on how to use :term:`BBMULTICONFIG` in an environment 891 that supports building targets with multiple configurations, see the 892 ":ref:`dev-manual/building:building images for multiple targets using multiple configurations`" 893 section in the Yocto Project Development Tasks Manual. 894 895 :term:`BBPATH` 896 See :term:`bitbake:BBPATH` in the BitBake manual. 897 898 :term:`BBSERVER` 899 If defined in the BitBake environment, :term:`BBSERVER` points to the 900 BitBake remote server. 901 902 Use the following format to export the variable to the BitBake 903 environment:: 904 905 export BBSERVER=localhost:$port 906 907 By default, :term:`BBSERVER` also appears in :term:`BB_BASEHASH_IGNORE_VARS`. 908 Consequently, :term:`BBSERVER` is excluded from checksum and dependency 909 data. 910 911 :term:`BBTARGETS` 912 See :term:`bitbake:BBTARGETS` in the BitBake manual. 913 914 :term:`BINCONFIG` 915 When inheriting the :ref:`ref-classes-binconfig-disabled` class, this 916 variable specifies binary configuration scripts to disable in favor of 917 using ``pkg-config`` to query the information. The 918 :ref:`ref-classes-binconfig-disabled` class will modify the specified 919 scripts to return an error so that calls to them can be easily found 920 and replaced. 921 922 To add multiple scripts, separate them by spaces. Here is an example 923 from the ``libpng`` recipe:: 924 925 BINCONFIG = "${bindir}/libpng-config ${bindir}/libpng16-config" 926 927 :term:`BINCONFIG_GLOB` 928 When inheriting the :ref:`ref-classes-binconfig` class, 929 this variable specifies a wildcard for configuration scripts that 930 need editing. The scripts are edited to correct any paths that have 931 been set up during compilation so that they are correct for use when 932 installed into the sysroot and called by the build processes of other 933 recipes. 934 935 .. note:: 936 937 The :term:`BINCONFIG_GLOB` variable uses 938 `shell globbing <https://tldp.org/LDP/abs/html/globbingref.html>`__, 939 which is recognition and expansion of wildcards during pattern 940 matching. Shell globbing is very similar to 941 `fnmatch <https://docs.python.org/3/library/fnmatch.html#module-fnmatch>`__ 942 and `glob <https://docs.python.org/3/library/glob.html>`__. 943 944 For more information on how this variable works, see 945 ``meta/classes-recipe/binconfig.bbclass`` in the :term:`Source Directory`. 946 You can also find general 947 information on the class in the 948 ":ref:`ref-classes-binconfig`" section. 949 950 :term:`BITBAKE_UI` 951 See :term:`bitbake:BITBAKE_UI` in the BitBake manual. 952 953 :term:`BP` 954 The base recipe name and version but without any special recipe name 955 suffix (i.e. ``-native``, ``lib64-``, and so forth). :term:`BP` is 956 comprised of the following:: 957 958 ${BPN}-${PV} 959 960 :term:`BPN` 961 This variable is a version of the :term:`PN` variable with 962 common prefixes and suffixes removed, such as ``nativesdk-``, 963 ``-cross``, ``-native``, and multilib's ``lib64-`` and ``lib32-``. 964 The exact lists of prefixes and suffixes removed are specified by the 965 :term:`MLPREFIX` and 966 :term:`SPECIAL_PKGSUFFIX` variables, 967 respectively. 968 969 :term:`BUGTRACKER` 970 Specifies a URL for an upstream bug tracking website for a recipe. 971 The OpenEmbedded build system does not use this variable. Rather, the 972 variable is a useful pointer in case a bug in the software being 973 built needs to be manually reported. 974 975 :term:`BUILD_ARCH` 976 Specifies the architecture of the build host (e.g. ``i686``). The 977 OpenEmbedded build system sets the value of :term:`BUILD_ARCH` from the 978 machine name reported by the ``uname`` command. 979 980 :term:`BUILD_AS_ARCH` 981 Specifies the architecture-specific assembler flags for the build 982 host. By default, the value of :term:`BUILD_AS_ARCH` is empty. 983 984 :term:`BUILD_CC_ARCH` 985 Specifies the architecture-specific C compiler flags for the build 986 host. By default, the value of :term:`BUILD_CC_ARCH` is empty. 987 988 :term:`BUILD_CCLD` 989 Specifies the linker command to be used for the build host when the C 990 compiler is being used as the linker. By default, :term:`BUILD_CCLD` 991 points to GCC and passes as arguments the value of 992 :term:`BUILD_CC_ARCH`, assuming 993 :term:`BUILD_CC_ARCH` is set. 994 995 :term:`BUILD_CFLAGS` 996 Specifies the flags to pass to the C compiler when building for the 997 build host. When building in the ``-native`` context, 998 :term:`CFLAGS` is set to the value of this variable by 999 default. 1000 1001 :term:`BUILD_CPPFLAGS` 1002 Specifies the flags to pass to the C preprocessor (i.e. to both the C 1003 and the C++ compilers) when building for the build host. When 1004 building in the ``-native`` context, :term:`CPPFLAGS` 1005 is set to the value of this variable by default. 1006 1007 :term:`BUILD_CXXFLAGS` 1008 Specifies the flags to pass to the C++ compiler when building for the 1009 build host. When building in the ``-native`` context, 1010 :term:`CXXFLAGS` is set to the value of this variable 1011 by default. 1012 1013 :term:`BUILD_FC` 1014 Specifies the Fortran compiler command for the build host. By 1015 default, :term:`BUILD_FC` points to Gfortran and passes as arguments the 1016 value of :term:`BUILD_CC_ARCH`, assuming 1017 :term:`BUILD_CC_ARCH` is set. 1018 1019 :term:`BUILD_LD` 1020 Specifies the linker command for the build host. By default, 1021 :term:`BUILD_LD` points to the GNU linker (ld) and passes as arguments 1022 the value of :term:`BUILD_LD_ARCH`, assuming 1023 :term:`BUILD_LD_ARCH` is set. 1024 1025 :term:`BUILD_LD_ARCH` 1026 Specifies architecture-specific linker flags for the build host. By 1027 default, the value of :term:`BUILD_LD_ARCH` is empty. 1028 1029 :term:`BUILD_LDFLAGS` 1030 Specifies the flags to pass to the linker when building for the build 1031 host. When building in the ``-native`` context, 1032 :term:`LDFLAGS` is set to the value of this variable 1033 by default. 1034 1035 :term:`BUILD_OPTIMIZATION` 1036 Specifies the optimization flags passed to the C compiler when 1037 building for the build host or the SDK. The flags are passed through 1038 the :term:`BUILD_CFLAGS` and 1039 :term:`BUILDSDK_CFLAGS` default values. 1040 1041 The default value of the :term:`BUILD_OPTIMIZATION` variable is "-O2 1042 -pipe". 1043 1044 :term:`BUILD_OS` 1045 Specifies the operating system in use on the build host (e.g. 1046 "linux"). The OpenEmbedded build system sets the value of 1047 :term:`BUILD_OS` from the OS reported by the ``uname`` command --- the 1048 first word, converted to lower-case characters. 1049 1050 :term:`BUILD_PREFIX` 1051 The toolchain binary prefix used for native recipes. The OpenEmbedded 1052 build system uses the :term:`BUILD_PREFIX` value to set the 1053 :term:`TARGET_PREFIX` when building for :ref:`ref-classes-native` recipes. 1054 1055 :term:`BUILD_STRIP` 1056 Specifies the command to be used to strip debugging symbols from 1057 binaries produced for the build host. By default, :term:`BUILD_STRIP` 1058 points to 1059 ``${``\ :term:`BUILD_PREFIX`\ ``}strip``. 1060 1061 :term:`BUILD_SYS` 1062 Specifies the system, including the architecture and the operating 1063 system, to use when building for the build host (i.e. when building 1064 :ref:`ref-classes-native` recipes). 1065 1066 The OpenEmbedded build system automatically sets this variable based 1067 on :term:`BUILD_ARCH`, 1068 :term:`BUILD_VENDOR`, and 1069 :term:`BUILD_OS`. You do not need to set the 1070 :term:`BUILD_SYS` variable yourself. 1071 1072 :term:`BUILD_VENDOR` 1073 Specifies the vendor name to use when building for the build host. 1074 The default value is an empty string (""). 1075 1076 :term:`BUILDDIR` 1077 Points to the location of the :term:`Build Directory`. You can define 1078 this directory indirectly through the :ref:`structure-core-script` script 1079 by passing in a :term:`Build Directory` path when you run the script. If 1080 you run the script and do not provide a :term:`Build Directory` path, the 1081 :term:`BUILDDIR` defaults to ``build`` in the current directory. 1082 1083 :term:`BUILDHISTORY_COMMIT` 1084 When inheriting the :ref:`ref-classes-buildhistory` class, this variable 1085 specifies whether or not to commit the build history output in a local 1086 Git repository. If set to "1", this local repository will be maintained 1087 automatically by the :ref:`ref-classes-buildhistory` class and a commit 1088 will be created on every build for changes to each top-level subdirectory 1089 of the build history output (images, packages, and sdk). If you want to 1090 track changes to build history over time, you should set this value to 1091 "1". 1092 1093 By default, the :ref:`ref-classes-buildhistory` class 1094 enables committing the buildhistory output in a local Git repository:: 1095 1096 BUILDHISTORY_COMMIT ?= "1" 1097 1098 :term:`BUILDHISTORY_COMMIT_AUTHOR` 1099 When inheriting the :ref:`ref-classes-buildhistory` 1100 class, this variable specifies the author to use for each Git commit. 1101 In order for the :term:`BUILDHISTORY_COMMIT_AUTHOR` variable to work, the 1102 :term:`BUILDHISTORY_COMMIT` variable must 1103 be set to "1". 1104 1105 Git requires that the value you provide for the 1106 :term:`BUILDHISTORY_COMMIT_AUTHOR` variable takes the form of "name 1107 email@host". Providing an email address or host that is not valid 1108 does not produce an error. 1109 1110 By default, the :ref:`ref-classes-buildhistory` class sets the variable 1111 as follows:: 1112 1113 BUILDHISTORY_COMMIT_AUTHOR ?= "buildhistory <buildhistory@${DISTRO}>" 1114 1115 :term:`BUILDHISTORY_DIR` 1116 When inheriting the :ref:`ref-classes-buildhistory` 1117 class, this variable specifies the directory in which build history 1118 information is kept. For more information on how the variable works, 1119 see the :ref:`ref-classes-buildhistory` class. 1120 1121 By default, the :ref:`ref-classes-buildhistory` class sets the directory 1122 as follows:: 1123 1124 BUILDHISTORY_DIR ?= "${TOPDIR}/buildhistory" 1125 1126 :term:`BUILDHISTORY_FEATURES` 1127 When inheriting the :ref:`ref-classes-buildhistory` 1128 class, this variable specifies the build history features to be 1129 enabled. For more information on how build history works, see the 1130 ":ref:`dev-manual/build-quality:maintaining build output quality`" 1131 section in the Yocto Project Development Tasks Manual. 1132 1133 You can specify these features in the form of a space-separated list: 1134 1135 - *image:* Analysis of the contents of images, which includes the 1136 list of installed packages among other things. 1137 1138 - *package:* Analysis of the contents of individual packages. 1139 1140 - *sdk:* Analysis of the contents of the software development kit 1141 (SDK). 1142 1143 - *task:* Save output file signatures for 1144 :ref:`shared state <overview-manual/concepts:shared state cache>` 1145 (sstate) tasks. 1146 This saves one file per task and lists the SHA-256 checksums for 1147 each file staged (i.e. the output of the task). 1148 1149 By default, the :ref:`ref-classes-buildhistory` class enables the 1150 following features:: 1151 1152 BUILDHISTORY_FEATURES ?= "image package sdk" 1153 1154 :term:`BUILDHISTORY_IMAGE_FILES` 1155 When inheriting the :ref:`ref-classes-buildhistory` 1156 class, this variable specifies a list of paths to files copied from 1157 the image contents into the build history directory under an 1158 "image-files" directory in the directory for the image, so that you 1159 can track the contents of each file. The default is to copy 1160 ``/etc/passwd`` and ``/etc/group``, which allows you to monitor for 1161 changes in user and group entries. You can modify the list to include 1162 any file. Specifying an invalid path does not produce an error. 1163 Consequently, you can include files that might not always be present. 1164 1165 By default, the :ref:`ref-classes-buildhistory` class provides paths to 1166 the following files:: 1167 1168 BUILDHISTORY_IMAGE_FILES ?= "/etc/passwd /etc/group" 1169 1170 :term:`BUILDHISTORY_PATH_PREFIX_STRIP` 1171 When inheriting the :ref:`ref-classes-buildhistory` 1172 class, this variable specifies a common path prefix that should be 1173 stripped off the beginning of paths in the task signature list when the 1174 ``task`` feature is active in :term:`BUILDHISTORY_FEATURES`. This can be 1175 useful when build history is populated from multiple sources that may not 1176 all use the same top level directory. 1177 1178 By default, the :ref:`ref-classes-buildhistory` class sets the variable 1179 as follows:: 1180 1181 BUILDHISTORY_PATH_PREFIX_STRIP ?= "" 1182 1183 In this case, no prefixes will be stripped. 1184 1185 :term:`BUILDHISTORY_PUSH_REPO` 1186 When inheriting the :ref:`ref-classes-buildhistory` class, this variable 1187 optionally specifies a remote repository to which build history pushes 1188 Git changes. In order for :term:`BUILDHISTORY_PUSH_REPO` to work, 1189 :term:`BUILDHISTORY_COMMIT` must be set to "1". 1190 1191 The repository should correspond to a remote address that specifies a 1192 repository as understood by Git, or alternatively to a remote name 1193 that you have set up manually using ``git remote`` within the local 1194 repository. 1195 1196 By default, the :ref:`ref-classes-buildhistory` class sets the variable 1197 as follows:: 1198 1199 BUILDHISTORY_PUSH_REPO ?= "" 1200 1201 :term:`BUILDNAME` 1202 See :term:`bitbake:BUILDNAME` in the BitBake manual. 1203 1204 :term:`BUILDSDK_CFLAGS` 1205 Specifies the flags to pass to the C compiler when building for the 1206 SDK. When building in the ``nativesdk-`` context, 1207 :term:`CFLAGS` is set to the value of this variable by 1208 default. 1209 1210 :term:`BUILDSDK_CPPFLAGS` 1211 Specifies the flags to pass to the C pre-processor (i.e. to both the 1212 C and the C++ compilers) when building for the SDK. When building in 1213 the ``nativesdk-`` context, :term:`CPPFLAGS` is set 1214 to the value of this variable by default. 1215 1216 :term:`BUILDSDK_CXXFLAGS` 1217 Specifies the flags to pass to the C++ compiler when building for the 1218 SDK. When building in the ``nativesdk-`` context, 1219 :term:`CXXFLAGS` is set to the value of this variable 1220 by default. 1221 1222 :term:`BUILDSDK_LDFLAGS` 1223 Specifies the flags to pass to the linker when building for the SDK. 1224 When building in the ``nativesdk-`` context, 1225 :term:`LDFLAGS` is set to the value of this variable 1226 by default. 1227 1228 :term:`BUILDSTATS_BASE` 1229 Points to the location of the directory that holds build statistics 1230 when you use and enable the :ref:`ref-classes-buildstats` class. The 1231 :term:`BUILDSTATS_BASE` directory defaults to 1232 ``${``\ :term:`TMPDIR`\ ``}/buildstats/``. 1233 1234 :term:`BUSYBOX_SPLIT_SUID` 1235 For the BusyBox recipe, specifies whether to split the output 1236 executable file into two parts: one for features that require 1237 ``setuid root``, and one for the remaining features (i.e. those that 1238 do not require ``setuid root``). 1239 1240 The :term:`BUSYBOX_SPLIT_SUID` variable defaults to "1", which results in 1241 splitting the output executable file. Set the variable to "0" to get 1242 a single output executable file. 1243 1244 :term:`BZRDIR` 1245 See :term:`bitbake:BZRDIR` in the BitBake manual. 1246 1247 :term:`CACHE` 1248 Specifies the directory BitBake uses to store a cache of the 1249 :term:`Metadata` so it does not need to be parsed every time 1250 BitBake is started. 1251 1252 :term:`CC` 1253 The minimal command and arguments used to run the C compiler. 1254 1255 :term:`CFLAGS` 1256 Specifies the flags to pass to the C compiler. This variable is 1257 exported to an environment variable and thus made visible to the 1258 software being built during the compilation step. 1259 1260 Default initialization for :term:`CFLAGS` varies depending on what is 1261 being built: 1262 1263 - :term:`TARGET_CFLAGS` when building for the 1264 target 1265 1266 - :term:`BUILD_CFLAGS` when building for the 1267 build host (i.e. ``-native``) 1268 1269 - :term:`BUILDSDK_CFLAGS` when building for 1270 an SDK (i.e. ``nativesdk-``) 1271 1272 :term:`CLASSOVERRIDE` 1273 An internal variable specifying the special class override that 1274 should currently apply (e.g. "class-target", "class-native", and so 1275 forth). The classes that use this variable (e.g. 1276 :ref:`ref-classes-native`, :ref:`ref-classes-nativesdk`, and so forth) 1277 set the variable to appropriate values. 1278 1279 .. note:: 1280 1281 :term:`CLASSOVERRIDE` gets its default "class-target" value from the 1282 ``bitbake.conf`` file. 1283 1284 As an example, the following override allows you to install extra 1285 files, but only when building for the target:: 1286 1287 do_install:append:class-target() { 1288 install my-extra-file ${D}${sysconfdir} 1289 } 1290 1291 Here is an example where ``FOO`` is set to 1292 "native" when building for the build host, and to "other" when not 1293 building for the build host:: 1294 1295 FOO:class-native = "native" 1296 FOO = "other" 1297 1298 The underlying mechanism behind :term:`CLASSOVERRIDE` is simply 1299 that it is included in the default value of 1300 :term:`OVERRIDES`. 1301 1302 :term:`CLEANBROKEN` 1303 If set to "1" within a recipe, :term:`CLEANBROKEN` specifies that the 1304 ``make clean`` command does not work for the software being built. 1305 Consequently, the OpenEmbedded build system will not try to run 1306 ``make clean`` during the :ref:`ref-tasks-configure` 1307 task, which is the default behavior. 1308 1309 :term:`COMBINED_FEATURES` 1310 Provides a list of hardware features that are enabled in both 1311 :term:`MACHINE_FEATURES` and 1312 :term:`DISTRO_FEATURES`. This select list of 1313 features contains features that make sense to be controlled both at 1314 the machine and distribution configuration level. For example, the 1315 "bluetooth" feature requires hardware support but should also be 1316 optional at the distribution level, in case the hardware supports 1317 Bluetooth but you do not ever intend to use it. 1318 1319 :term:`COMMERCIAL_AUDIO_PLUGINS` 1320 This variable is specific to the :yocto_git:`GStreamer recipes 1321 </poky/tree/meta/recipes-multimedia/gstreamer/gstreamer1.0-meta-base.bb>`. 1322 It allows to build the GStreamer `"ugly" 1323 <https://github.com/GStreamer/gst-plugins-ugly>`__ and 1324 `"bad" <https://github.com/GStreamer/gst-plugins-bad>`__ audio plugins. 1325 1326 See the :ref:`dev-manual/licenses:other variables related to commercial licenses` 1327 section for usage details. 1328 1329 :term:`COMMERCIAL_VIDEO_PLUGINS` 1330 This variable is specific to the :yocto_git:`GStreamer recipes 1331 </poky/tree/meta/recipes-multimedia/gstreamer/gstreamer1.0-meta-base.bb>`. 1332 It allows to build the GStreamer `"ugly" 1333 <https://github.com/GStreamer/gst-plugins-ugly>`__ and 1334 `"bad" <https://github.com/GStreamer/gst-plugins-bad>`__ video plugins. 1335 1336 See the :ref:`dev-manual/licenses:other variables related to commercial licenses` 1337 section for usage details. 1338 1339 :term:`COMMON_LICENSE_DIR` 1340 Points to ``meta/files/common-licenses`` in the 1341 :term:`Source Directory`, which is where generic license 1342 files reside. 1343 1344 :term:`COMPATIBLE_HOST` 1345 A regular expression that resolves to one or more hosts (when the 1346 recipe is native) or one or more targets (when the recipe is 1347 non-native) with which a recipe is compatible. The regular expression 1348 is matched against :term:`HOST_SYS`. You can use the 1349 variable to stop recipes from being built for classes of systems with 1350 which the recipes are not compatible. Stopping these builds is 1351 particularly useful with kernels. The variable also helps to increase 1352 parsing speed since the build system skips parsing recipes not 1353 compatible with the current system. 1354 1355 :term:`COMPATIBLE_MACHINE` 1356 A regular expression that resolves to one or more target machines 1357 with which a recipe is compatible. The regular expression is matched 1358 against :term:`MACHINEOVERRIDES`. You can use 1359 the variable to stop recipes from being built for machines with which 1360 the recipes are not compatible. Stopping these builds is particularly 1361 useful with kernels. The variable also helps to increase parsing 1362 speed since the build system skips parsing recipes not compatible 1363 with the current machine. 1364 1365 If one wants to have a recipe only available for some architectures 1366 (here ``aarch64`` and ``mips64``), the following can be used:: 1367 1368 COMPATIBLE_MACHINE = "^$" 1369 COMPATIBLE_MACHINE:arch64 = "^(aarch64)$" 1370 COMPATIBLE_MACHINE:mips64 = "^(mips64)$" 1371 1372 The first line means "match all machines whose :term:`MACHINEOVERRIDES` 1373 contains the empty string", which will always be none. 1374 1375 The second is for matching all machines whose :term:`MACHINEOVERRIDES` 1376 contains one override which is exactly ``aarch64``. 1377 1378 The third is for matching all machines whose :term:`MACHINEOVERRIDES` 1379 contains one override which is exactly ``mips64``. 1380 1381 The same could be achieved with:: 1382 1383 COMPATIBLE_MACHINE = "^(aarch64|mips64)$" 1384 1385 .. note:: 1386 1387 When :term:`COMPATIBLE_MACHINE` is set in a recipe inherits from 1388 native, the recipe is always skipped. All native recipes must be 1389 entirely target independent and should not rely on :term:`MACHINE`. 1390 1391 :term:`COMPLEMENTARY_GLOB` 1392 Defines wildcards to match when installing a list of complementary 1393 packages for all the packages explicitly (or implicitly) installed in 1394 an image. 1395 1396 The :term:`COMPLEMENTARY_GLOB` variable uses Unix filename pattern matching 1397 (`fnmatch <https://docs.python.org/3/library/fnmatch.html#module-fnmatch>`__), 1398 which is similar to the Unix style pathname pattern expansion 1399 (`glob <https://docs.python.org/3/library/glob.html>`__). 1400 1401 The resulting list of complementary packages is associated with an 1402 item that can be added to 1403 :term:`IMAGE_FEATURES`. An example usage of 1404 this is the "dev-pkgs" item that when added to :term:`IMAGE_FEATURES` 1405 will install -dev packages (containing headers and other development 1406 files) for every package in the image. 1407 1408 To add a new feature item pointing to a wildcard, use a variable flag 1409 to specify the feature item name and use the value to specify the 1410 wildcard. Here is an example:: 1411 1412 COMPLEMENTARY_GLOB[dev-pkgs] = '*-dev' 1413 1414 .. note:: 1415 1416 When installing complementary packages, recommends relationships 1417 (set via :term:`RRECOMMENDS`) are always ignored. 1418 1419 :term:`COMPONENTS_DIR` 1420 Stores sysroot components for each recipe. The OpenEmbedded build 1421 system uses :term:`COMPONENTS_DIR` when constructing recipe-specific 1422 sysroots for other recipes. 1423 1424 The default is 1425 "``${``\ :term:`STAGING_DIR`\ ``}-components``." 1426 (i.e. 1427 "``${``\ :term:`TMPDIR`\ ``}/sysroots-components``"). 1428 1429 :term:`CONF_VERSION` 1430 Tracks the version of the local configuration file (i.e. 1431 ``local.conf``). The value for :term:`CONF_VERSION` increments each time 1432 ``build/conf/`` compatibility changes. 1433 1434 :term:`CONFFILES` 1435 Identifies editable or configurable files that are part of a package. 1436 If the Package Management System (PMS) is being used to update 1437 packages on the target system, it is possible that configuration 1438 files you have changed after the original installation and that you 1439 now want to remain unchanged are overwritten. In other words, 1440 editable files might exist in the package that you do not want reset 1441 as part of the package update process. You can use the :term:`CONFFILES` 1442 variable to list the files in the package that you wish to prevent 1443 the PMS from overwriting during this update process. 1444 1445 To use the :term:`CONFFILES` variable, provide a package name override 1446 that identifies the resulting package. Then, provide a 1447 space-separated list of files. Here is an example:: 1448 1449 CONFFILES:${PN} += "${sysconfdir}/file1 \ 1450 ${sysconfdir}/file2 ${sysconfdir}/file3" 1451 1452 There is a relationship between the :term:`CONFFILES` and :term:`FILES` 1453 variables. The files listed within :term:`CONFFILES` must be a subset of 1454 the files listed within :term:`FILES`. Because the configuration files 1455 you provide with :term:`CONFFILES` are simply being identified so that 1456 the PMS will not overwrite them, it makes sense that the files must 1457 already be included as part of the package through the :term:`FILES` 1458 variable. 1459 1460 .. note:: 1461 1462 When specifying paths as part of the :term:`CONFFILES` variable, it is 1463 good practice to use appropriate path variables. 1464 For example, ``${sysconfdir}`` rather than ``/etc`` or ``${bindir}`` 1465 rather than ``/usr/bin``. You can find a list of these variables at 1466 the top of the ``meta/conf/bitbake.conf`` file in the 1467 :term:`Source Directory`. 1468 1469 :term:`CONFIG_INITRAMFS_SOURCE` 1470 Identifies the initial RAM filesystem (:term:`Initramfs`) source files. The 1471 OpenEmbedded build system receives and uses this kernel Kconfig 1472 variable as an environment variable. By default, the variable is set 1473 to null (""). 1474 1475 The :term:`CONFIG_INITRAMFS_SOURCE` can be either a single cpio archive 1476 with a ``.cpio`` suffix or a space-separated list of directories and 1477 files for building the :term:`Initramfs` image. A cpio archive should contain 1478 a filesystem archive to be used as an :term:`Initramfs` image. Directories 1479 should contain a filesystem layout to be included in the :term:`Initramfs` 1480 image. Files should contain entries according to the format described 1481 by the ``usr/gen_init_cpio`` program in the kernel tree. 1482 1483 If you specify multiple directories and files, the :term:`Initramfs` image 1484 will be the aggregate of all of them. 1485 1486 For information on creating an :term:`Initramfs`, see the 1487 ":ref:`dev-manual/building:building an initial ram filesystem (Initramfs) image`" section 1488 in the Yocto Project Development Tasks Manual. 1489 1490 :term:`CONFIG_SITE` 1491 A list of files that contains ``autoconf`` test results relevant to 1492 the current build. This variable is used by the Autotools utilities 1493 when running ``configure``. 1494 1495 :term:`CONFIGURE_FLAGS` 1496 The minimal arguments for GNU configure. 1497 1498 :term:`CONFLICT_DISTRO_FEATURES` 1499 When inheriting the :ref:`ref-classes-features_check` 1500 class, this variable identifies distribution features that would be 1501 in conflict should the recipe be built. In other words, if the 1502 :term:`CONFLICT_DISTRO_FEATURES` variable lists a feature that also 1503 appears in :term:`DISTRO_FEATURES` within the current configuration, then 1504 the recipe will be skipped, and if the build system attempts to build 1505 the recipe then an error will be triggered. 1506 1507 :term:`CONVERSION_CMD` 1508 This variable is used for storing image conversion commands. 1509 Image conversion can convert an image into different objects like: 1510 1511 - Compressed version of the image 1512 1513 - Checksums for the image 1514 1515 An example of :term:`CONVERSION_CMD` from :ref:`ref-classes-image_types` 1516 class is:: 1517 1518 CONVERSION_CMD:lzo = "lzop -9 ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}" 1519 1520 :term:`COPY_LIC_DIRS` 1521 If set to "1" along with the 1522 :term:`COPY_LIC_MANIFEST` variable, the 1523 OpenEmbedded build system copies into the image the license files, 1524 which are located in ``/usr/share/common-licenses``, for each 1525 package. The license files are placed in directories within the image 1526 itself during build time. 1527 1528 .. note:: 1529 1530 The :term:`COPY_LIC_DIRS` does not offer a path for adding licenses for 1531 newly installed packages to an image, which might be most suitable for 1532 read-only filesystems that cannot be upgraded. See the 1533 :term:`LICENSE_CREATE_PACKAGE` variable for additional information. 1534 You can also reference the ":ref:`dev-manual/licenses:providing license text`" 1535 section in the Yocto Project Development Tasks Manual for 1536 information on providing license text. 1537 1538 :term:`COPY_LIC_MANIFEST` 1539 If set to "1", the OpenEmbedded build system copies the license 1540 manifest for the image to 1541 ``/usr/share/common-licenses/license.manifest`` within the image 1542 itself during build time. 1543 1544 .. note:: 1545 1546 The :term:`COPY_LIC_MANIFEST` does not offer a path for adding licenses for 1547 newly installed packages to an image, which might be most suitable for 1548 read-only filesystems that cannot be upgraded. See the 1549 :term:`LICENSE_CREATE_PACKAGE` variable for additional information. 1550 You can also reference the ":ref:`dev-manual/licenses:providing license text`" 1551 section in the Yocto Project Development Tasks Manual for 1552 information on providing license text. 1553 1554 :term:`COPYLEFT_LICENSE_EXCLUDE` 1555 A space-separated list of licenses to exclude from the source archived by 1556 the :ref:`ref-classes-archiver` class. In other words, if a license in a 1557 recipe's :term:`LICENSE` value is in the value of 1558 :term:`COPYLEFT_LICENSE_EXCLUDE`, then its source is not archived by the 1559 class. 1560 1561 .. note:: 1562 1563 The :term:`COPYLEFT_LICENSE_EXCLUDE` variable takes precedence over the 1564 :term:`COPYLEFT_LICENSE_INCLUDE` variable. 1565 1566 The default value, which is "CLOSED Proprietary", for 1567 :term:`COPYLEFT_LICENSE_EXCLUDE` is set by the 1568 :ref:`ref-classes-copyleft_filter` class, which 1569 is inherited by the :ref:`ref-classes-archiver` class. 1570 1571 :term:`COPYLEFT_LICENSE_INCLUDE` 1572 A space-separated list of licenses to include in the source archived 1573 by the :ref:`ref-classes-archiver` class. In other 1574 words, if a license in a recipe's :term:`LICENSE` 1575 value is in the value of :term:`COPYLEFT_LICENSE_INCLUDE`, then its 1576 source is archived by the class. 1577 1578 The default value is set by the :ref:`ref-classes-copyleft_filter` class, 1579 which is inherited by the :ref:`ref-classes-archiver` class. The default 1580 value includes "GPL*", "LGPL*", and "AGPL*". 1581 1582 :term:`COPYLEFT_PN_EXCLUDE` 1583 A list of recipes to exclude in the source archived by the 1584 :ref:`ref-classes-archiver` class. The :term:`COPYLEFT_PN_EXCLUDE` 1585 variable overrides the license inclusion and exclusion caused through the 1586 :term:`COPYLEFT_LICENSE_INCLUDE` and :term:`COPYLEFT_LICENSE_EXCLUDE` 1587 variables, respectively. 1588 1589 The default value, which is "" indicating to not explicitly exclude 1590 any recipes by name, for :term:`COPYLEFT_PN_EXCLUDE` is set by the 1591 :ref:`ref-classes-copyleft_filter` class, which is inherited by the 1592 :ref:`ref-classes-archiver` class. 1593 1594 :term:`COPYLEFT_PN_INCLUDE` 1595 A list of recipes to include in the source archived by the 1596 :ref:`ref-classes-archiver` class. The :term:`COPYLEFT_PN_INCLUDE` 1597 variable overrides the license inclusion and exclusion caused through the 1598 :term:`COPYLEFT_LICENSE_INCLUDE` and :term:`COPYLEFT_LICENSE_EXCLUDE` 1599 variables, respectively. 1600 1601 The default value, which is "" indicating to not explicitly include 1602 any recipes by name, for :term:`COPYLEFT_PN_INCLUDE` is set by the 1603 :ref:`ref-classes-copyleft_filter` class, which is inherited by the 1604 :ref:`ref-classes-archiver` class. 1605 1606 :term:`COPYLEFT_RECIPE_TYPES` 1607 A space-separated list of recipe types to include in the source 1608 archived by the :ref:`archiver <ref-classes-archiver>` class. 1609 Recipe types are ``target``, :ref:`ref-classes-native`, 1610 :ref:`ref-classes-nativesdk`, :ref:`ref-classes-cross`, 1611 :ref:`ref-classes-crosssdk`, and :ref:`ref-classes-cross-canadian`. 1612 1613 The default value, which is "target*", for :term:`COPYLEFT_RECIPE_TYPES` 1614 is set by the :ref:`ref-classes-copyleft_filter` class, which is 1615 inherited by the :ref:`ref-classes-archiver` class. 1616 1617 :term:`CORE_IMAGE_EXTRA_INSTALL` 1618 Specifies the list of packages to be added to the image. You should 1619 only set this variable in the ``local.conf`` configuration file found 1620 in the :term:`Build Directory`. 1621 1622 This variable replaces ``POKY_EXTRA_INSTALL``, which is no longer 1623 supported. 1624 1625 :term:`COREBASE` 1626 Specifies the parent directory of the OpenEmbedded-Core Metadata 1627 layer (i.e. ``meta``). 1628 1629 It is an important distinction that :term:`COREBASE` points to the parent 1630 of this layer and not the layer itself. Consider an example where you 1631 have cloned the Poky Git repository and retained the ``poky`` name 1632 for your local copy of the repository. In this case, :term:`COREBASE` 1633 points to the ``poky`` folder because it is the parent directory of 1634 the ``poky/meta`` layer. 1635 1636 :term:`COREBASE_FILES` 1637 Lists files from the :term:`COREBASE` directory that 1638 should be copied other than the layers listed in the 1639 ``bblayers.conf`` file. The :term:`COREBASE_FILES` variable allows 1640 to copy metadata from the OpenEmbedded build system 1641 into the extensible SDK. 1642 1643 Explicitly listing files in :term:`COREBASE` is needed because it 1644 typically contains build directories and other files that should not 1645 normally be copied into the extensible SDK. Consequently, the value 1646 of :term:`COREBASE_FILES` is used in order to only copy the files that 1647 are actually needed. 1648 1649 :term:`CPP` 1650 The minimal command and arguments used to run the C preprocessor. 1651 1652 :term:`CPPFLAGS` 1653 Specifies the flags to pass to the C pre-processor (i.e. to both the 1654 C and the C++ compilers). This variable is exported to an environment 1655 variable and thus made visible to the software being built during the 1656 compilation step. 1657 1658 Default initialization for :term:`CPPFLAGS` varies depending on what is 1659 being built: 1660 1661 - :term:`TARGET_CPPFLAGS` when building for 1662 the target 1663 1664 - :term:`BUILD_CPPFLAGS` when building for the 1665 build host (i.e. ``-native``) 1666 1667 - :term:`BUILDSDK_CPPFLAGS` when building 1668 for an SDK (i.e. ``nativesdk-``) 1669 1670 :term:`CROSS_COMPILE` 1671 The toolchain binary prefix for the target tools. The 1672 :term:`CROSS_COMPILE` variable is the same as the 1673 :term:`TARGET_PREFIX` variable. 1674 1675 .. note:: 1676 1677 The OpenEmbedded build system sets the :term:`CROSS_COMPILE` 1678 variable only in certain contexts (e.g. when building for kernel 1679 and kernel module recipes). 1680 1681 :term:`CVE_CHECK_IGNORE` 1682 This variable is deprecated and should be replaced by :term:`CVE_STATUS`. 1683 1684 :term:`CVE_CHECK_SHOW_WARNINGS` 1685 Specifies whether or not the :ref:`ref-classes-cve-check` 1686 class should generate warning messages on the console when unpatched 1687 CVEs are found. The default is "1", but you may wish to set it to "0" if 1688 you are already examining/processing the logs after the build has 1689 completed and thus do not need the warning messages. 1690 1691 :term:`CVE_CHECK_SKIP_RECIPE` 1692 The list of package names (:term:`PN`) for which 1693 CVEs (Common Vulnerabilities and Exposures) are ignored. 1694 1695 :term:`CVE_DB_INCR_UPDATE_AGE_THRES` 1696 Specifies the maximum age of the CVE database in seconds for an 1697 incremental update (instead of a full-download). Use "0" to force a 1698 full-download. 1699 1700 :term:`CVE_DB_UPDATE_INTERVAL` 1701 Specifies the CVE database update interval in seconds, as used by 1702 ``cve-update-db-native``. The default value is "86400" i.e. once a day 1703 (24*60*60). If the value is set to "0" then the update will be forced 1704 every time. Alternatively, a negative value e.g. "-1" will disable 1705 updates entirely. 1706 1707 :term:`CVE_PRODUCT` 1708 In a recipe, defines the name used to match the recipe name 1709 against the name in the upstream `NIST CVE database <https://nvd.nist.gov/>`__. 1710 1711 The default is ${:term:`BPN`} (except for recipes that inherit the 1712 :ref:`ref-classes-pypi` class where it is set based upon 1713 :term:`PYPI_PACKAGE`). If it does not match the name in the NIST CVE 1714 database or matches with multiple entries in the database, the default 1715 value needs to be changed. 1716 1717 Here is an example from the :oe_layerindex:`Berkeley DB recipe </layerindex/recipe/544>`:: 1718 1719 CVE_PRODUCT = "oracle_berkeley_db berkeley_db" 1720 1721 Sometimes the product name is not specific enough, for example 1722 "tar" has been matching CVEs for the GNU ``tar`` package and also 1723 the ``node-tar`` node.js extension. To avoid this problem, use the 1724 vendor name as a prefix. The syntax for this is:: 1725 1726 CVE_PRODUCT = "vendor:package" 1727 1728 :term:`CVE_STATUS` 1729 The CVE ID which is patched or should be ignored. Here is 1730 an example from the :oe_layerindex:`Python3 recipe</layerindex/recipe/23823>`:: 1731 1732 CVE_STATUS[CVE-2020-15523] = "not-applicable-platform: Issue only applies on Windows" 1733 1734 It has the format "reason: description" and the description is optional. 1735 The Reason is mapped to the final CVE state by mapping via 1736 :term:`CVE_CHECK_STATUSMAP`. See :ref:`dev-manual/vulnerabilities:fixing vulnerabilities in recipes` 1737 for details. 1738 1739 :term:`CVE_STATUS_GROUPS` 1740 If there are many CVEs with the same status and reason, they can by simplified by using this 1741 variable instead of many similar lines with :term:`CVE_STATUS`:: 1742 1743 CVE_STATUS_GROUPS = "CVE_STATUS_WIN CVE_STATUS_PATCHED" 1744 1745 CVE_STATUS_WIN = "CVE-1234-0001 CVE-1234-0002" 1746 CVE_STATUS_WIN[status] = "not-applicable-platform: Issue only applies on Windows" 1747 CVE_STATUS_PATCHED = "CVE-1234-0003 CVE-1234-0004" 1748 CVE_STATUS_PATCHED[status] = "fixed-version: Fixed externally" 1749 1750 :term:`CVE_CHECK_STATUSMAP` 1751 Mapping variable for all possible reasons of :term:`CVE_STATUS`: 1752 ``Patched``, ``Unpatched`` and ``Ignored``. 1753 See :ref:`ref-classes-cve-check` or ``meta/conf/cve-check-map.conf`` for more details:: 1754 1755 CVE_CHECK_STATUSMAP[cpe-incorrect] = "Ignored" 1756 1757 :term:`CVE_VERSION` 1758 In a recipe, defines the version used to match the recipe version 1759 against the version in the `NIST CVE database <https://nvd.nist.gov/>`__ 1760 when usign :ref:`ref-classes-cve-check`. 1761 1762 The default is ${:term:`PV`} but if recipes use custom version numbers 1763 which do not map to upstream software component release versions and the versions 1764 used in the CVE database, then this variable can be used to set the 1765 version number for :ref:`ref-classes-cve-check`. Example:: 1766 1767 CVE_VERSION = "2.39" 1768 1769 :term:`CVSDIR` 1770 The directory in which files checked out under the CVS system are 1771 stored. 1772 1773 :term:`CXX` 1774 The minimal command and arguments used to run the C++ compiler. 1775 1776 :term:`CXXFLAGS` 1777 Specifies the flags to pass to the C++ compiler. This variable is 1778 exported to an environment variable and thus made visible to the 1779 software being built during the compilation step. 1780 1781 Default initialization for :term:`CXXFLAGS` varies depending on what is 1782 being built: 1783 1784 - :term:`TARGET_CXXFLAGS` when building for 1785 the target 1786 1787 - :term:`BUILD_CXXFLAGS` when building for the 1788 build host (i.e. ``-native``) 1789 1790 - :term:`BUILDSDK_CXXFLAGS` when building 1791 for an SDK (i.e. ``nativesdk-``) 1792 1793 :term:`D` 1794 The destination directory. The location in the :term:`Build Directory` 1795 where components are installed by the 1796 :ref:`ref-tasks-install` task. This location defaults 1797 to:: 1798 1799 ${WORKDIR}/image 1800 1801 .. note:: 1802 1803 Tasks that read from or write to this directory should run under 1804 :ref:`fakeroot <overview-manual/concepts:fakeroot and pseudo>`. 1805 1806 :term:`DATE` 1807 The date the build was started. Dates appear using the year, month, 1808 and day (YMD) format (e.g. "20150209" for February 9th, 2015). 1809 1810 :term:`DATETIME` 1811 The date and time on which the current build started. The format is 1812 suitable for timestamps. 1813 1814 :term:`DEBIAN_NOAUTONAME` 1815 When the :ref:`ref-classes-debian` class is inherited, 1816 which is the default behavior, :term:`DEBIAN_NOAUTONAME` specifies a 1817 particular package should not be renamed according to Debian library 1818 package naming. You must use the package name as an override when you 1819 set this variable. Here is an example from the ``fontconfig`` recipe:: 1820 1821 DEBIAN_NOAUTONAME:fontconfig-utils = "1" 1822 1823 :term:`DEBIANNAME` 1824 When the :ref:`ref-classes-debian` class is inherited, 1825 which is the default behavior, :term:`DEBIANNAME` allows you to override 1826 the library name for an individual package. Overriding the library 1827 name in these cases is rare. You must use the package name as an 1828 override when you set this variable. Here is an example from the 1829 ``dbus`` recipe:: 1830 1831 DEBIANNAME:${PN} = "dbus-1" 1832 1833 :term:`DEBUG_BUILD` 1834 Specifies to build packages with debugging information. This 1835 influences the value of the :term:`SELECTED_OPTIMIZATION` variable. 1836 1837 :term:`DEBUG_OPTIMIZATION` 1838 The options to pass in :term:`TARGET_CFLAGS` and :term:`CFLAGS` when 1839 compiling a system for debugging. This variable defaults to "-O 1840 -fno-omit-frame-pointer ${DEBUG_FLAGS} -pipe". 1841 1842 :term:`DEBUG_PREFIX_MAP` 1843 Allows to set C compiler options, such as ``-fdebug-prefix-map``, 1844 ``-fmacro-prefix-map``, and ``-ffile-prefix-map``, which allow to 1845 replace build-time paths by install-time ones in the debugging sections 1846 of binaries. This makes compiler output files location independent, 1847 at the cost of having to pass an extra command to tell the debugger 1848 where source files are. 1849 1850 This is used by the Yocto Project to guarantee 1851 :doc:`/test-manual/reproducible-builds` even when the source code of 1852 a package uses the ``__FILE__`` or ``assert()`` macros. See the 1853 `reproducible-builds.org <https://reproducible-builds.org/docs/build-path/>`__ 1854 website for details. 1855 1856 This variable is set in the ``meta/conf/bitbake.conf`` file. It is 1857 not intended to be user-configurable. 1858 1859 :term:`DEFAULT_PREFERENCE` 1860 Specifies a weak bias for recipe selection priority. 1861 1862 The most common usage of this is variable is to set it to "-1" within 1863 a recipe for a development version of a piece of software. Using the 1864 variable in this way causes the stable version of the recipe to build 1865 by default in the absence of :term:`PREFERRED_VERSION` being used to 1866 build the development version. 1867 1868 .. note:: 1869 1870 The bias provided by :term:`DEFAULT_PREFERENCE` is weak and is overridden 1871 by :term:`BBFILE_PRIORITY` if that variable is different between two 1872 layers that contain different versions of the same recipe. 1873 1874 :term:`DEFAULTTUNE` 1875 The default CPU and Application Binary Interface (ABI) tunings (i.e. 1876 the "tune") used by the OpenEmbedded build system. The 1877 :term:`DEFAULTTUNE` helps define 1878 :term:`TUNE_FEATURES`. 1879 1880 The default tune is either implicitly or explicitly set by the 1881 machine (:term:`MACHINE`). However, you can override 1882 the setting using available tunes as defined with 1883 :term:`AVAILTUNES`. 1884 1885 :term:`DEPENDS` 1886 Lists a recipe's build-time dependencies. These are dependencies on 1887 other recipes whose contents (e.g. headers and shared libraries) are 1888 needed by the recipe at build time. 1889 1890 As an example, consider a recipe ``foo`` that contains the following 1891 assignment:: 1892 1893 DEPENDS = "bar" 1894 1895 The practical effect of the previous assignment is that all files 1896 installed by bar will be available in the appropriate staging sysroot, 1897 given by the :term:`STAGING_DIR* <STAGING_DIR>` variables, by the time 1898 the :ref:`ref-tasks-configure` task for ``foo`` runs. This mechanism is 1899 implemented by having :ref:`ref-tasks-configure` depend on the 1900 :ref:`ref-tasks-populate_sysroot` task of each recipe listed in 1901 :term:`DEPENDS`, through a 1902 ``[``\ :ref:`deptask <bitbake-user-manual/bitbake-user-manual-metadata:variable flags>`\ ``]`` 1903 declaration in the :ref:`ref-classes-base` class. 1904 1905 .. note:: 1906 1907 It seldom is necessary to reference, for example, :term:`STAGING_DIR_HOST` 1908 explicitly. The standard classes and build-related variables are 1909 configured to automatically use the appropriate staging sysroots. 1910 1911 As another example, :term:`DEPENDS` can also be used to add utilities 1912 that run on the build machine during the build. For example, a recipe 1913 that makes use of a code generator built by the recipe ``codegen`` 1914 might have the following:: 1915 1916 DEPENDS = "codegen-native" 1917 1918 For more 1919 information, see the :ref:`ref-classes-native` class and 1920 the :term:`EXTRANATIVEPATH` variable. 1921 1922 .. note:: 1923 1924 - :term:`DEPENDS` is a list of recipe names. Or, to be more precise, 1925 it is a list of :term:`PROVIDES` names, which 1926 usually match recipe names. Putting a package name such as 1927 "foo-dev" in :term:`DEPENDS` does not make sense. Use "foo" 1928 instead, as this will put files from all the packages that make 1929 up ``foo``, which includes those from ``foo-dev``, into the 1930 sysroot. 1931 1932 - One recipe having another recipe in :term:`DEPENDS` does not by 1933 itself add any runtime dependencies between the packages 1934 produced by the two recipes. However, as explained in the 1935 ":ref:`overview-manual/concepts:automatically added runtime dependencies`" 1936 section in the Yocto Project Overview and Concepts Manual, 1937 runtime dependencies will often be added automatically, meaning 1938 :term:`DEPENDS` alone is sufficient for most recipes. 1939 1940 - Counterintuitively, :term:`DEPENDS` is often necessary even for 1941 recipes that install precompiled components. For example, if 1942 ``libfoo`` is a precompiled library that links against 1943 ``libbar``, then linking against ``libfoo`` requires both 1944 ``libfoo`` and ``libbar`` to be available in the sysroot. 1945 Without a :term:`DEPENDS` from the recipe that installs ``libfoo`` 1946 to the recipe that installs ``libbar``, other recipes might 1947 fail to link against ``libfoo``. 1948 1949 For information on runtime dependencies, see the :term:`RDEPENDS` 1950 variable. You can also see the 1951 ":ref:`bitbake-user-manual/bitbake-user-manual-metadata:tasks`" and 1952 ":ref:`bitbake-user-manual/bitbake-user-manual-execution:dependencies`" 1953 sections in the BitBake User Manual for additional information on tasks 1954 and dependencies. 1955 1956 :term:`DEPLOY_DIR` 1957 Points to the general area that the OpenEmbedded build system uses to 1958 place images, packages, SDKs, and other output files that are ready 1959 to be used outside of the build system. By default, this directory 1960 resides within the :term:`Build Directory` as ``${TMPDIR}/deploy``. 1961 1962 For more information on the structure of the Build Directory, see 1963 ":ref:`ref-manual/structure:the build directory --- \`\`build/\`\``" section. 1964 For more detail on the contents of the ``deploy`` directory, see the 1965 ":ref:`overview-manual/concepts:images`", 1966 ":ref:`overview-manual/concepts:package feeds`", and 1967 ":ref:`overview-manual/concepts:application development sdk`" sections all in the 1968 Yocto Project Overview and Concepts Manual. 1969 1970 :term:`DEPLOY_DIR_DEB` 1971 Points to the area that the OpenEmbedded build system uses to place 1972 Debian packages that are ready to be used outside of the build 1973 system. This variable applies only when :term:`PACKAGE_CLASSES` contains 1974 ":ref:`ref-classes-package_deb`". 1975 1976 The BitBake configuration file initially defines the 1977 :term:`DEPLOY_DIR_DEB` variable as a sub-folder of 1978 :term:`DEPLOY_DIR`:: 1979 1980 DEPLOY_DIR_DEB = "${DEPLOY_DIR}/deb" 1981 1982 The :ref:`ref-classes-package_deb` class uses the 1983 :term:`DEPLOY_DIR_DEB` variable to make sure the 1984 :ref:`ref-tasks-package_write_deb` task 1985 writes Debian packages into the appropriate folder. For more 1986 information on how packaging works, see the 1987 ":ref:`overview-manual/concepts:package feeds`" section 1988 in the Yocto Project Overview and Concepts Manual. 1989 1990 :term:`DEPLOY_DIR_IMAGE` 1991 Points to the area that the OpenEmbedded build system uses to place 1992 images and other associated output files that are ready to be 1993 deployed onto the target machine. The directory is machine-specific 1994 as it contains the ``${MACHINE}`` name. By default, this directory 1995 resides within the :term:`Build Directory` as 1996 ``${DEPLOY_DIR}/images/${MACHINE}/``. 1997 1998 It must not be used directly in recipes when deploying files. Instead, 1999 it's only useful when a recipe needs to "read" a file already deployed 2000 by a dependency. So, it should be filled with the contents of 2001 :term:`DEPLOYDIR` by the :ref:`ref-classes-deploy` class or with the 2002 contents of :term:`IMGDEPLOYDIR` by the :ref:`ref-classes-image` class. 2003 2004 For more information on the structure of the :term:`Build Directory`, see 2005 ":ref:`ref-manual/structure:the build directory --- \`\`build/\`\``" section. 2006 For more detail on the contents of the ``deploy`` directory, see the 2007 ":ref:`overview-manual/concepts:images`" and 2008 ":ref:`overview-manual/concepts:application development sdk`" sections both in 2009 the Yocto Project Overview and Concepts Manual. 2010 2011 :term:`DEPLOY_DIR_IPK` 2012 Points to the area that the OpenEmbedded build system uses to place 2013 IPK packages that are ready to be used outside of the build system. 2014 This variable applies only when :term:`PACKAGE_CLASSES` contains 2015 ":ref:`ref-classes-package_ipk`". 2016 2017 The BitBake configuration file initially defines this variable as a 2018 sub-folder of :term:`DEPLOY_DIR`:: 2019 2020 DEPLOY_DIR_IPK = "${DEPLOY_DIR}/ipk" 2021 2022 The :ref:`ref-classes-package_ipk` class uses the :term:`DEPLOY_DIR_IPK` 2023 variable to make sure the :ref:`ref-tasks-package_write_ipk` task 2024 writes IPK packages into the appropriate folder. For more information 2025 on how packaging works, see the 2026 ":ref:`overview-manual/concepts:package feeds`" section 2027 in the Yocto Project Overview and Concepts Manual. 2028 2029 :term:`DEPLOY_DIR_RPM` 2030 Points to the area that the OpenEmbedded build system uses to place 2031 RPM packages that are ready to be used outside of the build system. 2032 This variable applies only when :term:`PACKAGE_CLASSES` contains 2033 ":ref:`ref-classes-package_rpm`". 2034 2035 The BitBake configuration file initially defines this variable as a 2036 sub-folder of :term:`DEPLOY_DIR`:: 2037 2038 DEPLOY_DIR_RPM = "${DEPLOY_DIR}/rpm" 2039 2040 The :ref:`ref-classes-package_rpm` class uses the 2041 :term:`DEPLOY_DIR_RPM` variable to make sure the 2042 :ref:`ref-tasks-package_write_rpm` task 2043 writes RPM packages into the appropriate folder. For more information 2044 on how packaging works, see the 2045 ":ref:`overview-manual/concepts:package feeds`" section 2046 in the Yocto Project Overview and Concepts Manual. 2047 2048 :term:`DEPLOYDIR` 2049 When inheriting the :ref:`ref-classes-deploy` class, the 2050 :term:`DEPLOYDIR` points to a temporary work area for deployed files that 2051 is set in the :ref:`ref-classes-deploy` class as follows:: 2052 2053 DEPLOYDIR = "${WORKDIR}/deploy-${PN}" 2054 2055 Recipes inheriting the :ref:`ref-classes-deploy` class should copy files to be 2056 deployed into :term:`DEPLOYDIR`, and the class will take care of copying 2057 them into :term:`DEPLOY_DIR_IMAGE` 2058 afterwards. 2059 2060 :term:`DESCRIPTION` 2061 The package description used by package managers. If not set, 2062 :term:`DESCRIPTION` takes the value of the :term:`SUMMARY` 2063 variable. 2064 2065 :term:`DEV_PKG_DEPENDENCY` 2066 Provides an easy way for recipes to disable or adjust the runtime recommendation 2067 (:term:`RRECOMMENDS`) of the ``${PN}-dev`` package on the main 2068 (``${PN}``) package. 2069 2070 :term:`DISABLE_STATIC` 2071 Used in order to disable static linking by default (in order to save 2072 space, since static libraries are often unused in embedded systems.) 2073 The default value is " --disable-static", however it can be set to "" 2074 in order to enable static linking if desired. Certain recipes do this 2075 individually, and also there is a 2076 ``meta/conf/distro/include/no-static-libs.inc`` include file that 2077 disables static linking for a number of recipes. Some software 2078 packages or build tools (such as CMake) have explicit support for 2079 enabling / disabling static linking, and in those cases 2080 :term:`DISABLE_STATIC` is not used. 2081 2082 :term:`DISTRO` 2083 The short name of the distribution. For information on the long name 2084 of the distribution, see the :term:`DISTRO_NAME` 2085 variable. 2086 2087 The :term:`DISTRO` variable corresponds to a distribution configuration 2088 file whose root name is the same as the variable's argument and whose 2089 filename extension is ``.conf``. For example, the distribution 2090 configuration file for the Poky distribution is named ``poky.conf`` 2091 and resides in the ``meta-poky/conf/distro`` directory of the 2092 :term:`Source Directory`. 2093 2094 Within that ``poky.conf`` file, the :term:`DISTRO` variable is set as 2095 follows:: 2096 2097 DISTRO = "poky" 2098 2099 Distribution configuration files are located in a ``conf/distro`` 2100 directory within the :term:`Metadata` that contains the 2101 distribution configuration. The value for :term:`DISTRO` must not contain 2102 spaces, and is typically all lower-case. 2103 2104 .. note:: 2105 2106 If the :term:`DISTRO` variable is blank, a set of default configurations 2107 are used, which are specified within 2108 ``meta/conf/distro/defaultsetup.conf`` also in the Source Directory. 2109 2110 :term:`DISTRO_CODENAME` 2111 Specifies a codename for the distribution being built. 2112 2113 :term:`DISTRO_EXTRA_RDEPENDS` 2114 Specifies a list of distro-specific packages to add to all images. 2115 This variable takes effect through ``packagegroup-base`` so the 2116 variable only really applies to the more full-featured images that 2117 include ``packagegroup-base``. You can use this variable to keep 2118 distro policy out of generic images. As with all other distro 2119 variables, you set this variable in the distro ``.conf`` file. 2120 2121 :term:`DISTRO_EXTRA_RRECOMMENDS` 2122 Specifies a list of distro-specific packages to add to all images if 2123 the packages exist. The packages might not exist or be empty (e.g. 2124 kernel modules). The list of packages are automatically installed but 2125 you can remove them. 2126 2127 :term:`DISTRO_FEATURES` 2128 The software support you want in your distribution for various 2129 features. You define your distribution features in the distribution 2130 configuration file. 2131 2132 In most cases, the presence or absence of a feature in 2133 :term:`DISTRO_FEATURES` is translated to the appropriate option supplied 2134 to the configure script during the 2135 :ref:`ref-tasks-configure` task for recipes that 2136 optionally support the feature. For example, specifying "x11" in 2137 :term:`DISTRO_FEATURES`, causes every piece of software built for the 2138 target that can optionally support X11 to have its X11 support 2139 enabled. 2140 2141 .. note:: 2142 2143 Just enabling :term:`DISTRO_FEATURES` alone doesn't 2144 enable feature support for packages. Mechanisms such as making 2145 :term:`PACKAGECONFIG` track :term:`DISTRO_FEATURES` are used 2146 to enable/disable package features. 2147 2148 Two more examples are Bluetooth and NFS support. For a more complete 2149 list of features that ships with the Yocto Project and that you can 2150 provide with this variable, see the ":ref:`ref-features-distro`" section. 2151 2152 :term:`DISTRO_FEATURES_BACKFILL` 2153 A space-separated list of features to be added to :term:`DISTRO_FEATURES` 2154 if not also present in :term:`DISTRO_FEATURES_BACKFILL_CONSIDERED`. 2155 2156 This variable is set in the ``meta/conf/bitbake.conf`` file. It is 2157 not intended to be user-configurable. It is best to just reference 2158 the variable to see which distro features are being 2159 :ref:`backfilled <ref-features-backfill>` for all distro configurations. 2160 2161 :term:`DISTRO_FEATURES_BACKFILL_CONSIDERED` 2162 A space-separated list of features from :term:`DISTRO_FEATURES_BACKFILL` 2163 that should not be :ref:`backfilled <ref-features-backfill>` (i.e. added 2164 to :term:`DISTRO_FEATURES`) during the build. 2165 2166 This corresponds to an opt-out mechanism. When new default distro 2167 features are introduced, distribution maintainers can review (`consider`) 2168 them and decide to exclude them from the 2169 :ref:`backfilled <ref-features-backfill>` features. Therefore, the 2170 combination of :term:`DISTRO_FEATURES_BACKFILL` and 2171 :term:`DISTRO_FEATURES_BACKFILL_CONSIDERED` makes it possible to 2172 add new default features without breaking existing distributions. 2173 2174 2175 :term:`DISTRO_FEATURES_DEFAULT` 2176 A convenience variable that gives you the default list of distro 2177 features with the exception of any features specific to the C library 2178 (``libc``). 2179 2180 When creating a custom distribution, you might find it useful to be 2181 able to reuse the default 2182 :term:`DISTRO_FEATURES` options without the 2183 need to write out the full set. Here is an example that uses 2184 :term:`DISTRO_FEATURES_DEFAULT` from a custom distro configuration file:: 2185 2186 DISTRO_FEATURES ?= "${DISTRO_FEATURES_DEFAULT} myfeature" 2187 2188 :term:`DISTRO_FEATURES_FILTER_NATIVE` 2189 Specifies a list of features that if present in the target 2190 :term:`DISTRO_FEATURES` value should be 2191 included in :term:`DISTRO_FEATURES` when building native recipes. This 2192 variable is used in addition to the features filtered using the 2193 :term:`DISTRO_FEATURES_NATIVE` 2194 variable. 2195 2196 :term:`DISTRO_FEATURES_FILTER_NATIVESDK` 2197 Specifies a list of features that if present in the target 2198 :term:`DISTRO_FEATURES` value should be included in 2199 :term:`DISTRO_FEATURES` when building :ref:`ref-classes-nativesdk` 2200 recipes. This variable is used in addition to the features filtered using 2201 the :term:`DISTRO_FEATURES_NATIVESDK` variable. 2202 2203 :term:`DISTRO_FEATURES_NATIVE` 2204 Specifies a list of features that should be included in 2205 :term:`DISTRO_FEATURES` when building native 2206 recipes. This variable is used in addition to the features filtered 2207 using the 2208 :term:`DISTRO_FEATURES_FILTER_NATIVE` 2209 variable. 2210 2211 :term:`DISTRO_FEATURES_NATIVESDK` 2212 Specifies a list of features that should be included in 2213 :term:`DISTRO_FEATURES` when building 2214 :ref:`ref-classes-nativesdk` recipes. This variable is used 2215 in addition to the features filtered using the 2216 :term:`DISTRO_FEATURES_FILTER_NATIVESDK` variable. 2217 2218 :term:`DISTRO_NAME` 2219 The long name of the distribution. For information on the short name 2220 of the distribution, see the :term:`DISTRO` variable. 2221 2222 The :term:`DISTRO_NAME` variable corresponds to a distribution 2223 configuration file whose root name is the same as the variable's 2224 argument and whose filename extension is ``.conf``. For example, the 2225 distribution configuration file for the Poky distribution is named 2226 ``poky.conf`` and resides in the ``meta-poky/conf/distro`` directory 2227 of the :term:`Source Directory`. 2228 2229 Within that ``poky.conf`` file, the :term:`DISTRO_NAME` variable is set 2230 as follows:: 2231 2232 DISTRO_NAME = "Poky (Yocto Project Reference Distro)" 2233 2234 Distribution configuration files are located in a ``conf/distro`` 2235 directory within the :term:`Metadata` that contains the 2236 distribution configuration. 2237 2238 .. note:: 2239 2240 If the :term:`DISTRO_NAME` variable is blank, a set of default 2241 configurations are used, which are specified within 2242 ``meta/conf/distro/defaultsetup.conf`` also in the Source Directory. 2243 2244 :term:`DISTRO_VERSION` 2245 The version of the distribution. 2246 2247 :term:`DISTROOVERRIDES` 2248 A colon-separated list of overrides specific to the current 2249 distribution. By default, this list includes the value of 2250 :term:`DISTRO`. 2251 2252 You can extend :term:`DISTROOVERRIDES` to add extra overrides that should 2253 apply to the distribution. 2254 2255 The underlying mechanism behind :term:`DISTROOVERRIDES` is simply that it 2256 is included in the default value of 2257 :term:`OVERRIDES`. 2258 2259 Here is an example from :yocto_git:`meta-poky/conf/distro/poky-tiny.conf 2260 </poky/tree/meta-poky/conf/distro/poky-tiny.conf>`:: 2261 2262 DISTROOVERRIDES = "poky:poky-tiny" 2263 2264 :term:`DL_DIR` 2265 The central download directory used by the build process to store 2266 downloads. By default, :term:`DL_DIR` gets files suitable for mirroring 2267 for everything except Git repositories. If you want tarballs of Git 2268 repositories, use the 2269 :term:`BB_GENERATE_MIRROR_TARBALLS` 2270 variable. 2271 2272 You can set this directory by defining the :term:`DL_DIR` variable in the 2273 ``conf/local.conf`` file. This directory is self-maintaining and you 2274 should not have to touch it. By default, the directory is 2275 ``downloads`` in the :term:`Build Directory`:: 2276 2277 #DL_DIR ?= "${TOPDIR}/downloads" 2278 2279 To specify a different download directory, 2280 simply remove the comment from the line and provide your directory. 2281 2282 During a first build, the system downloads many different source code 2283 tarballs from various upstream projects. Downloading can take a 2284 while, particularly if your network connection is slow. Tarballs are 2285 all stored in the directory defined by :term:`DL_DIR` and the build 2286 system looks there first to find source tarballs. 2287 2288 .. note:: 2289 2290 When wiping and rebuilding, you can preserve this directory to 2291 speed up this part of subsequent builds. 2292 2293 You can safely share this directory between multiple builds on the 2294 same development machine. For additional information on how the build 2295 process gets source files when working behind a firewall or proxy 2296 server, see this specific question in the ":doc:`faq`" 2297 chapter. You can also refer to the 2298 ":yocto_wiki:`Working Behind a Network Proxy </Working_Behind_a_Network_Proxy>`" 2299 Wiki page. 2300 2301 :term:`DOC_COMPRESS` 2302 When inheriting the :ref:`ref-classes-compress_doc` 2303 class, this variable sets the compression policy used when the 2304 OpenEmbedded build system compresses manual and info pages. By 2305 default, the compression method used is gz (gzip). Other policies 2306 available are xz and bz2. 2307 2308 For information on policies and on how to use this variable, see the 2309 comments in the ``meta/classes-recipe/compress_doc.bbclass`` file. 2310 2311 :term:`DT_FILES` 2312 Space-separated list of device tree source files to compile using 2313 a recipe that inherits the :ref:`ref-classes-devicetree` class. These 2314 are relative to the :term:`DT_FILES_PATH`. 2315 2316 For convenience, both ``.dts`` and ``.dtb`` extensions can be used. 2317 2318 Use an empty string (default) to build all device tree sources within 2319 the :term:`DT_FILES_PATH` directory. 2320 2321 :term:`DT_FILES_PATH` 2322 When compiling out-of-tree device tree sources using a recipe that 2323 inherits the :ref:`ref-classes-devicetree` class, this variable specifies 2324 the path to the directory containing dts files to build. 2325 2326 Defaults to the :term:`S` directory. 2327 2328 :term:`DT_PADDING_SIZE` 2329 When inheriting the :ref:`ref-classes-devicetree` class, this variable 2330 specifies the size of padding appended to the device tree blob, used as 2331 extra space typically for additional properties during boot. 2332 2333 :term:`EFI_PROVIDER` 2334 When building bootable images (i.e. where ``hddimg``, ``iso``, or 2335 ``wic.vmdk`` is in :term:`IMAGE_FSTYPES`), the 2336 :term:`EFI_PROVIDER` variable specifies the EFI bootloader to use. The 2337 default is "grub-efi", but "systemd-boot" can be used instead. 2338 2339 See the :ref:`ref-classes-systemd-boot` and :ref:`ref-classes-image-live` 2340 classes for more information. 2341 2342 :term:`EFI_UKI_DIR` 2343 The primary place for the UKI image inside the EFI System Partition. 2344 2345 :term:`EFI_UKI_PATH` 2346 The path for the UKI image inside the root filesystem. 2347 2348 :term:`ENABLE_BINARY_LOCALE_GENERATION` 2349 Variable that controls which locales for ``glibc`` are generated 2350 during the build (useful if the target device has 64Mbytes of RAM or 2351 less). 2352 2353 :term:`ERR_REPORT_DIR` 2354 When used with the :ref:`ref-classes-report-error` class, specifies the 2355 path used for storing the debug files created by the :ref:`error reporting 2356 tool <dev-manual/error-reporting-tool:using the error reporting tool>`, 2357 which allows you to submit build errors you encounter to a central 2358 database. By default, the value of this variable is 2359 ``${``\ :term:`LOG_DIR`\ ``}/error-report``. 2360 2361 You can set :term:`ERR_REPORT_DIR` to the path you want the error 2362 reporting tool to store the debug files as follows in your 2363 ``local.conf`` file:: 2364 2365 ERR_REPORT_DIR = "path" 2366 2367 :term:`ERROR_QA` 2368 Specifies the quality assurance checks whose failures are reported as 2369 errors by the OpenEmbedded build system. You set this variable in 2370 your distribution configuration file. For a list of the checks you 2371 can control with this variable, see the 2372 ":ref:`ref-classes-insane`" section. 2373 2374 :term:`ESDK_CLASS_INHERIT_DISABLE` 2375 A list of classes to remove from the :term:`INHERIT` 2376 value globally within the extensible SDK configuration. The 2377 :ref:`populate-sdk-ext <ref-classes-populate-sdk-*>` class sets the 2378 default value:: 2379 2380 ESDK_CLASS_INHERIT_DISABLE ?= "buildhistory icecc" 2381 2382 Some classes are not generally applicable within the extensible SDK 2383 context. You can use this variable to disable those classes. 2384 2385 For additional information on how to customize the extensible SDK's 2386 configuration, see the 2387 ":ref:`sdk-manual/appendix-customizing:configuring the extensible sdk`" 2388 section in the Yocto Project Application Development and the 2389 Extensible Software Development Kit (eSDK) manual. 2390 2391 :term:`ESDK_LOCALCONF_ALLOW` 2392 A list of variables allowed through from the OpenEmbedded build 2393 system configuration into the extensible SDK configuration. By 2394 default, the list of variables is empty and is set in the 2395 :ref:`populate-sdk-ext <ref-classes-populate-sdk-*>` class. 2396 2397 This list overrides the variables specified using the 2398 :term:`ESDK_LOCALCONF_REMOVE` variable as well as 2399 other variables automatically added due to the "/" character 2400 being found at the start of the 2401 value, which is usually indicative of being a path and thus might not 2402 be valid on the system where the SDK is installed. 2403 2404 For additional information on how to customize the extensible SDK's 2405 configuration, see the 2406 ":ref:`sdk-manual/appendix-customizing:configuring the extensible sdk`" 2407 section in the Yocto Project Application Development and the 2408 Extensible Software Development Kit (eSDK) manual. 2409 2410 :term:`ESDK_LOCALCONF_REMOVE` 2411 A list of variables not allowed through from the OpenEmbedded build 2412 system configuration into the extensible SDK configuration. Usually, 2413 these are variables that are specific to the machine on which the 2414 build system is running and thus would be potentially problematic 2415 within the extensible SDK. 2416 2417 By default, :term:`ESDK_LOCALCONF_REMOVE` is set in the 2418 :ref:`populate-sdk-ext <ref-classes-populate-sdk-*>` class and 2419 excludes the following variables: 2420 2421 - :term:`CONF_VERSION` 2422 - :term:`BB_NUMBER_THREADS` 2423 - :term:`BB_NUMBER_PARSE_THREADS` 2424 - :term:`PARALLEL_MAKE` 2425 - :term:`PRSERV_HOST` 2426 - :term:`SSTATE_MIRRORS` :term:`DL_DIR` 2427 - :term:`SSTATE_DIR` :term:`TMPDIR` 2428 - :term:`BB_SERVER_TIMEOUT` 2429 2430 For additional information on how to customize the extensible SDK's 2431 configuration, see the 2432 ":ref:`sdk-manual/appendix-customizing:configuring the extensible sdk`" 2433 section in the Yocto Project Application Development and the 2434 Extensible Software Development Kit (eSDK) manual. 2435 2436 :term:`EXCLUDE_FROM_SHLIBS` 2437 Triggers the OpenEmbedded build system's shared libraries resolver to 2438 exclude an entire package when scanning for shared libraries. 2439 2440 .. note:: 2441 2442 The shared libraries resolver's functionality results in part from 2443 the internal function ``package_do_shlibs``, which is part of the 2444 :ref:`ref-tasks-package` task. You should be aware that the shared 2445 libraries resolver might implicitly define some dependencies between 2446 packages. 2447 2448 The :term:`EXCLUDE_FROM_SHLIBS` variable is similar to the 2449 :term:`PRIVATE_LIBS` variable, which excludes a 2450 package's particular libraries only and not the whole package. 2451 2452 Use the :term:`EXCLUDE_FROM_SHLIBS` variable by setting it to "1" for a 2453 particular package:: 2454 2455 EXCLUDE_FROM_SHLIBS = "1" 2456 2457 :term:`EXCLUDE_FROM_WORLD` 2458 Directs BitBake to exclude a recipe from world builds (i.e. 2459 ``bitbake world``). During world builds, BitBake locates, parses and 2460 builds all recipes found in every layer exposed in the 2461 ``bblayers.conf`` configuration file. 2462 2463 To exclude a recipe from a world build using this variable, set the 2464 variable to "1" in the recipe. 2465 2466 .. note:: 2467 2468 Recipes added to :term:`EXCLUDE_FROM_WORLD` may still be built during a 2469 world build in order to satisfy dependencies of other recipes. Adding 2470 a recipe to :term:`EXCLUDE_FROM_WORLD` only ensures that the recipe is not 2471 explicitly added to the list of build targets in a world build. 2472 2473 :term:`EXTENDPE` 2474 Used with file and pathnames to create a prefix for a recipe's 2475 version based on the recipe's :term:`PE` value. If :term:`PE` 2476 is set and greater than zero for a recipe, :term:`EXTENDPE` becomes that 2477 value (e.g if :term:`PE` is equal to "1" then :term:`EXTENDPE` becomes "1"). 2478 If a recipe's :term:`PE` is not set (the default) or is equal to zero, 2479 :term:`EXTENDPE` becomes "". 2480 2481 See the :term:`STAMP` variable for an example. 2482 2483 :term:`EXTENDPKGV` 2484 The full package version specification as it appears on the final 2485 packages produced by a recipe. The variable's value is normally used 2486 to fix a runtime dependency to the exact same version of another 2487 package in the same recipe:: 2488 2489 RDEPENDS:${PN}-additional-module = "${PN} (= ${EXTENDPKGV})" 2490 2491 The dependency relationships are intended to force the package 2492 manager to upgrade these types of packages in lock-step. 2493 2494 :term:`EXTERNAL_KERNEL_TOOLS` 2495 When set, the :term:`EXTERNAL_KERNEL_TOOLS` variable indicates that these 2496 tools are not in the source tree. 2497 2498 When kernel tools are available in the tree, they are preferred over 2499 any externally installed tools. Setting the :term:`EXTERNAL_KERNEL_TOOLS` 2500 variable tells the OpenEmbedded build system to prefer the installed 2501 external tools. See the :ref:`ref-classes-kernel-yocto` class in 2502 ``meta/classes-recipe`` to see how the variable is used. 2503 2504 :term:`KERNEL_LOCALVERSION` 2505 This variable allows to append a string to the version 2506 of the kernel image. This corresponds to the ``CONFIG_LOCALVERSION`` 2507 kernel configuration parameter. 2508 2509 Using this variable is only useful when you are using a kernel recipe 2510 inheriting the :ref:`ref-classes-kernel` class, and which doesn't 2511 already set a local version. Therefore, setting this variable has no 2512 impact on ``linux-yocto`` kernels. 2513 2514 :term:`EXTERNAL_TOOLCHAIN` 2515 When you intend to use an 2516 :ref:`external toolchain <dev-manual/external-toolchain:optionally using an external toolchain>`, 2517 this variable allows to specify the directory where this toolchain was 2518 installed. 2519 2520 :term:`EXTERNALSRC` 2521 When inheriting the :ref:`ref-classes-externalsrc` 2522 class, this variable points to the source tree, which is outside of 2523 the OpenEmbedded build system. When set, this variable sets the 2524 :term:`S` variable, which is what the OpenEmbedded build 2525 system uses to locate unpacked recipe source code. 2526 2527 See the ":ref:`ref-classes-externalsrc`" section for details. You 2528 can also find information on how to use this variable in the 2529 ":ref:`dev-manual/building:building software from an external source`" 2530 section in the Yocto Project Development Tasks Manual. 2531 2532 :term:`EXTERNALSRC_BUILD` 2533 When inheriting the :ref:`ref-classes-externalsrc` 2534 class, this variable points to the directory in which the recipe's 2535 source code is built, which is outside of the OpenEmbedded build 2536 system. When set, this variable sets the :term:`B` variable, 2537 which is what the OpenEmbedded build system uses to locate the 2538 :term:`Build Directory`. 2539 2540 See the ":ref:`ref-classes-externalsrc`" section for details. You 2541 can also find information on how to use this variable in the 2542 ":ref:`dev-manual/building:building software from an external source`" 2543 section in the Yocto Project Development Tasks Manual. 2544 2545 :term:`EXTRA_AUTORECONF` 2546 For recipes inheriting the :ref:`ref-classes-autotools` 2547 class, you can use :term:`EXTRA_AUTORECONF` to specify extra options to 2548 pass to the ``autoreconf`` command that is executed during the 2549 :ref:`ref-tasks-configure` task. 2550 2551 The default value is "--exclude=autopoint". 2552 2553 :term:`EXTRA_IMAGE_FEATURES` 2554 A list of additional features to include in an image. When listing 2555 more than one feature, separate them with a space. 2556 2557 Typically, you configure this variable in your ``local.conf`` file, 2558 which is found in the :term:`Build Directory`. Although you can use this 2559 variable from within a recipe, best practices dictate that you do not. 2560 2561 .. note:: 2562 2563 To enable primary features from within the image recipe, use the 2564 :term:`IMAGE_FEATURES` variable. 2565 2566 Here are some examples of features you can add: 2567 2568 - "dbg-pkgs" --- adds -dbg packages for all installed packages including 2569 symbol information for debugging and profiling. 2570 2571 - "debug-tweaks" --- makes an image suitable for debugging. For example, allows root logins without passwords and 2572 enables post-installation logging. See the 'allow-empty-password' and 2573 'post-install-logging' features in the ":ref:`ref-features-image`" 2574 section for more information. 2575 - "dev-pkgs" --- adds -dev packages for all installed packages. This is 2576 useful if you want to develop against the libraries in the image. 2577 - "read-only-rootfs" --- creates an image whose root filesystem is 2578 read-only. See the 2579 ":ref:`dev-manual/read-only-rootfs:creating a read-only root filesystem`" 2580 section in the Yocto Project Development Tasks Manual for more 2581 information 2582 - "tools-debug" --- adds debugging tools such as gdb and strace. 2583 - "tools-sdk" --- adds development tools such as gcc, make, 2584 pkgconfig and so forth. 2585 - "tools-testapps" --- adds useful testing tools 2586 such as ts_print, aplay, arecord and so forth. 2587 2588 For a complete list of image features that ships with the Yocto 2589 Project, see the ":ref:`ref-features-image`" section. 2590 2591 For an example that shows how to customize your image by using this 2592 variable, see the ":ref:`dev-manual/customizing-images:customizing images using custom \`\`image_features\`\` and \`\`extra_image_features\`\``" 2593 section in the Yocto Project Development Tasks Manual. 2594 2595 :term:`EXTRA_IMAGECMD` 2596 Specifies additional options for the image creation command that has 2597 been specified in :term:`IMAGE_CMD`. When setting 2598 this variable, use an override for the associated image type. Here is 2599 an example:: 2600 2601 EXTRA_IMAGECMD:ext3 ?= "-i 4096" 2602 2603 :term:`EXTRA_IMAGEDEPENDS` 2604 A list of recipes to build that do not provide packages for 2605 installing into the root filesystem. 2606 2607 Sometimes a recipe is required to build the final image but is not 2608 needed in the root filesystem. You can use the :term:`EXTRA_IMAGEDEPENDS` 2609 variable to list these recipes and thus specify the dependencies. A 2610 typical example is a required bootloader in a machine configuration. 2611 2612 .. note:: 2613 2614 To add packages to the root filesystem, see the various 2615 :term:`RDEPENDS` and :term:`RRECOMMENDS` variables. 2616 2617 :term:`EXTRA_OECMAKE` 2618 Additional `CMake <https://cmake.org/overview/>`__ options. See the 2619 :ref:`ref-classes-cmake` class for additional information. 2620 2621 :term:`EXTRA_OECONF` 2622 Additional ``configure`` script options. See 2623 :term:`PACKAGECONFIG_CONFARGS` for 2624 additional information on passing configure script options. 2625 2626 :term:`EXTRA_OEMAKE` 2627 Additional GNU ``make`` options. 2628 2629 Because the :term:`EXTRA_OEMAKE` defaults to "", you need to set the 2630 variable to specify any required GNU options. 2631 2632 :term:`PARALLEL_MAKE` and 2633 :term:`PARALLEL_MAKEINST` also make use of 2634 :term:`EXTRA_OEMAKE` to pass the required flags. 2635 2636 :term:`EXTRA_OESCONS` 2637 When inheriting the :ref:`ref-classes-scons` class, this 2638 variable specifies additional configuration options you want to pass 2639 to the ``scons`` command line. 2640 2641 :term:`EXTRA_OEMESON` 2642 Additional `Meson <https://mesonbuild.com/>`__ options. See the 2643 :ref:`ref-classes-meson` class for additional information. 2644 2645 In addition to standard Meson options, such options correspond to 2646 `Meson build options <https://mesonbuild.com/Build-options.html>`__ 2647 defined in the ``meson_options.txt`` file in the sources to build. 2648 Here is an example:: 2649 2650 EXTRA_OEMESON = "-Dpython=disabled -Dvalgrind=disabled" 2651 2652 Note that any custom value for the Meson ``--buildtype`` option 2653 should be set through the :term:`MESON_BUILDTYPE` variable. 2654 2655 :term:`EXTRA_USERS_PARAMS` 2656 When inheriting the :ref:`ref-classes-extrausers` 2657 class, this variable provides image level user and group operations. 2658 This is a more global method of providing user and group 2659 configuration as compared to using the 2660 :ref:`ref-classes-useradd` class, which ties user and 2661 group configurations to a specific recipe. 2662 2663 The set list of commands you can configure using the 2664 :term:`EXTRA_USERS_PARAMS` is shown in the 2665 :ref:`ref-classes-extrausers` class. These commands map to the normal 2666 Unix commands of the same names:: 2667 2668 # EXTRA_USERS_PARAMS = "\ 2669 # useradd -p '' tester; \ 2670 # groupadd developers; \ 2671 # userdel nobody; \ 2672 # groupdel -g video; \ 2673 # groupmod -g 1020 developers; \ 2674 # usermod -s /bin/sh tester; \ 2675 # " 2676 2677 Hardcoded passwords are supported via the ``-p`` parameters for 2678 ``useradd`` or ``usermod``, but only hashed. 2679 2680 Here is an example that adds two users named "tester-jim" and "tester-sue" and assigns 2681 passwords. First on host, create the (escaped) password hash:: 2682 2683 printf "%q" $(mkpasswd -m sha256crypt tester01) 2684 2685 The resulting hash is set to a variable and used in ``useradd`` command parameters:: 2686 2687 inherit extrausers 2688 PASSWD = "\$X\$ABC123\$A-Long-Hash" 2689 EXTRA_USERS_PARAMS = "\ 2690 useradd -p '${PASSWD}' tester-jim; \ 2691 useradd -p '${PASSWD}' tester-sue; \ 2692 " 2693 2694 Finally, here is an example that sets the root password:: 2695 2696 inherit extrausers 2697 EXTRA_USERS_PARAMS = "\ 2698 usermod -p '${PASSWD}' root; \ 2699 " 2700 2701 .. note:: 2702 2703 From a security perspective, hardcoding a default password is not 2704 generally a good idea or even legal in some jurisdictions. It is 2705 recommended that you do not do this if you are building a production 2706 image. 2707 2708 Additionally there is a special ``passwd-expire`` command that will 2709 cause the password for a user to be expired and thus force changing it 2710 on first login, for example:: 2711 2712 EXTRA_USERS_PARAMS += " useradd myuser; passwd-expire myuser;" 2713 2714 .. note:: 2715 2716 At present, ``passwd-expire`` may only work for remote logins when 2717 using OpenSSH and not dropbear as an SSH server. 2718 2719 :term:`EXTRANATIVEPATH` 2720 A list of subdirectories of 2721 ``${``\ :term:`STAGING_BINDIR_NATIVE`\ ``}`` 2722 added to the beginning of the environment variable ``PATH``. As an 2723 example, the following prepends 2724 "${STAGING_BINDIR_NATIVE}/foo:${STAGING_BINDIR_NATIVE}/bar:" to 2725 ``PATH``:: 2726 2727 EXTRANATIVEPATH = "foo bar" 2728 2729 :term:`FAKEROOT` 2730 See :term:`bitbake:FAKEROOT` in the BitBake manual. 2731 2732 :term:`FAKEROOTBASEENV` 2733 See :term:`bitbake:FAKEROOTBASEENV` in the BitBake manual. 2734 2735 :term:`FAKEROOTCMD` 2736 See :term:`bitbake:FAKEROOTCMD` in the BitBake manual. 2737 2738 :term:`FAKEROOTDIRS` 2739 See :term:`bitbake:FAKEROOTDIRS` in the BitBake manual. 2740 2741 :term:`FAKEROOTENV` 2742 See :term:`bitbake:FAKEROOTENV` in the BitBake manual. 2743 2744 :term:`FAKEROOTNOENV` 2745 See :term:`bitbake:FAKEROOTNOENV` in the BitBake manual. 2746 2747 :term:`FEATURE_PACKAGES` 2748 Defines one or more packages to include in an image when a specific 2749 item is included in :term:`IMAGE_FEATURES`. 2750 When setting the value, :term:`FEATURE_PACKAGES` should have the name of 2751 the feature item as an override. Here is an example:: 2752 2753 FEATURE_PACKAGES_widget = "package1 package2" 2754 2755 In this example, if "widget" were added to :term:`IMAGE_FEATURES`, 2756 package1 and package2 would be included in the image. 2757 2758 .. note:: 2759 2760 Packages installed by features defined through :term:`FEATURE_PACKAGES` 2761 are often package groups. While similarly named, you should not 2762 confuse the :term:`FEATURE_PACKAGES` variable with package groups, which 2763 are discussed elsewhere in the documentation. 2764 2765 :term:`FEED_DEPLOYDIR_BASE_URI` 2766 Points to the base URL of the server and location within the 2767 document-root that provides the metadata and packages required by 2768 OPKG to support runtime package management of IPK packages. You set 2769 this variable in your ``local.conf`` file. 2770 2771 Consider the following example:: 2772 2773 FEED_DEPLOYDIR_BASE_URI = "http://192.168.7.1/BOARD-dir" 2774 2775 This example assumes you are serving 2776 your packages over HTTP and your databases are located in a directory 2777 named ``BOARD-dir``, which is underneath your HTTP server's 2778 document-root. In this case, the OpenEmbedded build system generates 2779 a set of configuration files for you in your target that work with 2780 the feed. 2781 2782 :term:`FETCHCMD` 2783 See :term:`bitbake:FETCHCMD` in the BitBake manual. 2784 2785 :term:`FILE` 2786 See :term:`bitbake:FILE` in the BitBake manual. 2787 2788 :term:`FILES` 2789 The list of files and directories that are placed in a package. The 2790 :term:`PACKAGES` variable lists the packages 2791 generated by a recipe. 2792 2793 To use the :term:`FILES` variable, provide a package name override that 2794 identifies the resulting package. Then, provide a space-separated 2795 list of files or paths that identify the files you want included as 2796 part of the resulting package. Here is an example:: 2797 2798 FILES:${PN} += "${bindir}/mydir1 ${bindir}/mydir2/myfile" 2799 2800 .. note:: 2801 2802 - When specifying files or paths, you can pattern match using 2803 Python's 2804 `glob <https://docs.python.org/3/library/glob.html>`__ 2805 syntax. For details on the syntax, see the documentation by 2806 following the previous link. 2807 2808 - When specifying paths as part of the :term:`FILES` variable, it is 2809 good practice to use appropriate path variables. For example, 2810 use ``${sysconfdir}`` rather than ``/etc``, or ``${bindir}`` 2811 rather than ``/usr/bin``. You can find a list of these 2812 variables at the top of the ``meta/conf/bitbake.conf`` file in 2813 the :term:`Source Directory`. You will also 2814 find the default values of the various ``FILES:*`` variables in 2815 this file. 2816 2817 If some of the files you provide with the :term:`FILES` variable are 2818 editable and you know they should not be overwritten during the 2819 package update process by the Package Management System (PMS), you 2820 can identify these files so that the PMS will not overwrite them. See 2821 the :term:`CONFFILES` variable for information on 2822 how to identify these files to the PMS. 2823 2824 :term:`FILES_SOLIBSDEV` 2825 Defines the file specification to match 2826 :term:`SOLIBSDEV`. In other words, 2827 :term:`FILES_SOLIBSDEV` defines the full path name of the development 2828 symbolic link (symlink) for shared libraries on the target platform. 2829 2830 The following statement from the ``bitbake.conf`` shows how it is 2831 set:: 2832 2833 FILES_SOLIBSDEV ?= "${base_libdir}/lib*${SOLIBSDEV} ${libdir}/lib*${SOLIBSDEV}" 2834 2835 :term:`FILESEXTRAPATHS` 2836 A colon-separated list to extend the search path the OpenEmbedded build 2837 system uses when looking for files and patches as it processes recipes 2838 and append files. The default directories BitBake uses when it processes 2839 recipes are initially defined by the :term:`FILESPATH` variable. You can 2840 extend :term:`FILESPATH` variable by using :term:`FILESEXTRAPATHS`. 2841 2842 Best practices dictate that you accomplish this by using 2843 :term:`FILESEXTRAPATHS` from within a ``.bbappend`` file and that you 2844 prepend paths as follows:: 2845 2846 FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:" 2847 2848 In the above example, the build system first 2849 looks for files in a directory that has the same name as the 2850 corresponding append file. 2851 2852 .. note:: 2853 2854 When extending :term:`FILESEXTRAPATHS`, be sure to use the immediate 2855 expansion (``:=``) operator. Immediate expansion makes sure that 2856 BitBake evaluates :term:`THISDIR` at the time the 2857 directive is encountered rather than at some later time when 2858 expansion might result in a directory that does not contain the 2859 files you need. 2860 2861 Also, include the trailing separating colon character if you are 2862 prepending. The trailing colon character is necessary because you 2863 are directing BitBake to extend the path by prepending directories 2864 to the search path. 2865 2866 Here is another common use:: 2867 2868 FILESEXTRAPATHS:prepend := "${THISDIR}/files:" 2869 2870 In this example, the build system extends the 2871 :term:`FILESPATH` variable to include a directory named ``files`` that is 2872 in the same directory as the corresponding append file. 2873 2874 This next example specifically adds three paths:: 2875 2876 FILESEXTRAPATHS:prepend := "path_1:path_2:path_3:" 2877 2878 A final example shows how you can extend the search path and include 2879 a :term:`MACHINE`-specific override, which is useful 2880 in a BSP layer:: 2881 2882 FILESEXTRAPATHS:prepend:intel-x86-common := "${THISDIR}/${PN}:" 2883 2884 The previous statement appears in the 2885 ``linux-yocto-dev.bbappend`` file, which is found in the 2886 :ref:`overview-manual/development-environment:yocto project source repositories` in 2887 ``meta-intel/common/recipes-kernel/linux``. Here, the machine 2888 override is a special :term:`PACKAGE_ARCH` 2889 definition for multiple ``meta-intel`` machines. 2890 2891 .. note:: 2892 2893 For a layer that supports a single BSP, the override could just be 2894 the value of :term:`MACHINE`. 2895 2896 By prepending paths in ``.bbappend`` files, you allow multiple append 2897 files that reside in different layers but are used for the same 2898 recipe to correctly extend the path. 2899 2900 :term:`FILESOVERRIDES` 2901 A colon-separated list to specify a subset of :term:`OVERRIDES` used by 2902 the OpenEmbedded build system for creating :term:`FILESPATH`. The 2903 :term:`FILESOVERRIDES` variable uses overrides to automatically extend 2904 the :term:`FILESPATH` variable. For an example of how that works, see the 2905 :term:`FILESPATH` variable description. Additionally, you find more 2906 information on how overrides are handled in the 2907 ":ref:`bitbake-user-manual/bitbake-user-manual-metadata:conditional syntax (overrides)`" 2908 section of the BitBake User Manual. 2909 2910 By default, the :term:`FILESOVERRIDES` variable is defined as:: 2911 2912 FILESOVERRIDES = "${TRANSLATED_TARGET_ARCH}:${MACHINEOVERRIDES}:${DISTROOVERRIDES}" 2913 2914 .. note:: 2915 2916 Do not hand-edit the :term:`FILESOVERRIDES` variable. The values match up 2917 with expected overrides and are used in an expected manner by the 2918 build system. 2919 2920 :term:`FILESPATH` 2921 A colon-separated list specifying the default set of directories the 2922 OpenEmbedded build system uses when searching for patches and files. 2923 2924 During the build process, BitBake searches each directory in 2925 :term:`FILESPATH` in the specified order when looking for files and 2926 patches specified by each ``file://`` URI in a recipe's 2927 :term:`SRC_URI` statements. 2928 2929 The default value for the :term:`FILESPATH` variable is defined in the 2930 :ref:`ref-classes-base` class found in ``meta/classes-global`` in the 2931 :term:`Source Directory`:: 2932 2933 FILESPATH = "${@base_set_filespath(["${FILE_DIRNAME}/${BP}", \ 2934 "${FILE_DIRNAME}/${BPN}", "${FILE_DIRNAME}/files"], d)}" 2935 2936 The 2937 :term:`FILESPATH` variable is automatically extended using the overrides 2938 from the :term:`FILESOVERRIDES` variable. 2939 2940 .. note:: 2941 2942 - Do not hand-edit the :term:`FILESPATH` variable. If you want the 2943 build system to look in directories other than the defaults, 2944 extend the :term:`FILESPATH` variable by using the 2945 :term:`FILESEXTRAPATHS` variable. 2946 2947 - Be aware that the default :term:`FILESPATH` directories do not map 2948 to directories in custom layers where append files 2949 (``.bbappend``) are used. If you want the build system to find 2950 patches or files that reside with your append files, you need 2951 to extend the :term:`FILESPATH` variable by using the 2952 :term:`FILESEXTRAPATHS` variable. 2953 2954 You can take advantage of this searching behavior in useful ways. For 2955 example, consider a case where there is the following directory structure 2956 for general and machine-specific configurations:: 2957 2958 files/defconfig 2959 files/MACHINEA/defconfig 2960 files/MACHINEB/defconfig 2961 2962 Also in the example, the :term:`SRC_URI` statement contains 2963 "file://defconfig". Given this scenario, you can set 2964 :term:`MACHINE` to "MACHINEA" and cause the build 2965 system to use files from ``files/MACHINEA``. Set :term:`MACHINE` to 2966 "MACHINEB" and the build system uses files from ``files/MACHINEB``. 2967 Finally, for any machine other than "MACHINEA" and "MACHINEB", the 2968 build system uses files from ``files/defconfig``. 2969 2970 You can find out more about the patching process in the 2971 ":ref:`overview-manual/concepts:patching`" section 2972 in the Yocto Project Overview and Concepts Manual and the 2973 ":ref:`dev-manual/new-recipe:patching code`" section in 2974 the Yocto Project Development Tasks Manual. See the 2975 :ref:`ref-tasks-patch` task as well. 2976 2977 :term:`FILESYSTEM_PERMS_TABLES` 2978 Allows you to define your own file permissions settings table as part 2979 of your configuration for the packaging process. For example, suppose 2980 you need a consistent set of custom permissions for a set of groups 2981 and users across an entire work project. It is best to do this in the 2982 packages themselves but this is not always possible. 2983 2984 By default, the OpenEmbedded build system uses the ``fs-perms.txt``, 2985 which is located in the ``meta/files`` folder in the :term:`Source Directory`. 2986 If you create your own file 2987 permissions setting table, you should place it in your layer or the 2988 distro's layer. 2989 2990 You define the :term:`FILESYSTEM_PERMS_TABLES` variable in the 2991 ``conf/local.conf`` file, which is found in the :term:`Build Directory`, 2992 to point to your custom ``fs-perms.txt``. You can specify more than a 2993 single file permissions setting table. The paths you specify to these 2994 files must be defined within the :term:`BBPATH` variable. 2995 2996 For guidance on how to create your own file permissions settings 2997 table file, examine the existing ``fs-perms.txt``. 2998 2999 :term:`FIT_ADDRESS_CELLS` 3000 Specifies the value of the ``#address-cells`` value for the 3001 description of the FIT image. 3002 3003 The default value is set to "1" by the :ref:`ref-classes-kernel-fitimage` 3004 class, which corresponds to 32 bit addresses. 3005 3006 For platforms that need to set 64 bit addresses, for example in 3007 :term:`UBOOT_LOADADDRESS` and :term:`UBOOT_ENTRYPOINT`, you need to 3008 set this value to "2", as two 32 bit values (cells) will be needed 3009 to represent such addresses. 3010 3011 Here is an example setting "0x400000000" as a load address:: 3012 3013 FIT_ADDRESS_CELLS = "2" 3014 UBOOT_LOADADDRESS= "0x04 0x00000000" 3015 3016 See `more details about #address-cells <https://elinux.org/Device_Tree_Usage#How_Addressing_Works>`__. 3017 3018 :term:`FIT_CONF_DEFAULT_DTB` 3019 Specifies the default device tree binary (dtb) file for a FIT image 3020 when multiple ones are provided. 3021 3022 This variable is used in the :ref:`ref-classes-kernel-fitimage` class. 3023 3024 :term:`FIT_DESC` 3025 Specifies the description string encoded into a FIT image. The 3026 default value is set by the :ref:`ref-classes-kernel-fitimage` class as 3027 follows:: 3028 3029 FIT_DESC ?= "U-Boot fitImage for ${DISTRO_NAME}/${PV}/${MACHINE}" 3030 3031 :term:`FIT_GENERATE_KEYS` 3032 Decides whether to generate the keys for signing the FIT image if 3033 they don't already exist. The keys are created in 3034 :term:`UBOOT_SIGN_KEYDIR`. The default value is set to "0" 3035 by the :ref:`ref-classes-kernel-fitimage` class. 3036 3037 :term:`FIT_HASH_ALG` 3038 Specifies the hash algorithm used in creating the FIT Image. 3039 This variable is set by default to "sha256" by the 3040 :ref:`ref-classes-kernel-fitimage` class. 3041 3042 :term:`FIT_KERNEL_COMP_ALG` 3043 The compression algorithm to use for the kernel image inside the FIT Image. 3044 At present, the only supported values are "gzip" (default), "lzo" or "none". 3045 If you set this variable to anything other than "none" you may also need 3046 to set :term:`FIT_KERNEL_COMP_ALG_EXTENSION`. 3047 3048 This variable is used in the :ref:`ref-classes-kernel-uboot` class. 3049 3050 :term:`FIT_KERNEL_COMP_ALG_EXTENSION` 3051 File extension corresponding to :term:`FIT_KERNEL_COMP_ALG`. The default 3052 value is set ".gz" by the :ref:`ref-classes-kernel-uboot` class. If you 3053 set :term:`FIT_KERNEL_COMP_ALG` to "lzo", you may want to set this 3054 variable to ".lzo". 3055 3056 :term:`FIT_KEY_GENRSA_ARGS` 3057 Arguments to ``openssl genrsa`` for generating a RSA private key for 3058 signing the FIT image. The default value is set to "-F4" by the 3059 :ref:`ref-classes-kernel-fitimage` class. 3060 3061 :term:`FIT_KEY_REQ_ARGS` 3062 Arguments to ``openssl req`` for generating a certificate for signing 3063 the FIT image. The default value is "-batch -new" by the 3064 :ref:`ref-classes-kernel-fitimage` class, "batch" for 3065 non interactive mode and "new" for generating new keys. 3066 3067 :term:`FIT_KEY_SIGN_PKCS` 3068 Format for the public key certificate used for signing the FIT image. 3069 The default value is set to "x509" by the 3070 :ref:`ref-classes-kernel-fitimage` class. 3071 3072 :term:`FIT_SIGN_ALG` 3073 Specifies the signature algorithm used in creating the FIT Image. 3074 This variable is set by default to "rsa2048" by the 3075 :ref:`ref-classes-kernel-fitimage` class. 3076 3077 :term:`FIT_PAD_ALG` 3078 Specifies the padding algorithm used in creating the FIT Image. 3079 The default value is set to "pkcs-1.5" by the 3080 :ref:`ref-classes-kernel-fitimage` class. 3081 3082 :term:`FIT_SIGN_INDIVIDUAL` 3083 If set to "1", then the :ref:`ref-classes-kernel-fitimage` 3084 class will sign the kernel, dtb and ramdisk images individually in addition 3085 to signing the FIT image itself. This could be useful if you are 3086 intending to verify signatures in another context than booting via 3087 U-Boot. 3088 3089 This variable is set to "0" by default. 3090 3091 :term:`FIT_SIGN_NUMBITS` 3092 Size of the private key used in the FIT image, in number of bits. 3093 The default value for this variable is set to "2048" 3094 by the :ref:`ref-classes-kernel-fitimage` class. 3095 3096 :term:`FONT_EXTRA_RDEPENDS` 3097 When inheriting the :ref:`ref-classes-fontcache` class, 3098 this variable specifies the runtime dependencies for font packages. 3099 By default, the :term:`FONT_EXTRA_RDEPENDS` is set to "fontconfig-utils". 3100 3101 :term:`FONT_PACKAGES` 3102 When inheriting the :ref:`ref-classes-fontcache` class, this variable 3103 identifies packages containing font files that need to be cached by 3104 Fontconfig. By default, the :ref:`ref-classes-fontcache` class assumes 3105 that fonts are in the recipe's main package (i.e. 3106 ``${``\ :term:`PN`\ ``}``). Use this variable if fonts you 3107 need are in a package other than that main package. 3108 3109 :term:`FORCE_RO_REMOVE` 3110 Forces the removal of the packages listed in ``ROOTFS_RO_UNNEEDED`` 3111 during the generation of the root filesystem. 3112 3113 Set the variable to "1" to force the removal of these packages. 3114 3115 :term:`FULL_OPTIMIZATION` 3116 The options to pass in :term:`TARGET_CFLAGS` and :term:`CFLAGS` when 3117 compiling an optimized system. This variable defaults to "-O2 -pipe 3118 ${DEBUG_FLAGS}". 3119 3120 :term:`GCCPIE` 3121 Enables Position Independent Executables (PIE) within the GNU C 3122 Compiler (GCC). Enabling PIE in the GCC makes Return Oriented 3123 Programming (ROP) attacks much more difficult to execute. 3124 3125 By default the ``security_flags.inc`` file enables PIE by setting the 3126 variable as follows:: 3127 3128 GCCPIE ?= "--enable-default-pie" 3129 3130 :term:`GCCVERSION` 3131 Specifies the default version of the GNU C Compiler (GCC) used for 3132 compilation. By default, :term:`GCCVERSION` is set to "8.x" in the 3133 ``meta/conf/distro/include/tcmode-default.inc`` include file:: 3134 3135 GCCVERSION ?= "8.%" 3136 3137 You can override this value by setting it in a 3138 configuration file such as the ``local.conf``. 3139 3140 :term:`GDB` 3141 The minimal command and arguments to run the GNU Debugger. 3142 3143 :term:`GIR_EXTRA_LIBS_PATH` 3144 Allows to specify an extra search path for ``.so`` files 3145 in GLib related recipes using GObject introspection, 3146 and which do not compile without this setting. 3147 See the ":ref:`dev-manual/gobject-introspection:enabling gobject introspection support`" 3148 section for details. 3149 3150 :term:`GITDIR` 3151 The directory in which a local copy of a Git repository is stored 3152 when it is cloned. 3153 3154 :term:`GITHUB_BASE_URI` 3155 When inheriting the :ref:`ref-classes-github-releases` 3156 class, specifies the base URL for fetching releases for the github 3157 project you wish to fetch sources from. The default value is as follows:: 3158 3159 GITHUB_BASE_URI ?= "https://github.com/${BPN}/${BPN}/releases/" 3160 3161 :term:`GLIBC_GENERATE_LOCALES` 3162 Specifies the list of GLIBC locales to generate should you not wish 3163 to generate all LIBC locals, which can be time consuming. 3164 3165 .. note:: 3166 3167 If you specifically remove the locale ``en_US.UTF-8``, you must set 3168 :term:`IMAGE_LINGUAS` appropriately. 3169 3170 You can set :term:`GLIBC_GENERATE_LOCALES` in your ``local.conf`` file. 3171 By default, all locales are generated:: 3172 3173 GLIBC_GENERATE_LOCALES = "en_GB.UTF-8 en_US.UTF-8" 3174 3175 :term:`GO_IMPORT` 3176 When inheriting the :ref:`ref-classes-go` class, this mandatory variable 3177 sets the import path for the Go package that will be created for the code 3178 to build. If you have a ``go.mod`` file in the source directory, this 3179 typically matches the path in the ``module`` line in this file. 3180 3181 Other Go programs importing this package will use this path. 3182 3183 Here is an example setting from the 3184 :yocto_git:`go-helloworld_0.1.bb </poky/tree/meta/recipes-extended/go-examples/go-helloworld_0.1.bb>` 3185 recipe:: 3186 3187 GO_IMPORT = "golang.org/x/example" 3188 3189 :term:`GO_INSTALL` 3190 When inheriting the :ref:`ref-classes-go` class, this optional variable 3191 specifies which packages in the sources should be compiled and 3192 installed in the Go build space by the 3193 `go install <https://go.dev/ref/mod#go-install>`__ command. 3194 3195 Here is an example setting from the 3196 :oe_git:`crucible </meta-openembedded/tree/meta-oe/recipes-support/crucible/>` 3197 recipe:: 3198 3199 GO_INSTALL = "\ 3200 ${GO_IMPORT}/cmd/crucible \ 3201 ${GO_IMPORT}/cmd/habtool \ 3202 " 3203 3204 By default, :term:`GO_INSTALL` is defined as:: 3205 3206 GO_INSTALL ?= "${GO_IMPORT}/..." 3207 3208 The ``...`` wildcard means that it will catch all 3209 packages found in the sources. 3210 3211 See the :term:`GO_INSTALL_FILTEROUT` variable for 3212 filtering out unwanted packages from the ones 3213 found from the :term:`GO_INSTALL` value. 3214 3215 :term:`GO_INSTALL_FILTEROUT` 3216 When using the Go "vendor" mechanism to bring in dependencies for a Go 3217 package, the default :term:`GO_INSTALL` setting, which uses the ``...`` 3218 wildcard, will include the vendored packages in the build, which produces 3219 incorrect results. 3220 3221 There are also some Go packages that are structured poorly, so that the 3222 ``...`` wildcard results in building example or test code that should not 3223 be included in the build, or could fail to build. 3224 3225 This optional variable allows for filtering out a subset of the sources. 3226 It defaults to excluding everything under the ``vendor`` subdirectory 3227 under package's main directory. This is the normal location for vendored 3228 packages, but it can be overridden by a recipe to filter out other 3229 subdirectories if needed. 3230 3231 :term:`GO_WORKDIR` 3232 When using Go Modules, the current working directory must be the directory 3233 containing the ``go.mod`` file, or one of its subdirectories. When the 3234 ``go`` tool is used, it will automatically look for the ``go.mod`` file 3235 in the Go working directory or in any parent directory, but not in 3236 subdirectories. 3237 3238 When using the :ref:`ref-classes-go-mod` class to use Go modules, 3239 the optional :term:`GO_WORKDIR` variable, defaulting to the value 3240 of :term:`GO_IMPORT`, allows to specify a different Go working directory. 3241 3242 :term:`GROUPADD_PARAM` 3243 When inheriting the :ref:`ref-classes-useradd` class, 3244 this variable specifies for a package what parameters should be 3245 passed to the ``groupadd`` command if you wish to add a group to the 3246 system when the package is installed. 3247 3248 Here is an example from the ``dbus`` recipe:: 3249 3250 GROUPADD_PARAM:${PN} = "-r netdev" 3251 3252 More than one group can be added by separating each set of different 3253 groups' parameters with a semicolon. 3254 3255 Here is an example adding multiple groups from the ``useradd-example.bb`` 3256 file in the ``meta-skeleton`` layer:: 3257 3258 GROUPADD_PARAM:${PN} = "-g 880 group1; -g 890 group2" 3259 3260 For information on the standard Linux shell command 3261 ``groupadd``, see https://linux.die.net/man/8/groupadd. 3262 3263 :term:`GROUPMEMS_PARAM` 3264 When inheriting the :ref:`ref-classes-useradd` class, 3265 this variable specifies for a package what parameters should be 3266 passed to the ``groupmems`` command if you wish to modify the members 3267 of a group when the package is installed. 3268 3269 For information on the standard Linux shell command ``groupmems``, 3270 see https://linux.die.net/man/8/groupmems. 3271 3272 :term:`GRUB_GFXSERIAL` 3273 Configures the GNU GRand Unified Bootloader (GRUB) to have graphics 3274 and serial in the boot menu. Set this variable to "1" in your 3275 ``local.conf`` or distribution configuration file to enable graphics 3276 and serial in the menu. 3277 3278 See the :ref:`ref-classes-grub-efi` class for more 3279 information on how this variable is used. 3280 3281 :term:`GRUB_OPTS` 3282 Additional options to add to the GNU GRand Unified Bootloader (GRUB) 3283 configuration. Use a semi-colon character (``;``) to separate 3284 multiple options. 3285 3286 The :term:`GRUB_OPTS` variable is optional. See the 3287 :ref:`ref-classes-grub-efi` class for more information 3288 on how this variable is used. 3289 3290 :term:`GRUB_TIMEOUT` 3291 Specifies the timeout before executing the default ``LABEL`` in the 3292 GNU GRand Unified Bootloader (GRUB). 3293 3294 The :term:`GRUB_TIMEOUT` variable is optional. See the 3295 :ref:`ref-classes-grub-efi` class for more information 3296 on how this variable is used. 3297 3298 :term:`GTKIMMODULES_PACKAGES` 3299 When inheriting the :ref:`ref-classes-gtk-immodules-cache` class, 3300 this variable specifies the packages that contain the GTK+ input 3301 method modules being installed when the modules are in packages other 3302 than the main package. 3303 3304 :term:`HGDIR` 3305 See :term:`bitbake:HGDIR` in the BitBake manual. 3306 3307 :term:`HOMEPAGE` 3308 Website where more information about the software the recipe is 3309 building can be found. 3310 3311 :term:`HOST_ARCH` 3312 The name of the target architecture, which is normally the same as 3313 :term:`TARGET_ARCH`. The OpenEmbedded build system 3314 supports many architectures. Here is an example list of architectures 3315 supported. This list is by no means complete as the architecture is 3316 configurable: 3317 3318 - arm 3319 - i586 3320 - x86_64 3321 - powerpc 3322 - powerpc64 3323 - mips 3324 - mipsel 3325 3326 :term:`HOST_CC_ARCH` 3327 Specifies architecture-specific compiler flags that are passed to the 3328 C compiler. 3329 3330 Default initialization for :term:`HOST_CC_ARCH` varies depending on what 3331 is being built: 3332 3333 - :term:`TARGET_CC_ARCH` when building for the 3334 target 3335 3336 - :term:`BUILD_CC_ARCH` when building for the build host (i.e. 3337 ``-native``) 3338 3339 - ``BUILDSDK_CC_ARCH`` when building for an SDK (i.e. 3340 ``nativesdk-``) 3341 3342 :term:`HOST_OS` 3343 Specifies the name of the target operating system, which is normally 3344 the same as the :term:`TARGET_OS`. The variable can 3345 be set to "linux" for ``glibc``-based systems and to "linux-musl" for 3346 ``musl``. For ARM/EABI targets, there are also "linux-gnueabi" and 3347 "linux-musleabi" values possible. 3348 3349 :term:`HOST_PREFIX` 3350 Specifies the prefix for the cross-compile toolchain. :term:`HOST_PREFIX` 3351 is normally the same as :term:`TARGET_PREFIX`. 3352 3353 :term:`HOST_SYS` 3354 Specifies the system, including the architecture and the operating 3355 system, for which the build is occurring in the context of the 3356 current recipe. 3357 3358 The OpenEmbedded build system automatically sets this variable based 3359 on :term:`HOST_ARCH`, 3360 :term:`HOST_VENDOR`, and 3361 :term:`HOST_OS` variables. 3362 3363 .. note:: 3364 3365 You do not need to set the variable yourself. 3366 3367 Consider these two examples: 3368 3369 - Given a native recipe on a 32-bit x86 machine running Linux, the 3370 value is "i686-linux". 3371 3372 - Given a recipe being built for a little-endian MIPS target running 3373 Linux, the value might be "mipsel-linux". 3374 3375 :term:`HOST_VENDOR` 3376 Specifies the name of the vendor. :term:`HOST_VENDOR` is normally the 3377 same as :term:`TARGET_VENDOR`. 3378 3379 :term:`HOSTTOOLS` 3380 A space-separated list (filter) of tools on the build host that 3381 should be allowed to be called from within build tasks. Using this 3382 filter helps reduce the possibility of host contamination. If a tool 3383 specified in the value of :term:`HOSTTOOLS` is not found on the build 3384 host, the OpenEmbedded build system produces an error and the build 3385 is not started. 3386 3387 For additional information, see 3388 :term:`HOSTTOOLS_NONFATAL`. 3389 3390 :term:`HOSTTOOLS_NONFATAL` 3391 A space-separated list (filter) of tools on the build host that 3392 should be allowed to be called from within build tasks. Using this 3393 filter helps reduce the possibility of host contamination. Unlike 3394 :term:`HOSTTOOLS`, the OpenEmbedded build system 3395 does not produce an error if a tool specified in the value of 3396 :term:`HOSTTOOLS_NONFATAL` is not found on the build host. Thus, you can 3397 use :term:`HOSTTOOLS_NONFATAL` to filter optional host tools. 3398 3399 :term:`ICECC_CLASS_DISABLE` 3400 Identifies user classes that you do not want the Icecream distributed 3401 compile support to consider. This variable is used by the 3402 :ref:`ref-classes-icecc` class. You set this variable in 3403 your ``local.conf`` file. 3404 3405 When you list classes using this variable, the recipes inheriting 3406 those classes will not benefit from distributed compilation across 3407 remote hosts. Instead they will be built locally. 3408 3409 :term:`ICECC_DISABLED` 3410 Disables or enables the ``icecc`` (Icecream) function. For more 3411 information on this function and best practices for using this 3412 variable, see the ":ref:`ref-classes-icecc`" 3413 section. 3414 3415 Setting this variable to "1" in your ``local.conf`` disables the 3416 function:: 3417 3418 ICECC_DISABLED ??= "1" 3419 3420 To enable the function, set the variable as follows:: 3421 3422 ICECC_DISABLED = "" 3423 3424 :term:`ICECC_ENV_EXEC` 3425 Points to the ``icecc-create-env`` script that you provide. This 3426 variable is used by the :ref:`ref-classes-icecc` class. You 3427 set this variable in your ``local.conf`` file. 3428 3429 If you do not point to a script that you provide, the OpenEmbedded 3430 build system uses the default script provided by the 3431 :oe_git:`icecc-create-env_0.1.bb 3432 </openembedded-core/tree/meta/recipes-devtools/icecc-create-env/icecc-create-env_0.1.bb>` 3433 recipe, which is a modified version and not the one that comes with 3434 ``icecream``. 3435 3436 :term:`ICECC_PARALLEL_MAKE` 3437 Extra options passed to the ``make`` command during the 3438 :ref:`ref-tasks-compile` task that specify parallel 3439 compilation. This variable usually takes the form of "-j x", where x 3440 represents the maximum number of parallel threads ``make`` can run. 3441 3442 .. note:: 3443 3444 The options passed affect builds on all enabled machines on the 3445 network, which are machines running the ``iceccd`` daemon. 3446 3447 If your enabled machines support multiple cores, coming up with the 3448 maximum number of parallel threads that gives you the best 3449 performance could take some experimentation since machine speed, 3450 network lag, available memory, and existing machine loads can all 3451 affect build time. Consequently, unlike the 3452 :term:`PARALLEL_MAKE` variable, there is no 3453 rule-of-thumb for setting :term:`ICECC_PARALLEL_MAKE` to achieve optimal 3454 performance. 3455 3456 If you do not set :term:`ICECC_PARALLEL_MAKE`, the build system does not 3457 use it (i.e. the system does not detect and assign the number of 3458 cores as is done with :term:`PARALLEL_MAKE`). 3459 3460 :term:`ICECC_PATH` 3461 The location of the ``icecc`` binary. You can set this variable in 3462 your ``local.conf`` file. If your ``local.conf`` file does not define 3463 this variable, the :ref:`ref-classes-icecc` class attempts 3464 to define it by locating ``icecc`` using ``which``. 3465 3466 :term:`ICECC_RECIPE_DISABLE` 3467 Identifies user recipes that you do not want the Icecream distributed 3468 compile support to consider. This variable is used by the 3469 :ref:`ref-classes-icecc` class. You set this variable in 3470 your ``local.conf`` file. 3471 3472 When you list recipes using this variable, you are excluding them 3473 from distributed compilation across remote hosts. Instead they will 3474 be built locally. 3475 3476 :term:`ICECC_RECIPE_ENABLE` 3477 Identifies user recipes that use an empty 3478 :term:`PARALLEL_MAKE` variable that you want to 3479 force remote distributed compilation on using the Icecream 3480 distributed compile support. This variable is used by the 3481 :ref:`ref-classes-icecc` class. You set this variable in 3482 your ``local.conf`` file. 3483 3484 :term:`IMAGE_BASENAME` 3485 The base name of image output files. This variable defaults to the 3486 recipe name (``${``\ :term:`PN`\ ``}``). 3487 3488 :term:`IMAGE_BOOT_FILES` 3489 A space-separated list of files installed into the boot partition 3490 when preparing an image using the Wic tool with the 3491 ``bootimg-partition`` source plugin. By default, 3492 the files are 3493 installed under the same name as the source files. To change the 3494 installed name, separate it from the original name with a semi-colon 3495 (;). Source files need to be located in 3496 :term:`DEPLOY_DIR_IMAGE`. Here are two 3497 examples:: 3498 3499 IMAGE_BOOT_FILES = "u-boot.img uImage;kernel" 3500 IMAGE_BOOT_FILES = "u-boot.${UBOOT_SUFFIX} ${KERNEL_IMAGETYPE}" 3501 3502 Alternatively, source files can be picked up using a glob pattern. In 3503 this case, the destination file must have the same name as the base 3504 name of the source file path. To install files into a directory 3505 within the target location, pass its name after a semi-colon (;). 3506 Here are two examples:: 3507 3508 IMAGE_BOOT_FILES = "bcm2835-bootfiles/*" 3509 IMAGE_BOOT_FILES = "bcm2835-bootfiles/*;boot/" 3510 3511 The first example 3512 installs all files from ``${DEPLOY_DIR_IMAGE}/bcm2835-bootfiles`` 3513 into the root of the target partition. The second example installs 3514 the same files into a ``boot`` directory within the target partition. 3515 3516 You can find information on how to use the Wic tool in the 3517 ":ref:`dev-manual/wic:creating partitioned images using wic`" 3518 section of the Yocto Project Development Tasks Manual. Reference 3519 material for Wic is located in the 3520 ":doc:`/ref-manual/kickstart`" chapter. 3521 3522 :term:`IMAGE_BUILDINFO_FILE` 3523 When using the :ref:`ref-classes-image-buildinfo` class, 3524 specifies the file in the image to write the build information into. The 3525 default value is "``${sysconfdir}/buildinfo``". 3526 3527 :term:`IMAGE_BUILDINFO_VARS` 3528 When using the :ref:`ref-classes-image-buildinfo` class, 3529 specifies the list of variables to include in the `Build Configuration` 3530 section of the output file (as a space-separated list). Defaults to 3531 ":term:`DISTRO` :term:`DISTRO_VERSION`". 3532 3533 :term:`IMAGE_CLASSES` 3534 A list of classes that all images should inherit. This is typically used 3535 to enable functionality across all image recipes. 3536 3537 Classes specified in :term:`IMAGE_CLASSES` must be located in the 3538 ``classes-recipe/`` or ``classes/`` subdirectories. 3539 3540 :term:`IMAGE_CMD` 3541 Specifies the command to create the image file for a specific image 3542 type, which corresponds to the value set in 3543 :term:`IMAGE_FSTYPES`, (e.g. ``ext3``, 3544 ``btrfs``, and so forth). When setting this variable, you should use 3545 an override for the associated type. Here is an example:: 3546 3547 IMAGE_CMD:jffs2 = "mkfs.jffs2 --root=${IMAGE_ROOTFS} --faketime \ 3548 --output=${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.jffs2 \ 3549 ${EXTRA_IMAGECMD}" 3550 3551 You typically do not need to set this variable unless you are adding 3552 support for a new image type. For more examples on how to set this 3553 variable, see the :ref:`ref-classes-image_types` 3554 class file, which is ``meta/classes-recipe/image_types.bbclass``. 3555 3556 :term:`IMAGE_DEVICE_TABLES` 3557 Specifies one or more files that contain custom device tables that 3558 are passed to the ``makedevs`` command as part of creating an image. 3559 These files list basic device nodes that should be created under 3560 ``/dev`` within the image. If :term:`IMAGE_DEVICE_TABLES` is not set, 3561 ``files/device_table-minimal.txt`` is used, which is located by 3562 :term:`BBPATH`. For details on how you should write 3563 device table files, see ``meta/files/device_table-minimal.txt`` as an 3564 example. 3565 3566 :term:`IMAGE_EFI_BOOT_FILES` 3567 A space-separated list of files installed into the boot partition 3568 when preparing an image using the Wic tool with the 3569 ``bootimg-efi`` source plugin. By default, 3570 the files are 3571 installed under the same name as the source files. To change the 3572 installed name, separate it from the original name with a semi-colon 3573 (;). Source files need to be located in 3574 :term:`DEPLOY_DIR_IMAGE`. Here are two 3575 examples:: 3576 3577 IMAGE_EFI_BOOT_FILES = "${KERNEL_IMAGETYPE};bz2" 3578 IMAGE_EFI_BOOT_FILES = "${KERNEL_IMAGETYPE} microcode.cpio" 3579 3580 Alternatively, source files can be picked up using a glob pattern. In 3581 this case, the destination file must have the same name as the base 3582 name of the source file path. To install files into a directory 3583 within the target location, pass its name after a semi-colon (;). 3584 Here are two examples:: 3585 3586 IMAGE_EFI_BOOT_FILES = "boot/loader/*" 3587 IMAGE_EFI_BOOT_FILES = "boot/loader/*;boot/" 3588 3589 The first example 3590 installs all files from ``${DEPLOY_DIR_IMAGE}/boot/loader/`` 3591 into the root of the target partition. The second example installs 3592 the same files into a ``boot`` directory within the target partition. 3593 3594 You can find information on how to use the Wic tool in the 3595 ":ref:`dev-manual/wic:creating partitioned images using wic`" 3596 section of the Yocto Project Development Tasks Manual. Reference 3597 material for Wic is located in the 3598 ":doc:`/ref-manual/kickstart`" chapter. 3599 3600 :term:`IMAGE_FEATURES` 3601 The primary list of features to include in an image. Typically, you 3602 configure this variable in an image recipe. Although you can use this 3603 variable from your ``local.conf`` file, which is found in the 3604 :term:`Build Directory`, best practices dictate that you do 3605 not. 3606 3607 .. note:: 3608 3609 To enable extra features from outside the image recipe, use the 3610 :term:`EXTRA_IMAGE_FEATURES` variable. 3611 3612 For a list of image features that ships with the Yocto Project, see 3613 the ":ref:`ref-features-image`" section. 3614 3615 For an example that shows how to customize your image by using this 3616 variable, see the ":ref:`dev-manual/customizing-images:customizing images using custom \`\`image_features\`\` and \`\`extra_image_features\`\``" 3617 section in the Yocto Project Development Tasks Manual. 3618 3619 :term:`IMAGE_FSTYPES` 3620 Specifies the formats the OpenEmbedded build system uses during the 3621 build when creating the root filesystem. For example, setting 3622 :term:`IMAGE_FSTYPES` as follows causes the build system to create root 3623 filesystems using two formats: ``.ext3`` and ``.tar.bz2``:: 3624 3625 IMAGE_FSTYPES = "ext3 tar.bz2" 3626 3627 For the complete list of supported image formats from which you can 3628 choose, see :term:`IMAGE_TYPES`. 3629 3630 .. note:: 3631 3632 - If an image recipe uses the "inherit image" line and you are 3633 setting :term:`IMAGE_FSTYPES` inside the recipe, you must set 3634 :term:`IMAGE_FSTYPES` prior to using the "inherit image" line. 3635 3636 - Due to the way the OpenEmbedded build system processes this 3637 variable, you cannot update its contents by using ``:append`` 3638 or ``:prepend``. You must use the ``+=`` operator to add one or 3639 more options to the :term:`IMAGE_FSTYPES` variable. 3640 3641 :term:`IMAGE_INSTALL` 3642 Used by recipes to specify the packages to install into an image 3643 through the :ref:`ref-classes-image` class. Use the 3644 :term:`IMAGE_INSTALL` variable with care to avoid ordering issues. 3645 3646 Image recipes set :term:`IMAGE_INSTALL` to specify the packages to 3647 install into an image through :ref:`ref-classes-image`. Additionally, 3648 there are "helper" classes such as the :ref:`ref-classes-core-image` 3649 class which can take lists used with :term:`IMAGE_FEATURES` and turn 3650 them into auto-generated entries in :term:`IMAGE_INSTALL` in addition 3651 to its default contents. 3652 3653 When you use this variable, it is best to use it as follows:: 3654 3655 IMAGE_INSTALL:append = " package-name" 3656 3657 Be sure to include the space 3658 between the quotation character and the start of the package name or 3659 names. 3660 3661 .. note:: 3662 3663 - When working with a 3664 :ref:`core-image-minimal-initramfs <ref-manual/images:images>` 3665 image, do not use the :term:`IMAGE_INSTALL` variable to specify 3666 packages for installation. Instead, use the 3667 :term:`PACKAGE_INSTALL` variable, which 3668 allows the initial RAM filesystem (:term:`Initramfs`) recipe to use a 3669 fixed set of packages and not be affected by :term:`IMAGE_INSTALL`. 3670 For information on creating an :term:`Initramfs`, see the 3671 ":ref:`dev-manual/building:building an initial ram filesystem (Initramfs) image`" 3672 section in the Yocto Project Development Tasks Manual. 3673 3674 - Using :term:`IMAGE_INSTALL` with the 3675 :ref:`+= <bitbake-user-manual/bitbake-user-manual-metadata:appending (+=) and prepending (=+) with spaces>` 3676 BitBake operator within the ``/conf/local.conf`` file or from 3677 within an image recipe is not recommended. Use of this operator in 3678 these ways can cause ordering issues. Since 3679 :ref:`ref-classes-core-image` sets :term:`IMAGE_INSTALL` to a 3680 default value using the 3681 :ref:`?= <bitbake-user-manual/bitbake-user-manual-metadata:setting a default value (?=)>` 3682 operator, using a ``+=`` operation against :term:`IMAGE_INSTALL` 3683 results in unexpected behavior when used within 3684 ``conf/local.conf``. Furthermore, the same operation from within an 3685 image recipe may or may not succeed depending on the specific 3686 situation. In both these cases, the behavior is contrary to how 3687 most users expect the ``+=`` operator to work. 3688 3689 :term:`IMAGE_LINGUAS` 3690 Specifies the list of locales to install into the image during the 3691 root filesystem construction process. The OpenEmbedded build system 3692 automatically splits locale files, which are used for localization, 3693 into separate packages. Setting the :term:`IMAGE_LINGUAS` variable 3694 ensures that any locale packages that correspond to packages already 3695 selected for installation into the image are also installed. Here is 3696 an example:: 3697 3698 IMAGE_LINGUAS = "pt-br de-de" 3699 3700 In this example, the build system ensures any Brazilian Portuguese 3701 and German locale files that correspond to packages in the image are 3702 installed (i.e. ``*-locale-pt-br`` and ``*-locale-de-de`` as well as 3703 ``*-locale-pt`` and ``*-locale-de``, since some software packages 3704 only provide locale files by language and not by country-specific 3705 language). 3706 3707 See the :term:`GLIBC_GENERATE_LOCALES` 3708 variable for information on generating GLIBC locales. 3709 3710 3711 :term:`IMAGE_LINK_NAME` 3712 The name of the output image symlink (which does not include 3713 the version part as :term:`IMAGE_NAME` does). The default value 3714 is derived using the :term:`IMAGE_BASENAME` and 3715 :term:`IMAGE_MACHINE_SUFFIX` variables:: 3716 3717 IMAGE_LINK_NAME ?= "${IMAGE_BASENAME}${IMAGE_MACHINE_SUFFIX}" 3718 3719 .. note:: 3720 3721 It is possible to set this to "" to disable symlink creation, 3722 however, you also need to set :term:`IMAGE_NAME` to still have 3723 a reasonable value e.g.:: 3724 3725 IMAGE_LINK_NAME = "" 3726 IMAGE_NAME = "${IMAGE_BASENAME}${IMAGE_MACHINE_SUFFIX}${IMAGE_VERSION_SUFFIX}" 3727 3728 :term:`IMAGE_MACHINE_SUFFIX` 3729 Specifies the by default machine-specific suffix for image file names 3730 (before the extension). The default value is set as follows:: 3731 3732 IMAGE_MACHINE_SUFFIX ??= "-${MACHINE}" 3733 3734 The default :term:`DEPLOY_DIR_IMAGE` already has a :term:`MACHINE` 3735 subdirectory, so you may find it unnecessary to also include this suffix 3736 in the name of every image file. If you prefer to remove the suffix you 3737 can set this variable to an empty string:: 3738 3739 IMAGE_MACHINE_SUFFIX = "" 3740 3741 (Not to be confused with :term:`IMAGE_NAME_SUFFIX`.) 3742 3743 :term:`IMAGE_MANIFEST` 3744 The manifest file for the image. This file lists all the installed 3745 packages that make up the image. The file contains package 3746 information on a line-per-package basis as follows:: 3747 3748 packagename packagearch version 3749 3750 The :ref:`rootfs-postcommands <ref-classes-rootfs*>` class defines the manifest 3751 file as follows:: 3752 3753 IMAGE_MANIFEST ="${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.manifest" 3754 3755 The location is 3756 derived using the :term:`IMGDEPLOYDIR` 3757 and :term:`IMAGE_NAME` variables. You can find 3758 information on how the image is created in the ":ref:`overview-manual/concepts:image generation`" 3759 section in the Yocto Project Overview and Concepts Manual. 3760 3761 :term:`IMAGE_NAME` 3762 The name of the output image files minus the extension. By default 3763 this variable is set using the :term:`IMAGE_LINK_NAME`, and 3764 :term:`IMAGE_VERSION_SUFFIX` variables:: 3765 3766 IMAGE_NAME ?= "${IMAGE_LINK_NAME}${IMAGE_VERSION_SUFFIX}" 3767 3768 :term:`IMAGE_NAME_SUFFIX` 3769 Suffix used for the image output filename --- defaults to ``".rootfs"`` 3770 to distinguish the image file from other files created during image 3771 building; however if this suffix is redundant or not desired you can 3772 clear the value of this variable (set the value to ""). For example, 3773 this is typically cleared in :term:`Initramfs` image recipes. 3774 3775 :term:`IMAGE_OVERHEAD_FACTOR` 3776 Defines a multiplier that the build system applies to the initial 3777 image size for cases when the multiplier times the returned disk 3778 usage value for the image is greater than the sum of 3779 :term:`IMAGE_ROOTFS_SIZE` and :term:`IMAGE_ROOTFS_EXTRA_SPACE`. The result of 3780 the multiplier applied to the initial image size creates free disk 3781 space in the image as overhead. By default, the build process uses a 3782 multiplier of 1.3 for this variable. This default value results in 3783 30% free disk space added to the image when this method is used to 3784 determine the final generated image size. You should be aware that 3785 post install scripts and the package management system uses disk 3786 space inside this overhead area. Consequently, the multiplier does 3787 not produce an image with all the theoretical free disk space. See 3788 :term:`IMAGE_ROOTFS_SIZE` for information on how the build system 3789 determines the overall image size. 3790 3791 The default 30% free disk space typically gives the image enough room 3792 to boot and allows for basic post installs while still leaving a 3793 small amount of free disk space. If 30% free space is inadequate, you 3794 can increase the default value. For example, the following setting 3795 gives you 50% free space added to the image:: 3796 3797 IMAGE_OVERHEAD_FACTOR = "1.5" 3798 3799 Alternatively, you can ensure a specific amount of free disk space is 3800 added to the image by using the :term:`IMAGE_ROOTFS_EXTRA_SPACE` 3801 variable. 3802 3803 :term:`IMAGE_PKGTYPE` 3804 Defines the package type (i.e. DEB, RPM, IPK, or TAR) used by the 3805 OpenEmbedded build system. The variable is defined appropriately by 3806 the :ref:`ref-classes-package_deb`, :ref:`ref-classes-package_rpm`, 3807 or :ref:`ref-classes-package_ipk` class. 3808 3809 The :ref:`ref-classes-populate-sdk-*` and :ref:`ref-classes-image` 3810 classes use the :term:`IMAGE_PKGTYPE` for packaging up images and SDKs. 3811 3812 You should not set the :term:`IMAGE_PKGTYPE` manually. Rather, the 3813 variable is set indirectly through the appropriate 3814 :ref:`package_* <ref-classes-package>` class using the 3815 :term:`PACKAGE_CLASSES` variable. The 3816 OpenEmbedded build system uses the first package type (e.g. DEB, RPM, 3817 or IPK) that appears with the variable 3818 3819 .. note:: 3820 3821 Files using the ``.tar`` format are never used as a substitute 3822 packaging format for DEB, RPM, and IPK formatted files for your image 3823 or SDK. 3824 3825 :term:`IMAGE_POSTPROCESS_COMMAND` 3826 Specifies a list of functions to call once the OpenEmbedded build 3827 system creates the final image output files. You can specify 3828 functions separated by spaces:: 3829 3830 IMAGE_POSTPROCESS_COMMAND += "function" 3831 3832 If you need to pass the root filesystem path to a command within the 3833 function, you can use ``${IMAGE_ROOTFS}``, which points to the 3834 directory that becomes the root filesystem image. See the 3835 :term:`IMAGE_ROOTFS` variable for more 3836 information. 3837 3838 :term:`IMAGE_PREPROCESS_COMMAND` 3839 Specifies a list of functions to call before the OpenEmbedded build 3840 system creates the final image output files. You can specify 3841 functions separated by spaces:: 3842 3843 IMAGE_PREPROCESS_COMMAND += "function" 3844 3845 If you need to pass the root filesystem path to a command within the 3846 function, you can use ``${IMAGE_ROOTFS}``, which points to the 3847 directory that becomes the root filesystem image. See the 3848 :term:`IMAGE_ROOTFS` variable for more 3849 information. 3850 3851 :term:`IMAGE_ROOTFS` 3852 The location of the root filesystem while it is under construction 3853 (i.e. during the :ref:`ref-tasks-rootfs` task). This 3854 variable is not configurable. Do not change it. 3855 3856 :term:`IMAGE_ROOTFS_ALIGNMENT` 3857 Specifies the alignment for the output image file in Kbytes. If the 3858 size of the image is not a multiple of this value, then the size is 3859 rounded up to the nearest multiple of the value. The default value is 3860 "1". See :term:`IMAGE_ROOTFS_SIZE` for 3861 additional information. 3862 3863 :term:`IMAGE_ROOTFS_EXTRA_SPACE` 3864 Defines additional free disk space created in the image in Kbytes. By 3865 default, this variable is set to "0". This free disk space is added 3866 to the image after the build system determines the image size as 3867 described in :term:`IMAGE_ROOTFS_SIZE`. 3868 3869 This variable is particularly useful when you want to ensure that a 3870 specific amount of free disk space is available on a device after an 3871 image is installed and running. For example, to be sure 5 Gbytes of 3872 free disk space is available, set the variable as follows:: 3873 3874 IMAGE_ROOTFS_EXTRA_SPACE = "5242880" 3875 3876 For example, the Yocto Project Build Appliance specifically requests 3877 40 Gbytes of extra space with the line:: 3878 3879 IMAGE_ROOTFS_EXTRA_SPACE = "41943040" 3880 3881 :term:`IMAGE_ROOTFS_SIZE` 3882 Defines the size in Kbytes for the generated image. The OpenEmbedded 3883 build system determines the final size for the generated image using 3884 an algorithm that takes into account the initial disk space used for 3885 the generated image, a requested size for the image, and requested 3886 additional free disk space to be added to the image. Programatically, 3887 the build system determines the final size of the generated image as 3888 follows:: 3889 3890 if (image-du * overhead) < rootfs-size: 3891 internal-rootfs-size = rootfs-size + xspace 3892 else: 3893 internal-rootfs-size = (image-du * overhead) + xspace 3894 where: 3895 image-du = Returned value of the du command on the image. 3896 overhead = IMAGE_OVERHEAD_FACTOR 3897 rootfs-size = IMAGE_ROOTFS_SIZE 3898 internal-rootfs-size = Initial root filesystem size before any modifications. 3899 xspace = IMAGE_ROOTFS_EXTRA_SPACE 3900 3901 See the :term:`IMAGE_OVERHEAD_FACTOR` 3902 and :term:`IMAGE_ROOTFS_EXTRA_SPACE` 3903 variables for related information. 3904 3905 :term:`IMAGE_TYPEDEP` 3906 Specifies a dependency from one image type on another. Here is an 3907 example from the :ref:`ref-classes-image-live` class:: 3908 3909 IMAGE_TYPEDEP:live = "ext3" 3910 3911 In the previous example, the variable ensures that when "live" is 3912 listed with the :term:`IMAGE_FSTYPES` variable, 3913 the OpenEmbedded build system produces an ``ext3`` image first since 3914 one of the components of the live image is an ``ext3`` formatted 3915 partition containing the root filesystem. 3916 3917 :term:`IMAGE_TYPES` 3918 Specifies the complete list of supported image types by default: 3919 3920 - btrfs 3921 - container 3922 - cpio 3923 - cpio.gz 3924 - cpio.lz4 3925 - cpio.lzma 3926 - cpio.xz 3927 - cramfs 3928 - erofs 3929 - erofs-lz4 3930 - erofs-lz4hc 3931 - ext2 3932 - ext2.bz2 3933 - ext2.gz 3934 - ext2.lzma 3935 - ext3 3936 - ext3.gz 3937 - ext4 3938 - ext4.gz 3939 - f2fs 3940 - hddimg 3941 - iso 3942 - jffs2 3943 - jffs2.sum 3944 - multiubi 3945 - squashfs 3946 - squashfs-lz4 3947 - squashfs-lzo 3948 - squashfs-xz 3949 - tar 3950 - tar.bz2 3951 - tar.gz 3952 - tar.lz4 3953 - tar.xz 3954 - tar.zst 3955 - ubi 3956 - ubifs 3957 - wic 3958 - wic.bz2 3959 - wic.gz 3960 - wic.lzma 3961 3962 For more information about these types of images, see 3963 ``meta/classes-recipe/image_types*.bbclass`` in the :term:`Source Directory`. 3964 3965 :term:`IMAGE_VERSION_SUFFIX` 3966 Version suffix that is part of the default :term:`IMAGE_NAME` and 3967 :term:`KERNEL_ARTIFACT_NAME` values. 3968 Defaults to ``"-${DATETIME}"``, however you could set this to a 3969 version string that comes from your external build environment if 3970 desired, and this suffix would then be used consistently across 3971 the build artifacts. 3972 3973 :term:`IMGDEPLOYDIR` 3974 When inheriting the :ref:`ref-classes-image` class directly or 3975 through the :ref:`ref-classes-core-image` class, the 3976 :term:`IMGDEPLOYDIR` points to a temporary work area for deployed files 3977 that is set in the ``image`` class as follows:: 3978 3979 IMGDEPLOYDIR = "${WORKDIR}/deploy-${PN}-image-complete" 3980 3981 Recipes inheriting the :ref:`ref-classes-image` class should copy 3982 files to be deployed into :term:`IMGDEPLOYDIR`, and the class will take 3983 care of copying them into :term:`DEPLOY_DIR_IMAGE` afterwards. 3984 3985 :term:`INCOMPATIBLE_LICENSE` 3986 Specifies a space-separated list of license names (as they would 3987 appear in :term:`LICENSE`) that should be excluded 3988 from the build (if set globally), or from an image (if set locally 3989 in an image recipe). 3990 3991 When the variable is set globally, recipes that provide no alternatives to listed 3992 incompatible licenses are not built. Packages that are individually 3993 licensed with the specified incompatible licenses will be deleted. 3994 Most of the time this does not allow a feasible build (because it becomes impossible 3995 to satisfy build time dependencies), so the recommended way to 3996 implement license restrictions is to set the variable in specific 3997 image recipes where the restrictions must apply. That way there 3998 are no build time restrictions, but the license check is still 3999 performed when the image's filesystem is assembled from packages. 4000 4001 There is some support for wildcards in this variable's value, 4002 however it is restricted to specific licenses. Currently only 4003 these wildcards are allowed and expand as follows: 4004 4005 - ``AGPL-3.0*"``: ``AGPL-3.0-only``, ``AGPL-3.0-or-later`` 4006 - ``GPL-3.0*``: ``GPL-3.0-only``, ``GPL-3.0-or-later`` 4007 - ``LGPL-3.0*``: ``LGPL-3.0-only``, ``LGPL-3.0-or-later`` 4008 4009 .. note:: 4010 4011 This functionality is only regularly tested using the following 4012 setting:: 4013 4014 INCOMPATIBLE_LICENSE = "GPL-3.0* LGPL-3.0* AGPL-3.0*" 4015 4016 4017 Although you can use other settings, you might be required to 4018 remove dependencies on (or provide alternatives to) components that 4019 are required to produce a functional system image. 4020 4021 :term:`INCOMPATIBLE_LICENSE_EXCEPTIONS` 4022 Specifies a space-separated list of package and license pairs that 4023 are allowed to be used even if the license is specified in 4024 :term:`INCOMPATIBLE_LICENSE`. The package and license pairs are 4025 separated using a colon. Example:: 4026 4027 INCOMPATIBLE_LICENSE_EXCEPTIONS = "gdbserver:GPL-3.0-only gdbserver:LGPL-3.0-only" 4028 4029 :term:`INHERIT` 4030 Causes the named class or classes to be inherited globally. Anonymous 4031 functions in the class or classes are not executed for the base 4032 configuration and in each individual recipe. The OpenEmbedded build 4033 system ignores changes to :term:`INHERIT` in individual recipes. 4034 Classes inherited using :term:`INHERIT` must be located in the 4035 ``classes-global/`` or ``classes/`` subdirectories. 4036 4037 For more information on :term:`INHERIT`, see the 4038 :ref:`bitbake-user-manual/bitbake-user-manual-metadata:\`\`inherit\`\` configuration directive`" 4039 section in the BitBake User Manual. 4040 4041 :term:`INHERIT_DISTRO` 4042 Lists classes that will be inherited at the distribution level. It is 4043 unlikely that you want to edit this variable. 4044 4045 Classes specified in :term:`INHERIT_DISTRO` must be located in the 4046 ``classes-global/`` or ``classes/`` subdirectories. 4047 4048 The default value of the variable is set as follows in the 4049 ``meta/conf/distro/defaultsetup.conf`` file:: 4050 4051 INHERIT_DISTRO ?= "debian devshell sstate license remove-libtool create-spdx" 4052 4053 :term:`INHIBIT_DEFAULT_DEPS` 4054 Prevents the default dependencies, namely the C compiler and standard 4055 C library (libc), from being added to :term:`DEPENDS`. 4056 This variable is usually used within recipes that do not require any 4057 compilation using the C compiler. 4058 4059 Set the variable to "1" to prevent the default dependencies from 4060 being added. 4061 4062 :term:`INHIBIT_PACKAGE_DEBUG_SPLIT` 4063 Prevents the OpenEmbedded build system from splitting out debug 4064 information during packaging. By default, the build system splits out 4065 debugging information during the 4066 :ref:`ref-tasks-package` task. For more information on 4067 how debug information is split out, see the 4068 :term:`PACKAGE_DEBUG_SPLIT_STYLE` 4069 variable. 4070 4071 To prevent the build system from splitting out debug information 4072 during packaging, set the :term:`INHIBIT_PACKAGE_DEBUG_SPLIT` variable as 4073 follows:: 4074 4075 INHIBIT_PACKAGE_DEBUG_SPLIT = "1" 4076 4077 :term:`INHIBIT_PACKAGE_STRIP` 4078 If set to "1", causes the build to not strip binaries in resulting 4079 packages and prevents the ``-dbg`` package from containing the source 4080 files. 4081 4082 By default, the OpenEmbedded build system strips binaries and puts 4083 the debugging symbols into ``${``\ :term:`PN`\ ``}-dbg``. 4084 Consequently, you should not set :term:`INHIBIT_PACKAGE_STRIP` when you 4085 plan to debug in general. 4086 4087 :term:`INHIBIT_SYSROOT_STRIP` 4088 If set to "1", causes the build to not strip binaries in the 4089 resulting sysroot. 4090 4091 By default, the OpenEmbedded build system strips binaries in the 4092 resulting sysroot. When you specifically set the 4093 :term:`INHIBIT_SYSROOT_STRIP` variable to "1" in your recipe, you inhibit 4094 this stripping. 4095 4096 If you want to use this variable, include the :ref:`ref-classes-staging` 4097 class. This class uses a ``sys_strip()`` function to test for the variable 4098 and acts accordingly. 4099 4100 .. note:: 4101 4102 Use of the :term:`INHIBIT_SYSROOT_STRIP` variable occurs in rare and 4103 special circumstances. For example, suppose you are building 4104 bare-metal firmware by using an external GCC toolchain. Furthermore, 4105 even if the toolchain's binaries are strippable, there are other files 4106 needed for the build that are not strippable. 4107 4108 :term:`INIT_MANAGER` 4109 Specifies the system init manager to use. Available options are: 4110 4111 - ``sysvinit`` 4112 - ``systemd`` 4113 - ``mdev-busybox`` 4114 4115 With ``sysvinit``, the init manager is set to 4116 :wikipedia:`SysVinit <Init#SysV-style>`, the traditional UNIX init 4117 system. This is the default choice in the Poky distribution, together with 4118 the Udev device manager (see the ":ref:`device-manager`" section). 4119 4120 With ``systemd``, the init manager becomes :wikipedia:`systemd <Systemd>`, 4121 which comes with the :wikipedia:`udev <Udev>` device manager. 4122 4123 With ``mdev-busybox``, the init manager becomes the much simpler BusyBox 4124 init, together with the BusyBox mdev device manager. This is the simplest 4125 and lightest solution, and probably the best choice for low-end systems 4126 with a rather slow CPU and a limited amount of RAM. 4127 4128 More concretely, this is used to include 4129 ``conf/distro/include/init-manager-${INIT_MANAGER}.inc`` into the global 4130 configuration. You can have a look at the 4131 :yocto_git:`meta/conf/distro/include/init-manager-*.inc </poky/tree/meta/conf/distro/include>` 4132 files for more information, and also the ":ref:`init-manager`" 4133 section in the Yocto Project Development Tasks Manual. 4134 4135 :term:`INITRAMFS_DEPLOY_DIR_IMAGE` 4136 Indicates the deploy directory used by :ref:`ref-tasks-bundle_initramfs` 4137 where the :term:`INITRAMFS_IMAGE` will be fetched from. This variable is 4138 set by default to ``${DEPLOY_DIR_IMAGE}`` in the 4139 :ref:`ref-classes-kernel` class and it's only meant to be changed when 4140 building an :term:`Initramfs` image from a separate multiconfig via 4141 :term:`INITRAMFS_MULTICONFIG`. 4142 4143 :term:`INITRAMFS_FSTYPES` 4144 Defines the format for the output image of an initial RAM filesystem 4145 (:term:`Initramfs`), which is used during boot. Supported formats are the 4146 same as those supported by the 4147 :term:`IMAGE_FSTYPES` variable. 4148 4149 The default value of this variable, which is set in the 4150 ``meta/conf/bitbake.conf`` configuration file in the 4151 :term:`Source Directory`, is "cpio.gz". The Linux kernel's 4152 :term:`Initramfs` mechanism, as opposed to the initial RAM filesystem 4153 :wikipedia:`initrd <Initrd>` mechanism, expects 4154 an optionally compressed cpio archive. 4155 4156 :term:`INITRAMFS_IMAGE` 4157 Specifies the :term:`PROVIDES` name of an image 4158 recipe that is used to build an initial RAM filesystem (:term:`Initramfs`) 4159 image. In other words, the :term:`INITRAMFS_IMAGE` variable causes an 4160 additional recipe to be built as a dependency to whatever root 4161 filesystem recipe you might be using (e.g. ``core-image-sato``). The 4162 :term:`Initramfs` image recipe you provide should set 4163 :term:`IMAGE_FSTYPES` to 4164 :term:`INITRAMFS_FSTYPES`. 4165 4166 An :term:`Initramfs` image provides a temporary root filesystem used for 4167 early system initialization (e.g. loading of modules needed to locate 4168 and mount the "real" root filesystem). 4169 4170 .. note:: 4171 4172 See the ``meta/recipes-core/images/core-image-minimal-initramfs.bb`` 4173 recipe in the :term:`Source Directory` 4174 for an example :term:`Initramfs` recipe. To select this sample recipe as 4175 the one built to provide the :term:`Initramfs` image, set :term:`INITRAMFS_IMAGE` 4176 to "core-image-minimal-initramfs". 4177 4178 You can also find more information by referencing the 4179 ``meta-poky/conf/templates/default/local.conf.sample.extended`` 4180 configuration file in the Source Directory, the :ref:`ref-classes-image` 4181 class, and the :ref:`ref-classes-kernel` class to see how to use the 4182 :term:`INITRAMFS_IMAGE` variable. 4183 4184 If :term:`INITRAMFS_IMAGE` is empty, which is the default, then no 4185 :term:`Initramfs` image is built. 4186 4187 For more information, you can also see the 4188 :term:`INITRAMFS_IMAGE_BUNDLE` 4189 variable, which allows the generated image to be bundled inside the 4190 kernel image. Additionally, for information on creating an :term:`Initramfs` 4191 image, see the ":ref:`dev-manual/building:building an initial ram filesystem (Initramfs) image`" section 4192 in the Yocto Project Development Tasks Manual. 4193 4194 :term:`INITRAMFS_IMAGE_BUNDLE` 4195 Controls whether or not the image recipe specified by 4196 :term:`INITRAMFS_IMAGE` is run through an 4197 extra pass 4198 (:ref:`ref-tasks-bundle_initramfs`) during 4199 kernel compilation in order to build a single binary that contains 4200 both the kernel image and the initial RAM filesystem (:term:`Initramfs`) 4201 image. This makes use of the 4202 :term:`CONFIG_INITRAMFS_SOURCE` kernel 4203 feature. 4204 4205 .. note:: 4206 4207 Bundling the :term:`Initramfs` with the kernel conflates the code in the 4208 :term:`Initramfs` with the GPLv2 licensed Linux kernel binary. Thus only GPLv2 4209 compatible software may be part of a bundled :term:`Initramfs`. 4210 4211 .. note:: 4212 4213 Using an extra compilation pass to bundle the :term:`Initramfs` avoids a 4214 circular dependency between the kernel recipe and the :term:`Initramfs` 4215 recipe should the :term:`Initramfs` include kernel modules. Should that be 4216 the case, the :term:`Initramfs` recipe depends on the kernel for the 4217 kernel modules, and the kernel depends on the :term:`Initramfs` recipe 4218 since the :term:`Initramfs` is bundled inside the kernel image. 4219 4220 The combined binary is deposited into the ``tmp/deploy`` directory, 4221 which is part of the :term:`Build Directory`. 4222 4223 Setting the variable to "1" in a configuration file causes the 4224 OpenEmbedded build system to generate a kernel image with the 4225 :term:`Initramfs` specified in :term:`INITRAMFS_IMAGE` bundled within:: 4226 4227 INITRAMFS_IMAGE_BUNDLE = "1" 4228 4229 By default, the :ref:`ref-classes-kernel` class sets this variable to a 4230 null string as follows:: 4231 4232 INITRAMFS_IMAGE_BUNDLE ?= "" 4233 4234 .. note:: 4235 4236 You must set the :term:`INITRAMFS_IMAGE_BUNDLE` variable in a 4237 configuration file. You cannot set the variable in a recipe file. 4238 4239 See the 4240 :yocto_git:`local.conf.sample.extended </poky/tree/meta-poky/conf/templates/default/local.conf.sample.extended>` 4241 file for additional information. Also, for information on creating an 4242 :term:`Initramfs`, see the ":ref:`dev-manual/building:building an initial ram filesystem (Initramfs) image`" section 4243 in the Yocto Project Development Tasks Manual. 4244 4245 :term:`INITRAMFS_IMAGE_NAME` 4246 4247 This value needs to stay in sync with :term:`IMAGE_LINK_NAME`, but with 4248 :term:`INITRAMFS_IMAGE` instead of :term:`IMAGE_BASENAME`. The default value 4249 is set as follows: 4250 4251 INITRAMFS_IMAGE_NAME ?= "${@['${INITRAMFS_IMAGE}${IMAGE_MACHINE_SUFFIX}', ''][d.getVar('INITRAMFS_IMAGE') == '']}" 4252 4253 That is, if :term:`INITRAMFS_IMAGE` is set, the value of 4254 :term:`INITRAMFS_IMAGE_NAME` will be set based upon 4255 :term:`INITRAMFS_IMAGE` and :term:`IMAGE_MACHINE_SUFFIX`. 4256 4257 4258 :term:`INITRAMFS_LINK_NAME` 4259 The link name of the initial RAM filesystem image. This variable is 4260 set in the ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as 4261 follows:: 4262 4263 INITRAMFS_LINK_NAME ?= "initramfs-${KERNEL_ARTIFACT_LINK_NAME}" 4264 4265 The value of the 4266 ``KERNEL_ARTIFACT_LINK_NAME`` variable, which is set in the same 4267 file, has the following value:: 4268 4269 KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}" 4270 4271 See the :term:`MACHINE` variable for additional 4272 information. 4273 4274 :term:`INITRAMFS_MULTICONFIG` 4275 Defines the multiconfig to create a multiconfig dependency to be used by 4276 the :ref:`ref-classes-kernel` class. 4277 4278 This allows the kernel to bundle an :term:`INITRAMFS_IMAGE` coming from 4279 a separate multiconfig, this is meant to be used in addition to :term:`INITRAMFS_DEPLOY_DIR_IMAGE`. 4280 4281 For more information on how to bundle an :term:`Initramfs` image from a separate 4282 multiconfig see the ":ref:`dev-manual/building:Bundling an Initramfs Image From a Separate Multiconfig`" 4283 section in the Yocto Project Development Tasks Manual. 4284 4285 :term:`INITRAMFS_NAME` 4286 The base name of the initial RAM filesystem image. This variable is 4287 set in the ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as 4288 follows:: 4289 4290 INITRAMFS_NAME ?= "initramfs-${KERNEL_ARTIFACT_NAME}" 4291 4292 See :term:`KERNEL_ARTIFACT_NAME` for additional information. 4293 4294 :term:`INITRD` 4295 Indicates list of filesystem images to concatenate and use as an 4296 initial RAM disk (``initrd``). 4297 4298 The :term:`INITRD` variable is an optional variable used with the 4299 :ref:`ref-classes-image-live` class. 4300 4301 :term:`INITRD_IMAGE` 4302 When building a "live" bootable image (i.e. when 4303 :term:`IMAGE_FSTYPES` contains "live"), 4304 :term:`INITRD_IMAGE` specifies the image recipe that should be built to 4305 provide the initial RAM disk image. The default value is 4306 "core-image-minimal-initramfs". 4307 4308 See the :ref:`ref-classes-image-live` class for more information. 4309 4310 :term:`INITSCRIPT_NAME` 4311 The filename of the initialization script as installed to 4312 ``${sysconfdir}/init.d``. 4313 4314 This variable is used in recipes when using :ref:`ref-classes-update-rc.d`. 4315 The variable is mandatory. 4316 4317 :term:`INITSCRIPT_PACKAGES` 4318 A list of the packages that contain initscripts. If multiple packages 4319 are specified, you need to append the package name to the other 4320 ``INITSCRIPT_*`` as an override. 4321 4322 This variable is used in recipes when using :ref:`ref-classes-update-rc.d`. 4323 The variable is optional and defaults to the :term:`PN` 4324 variable. 4325 4326 :term:`INITSCRIPT_PARAMS` 4327 Specifies the options to pass to ``update-rc.d``. Here is an example:: 4328 4329 INITSCRIPT_PARAMS = "start 99 5 2 . stop 20 0 1 6 ." 4330 4331 In this example, the script has a runlevel of 99, starts the script 4332 in initlevels 2 and 5, and stops the script in levels 0, 1 and 6. 4333 4334 The variable's default value is "defaults", which is set in the 4335 :ref:`ref-classes-update-rc.d` class. 4336 4337 The value in :term:`INITSCRIPT_PARAMS` is passed through to the 4338 ``update-rc.d`` command. For more information on valid parameters, 4339 please see the ``update-rc.d`` manual page at 4340 https://manpages.debian.org/buster/init-system-helpers/update-rc.d.8.en.html 4341 4342 :term:`INSANE_SKIP` 4343 Specifies the QA checks to skip for a specific package within a 4344 recipe. For example, to skip the check for symbolic link ``.so`` 4345 files in the main package of a recipe, add the following to the 4346 recipe. The package name override must be used, which in this example 4347 is ``${PN}``:: 4348 4349 INSANE_SKIP:${PN} += "dev-so" 4350 4351 See the ":ref:`ref-classes-insane`" section for a 4352 list of the valid QA checks you can specify using this variable. 4353 4354 :term:`INSTALL_TIMEZONE_FILE` 4355 By default, the ``tzdata`` recipe packages an ``/etc/timezone`` file. 4356 Set the :term:`INSTALL_TIMEZONE_FILE` variable to "0" at the 4357 configuration level to disable this behavior. 4358 4359 :term:`IPK_FEED_URIS` 4360 When the IPK backend is in use and package management is enabled on 4361 the target, you can use this variable to set up ``opkg`` in the 4362 target image to point to package feeds on a nominated server. Once 4363 the feed is established, you can perform installations or upgrades 4364 using the package manager at runtime. 4365 4366 :term:`KARCH` 4367 Defines the kernel architecture used when assembling the 4368 configuration. Architectures supported for this release are: 4369 4370 - powerpc 4371 - i386 4372 - x86_64 4373 - arm 4374 - qemu 4375 - mips 4376 4377 You define the :term:`KARCH` variable in the :ref:`kernel-dev/advanced:bsp descriptions`. 4378 4379 :term:`KBRANCH` 4380 A regular expression used by the build process to explicitly identify 4381 the kernel branch that is validated, patched, and configured during a 4382 build. You must set this variable to ensure the exact kernel branch 4383 you want is being used by the build process. 4384 4385 Values for this variable are set in the kernel's recipe file and the 4386 kernel's append file. For example, if you are using the 4387 ``linux-yocto_4.12`` kernel, the kernel recipe file is the 4388 ``meta/recipes-kernel/linux/linux-yocto_4.12.bb`` file. :term:`KBRANCH` 4389 is set as follows in that kernel recipe file:: 4390 4391 KBRANCH ?= "standard/base" 4392 4393 This variable is also used from the kernel's append file to identify 4394 the kernel branch specific to a particular machine or target 4395 hardware. Continuing with the previous kernel example, the kernel's 4396 append file is located in the 4397 BSP layer for a given machine. For example, the append file for the 4398 Beaglebone and generic versions of both 32 and 64-bit IA 4399 machines (``meta-yocto-bsp``) is named 4400 ``meta-yocto-bsp/recipes-kernel/linux/linux-yocto_6.1.bbappend``. 4401 Here are the related statements from that append file:: 4402 4403 KBRANCH:genericx86 = "v6.1/standard/base" 4404 KBRANCH:genericx86-64 = "v6.1/standard/base" 4405 KBRANCH:beaglebone-yocto = "v6.1/standard/beaglebone" 4406 4407 The :term:`KBRANCH` statements 4408 identify the kernel branch to use when building for each supported 4409 BSP. 4410 4411 :term:`KBUILD_DEFCONFIG` 4412 When used with the :ref:`ref-classes-kernel-yocto` 4413 class, specifies an "in-tree" kernel configuration file for use 4414 during a kernel build. 4415 4416 Typically, when using a ``defconfig`` to configure a kernel during a 4417 build, you place the file in your layer in the same manner as you 4418 would place patch files and configuration fragment files (i.e. 4419 "out-of-tree"). However, if you want to use a ``defconfig`` file that 4420 is part of the kernel tree (i.e. "in-tree"), you can use the 4421 :term:`KBUILD_DEFCONFIG` variable and append the 4422 :term:`KMACHINE` variable to point to the 4423 ``defconfig`` file. 4424 4425 To use the variable, set it in the append file for your kernel recipe 4426 using the following form:: 4427 4428 KBUILD_DEFCONFIG:<machine> ?= "defconfig_file" 4429 4430 Here is an example from a "raspberrypi2" :term:`MACHINE` build that uses 4431 a ``defconfig`` file named "bcm2709_defconfig":: 4432 4433 KBUILD_DEFCONFIG:raspberrypi2 = "bcm2709_defconfig" 4434 4435 As an alternative, you can use the following within your append file:: 4436 4437 KBUILD_DEFCONFIG:pn-linux-yocto ?= "defconfig_file" 4438 4439 For more 4440 information on how to use the :term:`KBUILD_DEFCONFIG` variable, see the 4441 ":ref:`kernel-dev/common:using an "in-tree" \`\`defconfig\`\` file`" 4442 section in the Yocto Project Linux Kernel Development Manual. 4443 4444 :term:`KCONFIG_MODE` 4445 When used with the :ref:`ref-classes-kernel-yocto` 4446 class, specifies the kernel configuration values to use for options 4447 not specified in the provided ``defconfig`` file. Valid options are:: 4448 4449 KCONFIG_MODE = "alldefconfig" 4450 KCONFIG_MODE = "allnoconfig" 4451 4452 In ``alldefconfig`` mode the options not explicitly specified will be 4453 assigned their Kconfig default value. In ``allnoconfig`` mode the 4454 options not explicitly specified will be disabled in the kernel 4455 config. 4456 4457 In case :term:`KCONFIG_MODE` is not set the behaviour will depend on where 4458 the ``defconfig`` file is coming from. An "in-tree" ``defconfig`` file 4459 will be handled in ``alldefconfig`` mode, a ``defconfig`` file placed 4460 in ``${WORKDIR}`` through a meta-layer will be handled in 4461 ``allnoconfig`` mode. 4462 4463 An "in-tree" ``defconfig`` file can be selected via the 4464 :term:`KBUILD_DEFCONFIG` variable. :term:`KCONFIG_MODE` does not need to 4465 be explicitly set. 4466 4467 A ``defconfig`` file compatible with ``allnoconfig`` mode can be 4468 generated by copying the ``.config`` file from a working Linux kernel 4469 build, renaming it to ``defconfig`` and placing it into the Linux 4470 kernel ``${WORKDIR}`` through your meta-layer. :term:`KCONFIG_MODE` does 4471 not need to be explicitly set. 4472 4473 A ``defconfig`` file compatible with ``alldefconfig`` mode can be 4474 generated using the 4475 :ref:`ref-tasks-savedefconfig` 4476 task and placed into the Linux kernel ``${WORKDIR}`` through your 4477 meta-layer. Explicitely set :term:`KCONFIG_MODE`:: 4478 4479 KCONFIG_MODE = "alldefconfig" 4480 4481 :term:`KERNEL_ALT_IMAGETYPE` 4482 Specifies an alternate kernel image type for creation in addition to 4483 the kernel image type specified using the :term:`KERNEL_IMAGETYPE` and 4484 :term:`KERNEL_IMAGETYPES` variables. 4485 4486 :term:`KERNEL_ARTIFACT_NAME` 4487 Specifies the name of all of the build artifacts. You can change the 4488 name of the artifacts by changing the :term:`KERNEL_ARTIFACT_NAME` 4489 variable. 4490 4491 The value of :term:`KERNEL_ARTIFACT_NAME`, which is set in the 4492 ``meta/classes-recipe/kernel-artifact-names.bbclass`` file, has the 4493 following default value:: 4494 4495 KERNEL_ARTIFACT_NAME ?= "${PKGE}-${PKGV}-${PKGR}${IMAGE_MACHINE_SUFFIX}${IMAGE_VERSION_SUFFIX}" 4496 4497 See the :term:`PKGE`, :term:`PKGV`, :term:`PKGR`, :term:`IMAGE_MACHINE_SUFFIX` 4498 and :term:`IMAGE_VERSION_SUFFIX` variables for additional information. 4499 4500 :term:`KERNEL_CLASSES` 4501 A list of classes defining kernel image types that the 4502 :ref:`ref-classes-kernel` class should inherit. You typically 4503 append this variable to enable extended image types. An example is 4504 ":ref:`ref-classes-kernel-fitimage`", which enables 4505 FIT image support and resides in ``meta/classes-recipe/kernel-fitimage.bbclass``. 4506 You can register custom kernel image types with the 4507 :ref:`ref-classes-kernel` class using this variable. 4508 4509 :term:`KERNEL_DANGLING_FEATURES_WARN_ONLY` 4510 When kernel configuration fragments are missing for some 4511 :term:`KERNEL_FEATURES` specified by layers or BSPs, 4512 building and configuring the kernel stops with an error. 4513 4514 You can turn these errors into warnings by setting the 4515 following in ``conf/local.conf``:: 4516 4517 KERNEL_DANGLING_FEATURES_WARN_ONLY = "1" 4518 4519 You will still be warned that runtime issues may occur, 4520 but at least the kernel configuration and build process will 4521 be allowed to continue. 4522 4523 :term:`KERNEL_DEBUG_TIMESTAMPS` 4524 If set to "1", enables timestamping functionality during building 4525 the kernel. The default is "0" to disable this for reproducibility 4526 reasons. 4527 4528 :term:`KERNEL_DEPLOY_DEPEND` 4529 Provides a means of controlling the dependency of an image recipe 4530 on the kernel. The default value is "virtual/kernel:do_deploy", 4531 however for a small initramfs image or other images that do not 4532 need the kernel, this can be set to "" in the image recipe. 4533 4534 :term:`KERNEL_DEVICETREE` 4535 Specifies the name of the generated Linux kernel device tree (i.e. 4536 the ``.dtb``) file. 4537 4538 .. note:: 4539 4540 There is legacy support for specifying the full path to the device 4541 tree. However, providing just the ``.dtb`` file is preferred. 4542 4543 In order to use this variable, the :ref:`ref-classes-kernel-devicetree` 4544 class must be inherited. 4545 4546 :term:`KERNEL_DEVICETREE_BUNDLE` 4547 When set to "1", this variable allows to bundle the Linux kernel 4548 and the Device Tree Binary together in a single file. 4549 4550 This feature is currently only supported on the "arm" (32 bit) 4551 architecture. 4552 4553 This variable is set to "0" by default by the 4554 :ref:`ref-classes-kernel-devicetree` class. 4555 4556 :term:`KERNEL_DTB_LINK_NAME` 4557 The link name of the kernel device tree binary (DTB). This variable 4558 is set in the ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as 4559 follows:: 4560 4561 KERNEL_DTB_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}" 4562 4563 The 4564 value of the ``KERNEL_ARTIFACT_LINK_NAME`` variable, which is set in 4565 the same file, has the following value:: 4566 4567 KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}" 4568 4569 See the :term:`MACHINE` variable for additional 4570 information. 4571 4572 :term:`KERNEL_DTB_NAME` 4573 The base name of the kernel device tree binary (DTB). This variable 4574 is set in the ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as 4575 follows:: 4576 4577 KERNEL_DTB_NAME ?= "${KERNEL_ARTIFACT_NAME}" 4578 4579 See :term:`KERNEL_ARTIFACT_NAME` for additional information. 4580 4581 :term:`KERNEL_DTBDEST` 4582 This variable, used by the :ref:`ref-classes-kernel-devicetree` 4583 class, allows to change the installation directory of the DTB 4584 (Device Tree Binary) files. 4585 4586 It is set by default to "${KERNEL_IMAGEDEST}" by the 4587 :ref:`ref-classes-kernel` class. 4588 4589 :term:`KERNEL_DTBVENDORED` 4590 This variable, used by the :ref:`ref-classes-kernel-devicetree`, 4591 allows to ignore vendor subdirectories when installing DTB 4592 (Device Tree Binary) files, when it is set to "false". 4593 4594 To keep vendor subdirectories, set this variable to "true". 4595 4596 It is set by default to "false" by the :ref:`ref-classes-kernel` class. 4597 4598 :term:`KERNEL_DTC_FLAGS` 4599 Specifies the ``dtc`` flags that are passed to the Linux kernel build 4600 system when generating the device trees (via ``DTC_FLAGS`` environment 4601 variable). 4602 4603 In order to use this variable, the :ref:`ref-classes-kernel-devicetree` 4604 class must be inherited. 4605 4606 :term:`KERNEL_EXTRA_ARGS` 4607 Specifies additional ``make`` command-line arguments the OpenEmbedded 4608 build system passes on when compiling the kernel. 4609 4610 :term:`KERNEL_FEATURES` 4611 Includes additional kernel metadata. In the OpenEmbedded build 4612 system, the default Board Support Packages (BSPs) 4613 :term:`Metadata` is provided through the 4614 :term:`KMACHINE` and :term:`KBRANCH` 4615 variables. You can use the :term:`KERNEL_FEATURES` variable from within 4616 the kernel recipe or kernel append file to further add metadata for 4617 all BSPs or specific BSPs. 4618 4619 The metadata you add through this variable includes config fragments 4620 and features descriptions, which usually includes patches as well as 4621 config fragments. You typically override the :term:`KERNEL_FEATURES` 4622 variable for a specific machine. In this way, you can provide 4623 validated, but optional, sets of kernel configurations and features. 4624 4625 For example, the following example from the ``linux-yocto-rt_4.12`` 4626 kernel recipe adds "netfilter" and "taskstats" features to all BSPs 4627 as well as "virtio" configurations to all QEMU machines. The last two 4628 statements add specific configurations to targeted machine types:: 4629 4630 KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc features/taskstats/taskstats.scc" 4631 KERNEL_FEATURES:append = " ${KERNEL_EXTRA_FEATURES}" 4632 KERNEL_FEATURES:append:qemuall = " cfg/virtio.scc" 4633 KERNEL_FEATURES:append:qemux86 = " cfg/sound.scc cfg/paravirt_kvm.scc" 4634 KERNEL_FEATURES:append:qemux86-64 = " cfg/sound.scc" 4635 4636 :term:`KERNEL_FIT_LINK_NAME` 4637 The link name of the kernel flattened image tree (FIT) image. This 4638 variable is set in the ``meta/classes-recipe/kernel-artifact-names.bbclass`` 4639 file as follows:: 4640 4641 KERNEL_FIT_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}" 4642 4643 The value of the 4644 ``KERNEL_ARTIFACT_LINK_NAME`` variable, which is set in the same 4645 file, has the following value:: 4646 4647 KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}" 4648 4649 See the :term:`MACHINE` variable for additional 4650 information. 4651 4652 :term:`KERNEL_FIT_NAME` 4653 The base name of the kernel flattened image tree (FIT) image. This 4654 variable is set in the ``meta/classes-recipe/kernel-artifact-names.bbclass`` 4655 file as follows:: 4656 4657 KERNEL_FIT_NAME ?= "${KERNEL_ARTIFACT_NAME}" 4658 4659 See :term:`KERNEL_ARTIFACT_NAME` for additional information. 4660 4661 :term:`KERNEL_IMAGE_LINK_NAME` 4662 The link name for the kernel image. This variable is set in the 4663 ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as follows:: 4664 4665 KERNEL_IMAGE_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}" 4666 4667 The value of 4668 the ``KERNEL_ARTIFACT_LINK_NAME`` variable, which is set in the same 4669 file, has the following value:: 4670 4671 KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}" 4672 4673 See the :term:`MACHINE` variable for additional 4674 information. 4675 4676 :term:`KERNEL_IMAGE_MAXSIZE` 4677 Specifies the maximum size of the kernel image file in kilobytes. If 4678 :term:`KERNEL_IMAGE_MAXSIZE` is set, the size of the kernel image file is 4679 checked against the set value during the 4680 :ref:`ref-tasks-sizecheck` task. The task fails if 4681 the kernel image file is larger than the setting. 4682 4683 :term:`KERNEL_IMAGE_MAXSIZE` is useful for target devices that have a 4684 limited amount of space in which the kernel image must be stored. 4685 4686 By default, this variable is not set, which means the size of the 4687 kernel image is not checked. 4688 4689 :term:`KERNEL_IMAGE_NAME` 4690 The base name of the kernel image. This variable is set in the 4691 ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as follows:: 4692 4693 KERNEL_IMAGE_NAME ?= "${KERNEL_ARTIFACT_NAME}" 4694 4695 See :term:`KERNEL_ARTIFACT_NAME` for additional information. 4696 4697 :term:`KERNEL_IMAGETYPE` 4698 The type of kernel to build for a device, usually set by the machine 4699 configuration files and defaults to "zImage". This variable is used 4700 when building the kernel and is passed to ``make`` as the target to 4701 build. 4702 4703 To build additional kernel image types, use :term:`KERNEL_IMAGETYPES`. 4704 4705 :term:`KERNEL_IMAGETYPES` 4706 Lists additional types of kernel images to build for a device in addition 4707 to image type specified in :term:`KERNEL_IMAGETYPE`. Usually set by the 4708 machine configuration files. 4709 4710 :term:`KERNEL_MODULE_AUTOLOAD` 4711 Lists kernel modules that need to be auto-loaded during boot. 4712 4713 .. note:: 4714 4715 This variable replaces the deprecated :term:`module_autoload` 4716 variable. 4717 4718 You can use the :term:`KERNEL_MODULE_AUTOLOAD` variable anywhere that it 4719 can be recognized by the kernel recipe or by an out-of-tree kernel 4720 module recipe (e.g. a machine configuration file, a distribution 4721 configuration file, an append file for the recipe, or the recipe 4722 itself). 4723 4724 Specify it as follows:: 4725 4726 KERNEL_MODULE_AUTOLOAD += "module_name1 module_name2 module_name3" 4727 4728 Including :term:`KERNEL_MODULE_AUTOLOAD` causes the OpenEmbedded build 4729 system to populate the ``/etc/modules-load.d/modname.conf`` file with 4730 the list of modules to be auto-loaded on boot. The modules appear 4731 one-per-line in the file. Here is an example of the most common use 4732 case:: 4733 4734 KERNEL_MODULE_AUTOLOAD += "module_name" 4735 4736 For information on how to populate the ``modname.conf`` file with 4737 ``modprobe.d`` syntax lines, see the :term:`KERNEL_MODULE_PROBECONF` variable. 4738 4739 :term:`KERNEL_MODULE_PROBECONF` 4740 Provides a list of modules for which the OpenEmbedded build system 4741 expects to find ``module_conf_``\ modname values that specify 4742 configuration for each of the modules. For information on how to 4743 provide those module configurations, see the 4744 :term:`module_conf_* <module_conf>` variable. 4745 4746 :term:`KERNEL_PACKAGE_NAME` 4747 Specifies the base name of the kernel packages, such as "kernel" 4748 in the kernel packages such as "kernel-modules", "kernel-image" and 4749 "kernel-dbg". 4750 4751 The default value for this variable is set to "kernel" by the 4752 :ref:`ref-classes-kernel` class. 4753 4754 :term:`KERNEL_PATH` 4755 The location of the kernel sources. This variable is set to the value 4756 of the :term:`STAGING_KERNEL_DIR` within the :ref:`ref-classes-module` 4757 class. For information on how this variable is used, see the 4758 ":ref:`kernel-dev/common:incorporating out-of-tree modules`" 4759 section in the Yocto Project Linux Kernel Development Manual. 4760 4761 To help maximize compatibility with out-of-tree drivers used to build 4762 modules, the OpenEmbedded build system also recognizes and uses the 4763 :term:`KERNEL_SRC` variable, which is identical to 4764 the :term:`KERNEL_PATH` variable. Both variables are common variables 4765 used by external Makefiles to point to the kernel source directory. 4766 4767 :term:`KERNEL_SRC` 4768 The location of the kernel sources. This variable is set to the value 4769 of the :term:`STAGING_KERNEL_DIR` within the :ref:`ref-classes-module` 4770 class. For information on how this variable is used, see the 4771 ":ref:`kernel-dev/common:incorporating out-of-tree modules`" 4772 section in the Yocto Project Linux Kernel Development Manual. 4773 4774 To help maximize compatibility with out-of-tree drivers used to build 4775 modules, the OpenEmbedded build system also recognizes and uses the 4776 :term:`KERNEL_PATH` variable, which is identical 4777 to the :term:`KERNEL_SRC` variable. Both variables are common variables 4778 used by external Makefiles to point to the kernel source directory. 4779 4780 :term:`KERNEL_STRIP` 4781 Allows to specific which ``strip`` command to use to strip the kernel 4782 binary, typically either GNU binutils ``strip`` or ``llvm-strip``. 4783 4784 :term:`KERNEL_VERSION` 4785 Specifies the version of the kernel as extracted from ``version.h`` 4786 or ``utsrelease.h`` within the kernel sources. Effects of setting 4787 this variable do not take effect until the kernel has been 4788 configured. Consequently, attempting to refer to this variable in 4789 contexts prior to configuration will not work. 4790 4791 :term:`KERNELDEPMODDEPEND` 4792 Specifies whether the data referenced through 4793 :term:`PKGDATA_DIR` is needed or not. 4794 :term:`KERNELDEPMODDEPEND` does not control whether or not that data 4795 exists, but simply whether or not it is used. If you do not need to 4796 use the data, set the :term:`KERNELDEPMODDEPEND` variable in your 4797 :term:`Initramfs` recipe. Setting the variable there when the data is not 4798 needed avoids a potential dependency loop. 4799 4800 :term:`KFEATURE_DESCRIPTION` 4801 Provides a short description of a configuration fragment. You use 4802 this variable in the ``.scc`` file that describes a configuration 4803 fragment file. Here is the variable used in a file named ``smp.scc`` 4804 to describe SMP being enabled:: 4805 4806 define KFEATURE_DESCRIPTION "Enable SMP" 4807 4808 :term:`KMACHINE` 4809 The machine as known by the kernel. Sometimes the machine name used 4810 by the kernel does not match the machine name used by the 4811 OpenEmbedded build system. For example, the machine name that the 4812 OpenEmbedded build system understands as ``core2-32-intel-common`` 4813 goes by a different name in the Linux Yocto kernel. The kernel 4814 understands that machine as ``intel-core2-32``. For cases like these, 4815 the :term:`KMACHINE` variable maps the kernel machine name to the 4816 OpenEmbedded build system machine name. 4817 4818 These mappings between different names occur in the Yocto Linux 4819 Kernel's ``meta`` branch. As an example take a look in the 4820 ``common/recipes-kernel/linux/linux-yocto_3.19.bbappend`` file:: 4821 4822 LINUX_VERSION:core2-32-intel-common = "3.19.0" 4823 COMPATIBLE_MACHINE:core2-32-intel-common = "${MACHINE}" 4824 SRCREV_meta:core2-32-intel-common = "8897ef68b30e7426bc1d39895e71fb155d694974" 4825 SRCREV_machine:core2-32-intel-common = "43b9eced9ba8a57add36af07736344dcc383f711" 4826 KMACHINE:core2-32-intel-common = "intel-core2-32" 4827 KBRANCH:core2-32-intel-common = "standard/base" 4828 KERNEL_FEATURES:append:core2-32-intel-common = " ${KERNEL_FEATURES_INTEL_COMMON}" 4829 4830 The :term:`KMACHINE` statement says 4831 that the kernel understands the machine name as "intel-core2-32". 4832 However, the OpenEmbedded build system understands the machine as 4833 "core2-32-intel-common". 4834 4835 :term:`KTYPE` 4836 Defines the kernel type to be used in assembling the configuration. 4837 The linux-yocto recipes define "standard", "tiny", and "preempt-rt" 4838 kernel types. See the ":ref:`kernel-dev/advanced:kernel types`" 4839 section in the 4840 Yocto Project Linux Kernel Development Manual for more information on 4841 kernel types. 4842 4843 You define the :term:`KTYPE` variable in the 4844 :ref:`kernel-dev/advanced:bsp descriptions`. The 4845 value you use must match the value used for the 4846 :term:`LINUX_KERNEL_TYPE` value used by the 4847 kernel recipe. 4848 4849 :term:`LABELS` 4850 Provides a list of targets for automatic configuration. 4851 4852 See the :ref:`ref-classes-grub-efi` class for more 4853 information on how this variable is used. 4854 4855 :term:`LAYERDEPENDS` 4856 Lists the layers, separated by spaces, on which this recipe depends. 4857 Optionally, you can specify a specific layer version for a dependency 4858 by adding it to the end of the layer name. Here is an example:: 4859 4860 LAYERDEPENDS_mylayer = "anotherlayer (=3)" 4861 4862 In this previous example, 4863 version 3 of "anotherlayer" is compared against 4864 :term:`LAYERVERSION`\ ``_anotherlayer``. 4865 4866 An error is produced if any dependency is missing or the version 4867 numbers (if specified) do not match exactly. This variable is used in 4868 the ``conf/layer.conf`` file and must be suffixed with the name of 4869 the specific layer (e.g. ``LAYERDEPENDS_mylayer``). 4870 4871 :term:`LAYERDIR` 4872 When used inside the ``layer.conf`` configuration file, this variable 4873 provides the path of the current layer. This variable is not 4874 available outside of ``layer.conf`` and references are expanded 4875 immediately when parsing of the file completes. 4876 4877 :term:`LAYERDIR_RE` 4878 See :term:`bitbake:LAYERDIR_RE` in the BitBake manual. 4879 4880 :term:`LAYERRECOMMENDS` 4881 Lists the layers, separated by spaces, recommended for use with this 4882 layer. 4883 4884 Optionally, you can specify a specific layer version for a 4885 recommendation by adding the version to the end of the layer name. 4886 Here is an example:: 4887 4888 LAYERRECOMMENDS_mylayer = "anotherlayer (=3)" 4889 4890 In this previous example, version 3 of "anotherlayer" is compared 4891 against ``LAYERVERSION_anotherlayer``. 4892 4893 This variable is used in the ``conf/layer.conf`` file and must be 4894 suffixed with the name of the specific layer (e.g. 4895 ``LAYERRECOMMENDS_mylayer``). 4896 4897 :term:`LAYERSERIES_COMPAT` 4898 See :term:`bitbake:LAYERSERIES_COMPAT` in the BitBake manual. 4899 4900 :term:`LAYERVERSION` 4901 Optionally specifies the version of a layer as a single number. You 4902 can use this within :term:`LAYERDEPENDS` for 4903 another layer in order to depend on a specific version of the layer. 4904 This variable is used in the ``conf/layer.conf`` file and must be 4905 suffixed with the name of the specific layer (e.g. 4906 ``LAYERVERSION_mylayer``). 4907 4908 :term:`LD` 4909 The minimal command and arguments used to run the linker. 4910 4911 :term:`LDFLAGS` 4912 Specifies the flags to pass to the linker. This variable is exported 4913 to an environment variable and thus made visible to the software 4914 being built during the compilation step. 4915 4916 Default initialization for :term:`LDFLAGS` varies depending on what is 4917 being built: 4918 4919 - :term:`TARGET_LDFLAGS` when building for the 4920 target 4921 4922 - :term:`BUILD_LDFLAGS` when building for the 4923 build host (i.e. ``-native``) 4924 4925 - :term:`BUILDSDK_LDFLAGS` when building for 4926 an SDK (i.e. ``nativesdk-``) 4927 4928 :term:`LEAD_SONAME` 4929 Specifies the lead (or primary) compiled library file (i.e. ``.so``) 4930 that the :ref:`ref-classes-debian` class applies its 4931 naming policy to given a recipe that packages multiple libraries. 4932 4933 This variable works in conjunction with the :ref:`ref-classes-debian` 4934 class. 4935 4936 :term:`LIC_FILES_CHKSUM` 4937 Checksums of the license text in the recipe source code. 4938 4939 This variable tracks changes in license text of the source code 4940 files. If the license text is changed, it will trigger a build 4941 failure, which gives the developer an opportunity to review any 4942 license change. 4943 4944 This variable must be defined for all recipes (unless 4945 :term:`LICENSE` is set to "CLOSED"). 4946 4947 For more information, see the ":ref:`dev-manual/licenses:tracking license changes`" 4948 section in the Yocto Project Development Tasks Manual. 4949 4950 :term:`LICENSE` 4951 The list of source licenses for the recipe. Follow these rules: 4952 4953 - Do not use spaces within individual license names. 4954 4955 - Separate license names using \| (pipe) when there is a choice 4956 between licenses. 4957 4958 - Separate license names using & (ampersand) when there are 4959 multiple licenses for different parts of the source. 4960 4961 - You can use spaces between license names. 4962 4963 - For standard licenses, use the names of the files in 4964 ``meta/files/common-licenses/`` or the 4965 :term:`SPDXLICENSEMAP` flag names defined in 4966 ``meta/conf/licenses.conf``. 4967 4968 Here are some examples:: 4969 4970 LICENSE = "LGPL-2.1-only | GPL-3.0-only" 4971 LICENSE = "MPL-1.0 & LGPL-2.1-only" 4972 LICENSE = "GPL-2.0-or-later" 4973 4974 The first example is from the 4975 recipes for Qt, which the user may choose to distribute under either 4976 the LGPL version 2.1 or GPL version 3. The second example is from 4977 Cairo where two licenses cover different parts of the source code. 4978 The final example is from ``sysstat``, which presents a single 4979 license. 4980 4981 You can also specify licenses on a per-package basis to handle 4982 situations where components of the output have different licenses. 4983 For example, a piece of software whose code is licensed under GPLv2 4984 but has accompanying documentation licensed under the GNU Free 4985 Documentation License 1.2 could be specified as follows:: 4986 4987 LICENSE = "GFDL-1.2 & GPL-2.0-only" 4988 LICENSE:${PN} = "GPL-2.0.only" 4989 LICENSE:${PN}-doc = "GFDL-1.2" 4990 4991 :term:`LICENSE_CREATE_PACKAGE` 4992 Setting :term:`LICENSE_CREATE_PACKAGE` to "1" causes the OpenEmbedded 4993 build system to create an extra package (i.e. 4994 ``${``\ :term:`PN`\ ``}-lic``) for each recipe and to add 4995 those packages to the 4996 :term:`RRECOMMENDS`\ ``:${PN}``. 4997 4998 The ``${PN}-lic`` package installs a directory in 4999 ``/usr/share/licenses`` named ``${PN}``, which is the recipe's base 5000 name, and installs files in that directory that contain license and 5001 copyright information (i.e. copies of the appropriate license files 5002 from ``meta/common-licenses`` that match the licenses specified in 5003 the :term:`LICENSE` variable of the recipe metadata 5004 and copies of files marked in 5005 :term:`LIC_FILES_CHKSUM` as containing 5006 license text). 5007 5008 For related information on providing license text, see the 5009 :term:`COPY_LIC_DIRS` variable, the 5010 :term:`COPY_LIC_MANIFEST` variable, and the 5011 ":ref:`dev-manual/licenses:providing license text`" 5012 section in the Yocto Project Development Tasks Manual. 5013 5014 :term:`LICENSE_FLAGS` 5015 Specifies additional flags for a recipe you must allow through 5016 :term:`LICENSE_FLAGS_ACCEPTED` in 5017 order for the recipe to be built. When providing multiple flags, 5018 separate them with spaces. 5019 5020 This value is independent of :term:`LICENSE` and is 5021 typically used to mark recipes that might require additional licenses 5022 in order to be used in a commercial product. For more information, 5023 see the 5024 ":ref:`dev-manual/licenses:enabling commercially licensed recipes`" 5025 section in the Yocto Project Development Tasks Manual. 5026 5027 :term:`LICENSE_FLAGS_ACCEPTED` 5028 Lists license flags that when specified in 5029 :term:`LICENSE_FLAGS` within a recipe should not 5030 prevent that recipe from being built. For more information, see the 5031 ":ref:`dev-manual/licenses:enabling commercially licensed recipes`" 5032 section in the Yocto Project Development Tasks Manual. 5033 5034 :term:`LICENSE_FLAGS_DETAILS` 5035 Adds details about a flag in :term:`LICENSE_FLAGS`. This way, 5036 if such a flag is not accepted through :term:`LICENSE_FLAGS_ACCEPTED`, 5037 the error message will be more informative, containing the specified 5038 extra details. 5039 5040 For example, a recipe with an EULA may set:: 5041 5042 LICENSE_FLAGS = "FooBar-EULA" 5043 LICENSE_FLAGS_DETAILS[FooBar-EULA] = "For further details, see https://example.com/eula." 5044 5045 If ``Foobar-EULA`` isn't in :term:`LICENSE_FLAGS_ACCEPTED`, the 5046 error message is more useful:: 5047 5048 Has a restricted license 'FooBar-EULA' which is not listed in your LICENSE_FLAGS_ACCEPTED. 5049 For further details, see https://example.com/eula. 5050 5051 :term:`LICENSE_PATH` 5052 Path to additional licenses used during the build. By default, the 5053 OpenEmbedded build system uses :term:`COMMON_LICENSE_DIR` to define the 5054 directory that holds common license text used during the build. The 5055 :term:`LICENSE_PATH` variable allows you to extend that location to other 5056 areas that have additional licenses:: 5057 5058 LICENSE_PATH += "path-to-additional-common-licenses" 5059 5060 :term:`LINUX_KERNEL_TYPE` 5061 Defines the kernel type to be used in assembling the configuration. 5062 The linux-yocto recipes define "standard", "tiny", and "preempt-rt" 5063 kernel types. See the ":ref:`kernel-dev/advanced:kernel types`" 5064 section in the 5065 Yocto Project Linux Kernel Development Manual for more information on 5066 kernel types. 5067 5068 If you do not specify a :term:`LINUX_KERNEL_TYPE`, it defaults to 5069 "standard". Together with :term:`KMACHINE`, the 5070 :term:`LINUX_KERNEL_TYPE` variable defines the search arguments used by 5071 the kernel tools to find the appropriate description within the 5072 kernel :term:`Metadata` with which to build out the sources 5073 and configuration. 5074 5075 :term:`LINUX_VERSION` 5076 The Linux version from ``kernel.org`` on which the Linux kernel image 5077 being built using the OpenEmbedded build system is based. You define 5078 this variable in the kernel recipe. For example, the 5079 ``linux-yocto-3.4.bb`` kernel recipe found in 5080 ``meta/recipes-kernel/linux`` defines the variables as follows:: 5081 5082 LINUX_VERSION ?= "3.4.24" 5083 5084 The :term:`LINUX_VERSION` variable is used to define :term:`PV` 5085 for the recipe:: 5086 5087 PV = "${LINUX_VERSION}+git${SRCPV}" 5088 5089 :term:`LINUX_VERSION_EXTENSION` 5090 A string extension compiled into the version string of the Linux 5091 kernel built with the OpenEmbedded build system. You define this 5092 variable in the kernel recipe. For example, the linux-yocto kernel 5093 recipes all define the variable as follows:: 5094 5095 LINUX_VERSION_EXTENSION ?= "-yocto-${LINUX_KERNEL_TYPE}" 5096 5097 Defining this variable essentially sets the Linux kernel 5098 configuration item ``CONFIG_LOCALVERSION``, which is visible through 5099 the ``uname`` command. Here is an example that shows the extension 5100 assuming it was set as previously shown:: 5101 5102 $ uname -r 5103 3.7.0-rc8-custom 5104 5105 :term:`LOG_DIR` 5106 Specifies the directory to which the OpenEmbedded build system writes 5107 overall log files. The default directory is ``${TMPDIR}/log``. 5108 5109 For the directory containing logs specific to each task, see the 5110 :term:`T` variable. 5111 5112 :term:`MACHINE` 5113 Specifies the target device for which the image is built. You define 5114 :term:`MACHINE` in the ``local.conf`` file found in the 5115 :term:`Build Directory`. By default, :term:`MACHINE` is set to 5116 "qemux86", which is an x86-based architecture machine to be emulated 5117 using QEMU:: 5118 5119 MACHINE ?= "qemux86" 5120 5121 The variable corresponds to a machine configuration file of the same 5122 name, through which machine-specific configurations are set. Thus, 5123 when :term:`MACHINE` is set to "qemux86", the corresponding 5124 ``qemux86.conf`` machine configuration file can be found in 5125 the :term:`Source Directory` in 5126 ``meta/conf/machine``. 5127 5128 The list of machines supported by the Yocto Project as shipped 5129 include the following:: 5130 5131 MACHINE ?= "qemuarm" 5132 MACHINE ?= "qemuarm64" 5133 MACHINE ?= "qemumips" 5134 MACHINE ?= "qemumips64" 5135 MACHINE ?= "qemuppc" 5136 MACHINE ?= "qemux86" 5137 MACHINE ?= "qemux86-64" 5138 MACHINE ?= "genericx86" 5139 MACHINE ?= "genericx86-64" 5140 MACHINE ?= "beaglebone" 5141 5142 The last five are Yocto Project reference hardware 5143 boards, which are provided in the ``meta-yocto-bsp`` layer. 5144 5145 .. note:: 5146 5147 Adding additional Board Support Package (BSP) layers to your 5148 configuration adds new possible settings for :term:`MACHINE`. 5149 5150 :term:`MACHINE_ARCH` 5151 Specifies the name of the machine-specific architecture. This 5152 variable is set automatically from :term:`MACHINE` or 5153 :term:`TUNE_PKGARCH`. You should not hand-edit 5154 the :term:`MACHINE_ARCH` variable. 5155 5156 :term:`MACHINE_ESSENTIAL_EXTRA_RDEPENDS` 5157 A list of required machine-specific packages to install as part of 5158 the image being built. The build process depends on these packages 5159 being present. Furthermore, because this is a "machine-essential" 5160 variable, the list of packages are essential for the machine to boot. 5161 The impact of this variable affects images based on 5162 ``packagegroup-core-boot``, including the ``core-image-minimal`` 5163 image. 5164 5165 This variable is similar to the 5166 :term:`MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS` variable with the exception 5167 that the image being built has a build dependency on the variable's 5168 list of packages. In other words, the image will not build if a file 5169 in this list is not found. 5170 5171 As an example, suppose the machine for which you are building 5172 requires ``example-init`` to be run during boot to initialize the 5173 hardware. In this case, you would use the following in the machine's 5174 ``.conf`` configuration file:: 5175 5176 MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "example-init" 5177 5178 :term:`MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS` 5179 A list of recommended machine-specific packages to install as part of 5180 the image being built. The build process does not depend on these 5181 packages being present. However, because this is a 5182 "machine-essential" variable, the list of packages are essential for 5183 the machine to boot. The impact of this variable affects images based 5184 on ``packagegroup-core-boot``, including the ``core-image-minimal`` 5185 image. 5186 5187 This variable is similar to the :term:`MACHINE_ESSENTIAL_EXTRA_RDEPENDS` 5188 variable with the exception that the image being built does not have 5189 a build dependency on the variable's list of packages. In other 5190 words, the image will still build if a package in this list is not 5191 found. Typically, this variable is used to handle essential kernel 5192 modules, whose functionality may be selected to be built into the 5193 kernel rather than as a module, in which case a package will not be 5194 produced. 5195 5196 Consider an example where you have a custom kernel where a specific 5197 touchscreen driver is required for the machine to be usable. However, 5198 the driver can be built as a module or into the kernel depending on 5199 the kernel configuration. If the driver is built as a module, you 5200 want it to be installed. But, when the driver is built into the 5201 kernel, you still want the build to succeed. This variable sets up a 5202 "recommends" relationship so that in the latter case, the build will 5203 not fail due to the missing package. To accomplish this, assuming the 5204 package for the module was called ``kernel-module-ab123``, you would 5205 use the following in the machine's ``.conf`` configuration file:: 5206 5207 MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS += "kernel-module-ab123" 5208 5209 .. note:: 5210 5211 In this example, the ``kernel-module-ab123`` recipe needs to 5212 explicitly set its :term:`PACKAGES` variable to ensure that BitBake 5213 does not use the kernel recipe's :term:`PACKAGES_DYNAMIC` variable to 5214 satisfy the dependency. 5215 5216 Some examples of these machine essentials are flash, screen, 5217 keyboard, mouse, or touchscreen drivers (depending on the machine). 5218 5219 :term:`MACHINE_EXTRA_RDEPENDS` 5220 A list of machine-specific packages to install as part of the image 5221 being built that are not essential for the machine to boot. However, 5222 the build process for more fully-featured images depends on the 5223 packages being present. 5224 5225 This variable affects all images based on ``packagegroup-base``, 5226 which does not include the ``core-image-minimal`` or 5227 ``core-image-full-cmdline`` images. 5228 5229 The variable is similar to the :term:`MACHINE_EXTRA_RRECOMMENDS` variable 5230 with the exception that the image being built has a build dependency 5231 on the variable's list of packages. In other words, the image will 5232 not build if a file in this list is not found. 5233 5234 An example is a machine that has WiFi capability but is not essential 5235 for the machine to boot the image. However, if you are building a 5236 more fully-featured image, you want to enable the WiFi. The package 5237 containing the firmware for the WiFi hardware is always expected to 5238 exist, so it is acceptable for the build process to depend upon 5239 finding the package. In this case, assuming the package for the 5240 firmware was called ``wifidriver-firmware``, you would use the 5241 following in the ``.conf`` file for the machine:: 5242 5243 MACHINE_EXTRA_RDEPENDS += "wifidriver-firmware" 5244 5245 :term:`MACHINE_EXTRA_RRECOMMENDS` 5246 A list of machine-specific packages to install as part of the image 5247 being built that are not essential for booting the machine. The image 5248 being built has no build dependency on this list of packages. 5249 5250 This variable affects only images based on ``packagegroup-base``, 5251 which does not include the ``core-image-minimal`` or 5252 ``core-image-full-cmdline`` images. 5253 5254 This variable is similar to the :term:`MACHINE_EXTRA_RDEPENDS` variable 5255 with the exception that the image being built does not have a build 5256 dependency on the variable's list of packages. In other words, the 5257 image will build if a file in this list is not found. 5258 5259 An example is a machine that has WiFi capability but is not essential 5260 For the machine to boot the image. However, if you are building a 5261 more fully-featured image, you want to enable WiFi. In this case, the 5262 package containing the WiFi kernel module will not be produced if the 5263 WiFi driver is built into the kernel, in which case you still want 5264 the build to succeed instead of failing as a result of the package 5265 not being found. To accomplish this, assuming the package for the 5266 module was called ``kernel-module-examplewifi``, you would use the 5267 following in the ``.conf`` file for the machine:: 5268 5269 MACHINE_EXTRA_RRECOMMENDS += "kernel-module-examplewifi" 5270 5271 :term:`MACHINE_FEATURES` 5272 Specifies the list of hardware features the 5273 :term:`MACHINE` is capable of supporting. For related 5274 information on enabling features, see the 5275 :term:`DISTRO_FEATURES`, 5276 :term:`COMBINED_FEATURES`, and 5277 :term:`IMAGE_FEATURES` variables. 5278 5279 For a list of hardware features supported by the Yocto Project as 5280 shipped, see the ":ref:`ref-features-machine`" section. 5281 5282 :term:`MACHINE_FEATURES_BACKFILL` 5283 A list of space-separated features to be added to 5284 :term:`MACHINE_FEATURES` if not also present in 5285 :term:`MACHINE_FEATURES_BACKFILL_CONSIDERED`. 5286 5287 This variable is set in the ``meta/conf/bitbake.conf`` file. It is not 5288 intended to be user-configurable. It is best to just reference the 5289 variable to see which machine features are being 5290 :ref:`backfilled <ref-features-backfill>` for all machine configurations. 5291 5292 :term:`MACHINE_FEATURES_BACKFILL_CONSIDERED` 5293 A list of space-separated features from :term:`MACHINE_FEATURES_BACKFILL` 5294 that should not be :ref:`backfilled <ref-features-backfill>` (i.e. added 5295 to :term:`MACHINE_FEATURES`) during the build. 5296 5297 This corresponds to an opt-out mechanism. When new default machine 5298 features are introduced, machine definition maintainers can review 5299 (`consider`) them and decide to exclude them from the 5300 :ref:`backfilled <ref-features-backfill>` features. Therefore, the 5301 combination of :term:`MACHINE_FEATURES_BACKFILL` and 5302 :term:`MACHINE_FEATURES_BACKFILL_CONSIDERED` makes it possible to 5303 add new default features without breaking existing machine definitions. 5304 5305 :term:`MACHINEOVERRIDES` 5306 A colon-separated list of overrides that apply to the current 5307 machine. By default, this list includes the value of 5308 :term:`MACHINE`. 5309 5310 You can extend :term:`MACHINEOVERRIDES` to add extra overrides that 5311 should apply to a machine. For example, all machines emulated in QEMU 5312 (e.g. ``qemuarm``, ``qemux86``, and so forth) include a file named 5313 ``meta/conf/machine/include/qemu.inc`` that prepends the following 5314 override to :term:`MACHINEOVERRIDES`:: 5315 5316 MACHINEOVERRIDES =. "qemuall:" 5317 5318 This 5319 override allows variables to be overridden for all machines emulated 5320 in QEMU, like in the following example from the ``connman-conf`` 5321 recipe:: 5322 5323 SRC_URI:append:qemuall = " file://wired.config \ 5324 file://wired-setup \ 5325 " 5326 5327 The underlying mechanism behind 5328 :term:`MACHINEOVERRIDES` is simply that it is included in the default 5329 value of :term:`OVERRIDES`. 5330 5331 :term:`MAINTAINER` 5332 The email address of the distribution maintainer. 5333 5334 :term:`MESON_BUILDTYPE` 5335 Value of the Meson ``--buildtype`` argument used by the 5336 :ref:`ref-classes-meson` class. It defaults to ``debug`` if 5337 :term:`DEBUG_BUILD` is set to "1", and ``plain`` otherwise. 5338 5339 See `Meson build options <https://mesonbuild.com/Builtin-options.html>`__ 5340 for the values you could set in a recipe. Values such as ``plain``, 5341 ``debug``, ``debugoptimized``, ``release`` and ``minsize`` allow 5342 you to specify the inclusion of debugging symbols and the compiler 5343 optimizations (none, performance or size). 5344 5345 :term:`MESON_TARGET` 5346 A variable for the :ref:`ref-classes-meson` class, allowing to choose 5347 a Meson target to build in :ref:`ref-tasks-compile`. Otherwise, the 5348 default targets are built. 5349 5350 :term:`METADATA_BRANCH` 5351 The branch currently checked out for the OpenEmbedded-Core layer (path 5352 determined by :term:`COREBASE`). 5353 5354 :term:`METADATA_REVISION` 5355 The revision currently checked out for the OpenEmbedded-Core layer (path 5356 determined by :term:`COREBASE`). 5357 5358 :term:`MIME_XDG_PACKAGES` 5359 The current implementation of the :ref:`ref-classes-mime-xdg` 5360 class cannot detect ``.desktop`` files installed through absolute 5361 symbolic links. Use this setting to make the class create post-install 5362 and post-remove scripts for these packages anyway, to invoke the 5363 ``update-destop-database`` command. 5364 5365 :term:`MIRRORS` 5366 Specifies additional paths from which the OpenEmbedded build system 5367 gets source code. When the build system searches for source code, it 5368 first tries the local download directory. If that location fails, the 5369 build system tries locations defined by 5370 :term:`PREMIRRORS`, the upstream source, and then 5371 locations specified by :term:`MIRRORS` in that order. 5372 5373 The default value for :term:`MIRRORS` is defined in the 5374 ``meta/classes-global/mirrors.bbclass`` file in the core metadata layer. 5375 5376 :term:`MLPREFIX` 5377 Specifies a prefix has been added to :term:`PN` to create a 5378 special version of a recipe or package (i.e. a Multilib version). The 5379 variable is used in places where the prefix needs to be added to or 5380 removed from a name (e.g. the :term:`BPN` variable). 5381 :term:`MLPREFIX` gets set when a prefix has been added to :term:`PN`. 5382 5383 .. note:: 5384 5385 The "ML" in :term:`MLPREFIX` stands for "MultiLib". This representation 5386 is historical and comes from a time when ":ref:`ref-classes-nativesdk`" 5387 was a suffix rather than a prefix on the recipe name. When 5388 ":ref:`ref-classes-nativesdk`" was turned into a prefix, it made sense 5389 to set :term:`MLPREFIX` for it as well. 5390 5391 To help understand when :term:`MLPREFIX` might be needed, consider when 5392 :term:`BBCLASSEXTEND` is used to provide a :ref:`ref-classes-nativesdk` 5393 version of a recipe in addition to the target version. If that recipe 5394 declares build-time dependencies on tasks in other recipes by using 5395 :term:`DEPENDS`, then a dependency on "foo" will automatically get 5396 rewritten to a dependency on "nativesdk-foo". However, dependencies like 5397 the following will not get rewritten automatically:: 5398 5399 do_foo[depends] += "recipe:do_foo" 5400 5401 If you want such a dependency to also get transformed, you can do the 5402 following:: 5403 5404 do_foo[depends] += "${MLPREFIX}recipe:do_foo" 5405 5406 :term:`module_autoload` 5407 This variable has been replaced by the :term:`KERNEL_MODULE_AUTOLOAD` 5408 variable. You should replace all occurrences of :term:`module_autoload` 5409 with additions to :term:`KERNEL_MODULE_AUTOLOAD`, for example:: 5410 5411 module_autoload_rfcomm = "rfcomm" 5412 5413 should now be replaced with:: 5414 5415 KERNEL_MODULE_AUTOLOAD += "rfcomm" 5416 5417 See the :term:`KERNEL_MODULE_AUTOLOAD` variable for more information. 5418 5419 :term:`module_conf` 5420 Specifies `modprobe.d <https://linux.die.net/man/5/modprobe.d>`__ 5421 syntax lines for inclusion in the ``/etc/modprobe.d/modname.conf`` 5422 file. 5423 5424 You can use this variable anywhere that it can be recognized by the 5425 kernel recipe or out-of-tree kernel module recipe (e.g. a machine 5426 configuration file, a distribution configuration file, an append file 5427 for the recipe, or the recipe itself). If you use this variable, you 5428 must also be sure to list the module name in the 5429 :term:`KERNEL_MODULE_PROBECONF` 5430 variable. 5431 5432 Here is the general syntax:: 5433 5434 module_conf_module_name = "modprobe.d-syntax" 5435 5436 You must use the kernel module name override. 5437 5438 Run ``man modprobe.d`` in the shell to find out more information on 5439 the exact syntax you want to provide with :term:`module_conf`. 5440 5441 Including :term:`module_conf` causes the OpenEmbedded build system to 5442 populate the ``/etc/modprobe.d/modname.conf`` file with 5443 ``modprobe.d`` syntax lines. Here is an example that adds the options 5444 ``arg1`` and ``arg2`` to a module named ``mymodule``:: 5445 5446 module_conf_mymodule = "options mymodule arg1=val1 arg2=val2" 5447 5448 For information on how to specify kernel modules to auto-load on 5449 boot, see the :term:`KERNEL_MODULE_AUTOLOAD` variable. 5450 5451 :term:`MODULE_TARBALL_DEPLOY` 5452 Controls creation of the ``modules-*.tgz`` file. Set this variable to 5453 "0" to disable creation of this file, which contains all of the 5454 kernel modules resulting from a kernel build. 5455 5456 :term:`MODULE_TARBALL_LINK_NAME` 5457 The link name of the kernel module tarball. This variable is set in 5458 the ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as follows:: 5459 5460 MODULE_TARBALL_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}" 5461 5462 The value 5463 of the ``KERNEL_ARTIFACT_LINK_NAME`` variable, which is set in the 5464 same file, has the following value:: 5465 5466 KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}" 5467 5468 See the :term:`MACHINE` variable for additional information. 5469 5470 :term:`MODULE_TARBALL_NAME` 5471 The base name of the kernel module tarball. This variable is set in 5472 the ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as follows:: 5473 5474 MODULE_TARBALL_NAME ?= "${KERNEL_ARTIFACT_NAME}" 5475 5476 See :term:`KERNEL_ARTIFACT_NAME` for additional information. 5477 5478 :term:`MOUNT_BASE` 5479 On non-systemd systems (where ``udev-extraconf`` is being used), 5480 specifies the base directory for auto-mounting filesystems. The 5481 default value is "/run/media". 5482 5483 :term:`MULTIMACH_TARGET_SYS` 5484 Uniquely identifies the type of the target system for which packages 5485 are being built. This variable allows output for different types of 5486 target systems to be put into different subdirectories of the same 5487 output directory. 5488 5489 The default value of this variable is:: 5490 5491 ${PACKAGE_ARCH}${TARGET_VENDOR}-${TARGET_OS} 5492 5493 Some classes (e.g. :ref:`ref-classes-cross-canadian`) modify the 5494 :term:`MULTIMACH_TARGET_SYS` value. 5495 5496 See the :term:`STAMP` variable for an example. See the 5497 :term:`STAGING_DIR_TARGET` variable for more information. 5498 5499 :term:`NATIVELSBSTRING` 5500 A string identifying the host distribution. Strings consist of the 5501 host distributor ID followed by the release, as reported by the 5502 ``lsb_release`` tool or as read from ``/etc/lsb-release``. For 5503 example, when running a build on Ubuntu 12.10, the value is 5504 "Ubuntu-12.10". If this information is unable to be determined, the 5505 value resolves to "Unknown". 5506 5507 This variable is used by default to isolate native shared state 5508 packages for different distributions (e.g. to avoid problems with 5509 ``glibc`` version incompatibilities). Additionally, the variable is 5510 checked against 5511 :term:`SANITY_TESTED_DISTROS` if that 5512 variable is set. 5513 5514 :term:`NM` 5515 The minimal command and arguments to run ``nm``. 5516 5517 :term:`NO_GENERIC_LICENSE` 5518 Avoids QA errors when you use a non-common, non-CLOSED license in a 5519 recipe. There are packages, such as the linux-firmware package, with many 5520 licenses that are not in any way common. Also, new licenses are added 5521 occasionally to avoid introducing a lot of common license files, 5522 which are only applicable to a specific package. 5523 :term:`NO_GENERIC_LICENSE` is used to allow copying a license that does 5524 not exist in common licenses. 5525 5526 The following example shows how to add :term:`NO_GENERIC_LICENSE` to a 5527 recipe:: 5528 5529 NO_GENERIC_LICENSE[license_name] = "license_file_in_fetched_source" 5530 5531 Here is an example that 5532 uses the ``LICENSE.Abilis.txt`` file as the license from the fetched 5533 source:: 5534 5535 NO_GENERIC_LICENSE[Firmware-Abilis] = "LICENSE.Abilis.txt" 5536 5537 :term:`NO_RECOMMENDATIONS` 5538 Prevents installation of all "recommended-only" packages. 5539 Recommended-only packages are packages installed only through the 5540 :term:`RRECOMMENDS` variable). Setting the 5541 :term:`NO_RECOMMENDATIONS` variable to "1" turns this feature on:: 5542 5543 NO_RECOMMENDATIONS = "1" 5544 5545 You can set this variable globally in your ``local.conf`` file or you 5546 can attach it to a specific image recipe by using the recipe name 5547 override:: 5548 5549 NO_RECOMMENDATIONS:pn-target_image = "1" 5550 5551 It is important to realize that if you choose to not install packages 5552 using this variable and some other packages are dependent on them 5553 (i.e. listed in a recipe's :term:`RDEPENDS` 5554 variable), the OpenEmbedded build system ignores your request and 5555 will install the packages to avoid dependency errors. 5556 5557 .. note:: 5558 5559 Some recommended packages might be required for certain system 5560 functionality, such as kernel modules. It is up to you to add 5561 packages with the :term:`IMAGE_INSTALL` variable. 5562 5563 This variable is only supported when using the IPK and RPM 5564 packaging backends. DEB is not supported. 5565 5566 See the :term:`BAD_RECOMMENDATIONS` and 5567 the :term:`PACKAGE_EXCLUDE` variables for 5568 related information. 5569 5570 :term:`NOAUTOPACKAGEDEBUG` 5571 Disables auto package from splitting ``.debug`` files. If a recipe 5572 requires ``FILES:${PN}-dbg`` to be set manually, the 5573 :term:`NOAUTOPACKAGEDEBUG` can be defined allowing you to define the 5574 content of the debug package. For example:: 5575 5576 NOAUTOPACKAGEDEBUG = "1" 5577 FILES:${PN}-dev = "${includedir}/${QT_DIR_NAME}/Qt/*" 5578 FILES:${PN}-dbg = "/usr/src/debug/" 5579 FILES:${QT_BASE_NAME}-demos-doc = "${docdir}/${QT_DIR_NAME}/qch/qt.qch" 5580 5581 :term:`NON_MULTILIB_RECIPES` 5582 A list of recipes that should not be built for multilib. OE-Core's 5583 ``multilib.conf`` file defines a reasonable starting point for this 5584 list with:: 5585 5586 NON_MULTILIB_RECIPES = "grub grub-efi make-mod-scripts ovmf u-boot" 5587 5588 :term:`OBJCOPY` 5589 The minimal command and arguments to run ``objcopy``. 5590 5591 :term:`OBJDUMP` 5592 The minimal command and arguments to run ``objdump``. 5593 5594 :term:`OE_BINCONFIG_EXTRA_MANGLE` 5595 When inheriting the :ref:`ref-classes-binconfig` class, 5596 this variable specifies additional arguments passed to the "sed" 5597 command. The sed command alters any paths in configuration scripts 5598 that have been set up during compilation. Inheriting this class 5599 results in all paths in these scripts being changed to point into the 5600 ``sysroots/`` directory so that all builds that use the script will 5601 use the correct directories for the cross compiling layout. 5602 5603 See the ``meta/classes-recipe/binconfig.bbclass`` in the 5604 :term:`Source Directory` for details on how this class 5605 applies these additional sed command arguments. 5606 5607 :term:`OECMAKE_GENERATOR` 5608 A variable for the :ref:`ref-classes-cmake` class, allowing to choose 5609 which back-end will be generated by CMake to build an application. 5610 5611 By default, this variable is set to ``Ninja``, which is faster than GNU 5612 make, but if building is broken with Ninja, a recipe can use this 5613 variable to use GNU make instead:: 5614 5615 OECMAKE_GENERATOR = "Unix Makefiles" 5616 5617 :term:`OE_IMPORTS` 5618 An internal variable used to tell the OpenEmbedded build system what 5619 Python modules to import for every Python function run by the system. 5620 5621 .. note:: 5622 5623 Do not set this variable. It is for internal use only. 5624 5625 :term:`OE_INIT_ENV_SCRIPT` 5626 The name of the build environment setup script for the purposes of 5627 setting up the environment within the extensible SDK. The default 5628 value is "oe-init-build-env". 5629 5630 If you use a custom script to set up your build environment, set the 5631 :term:`OE_INIT_ENV_SCRIPT` variable to its name. 5632 5633 :term:`OE_TERMINAL` 5634 Controls how the OpenEmbedded build system spawns interactive 5635 terminals on the host development system (e.g. using the BitBake 5636 command with the ``-c devshell`` command-line option). For more 5637 information, see the ":ref:`dev-manual/development-shell:using a development shell`" section in 5638 the Yocto Project Development Tasks Manual. 5639 5640 You can use the following values for the :term:`OE_TERMINAL` variable: 5641 5642 - auto 5643 - gnome 5644 - xfce 5645 - rxvt 5646 - screen 5647 - konsole 5648 - none 5649 5650 :term:`OEROOT` 5651 The directory from which the top-level build environment setup script 5652 is sourced. The Yocto Project provides a top-level build environment 5653 setup script: :ref:`structure-core-script`. When you run this 5654 script, the :term:`OEROOT` variable resolves to the directory that 5655 contains the script. 5656 5657 For additional information on how this variable is used, see the 5658 initialization script. 5659 5660 :term:`OEQA_REPRODUCIBLE_TEST_PACKAGE` 5661 Set the package manager(s) for build reproducibility testing. 5662 See :yocto_git:`reproducible.py </poky/tree/meta/lib/oeqa/selftest/cases/reproducible.py>` 5663 and :doc:`/test-manual/reproducible-builds`. 5664 5665 :term:`OEQA_REPRODUCIBLE_TEST_TARGET` 5666 Set build target for build reproducibility testing. By default 5667 all available recipes are compiled with "bitbake world", see also :term:`EXCLUDE_FROM_WORLD` 5668 and :doc:`/test-manual/reproducible-builds`. 5669 5670 :term:`OEQA_REPRODUCIBLE_TEST_SSTATE_TARGETS` 5671 Set build targets which can be rebuilt using :ref:`shared state <overview-manual/concepts:shared state cache>` 5672 when running build reproducibility tests. See :doc:`/test-manual/reproducible-builds`. 5673 5674 :term:`OLDEST_KERNEL` 5675 Declares the oldest version of the Linux kernel that the produced 5676 binaries must support. This variable is passed into the build of the 5677 Embedded GNU C Library (``glibc``). 5678 5679 The default for this variable comes from the 5680 ``meta/conf/bitbake.conf`` configuration file. You can override this 5681 default by setting the variable in a custom distribution 5682 configuration file. 5683 5684 :term:`OPKG_MAKE_INDEX_EXTRA_PARAMS` 5685 Specifies extra parameters for the ``opkg-make-index`` command. 5686 5687 :term:`OVERLAYFS_ETC_DEVICE` 5688 When the :ref:`ref-classes-overlayfs-etc` class is 5689 inherited, specifies the device to be mounted for the read/write 5690 layer of ``/etc``. There is no default, so you must set this if you 5691 wish to enable :ref:`ref-classes-overlayfs-etc`, for 5692 example, assuming ``/dev/mmcblk0p2`` was the desired device:: 5693 5694 OVERLAYFS_ETC_DEVICE = "/dev/mmcblk0p2" 5695 5696 :term:`OVERLAYFS_ETC_EXPOSE_LOWER` 5697 When the :ref:`ref-classes-overlayfs-etc` class is 5698 inherited, if set to "1" then a read-only access to the original 5699 ``/etc`` content will be provided as a ``lower/`` subdirectory of 5700 :term:`OVERLAYFS_ETC_MOUNT_POINT`. The default value is "0". 5701 5702 :term:`OVERLAYFS_ETC_FSTYPE` 5703 When the :ref:`ref-classes-overlayfs-etc` class is 5704 inherited, specifies the file system type for the read/write 5705 layer of ``/etc``. There is no default, so you must set this if you 5706 wish to enable :ref:`ref-classes-overlayfs-etc`, 5707 for example, assuming the file system is ext4:: 5708 5709 OVERLAYFS_ETC_FSTYPE = "ext4" 5710 5711 :term:`OVERLAYFS_ETC_MOUNT_OPTIONS` 5712 When the :ref:`ref-classes-overlayfs-etc` class is 5713 inherited, specifies the mount options for the read-write layer. 5714 The default value is "defaults". 5715 5716 :term:`OVERLAYFS_ETC_MOUNT_POINT` 5717 When the :ref:`ref-classes-overlayfs-etc` class is 5718 inherited, specifies the parent mount path for the filesystem layers. 5719 There is no default, so you must set this if you wish to enable 5720 :ref:`ref-classes-overlayfs-etc`, for example if the desired path is 5721 "/data":: 5722 5723 OVERLAYFS_ETC_MOUNT_POINT = "/data" 5724 5725 :term:`OVERLAYFS_ETC_USE_ORIG_INIT_NAME` 5726 When the :ref:`ref-classes-overlayfs-etc` class is inherited, controls 5727 how the generated init will be named. For more information, see the 5728 :ref:`ref-classes-overlayfs-etc` class documentation. The default value 5729 is "1". 5730 5731 :term:`OVERLAYFS_MOUNT_POINT` 5732 When inheriting the :ref:`ref-classes-overlayfs` class, 5733 specifies mount point(s) to be used. For example:: 5734 5735 OVERLAYFS_MOUNT_POINT[data] = "/data" 5736 5737 The assumes you have a ``data.mount`` systemd unit defined elsewhere in 5738 your BSP (e.g. in ``systemd-machine-units`` recipe) and it is installed 5739 into the image. For more information see :ref:`ref-classes-overlayfs`. 5740 5741 .. note:: 5742 5743 Although the :ref:`ref-classes-overlayfs` class is 5744 inherited by individual recipes, :term:`OVERLAYFS_MOUNT_POINT` 5745 should be set in your machine configuration. 5746 5747 :term:`OVERLAYFS_QA_SKIP` 5748 When inheriting the :ref:`ref-classes-overlayfs` class, 5749 provides the ability to disable QA checks for particular overlayfs 5750 mounts. For example:: 5751 5752 OVERLAYFS_QA_SKIP[data] = "mount-configured" 5753 5754 .. note:: 5755 5756 Although the :ref:`ref-classes-overlayfs` class is 5757 inherited by individual recipes, :term:`OVERLAYFS_QA_SKIP` 5758 should be set in your machine configuration. 5759 5760 :term:`OVERLAYFS_WRITABLE_PATHS` 5761 When inheriting the :ref:`ref-classes-overlayfs` class, 5762 specifies writable paths used at runtime for the recipe. For 5763 example:: 5764 5765 OVERLAYFS_WRITABLE_PATHS[data] = "/usr/share/my-custom-application" 5766 5767 :term:`OVERRIDES` 5768 A colon-separated list of overrides that currently apply. Overrides 5769 are a BitBake mechanism that allows variables to be selectively 5770 overridden at the end of parsing. The set of overrides in 5771 :term:`OVERRIDES` represents the "state" during building, which includes 5772 the current recipe being built, the machine for which it is being 5773 built, and so forth. 5774 5775 As an example, if the string "an-override" appears as an element in 5776 the colon-separated list in :term:`OVERRIDES`, then the following 5777 assignment will override ``FOO`` with the value "overridden" at the 5778 end of parsing:: 5779 5780 FOO:an-override = "overridden" 5781 5782 See the 5783 ":ref:`bitbake-user-manual/bitbake-user-manual-metadata:conditional syntax (overrides)`" 5784 section in the BitBake User Manual for more information on the 5785 overrides mechanism. 5786 5787 The default value of :term:`OVERRIDES` includes the values of the 5788 :term:`CLASSOVERRIDE`, 5789 :term:`MACHINEOVERRIDES`, and 5790 :term:`DISTROOVERRIDES` variables. Another 5791 important override included by default is ``pn-${PN}``. This override 5792 allows variables to be set for a single recipe within configuration 5793 (``.conf``) files. Here is an example:: 5794 5795 FOO:pn-myrecipe = "myrecipe-specific value" 5796 5797 .. note:: 5798 5799 An easy way to see what overrides apply is to search for :term:`OVERRIDES` 5800 in the output of the ``bitbake -e`` command. See the 5801 ":ref:`dev-manual/debugging:viewing variable values`" section in the Yocto 5802 Project Development Tasks Manual for more information. 5803 5804 :term:`P` 5805 The recipe name and version. :term:`P` is comprised of the following:: 5806 5807 ${PN}-${PV} 5808 5809 :term:`P4DIR` 5810 See :term:`bitbake:P4DIR` in the BitBake manual. 5811 5812 :term:`PACKAGE_ADD_METADATA` 5813 This variable defines additional metadata to add to packages. 5814 5815 You may find you need to inject additional metadata into packages. 5816 This variable allows you to do that by setting the injected data as 5817 the value. Multiple fields can be added by splitting the content with 5818 the literal separator "\n". 5819 5820 The suffixes '_IPK', '_DEB', or '_RPM' can be applied to the variable 5821 to do package type specific settings. It can also be made package 5822 specific by using the package name as a suffix. 5823 5824 You can find out more about applying this variable in the 5825 ":ref:`dev-manual/packages:adding custom metadata to packages`" 5826 section in the Yocto Project Development Tasks Manual. 5827 5828 :term:`PACKAGE_ARCH` 5829 The architecture of the resulting package or packages. 5830 5831 By default, the value of this variable is set to 5832 :term:`TUNE_PKGARCH` when building for the 5833 target, :term:`BUILD_ARCH` when building for the 5834 build host, and "${SDK_ARCH}-${SDKPKGSUFFIX}" when building for the 5835 SDK. 5836 5837 .. note:: 5838 5839 See :term:`SDK_ARCH` for more information. 5840 5841 However, if your recipe's output packages are built specific to the 5842 target machine rather than generally for the architecture of the 5843 machine, you should set :term:`PACKAGE_ARCH` to the value of 5844 :term:`MACHINE_ARCH` in the recipe as follows:: 5845 5846 PACKAGE_ARCH = "${MACHINE_ARCH}" 5847 5848 :term:`PACKAGE_ARCHS` 5849 Specifies a list of architectures compatible with the target machine. 5850 This variable is set automatically and should not normally be 5851 hand-edited. Entries are separated using spaces and listed in order 5852 of priority. The default value for :term:`PACKAGE_ARCHS` is "all any 5853 noarch ${PACKAGE_EXTRA_ARCHS} ${MACHINE_ARCH}". 5854 5855 :term:`PACKAGE_BEFORE_PN` 5856 Enables easily adding packages to :term:`PACKAGES` before ``${PN}`` so 5857 that those added packages can pick up files that would normally be 5858 included in the default package. 5859 5860 :term:`PACKAGE_CLASSES` 5861 This variable, which is set in the ``local.conf`` configuration file 5862 found in the ``conf`` folder of the 5863 :term:`Build Directory`, specifies the package manager the 5864 OpenEmbedded build system uses when packaging data. 5865 5866 You can provide one or more of the following arguments for the 5867 variable:: 5868 5869 PACKAGE_CLASSES ?= "package_rpm package_deb package_ipk" 5870 5871 The build system uses only the first argument in the list as the 5872 package manager when creating your image or SDK. However, packages 5873 will be created using any additional packaging classes you specify. 5874 For example, if you use the following in your ``local.conf`` file:: 5875 5876 PACKAGE_CLASSES ?= "package_ipk" 5877 5878 The OpenEmbedded build system uses 5879 the IPK package manager to create your image or SDK. 5880 5881 For information on packaging and build performance effects as a 5882 result of the package manager in use, see the 5883 ":ref:`ref-classes-package`" section. 5884 5885 :term:`PACKAGE_DEBUG_SPLIT_STYLE` 5886 Determines how to split up and package debug and source information 5887 when creating debugging packages to be used with the GNU Project 5888 Debugger (GDB). In general, based on the value of this variable, 5889 you can combine the source and debug info in a single package, 5890 you can break out the source into a separate package that can be 5891 installed independently, or you can choose to not have the source 5892 packaged at all. 5893 5894 The possible values of :term:`PACKAGE_DEBUG_SPLIT_STYLE` variable: 5895 5896 - "``.debug``": All debugging and source info is placed in a single 5897 ``*-dbg`` package; debug symbol files are placed next to the 5898 binary in a ``.debug`` directory so that, if a binary is installed 5899 into ``/bin``, the corresponding debug symbol file is installed 5900 in ``/bin/.debug``. Source files are installed in the same ``*-dbg`` 5901 package under ``/usr/src/debug``. 5902 5903 - "``debug-file-directory``": As above, all debugging and source info 5904 is placed in a single ``*-dbg`` package; debug symbol files are 5905 placed entirely under the directory ``/usr/lib/debug`` and separated 5906 by the path from where the binary is installed, so that if a binary 5907 is installed in ``/bin``, the corresponding debug symbols are installed 5908 in ``/usr/lib/debug/bin``, and so on. As above, source is installed 5909 in the same package under ``/usr/src/debug``. 5910 5911 - "``debug-with-srcpkg``": Debugging info is placed in the standard 5912 ``*-dbg`` package as with the ``.debug`` value, while source is 5913 placed in a separate ``*-src`` package, which can be installed 5914 independently. This is the default setting for this variable, 5915 as defined in Poky's ``bitbake.conf`` file. 5916 5917 - "``debug-without-src``": The same behavior as with the ``.debug`` 5918 setting, but no source is packaged at all. 5919 5920 .. note:: 5921 5922 Much of the above package splitting can be overridden via 5923 use of the :term:`INHIBIT_PACKAGE_DEBUG_SPLIT` variable. 5924 5925 You can find out more about debugging using GDB by reading the 5926 ":ref:`dev-manual/debugging:debugging with the gnu project debugger (gdb) remotely`" section 5927 in the Yocto Project Development Tasks Manual. 5928 5929 :term:`PACKAGE_EXCLUDE` 5930 Lists packages that should not be installed into an image. For 5931 example:: 5932 5933 PACKAGE_EXCLUDE = "package_name package_name package_name ..." 5934 5935 You can set this variable globally in your ``local.conf`` file or you 5936 can attach it to a specific image recipe by using the recipe name 5937 override:: 5938 5939 PACKAGE_EXCLUDE:pn-target_image = "package_name" 5940 5941 If you choose to not install a package using this variable and some 5942 other package is dependent on it (i.e. listed in a recipe's 5943 :term:`RDEPENDS` variable), the OpenEmbedded build 5944 system generates a fatal installation error. Because the build system 5945 halts the process with a fatal error, you can use the variable with 5946 an iterative development process to remove specific components from a 5947 system. 5948 5949 This variable is supported only when using the IPK and RPM 5950 packaging backends. DEB is not supported. 5951 5952 See the :term:`NO_RECOMMENDATIONS` and the 5953 :term:`BAD_RECOMMENDATIONS` variables for 5954 related information. 5955 5956 :term:`PACKAGE_EXCLUDE_COMPLEMENTARY` 5957 Prevents specific packages from being installed when you are 5958 installing complementary packages. 5959 5960 You might find that you want to prevent installing certain packages 5961 when you are installing complementary packages. For example, if you 5962 are using :term:`IMAGE_FEATURES` to install 5963 ``dev-pkgs``, you might not want to install all packages from a 5964 particular multilib. If you find yourself in this situation, you can 5965 use the :term:`PACKAGE_EXCLUDE_COMPLEMENTARY` variable to specify regular 5966 expressions to match the packages you want to exclude. 5967 5968 :term:`PACKAGE_EXTRA_ARCHS` 5969 Specifies the list of architectures compatible with the device CPU. 5970 This variable is useful when you build for several different devices 5971 that use miscellaneous processors such as XScale and ARM926-EJS. 5972 5973 :term:`PACKAGE_FEED_ARCHS` 5974 Optionally specifies the package architectures used as part of the 5975 package feed URIs during the build. When used, the 5976 :term:`PACKAGE_FEED_ARCHS` variable is appended to the final package feed 5977 URI, which is constructed using the 5978 :term:`PACKAGE_FEED_URIS` and 5979 :term:`PACKAGE_FEED_BASE_PATHS` 5980 variables. 5981 5982 .. note:: 5983 5984 You can use the :term:`PACKAGE_FEED_ARCHS` 5985 variable to allow specific package architectures. If you do 5986 not need to allow specific architectures, which is a common 5987 case, you can omit this variable. Omitting the variable results in 5988 all available architectures for the current machine being included 5989 into remote package feeds. 5990 5991 Consider the following example where the :term:`PACKAGE_FEED_URIS`, 5992 :term:`PACKAGE_FEED_BASE_PATHS`, and :term:`PACKAGE_FEED_ARCHS` variables are 5993 defined in your ``local.conf`` file:: 5994 5995 PACKAGE_FEED_URIS = "https://example.com/packagerepos/release \ 5996 https://example.com/packagerepos/updates" 5997 PACKAGE_FEED_BASE_PATHS = "rpm rpm-dev" 5998 PACKAGE_FEED_ARCHS = "all core2-64" 5999 6000 Given these settings, the resulting package feeds are as follows: 6001 6002 .. code-block:: none 6003 6004 https://example.com/packagerepos/release/rpm/all 6005 https://example.com/packagerepos/release/rpm/core2-64 6006 https://example.com/packagerepos/release/rpm-dev/all 6007 https://example.com/packagerepos/release/rpm-dev/core2-64 6008 https://example.com/packagerepos/updates/rpm/all 6009 https://example.com/packagerepos/updates/rpm/core2-64 6010 https://example.com/packagerepos/updates/rpm-dev/all 6011 https://example.com/packagerepos/updates/rpm-dev/core2-64 6012 6013 :term:`PACKAGE_FEED_BASE_PATHS` 6014 Specifies the base path used when constructing package feed URIs. The 6015 :term:`PACKAGE_FEED_BASE_PATHS` variable makes up the middle portion of a 6016 package feed URI used by the OpenEmbedded build system. The base path 6017 lies between the :term:`PACKAGE_FEED_URIS` 6018 and :term:`PACKAGE_FEED_ARCHS` variables. 6019 6020 Consider the following example where the :term:`PACKAGE_FEED_URIS`, 6021 :term:`PACKAGE_FEED_BASE_PATHS`, and :term:`PACKAGE_FEED_ARCHS` variables are 6022 defined in your ``local.conf`` file:: 6023 6024 PACKAGE_FEED_URIS = "https://example.com/packagerepos/release \ 6025 https://example.com/packagerepos/updates" 6026 PACKAGE_FEED_BASE_PATHS = "rpm rpm-dev" 6027 PACKAGE_FEED_ARCHS = "all core2-64" 6028 6029 Given these settings, the resulting package feeds are as follows: 6030 6031 .. code-block:: none 6032 6033 https://example.com/packagerepos/release/rpm/all 6034 https://example.com/packagerepos/release/rpm/core2-64 6035 https://example.com/packagerepos/release/rpm-dev/all 6036 https://example.com/packagerepos/release/rpm-dev/core2-64 6037 https://example.com/packagerepos/updates/rpm/all 6038 https://example.com/packagerepos/updates/rpm/core2-64 6039 https://example.com/packagerepos/updates/rpm-dev/all 6040 https://example.com/packagerepos/updates/rpm-dev/core2-64 6041 6042 :term:`PACKAGE_FEED_URIS` 6043 Specifies the front portion of the package feed URI used by the 6044 OpenEmbedded build system. Each final package feed URI is comprised 6045 of :term:`PACKAGE_FEED_URIS`, 6046 :term:`PACKAGE_FEED_BASE_PATHS`, and 6047 :term:`PACKAGE_FEED_ARCHS` variables. 6048 6049 Consider the following example where the :term:`PACKAGE_FEED_URIS`, 6050 :term:`PACKAGE_FEED_BASE_PATHS`, and :term:`PACKAGE_FEED_ARCHS` variables are 6051 defined in your ``local.conf`` file:: 6052 6053 PACKAGE_FEED_URIS = "https://example.com/packagerepos/release \ 6054 https://example.com/packagerepos/updates" 6055 PACKAGE_FEED_BASE_PATHS = "rpm rpm-dev" 6056 PACKAGE_FEED_ARCHS = "all core2-64" 6057 6058 Given these settings, the resulting package feeds are as follows: 6059 6060 .. code-block:: none 6061 6062 https://example.com/packagerepos/release/rpm/all 6063 https://example.com/packagerepos/release/rpm/core2-64 6064 https://example.com/packagerepos/release/rpm-dev/all 6065 https://example.com/packagerepos/release/rpm-dev/core2-64 6066 https://example.com/packagerepos/updates/rpm/all 6067 https://example.com/packagerepos/updates/rpm/core2-64 6068 https://example.com/packagerepos/updates/rpm-dev/all 6069 https://example.com/packagerepos/updates/rpm-dev/core2-64 6070 6071 :term:`PACKAGE_INSTALL` 6072 The final list of packages passed to the package manager for 6073 installation into the image. 6074 6075 Because the package manager controls actual installation of all 6076 packages, the list of packages passed using :term:`PACKAGE_INSTALL` is 6077 not the final list of packages that are actually installed. This 6078 variable is internal to the image construction code. Consequently, in 6079 general, you should use the 6080 :term:`IMAGE_INSTALL` variable to specify 6081 packages for installation. The exception to this is when working with 6082 the :ref:`core-image-minimal-initramfs <ref-manual/images:images>` 6083 image. When working with an initial RAM filesystem (:term:`Initramfs`) image, 6084 use the :term:`PACKAGE_INSTALL` variable. For information on creating an 6085 :term:`Initramfs`, see the ":ref:`dev-manual/building:building an initial ram filesystem (Initramfs) image`" section 6086 in the Yocto Project Development Tasks Manual. 6087 6088 :term:`PACKAGE_INSTALL_ATTEMPTONLY` 6089 Specifies a list of packages the OpenEmbedded build system attempts 6090 to install when creating an image. If a listed package fails to 6091 install, the build system does not generate an error. This variable 6092 is generally not user-defined. 6093 6094 :term:`PACKAGE_PREPROCESS_FUNCS` 6095 Specifies a list of functions run to pre-process the 6096 :term:`PKGD` directory prior to splitting the files out 6097 to individual packages. 6098 6099 :term:`PACKAGE_WRITE_DEPS` 6100 Specifies a list of dependencies for post-installation and 6101 pre-installation scripts on native/cross tools. If your 6102 post-installation or pre-installation script can execute at root filesystem 6103 creation time rather than on the target but depends on a native tool 6104 in order to execute, you need to list the tools in 6105 :term:`PACKAGE_WRITE_DEPS`. 6106 6107 For information on running post-installation scripts, see the 6108 ":ref:`dev-manual/new-recipe:post-installation scripts`" 6109 section in the Yocto Project Development Tasks Manual. 6110 6111 :term:`PACKAGECONFIG` 6112 This variable provides a means of enabling or disabling features of a 6113 recipe on a per-recipe basis. :term:`PACKAGECONFIG` blocks are defined in 6114 recipes when you specify features and then arguments that define 6115 feature behaviors. Here is the basic block structure (broken over 6116 multiple lines for readability):: 6117 6118 PACKAGECONFIG ??= "f1 f2 f3 ..." 6119 PACKAGECONFIG[f1] = "\ 6120 --with-f1, \ 6121 --without-f1, \ 6122 build-deps-for-f1, \ 6123 runtime-deps-for-f1, \ 6124 runtime-recommends-for-f1, \ 6125 packageconfig-conflicts-for-f1" 6126 PACKAGECONFIG[f2] = "\ 6127 ... and so on and so on ... 6128 6129 The :term:`PACKAGECONFIG` variable itself specifies a space-separated 6130 list of the features to enable. Following the features, you can 6131 determine the behavior of each feature by providing up to six 6132 order-dependent arguments, which are separated by commas. You can 6133 omit any argument you like but must retain the separating commas. The 6134 order is important and specifies the following: 6135 6136 #. Extra arguments that should be added to :term:`PACKAGECONFIG_CONFARGS` 6137 if the feature is enabled. 6138 6139 #. Extra arguments that should be added to :term:`PACKAGECONFIG_CONFARGS` 6140 if the feature is disabled. 6141 6142 #. Additional build dependencies (:term:`DEPENDS`) 6143 that should be added if the feature is enabled. 6144 6145 #. Additional runtime dependencies (:term:`RDEPENDS`) 6146 that should be added if the feature is enabled. 6147 6148 #. Additional runtime recommendations 6149 (:term:`RRECOMMENDS`) that should be added if 6150 the feature is enabled. 6151 6152 #. Any conflicting (that is, mutually exclusive) :term:`PACKAGECONFIG` 6153 settings for this feature. 6154 6155 Consider the following :term:`PACKAGECONFIG` block taken from the 6156 ``librsvg`` recipe. In this example the feature is ``gtk``, which has 6157 three arguments that determine the feature's behavior:: 6158 6159 PACKAGECONFIG[gtk] = "--with-gtk3,--without-gtk3,gtk+3" 6160 6161 The 6162 ``--with-gtk3`` and ``gtk+3`` arguments apply only if the feature is 6163 enabled. In this case, ``--with-gtk3`` is added to the configure 6164 script argument list and ``gtk+3`` is added to :term:`DEPENDS`. On the 6165 other hand, if the feature is disabled say through a ``.bbappend`` 6166 file in another layer, then the second argument ``--without-gtk3`` is 6167 added to the configure script instead. 6168 6169 The basic :term:`PACKAGECONFIG` structure previously described holds true 6170 regardless of whether you are creating a block or changing a block. 6171 When creating a block, use the structure inside your recipe. 6172 6173 If you want to change an existing :term:`PACKAGECONFIG` block, you can do 6174 so one of two ways: 6175 6176 - *Append file:* Create an append file named 6177 ``recipename.bbappend`` in your layer and override the value of 6178 :term:`PACKAGECONFIG`. You can either completely override the 6179 variable:: 6180 6181 PACKAGECONFIG = "f4 f5" 6182 6183 Or, you can just append the variable:: 6184 6185 PACKAGECONFIG:append = " f4" 6186 6187 - *Configuration file:* This method is identical to changing the 6188 block through an append file except you edit your ``local.conf`` 6189 or ``mydistro.conf`` file. As with append files previously 6190 described, you can either completely override the variable:: 6191 6192 PACKAGECONFIG:pn-recipename = "f4 f5" 6193 6194 Or, you can just amend the variable:: 6195 6196 PACKAGECONFIG:append:pn-recipename = " f4" 6197 6198 Consider the following example of a :ref:`ref-classes-cmake` recipe with a systemd service 6199 in which :term:`PACKAGECONFIG` is used to transform the systemd service 6200 into a feature that can be easily enabled or disabled via :term:`PACKAGECONFIG`:: 6201 6202 example.c 6203 example.service 6204 CMakeLists.txt 6205 6206 The ``CMakeLists.txt`` file contains:: 6207 6208 if(WITH_SYSTEMD) 6209 install(FILES ${PROJECT_SOURCE_DIR}/example.service DESTINATION /etc/systemd/systemd) 6210 endif(WITH_SYSTEMD) 6211 6212 In order to enable the installation of ``example.service`` we need to 6213 ensure that ``-DWITH_SYSTEMD=ON`` is passed to the ``cmake`` command 6214 execution. Recipes that have ``CMakeLists.txt`` generally inherit the 6215 :ref:`ref-classes-cmake` class, that runs ``cmake`` with 6216 :term:`EXTRA_OECMAKE`, which :term:`PACKAGECONFIG_CONFARGS` will be 6217 appended to. Now, knowing that :term:`PACKAGECONFIG_CONFARGS` is 6218 automatically filled with either the first or second element of 6219 :term:`PACKAGECONFIG` flag value, the recipe would be like:: 6220 6221 inherit cmake 6222 PACKAGECONFIG = "systemd" 6223 PACKAGECONFIG[systemd] = "-DWITH_SYSTEMD=ON,-DWITH_SYSTEMD=OFF" 6224 6225 A side note to this recipe is to check if ``systemd`` is in fact the used :term:`INIT_MANAGER` 6226 or not:: 6227 6228 PACKAGECONFIG = "${@'systemd' if d.getVar('INIT_MANAGER') == 'systemd' else ''}" 6229 6230 :term:`PACKAGECONFIG_CONFARGS` 6231 A space-separated list of configuration options generated from the 6232 :term:`PACKAGECONFIG` setting. 6233 6234 Classes such as :ref:`ref-classes-autotools` and :ref:`ref-classes-cmake` 6235 use :term:`PACKAGECONFIG_CONFARGS` to pass :term:`PACKAGECONFIG` options 6236 to ``configure`` and ``cmake``, respectively. If you are using 6237 :term:`PACKAGECONFIG` but not a class that handles the 6238 :ref:`ref-tasks-configure` task, then you need to use 6239 :term:`PACKAGECONFIG_CONFARGS` appropriately. 6240 6241 :term:`PACKAGEGROUP_DISABLE_COMPLEMENTARY` 6242 For recipes inheriting the :ref:`ref-classes-packagegroup` class, setting 6243 :term:`PACKAGEGROUP_DISABLE_COMPLEMENTARY` to "1" specifies that the 6244 normal complementary packages (i.e. ``-dev``, ``-dbg``, and so forth) 6245 should not be automatically created by the ``packagegroup`` recipe, 6246 which is the default behavior. 6247 6248 :term:`PACKAGES` 6249 The list of packages the recipe creates. The default value is the 6250 following:: 6251 6252 ${PN}-src ${PN}-dbg ${PN}-staticdev ${PN}-dev ${PN}-doc ${PN}-locale ${PACKAGE_BEFORE_PN} ${PN} 6253 6254 During packaging, the :ref:`ref-tasks-package` task 6255 goes through :term:`PACKAGES` and uses the :term:`FILES` 6256 variable corresponding to each package to assign files to the 6257 package. If a file matches the :term:`FILES` variable for more than one 6258 package in :term:`PACKAGES`, it will be assigned to the earliest 6259 (leftmost) package. 6260 6261 Packages in the variable's list that are empty (i.e. where none of 6262 the patterns in ``FILES:``\ pkg match any files installed by the 6263 :ref:`ref-tasks-install` task) are not generated, 6264 unless generation is forced through the 6265 :term:`ALLOW_EMPTY` variable. 6266 6267 :term:`PACKAGES_DYNAMIC` 6268 A promise that your recipe satisfies runtime dependencies for 6269 optional modules that are found in other recipes. 6270 :term:`PACKAGES_DYNAMIC` does not actually satisfy the dependencies, it 6271 only states that they should be satisfied. For example, if a hard, 6272 runtime dependency (:term:`RDEPENDS`) of another 6273 package is satisfied at build time through the :term:`PACKAGES_DYNAMIC` 6274 variable, but a package with the module name is never actually 6275 produced, then the other package will be broken. Thus, if you attempt 6276 to include that package in an image, you will get a dependency 6277 failure from the packaging system during the 6278 :ref:`ref-tasks-rootfs` task. 6279 6280 Typically, if there is a chance that such a situation can occur and 6281 the package that is not created is valid without the dependency being 6282 satisfied, then you should use :term:`RRECOMMENDS` 6283 (a soft runtime dependency) instead of :term:`RDEPENDS`. 6284 6285 For an example of how to use the :term:`PACKAGES_DYNAMIC` variable when 6286 you are splitting packages, see the 6287 ":ref:`dev-manual/packages:handling optional module packaging`" 6288 section in the Yocto Project Development Tasks Manual. 6289 6290 :term:`PACKAGESPLITFUNCS` 6291 Specifies a list of functions run to perform additional splitting of 6292 files into individual packages. Recipes can either prepend to this 6293 variable or prepend to the ``populate_packages`` function in order to 6294 perform additional package splitting. In either case, the function 6295 should set :term:`PACKAGES`, 6296 :term:`FILES`, :term:`RDEPENDS` and 6297 other packaging variables appropriately in order to perform the 6298 desired splitting. 6299 6300 :term:`PARALLEL_MAKE` 6301 6302 Extra options passed to the build tool command (``make``, 6303 ``ninja`` or more specific build engines, like the Go language one) 6304 during the :ref:`ref-tasks-compile` task, to specify parallel compilation 6305 on the local build host. This variable is usually in the form "-j x", 6306 where x represents the maximum number of parallel threads such engines 6307 can run. 6308 6309 .. note:: 6310 6311 For software compiled by ``make``, in order for :term:`PARALLEL_MAKE` 6312 to be effective, ``make`` must be called with 6313 ``${``\ :term:`EXTRA_OEMAKE`\ ``}``. An easy 6314 way to ensure this is to use the ``oe_runmake`` function. 6315 6316 By default, the OpenEmbedded build system automatically sets this 6317 variable to be equal to the number of cores the build system uses. 6318 6319 .. note:: 6320 6321 If the software being built experiences dependency issues during 6322 the :ref:`ref-tasks-compile` task that result in race conditions, you can clear 6323 the :term:`PARALLEL_MAKE` variable within the recipe as a workaround. For 6324 information on addressing race conditions, see the 6325 ":ref:`dev-manual/debugging:debugging parallel make races`" 6326 section in the Yocto Project Development Tasks Manual. 6327 6328 For single socket systems (i.e. one CPU), you should not have to 6329 override this variable to gain optimal parallelism during builds. 6330 However, if you have very large systems that employ multiple physical 6331 CPUs, you might want to make sure the :term:`PARALLEL_MAKE` variable is 6332 not set higher than "-j 20". 6333 6334 For more information on speeding up builds, see the 6335 ":ref:`dev-manual/speeding-up-build:speeding up a build`" 6336 section in the Yocto Project Development Tasks Manual. 6337 6338 :term:`PARALLEL_MAKEINST` 6339 Extra options passed to the build tool install command 6340 (``make install``, ``ninja install`` or more specific ones) 6341 during the :ref:`ref-tasks-install` task in order to specify 6342 parallel installation. This variable defaults to the value of 6343 :term:`PARALLEL_MAKE`. 6344 6345 .. note:: 6346 6347 For software compiled by ``make``, in order for :term:`PARALLEL_MAKEINST` 6348 to be effective, ``make`` must be called with 6349 ``${``\ :term:`EXTRA_OEMAKE`\ ``}``. An easy 6350 way to ensure this is to use the ``oe_runmake`` function. 6351 6352 If the software being built experiences dependency issues during 6353 the :ref:`ref-tasks-install` task that result in race conditions, you can 6354 clear the :term:`PARALLEL_MAKEINST` variable within the recipe as a 6355 workaround. For information on addressing race conditions, see the 6356 ":ref:`dev-manual/debugging:debugging parallel make races`" 6357 section in the Yocto Project Development Tasks Manual. 6358 6359 :term:`PATCHRESOLVE` 6360 Determines the action to take when a patch fails. You can set this 6361 variable to one of two values: "noop" and "user". 6362 6363 The default value of "noop" causes the build to simply fail when the 6364 OpenEmbedded build system cannot successfully apply a patch. Setting 6365 the value to "user" causes the build system to launch a shell and 6366 places you in the right location so that you can manually resolve the 6367 conflicts. 6368 6369 Set this variable in your ``local.conf`` file. 6370 6371 :term:`PATCHTOOL` 6372 Specifies the utility used to apply patches for a recipe during the 6373 :ref:`ref-tasks-patch` task. You can specify one of 6374 three utilities: "patch", "quilt", or "git". The default utility used 6375 is "quilt" except for the quilt-native recipe itself. Because the 6376 quilt tool is not available at the time quilt-native is being 6377 patched, it uses "patch". 6378 6379 If you wish to use an alternative patching tool, set the variable in 6380 the recipe using one of the following:: 6381 6382 PATCHTOOL = "patch" 6383 PATCHTOOL = "quilt" 6384 PATCHTOOL = "git" 6385 6386 :term:`PE` 6387 The epoch of the recipe. By default, this variable is unset. The 6388 variable is used to make upgrades possible when the versioning scheme 6389 changes in some backwards incompatible way. 6390 6391 :term:`PE` is the default value of the :term:`PKGE` variable. 6392 6393 :term:`PEP517_WHEEL_PATH` 6394 When used by recipes that inherit the :ref:`ref-classes-python_pep517` 6395 class, denotes the path to ``dist/`` (short for distribution) where the 6396 binary archive ``wheel`` is built. 6397 6398 :term:`PERSISTENT_DIR` 6399 See :term:`bitbake:PERSISTENT_DIR` in the BitBake manual. 6400 6401 :term:`PF` 6402 Specifies the recipe or package name and includes all version and 6403 revision numbers (i.e. ``glibc-2.13-r20+svnr15508/`` and 6404 ``bash-4.2-r1/``). This variable is comprised of the following: 6405 ${:term:`PN`}-${:term:`EXTENDPE`}${:term:`PV`}-${:term:`PR`} 6406 6407 :term:`PIXBUF_PACKAGES` 6408 When inheriting the :ref:`ref-classes-pixbufcache` 6409 class, this variable identifies packages that contain the pixbuf 6410 loaders used with ``gdk-pixbuf``. By default, the 6411 :ref:`ref-classes-pixbufcache` class assumes that 6412 the loaders are in the recipe's main package (i.e. 6413 ``${``\ :term:`PN`\ ``}``). Use this variable if the 6414 loaders you need are in a package other than that main package. 6415 6416 :term:`PKG` 6417 The name of the resulting package created by the OpenEmbedded build 6418 system. 6419 6420 .. note:: 6421 6422 When using the :term:`PKG` variable, you must use a package name override. 6423 6424 For example, when the :ref:`ref-classes-debian` class renames the output 6425 package, it does so by setting ``PKG:packagename``. 6426 6427 :term:`PKG_CONFIG_PATH` 6428 The path to ``pkg-config`` files for the current build context. 6429 ``pkg-config`` reads this variable from the environment. 6430 6431 :term:`PKGD` 6432 Points to the destination directory for files to be packaged before 6433 they are split into individual packages. This directory defaults to 6434 the following:: 6435 6436 ${WORKDIR}/package 6437 6438 Do not change this default. 6439 6440 :term:`PKGDATA_DIR` 6441 Points to a shared, global-state directory that holds data generated 6442 during the packaging process. During the packaging process, the 6443 :ref:`ref-tasks-packagedata` task packages data 6444 for each recipe and installs it into this temporary, shared area. 6445 This directory defaults to the following, which you should not 6446 change:: 6447 6448 ${STAGING_DIR_HOST}/pkgdata 6449 6450 For examples of how this data is used, see the 6451 ":ref:`overview-manual/concepts:automatically added runtime dependencies`" 6452 section in the Yocto Project Overview and Concepts Manual and the 6453 ":ref:`dev-manual/debugging:viewing package information with \`\`oe-pkgdata-util\`\``" 6454 section in the Yocto Project Development Tasks Manual. For more 6455 information on the shared, global-state directory, see 6456 :term:`STAGING_DIR_HOST`. 6457 6458 :term:`PKGDEST` 6459 Points to the parent directory for files to be packaged after they 6460 have been split into individual packages. This directory defaults to 6461 the following:: 6462 6463 ${WORKDIR}/packages-split 6464 6465 Under this directory, the build system creates directories for each 6466 package specified in :term:`PACKAGES`. Do not change 6467 this default. 6468 6469 :term:`PKGDESTWORK` 6470 Points to a temporary work area where the 6471 :ref:`ref-tasks-package` task saves package metadata. 6472 The :term:`PKGDESTWORK` location defaults to the following:: 6473 6474 ${WORKDIR}/pkgdata 6475 6476 Do not change this default. 6477 6478 The :ref:`ref-tasks-packagedata` task copies the 6479 package metadata from :term:`PKGDESTWORK` to 6480 :term:`PKGDATA_DIR` to make it available globally. 6481 6482 :term:`PKGE` 6483 The epoch of the package(s) built by the recipe. By default, :term:`PKGE` 6484 is set to :term:`PE`. 6485 6486 :term:`PKGR` 6487 The revision of the package(s) built by the recipe. By default, 6488 :term:`PKGR` is set to :term:`PR`. 6489 6490 :term:`PKGV` 6491 The version of the package(s) built by the recipe. By default, 6492 :term:`PKGV` is set to :term:`PV`. 6493 6494 :term:`PN` 6495 This variable can have two separate functions depending on the 6496 context: a recipe name or a resulting package name. 6497 6498 :term:`PN` refers to a recipe name in the context of a file used by the 6499 OpenEmbedded build system as input to create a package. The name is 6500 normally extracted from the recipe file name. For example, if the 6501 recipe is named ``expat_2.0.1.bb``, then the default value of :term:`PN` 6502 will be "expat". 6503 6504 The variable refers to a package name in the context of a file 6505 created or produced by the OpenEmbedded build system. 6506 6507 If applicable, the :term:`PN` variable also contains any special suffix 6508 or prefix. For example, using ``bash`` to build packages for the 6509 native machine, :term:`PN` is ``bash-native``. Using ``bash`` to build 6510 packages for the target and for Multilib, :term:`PN` would be ``bash`` 6511 and ``lib64-bash``, respectively. 6512 6513 :term:`POPULATE_SDK_POST_HOST_COMMAND` 6514 Specifies a list of functions to call once the OpenEmbedded build 6515 system has created the host part of the SDK. You can specify 6516 functions separated by spaces:: 6517 6518 POPULATE_SDK_POST_HOST_COMMAND += "function" 6519 6520 If you need to pass the SDK path to a command within a function, you 6521 can use ``${SDK_DIR}``, which points to the parent directory used by 6522 the OpenEmbedded build system when creating SDK output. See the 6523 :term:`SDK_DIR` variable for more information. 6524 6525 :term:`POPULATE_SDK_POST_TARGET_COMMAND` 6526 Specifies a list of functions to call once the OpenEmbedded build 6527 system has created the target part of the SDK. You can specify 6528 functions separated by spaces:: 6529 6530 POPULATE_SDK_POST_TARGET_COMMAND += "function" 6531 6532 If you need to pass the SDK path to a command within a function, you 6533 can use ``${SDK_DIR}``, which points to the parent directory used by 6534 the OpenEmbedded build system when creating SDK output. See the 6535 :term:`SDK_DIR` variable for more information. 6536 6537 :term:`PR` 6538 The revision of the recipe. The default value for this variable is 6539 "r0". Subsequent revisions of the recipe conventionally have the 6540 values "r1", "r2", and so forth. When :term:`PV` increases, 6541 :term:`PR` is conventionally reset to "r0". 6542 6543 .. note:: 6544 6545 The OpenEmbedded build system does not need the aid of :term:`PR` 6546 to know when to rebuild a recipe. The build system uses the task 6547 :ref:`input checksums <overview-manual/concepts:checksums (signatures)>` along with the 6548 :ref:`stamp <structure-build-tmp-stamps>` and 6549 :ref:`overview-manual/concepts:shared state cache` 6550 mechanisms. 6551 6552 The :term:`PR` variable primarily becomes significant when a package 6553 manager dynamically installs packages on an already built image. In 6554 this case, :term:`PR`, which is the default value of 6555 :term:`PKGR`, helps the package manager distinguish which 6556 package is the most recent one in cases where many packages have the 6557 same :term:`PV` (i.e. :term:`PKGV`). A component having many packages with 6558 the same :term:`PV` usually means that the packages all install the same 6559 upstream version, but with later (:term:`PR`) version packages including 6560 packaging fixes. 6561 6562 .. note:: 6563 6564 :term:`PR` does not need to be increased for changes that do not change the 6565 package contents or metadata. 6566 6567 Because manually managing :term:`PR` can be cumbersome and error-prone, 6568 an automated solution exists. See the 6569 ":ref:`dev-manual/packages:working with a pr service`" section 6570 in the Yocto Project Development Tasks Manual for more information. 6571 6572 :term:`PREFERRED_PROVIDER` 6573 If multiple recipes provide the same item, this variable determines 6574 which recipe is preferred and thus provides the item (i.e. the 6575 preferred provider). You should always suffix this variable with the 6576 name of the provided item. And, you should define the variable using 6577 the preferred recipe's name (:term:`PN`). Here is a common 6578 example:: 6579 6580 PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto" 6581 6582 In the previous example, multiple recipes are providing "virtual/kernel". 6583 The :term:`PREFERRED_PROVIDER` variable is set with the name (:term:`PN`) of 6584 the recipe you prefer to provide "virtual/kernel". 6585 6586 Here are more examples:: 6587 6588 PREFERRED_PROVIDER_virtual/xserver = "xserver-xf86" 6589 PREFERRED_PROVIDER_virtual/libgl ?= "mesa" 6590 6591 For more 6592 information, see the ":ref:`dev-manual/new-recipe:using virtual providers`" 6593 section in the Yocto Project Development Tasks Manual. 6594 6595 .. note:: 6596 6597 If you use a ``virtual/\*`` item with :term:`PREFERRED_PROVIDER`, then any 6598 recipe that :term:`PROVIDES` that item but is not selected (defined) 6599 by :term:`PREFERRED_PROVIDER` is prevented from building, which is usually 6600 desirable since this mechanism is designed to select between mutually 6601 exclusive alternative providers. 6602 6603 :term:`PREFERRED_PROVIDERS` 6604 See :term:`bitbake:PREFERRED_PROVIDERS` in the BitBake manual. 6605 6606 :term:`PREFERRED_VERSION` 6607 If there are multiple versions of a recipe available, this variable 6608 determines which version should be given preference. You must always 6609 suffix the variable with the :term:`PN` you want to select (`python` in 6610 the first example below), and you should specify the :term:`PV` 6611 accordingly (`3.4.0` in the example). 6612 6613 The :term:`PREFERRED_VERSION` variable supports limited wildcard use 6614 through the "``%``" character. You can use the character to match any 6615 number of characters, which can be useful when specifying versions 6616 that contain long revision numbers that potentially change. Here are 6617 two examples:: 6618 6619 PREFERRED_VERSION_python = "3.4.0" 6620 PREFERRED_VERSION_linux-yocto = "5.0%" 6621 6622 .. note:: 6623 6624 The use of the "%" character is limited in that it only works at the end of the 6625 string. You cannot use the wildcard character in any other 6626 location of the string. 6627 6628 The specified version is matched against :term:`PV`, which 6629 does not necessarily match the version part of the recipe's filename. 6630 For example, consider two recipes ``foo_1.2.bb`` and ``foo_git.bb`` 6631 where ``foo_git.bb`` contains the following assignment:: 6632 6633 PV = "1.1+git${SRCPV}" 6634 6635 In this case, the correct way to select 6636 ``foo_git.bb`` is by using an assignment such as the following:: 6637 6638 PREFERRED_VERSION_foo = "1.1+git%" 6639 6640 Compare that previous example 6641 against the following incorrect example, which does not work:: 6642 6643 PREFERRED_VERSION_foo = "git" 6644 6645 Sometimes the :term:`PREFERRED_VERSION` variable can be set by 6646 configuration files in a way that is hard to change. You can use 6647 :term:`OVERRIDES` to set a machine-specific 6648 override. Here is an example:: 6649 6650 PREFERRED_VERSION_linux-yocto:qemux86 = "5.0%" 6651 6652 Although not recommended, worst case, you can also use the 6653 "forcevariable" override, which is the strongest override possible. 6654 Here is an example:: 6655 6656 PREFERRED_VERSION_linux-yocto:forcevariable = "5.0%" 6657 6658 .. note:: 6659 6660 The ``:forcevariable`` override is not handled specially. This override 6661 only works because the default value of :term:`OVERRIDES` includes "forcevariable". 6662 6663 If a recipe with the specified version is not available, a warning 6664 message will be shown. See :term:`REQUIRED_VERSION` if you want this 6665 to be an error instead. 6666 6667 :term:`PREMIRRORS` 6668 Specifies additional paths from which the OpenEmbedded build system 6669 gets source code. When the build system searches for source code, it 6670 first tries the local download directory. If that location fails, the 6671 build system tries locations defined by :term:`PREMIRRORS`, the upstream 6672 source, and then locations specified by 6673 :term:`MIRRORS` in that order. 6674 6675 The default value for :term:`PREMIRRORS` is defined in the 6676 ``meta/classes-global/mirrors.bbclass`` file in the core metadata layer. 6677 6678 Typically, you could add a specific server for the build system to 6679 attempt before any others by adding something like the following to 6680 the ``local.conf`` configuration file in the 6681 :term:`Build Directory`:: 6682 6683 PREMIRRORS:prepend = "\ 6684 git://.*/.* &YOCTO_DL_URL;/mirror/sources/ \ 6685 ftp://.*/.* &YOCTO_DL_URL;/mirror/sources/ \ 6686 http://.*/.* &YOCTO_DL_URL;/mirror/sources/ \ 6687 https://.*/.* &YOCTO_DL_URL;/mirror/sources/" 6688 6689 These changes cause the 6690 build system to intercept Git, FTP, HTTP, and HTTPS requests and 6691 direct them to the ``http://`` sources mirror. You can use 6692 ``file://`` URLs to point to local directories or network shares as 6693 well. 6694 6695 :term:`PRIORITY` 6696 Indicates the importance of a package. 6697 6698 :term:`PRIORITY` is considered to be part of the distribution policy 6699 because the importance of any given recipe depends on the purpose for 6700 which the distribution is being produced. Thus, :term:`PRIORITY` is not 6701 normally set within recipes. 6702 6703 You can set :term:`PRIORITY` to "required", "standard", "extra", and 6704 "optional", which is the default. 6705 6706 :term:`PRIVATE_LIBS` 6707 Specifies libraries installed within a recipe that should be ignored 6708 by the OpenEmbedded build system's shared library resolver. This 6709 variable is typically used when software being built by a recipe has 6710 its own private versions of a library normally provided by another 6711 recipe. In this case, you would not want the package containing the 6712 private libraries to be set as a dependency on other unrelated 6713 packages that should instead depend on the package providing the 6714 standard version of the library. 6715 6716 Libraries specified in this variable should be specified by their 6717 file name. For example, from the Firefox recipe in meta-browser:: 6718 6719 PRIVATE_LIBS = "libmozjs.so \ 6720 libxpcom.so \ 6721 libnspr4.so \ 6722 libxul.so \ 6723 libmozalloc.so \ 6724 libplc4.so \ 6725 libplds4.so" 6726 6727 For more information, see the 6728 ":ref:`overview-manual/concepts:automatically added runtime dependencies`" 6729 section in the Yocto Project Overview and Concepts Manual. 6730 6731 :term:`PROVIDES` 6732 A list of aliases by which a particular recipe can be known. By 6733 default, a recipe's own :term:`PN` is implicitly already in its 6734 :term:`PROVIDES` list and therefore does not need to mention that it 6735 provides itself. If a recipe uses :term:`PROVIDES`, the additional 6736 aliases are synonyms for the recipe and can be useful for satisfying 6737 dependencies of other recipes during the build as specified by 6738 :term:`DEPENDS`. 6739 6740 Consider the following example :term:`PROVIDES` statement from the recipe 6741 file ``eudev_3.2.9.bb``:: 6742 6743 PROVIDES += "udev" 6744 6745 The :term:`PROVIDES` statement 6746 results in the "eudev" recipe also being available as simply "udev". 6747 6748 .. note:: 6749 6750 A recipe's own recipe name (:term:`PN`) is always implicitly prepended 6751 to :term:`PROVIDES`, so while using "+=" in the above example may not be 6752 strictly necessary it is recommended to avoid confusion. 6753 6754 In addition to providing recipes under alternate names, the 6755 :term:`PROVIDES` mechanism is also used to implement virtual targets. A 6756 virtual target is a name that corresponds to some particular 6757 functionality (e.g. a Linux kernel). Recipes that provide the 6758 functionality in question list the virtual target in :term:`PROVIDES`. 6759 Recipes that depend on the functionality in question can include the 6760 virtual target in :term:`DEPENDS` to leave the choice of provider open. 6761 6762 Conventionally, virtual targets have names on the form 6763 "virtual/function" (e.g. "virtual/kernel"). The slash is simply part 6764 of the name and has no syntactical significance. 6765 6766 The :term:`PREFERRED_PROVIDER` variable is 6767 used to select which particular recipe provides a virtual target. 6768 6769 .. note:: 6770 6771 A corresponding mechanism for virtual runtime dependencies (packages) 6772 exists. However, the mechanism does not depend on any special 6773 functionality beyond ordinary variable assignments. For example, 6774 :term:`VIRTUAL-RUNTIME_dev_manager <VIRTUAL-RUNTIME>` refers to the 6775 package of the component that manages the ``/dev`` directory. 6776 6777 Setting the "preferred provider" for runtime dependencies is as 6778 simple as using the following assignment in a configuration file:: 6779 6780 VIRTUAL-RUNTIME_dev_manager = "udev" 6781 6782 6783 :term:`PRSERV_HOST` 6784 The network based :term:`PR` service host and port. 6785 6786 The ``conf/templates/default/local.conf.sample.extended`` configuration 6787 file in the :term:`Source Directory` shows how the :term:`PRSERV_HOST` 6788 variable is set:: 6789 6790 PRSERV_HOST = "localhost:0" 6791 6792 You must 6793 set the variable if you want to automatically start a local :ref:`PR 6794 service <dev-manual/packages:working with a pr service>`. You can 6795 set :term:`PRSERV_HOST` to other values to use a remote PR service. 6796 6797 6798 :term:`PSEUDO_IGNORE_PATHS` 6799 A comma-separated (without spaces) list of path prefixes that should be ignored 6800 by pseudo when monitoring and recording file operations, in order to avoid 6801 problems with files being written to outside of the pseudo context and 6802 reduce pseudo's overhead. A path is ignored if it matches any prefix in the list 6803 and can include partial directory (or file) names. 6804 6805 6806 :term:`PTEST_ENABLED` 6807 Specifies whether or not :ref:`Package 6808 Test <dev-manual/packages:testing packages with ptest>` (ptest) 6809 functionality is enabled when building a recipe. You should not set 6810 this variable directly. Enabling and disabling building Package Tests 6811 at build time should be done by adding "ptest" to (or removing it 6812 from) :term:`DISTRO_FEATURES`. 6813 6814 :term:`PV` 6815 The version of the recipe. The version is normally extracted from the 6816 recipe filename. For example, if the recipe is named 6817 ``expat_2.0.1.bb``, then the default value of :term:`PV` will be "2.0.1". 6818 :term:`PV` is generally not overridden within a recipe unless it is 6819 building an unstable (i.e. development) version from a source code 6820 repository (e.g. Git or Subversion). 6821 6822 :term:`PV` is the default value of the :term:`PKGV` variable. 6823 6824 :term:`PYPI_PACKAGE` 6825 When inheriting the :ref:`ref-classes-pypi` class, specifies the 6826 `PyPI <https://pypi.org/>`__ package name to be built. The default value 6827 is set based upon :term:`BPN` (stripping any "python-" or "python3-" 6828 prefix off if present), however for some packages it will need to be set 6829 explicitly if that will not match the package name (e.g. where the 6830 package name has a prefix, underscores, uppercase letters etc.) 6831 6832 :term:`PYTHON_ABI` 6833 When used by recipes that inherit the :ref:`ref-classes-setuptools3` 6834 class, denotes the Application Binary Interface (ABI) currently in use 6835 for Python. By default, the ABI is "m". You do not have to set this 6836 variable as the OpenEmbedded build system sets it for you. 6837 6838 The OpenEmbedded build system uses the ABI to construct directory 6839 names used when installing the Python headers and libraries in 6840 sysroot (e.g. ``.../python3.3m/...``). 6841 6842 :term:`QA_EMPTY_DIRS` 6843 Specifies a list of directories that are expected to be empty when 6844 packaging; if ``empty-dirs`` appears in :term:`ERROR_QA` or 6845 :term:`WARN_QA` these will be checked and an error or warning 6846 (respectively) will be produced. 6847 6848 The default :term:`QA_EMPTY_DIRS` value is set in 6849 :ref:`insane.bbclass <ref-classes-insane>`. 6850 6851 :term:`QA_EMPTY_DIRS_RECOMMENDATION` 6852 Specifies a recommendation for why a directory must be empty, 6853 which will be included in the error message if a specific directory 6854 is found to contain files. Must be overridden with the directory 6855 path to match on. 6856 6857 If no recommendation is specified for a directory, then the default 6858 "but it is expected to be empty" will be used. 6859 6860 An example message shows if files were present in '/dev':: 6861 6862 QA_EMPTY_DIRS_RECOMMENDATION:/dev = "but all devices must be created at runtime" 6863 6864 :term:`RANLIB` 6865 The minimal command and arguments to run ``ranlib``. 6866 6867 :term:`RCONFLICTS` 6868 The list of packages that conflict with packages. Note that packages 6869 will not be installed if conflicting packages are not first removed. 6870 6871 Like all package-controlling variables, you must always use them in 6872 conjunction with a package name override. Here is an example:: 6873 6874 RCONFLICTS:${PN} = "another_conflicting_package_name" 6875 6876 BitBake, which the OpenEmbedded build system uses, supports 6877 specifying versioned dependencies. Although the syntax varies 6878 depending on the packaging format, BitBake hides these differences 6879 from you. Here is the general syntax to specify versions with the 6880 :term:`RCONFLICTS` variable:: 6881 6882 RCONFLICTS:${PN} = "package (operator version)" 6883 6884 For ``operator``, you can specify the following: 6885 6886 - = 6887 - < 6888 - > 6889 - <= 6890 - >= 6891 6892 For example, the following sets up a dependency on version 1.2 or 6893 greater of the package ``foo``:: 6894 6895 RCONFLICTS:${PN} = "foo (>= 1.2)" 6896 6897 :term:`RDEPENDS` 6898 Lists runtime dependencies of a package. These dependencies are other 6899 packages that must be installed in order for the package to function 6900 correctly. As an example, the following assignment declares that the 6901 package ``foo`` needs the packages ``bar`` and ``baz`` to be 6902 installed:: 6903 6904 RDEPENDS:foo = "bar baz" 6905 6906 The most common types of package 6907 runtime dependencies are automatically detected and added. Therefore, 6908 most recipes do not need to set :term:`RDEPENDS`. For more information, 6909 see the 6910 ":ref:`overview-manual/concepts:automatically added runtime dependencies`" 6911 section in the Yocto Project Overview and Concepts Manual. 6912 6913 The practical effect of the above :term:`RDEPENDS` assignment is that 6914 ``bar`` and ``baz`` will be declared as dependencies inside the 6915 package ``foo`` when it is written out by one of the 6916 :ref:`do_package_write_* <ref-tasks-package_write_deb>` tasks. 6917 Exactly how this is done depends on which package format is used, 6918 which is determined by 6919 :term:`PACKAGE_CLASSES`. When the 6920 corresponding package manager installs the package, it will know to 6921 also install the packages on which it depends. 6922 6923 To ensure that the packages ``bar`` and ``baz`` get built, the 6924 previous :term:`RDEPENDS` assignment also causes a task dependency to be 6925 added. This dependency is from the recipe's 6926 :ref:`ref-tasks-build` (not to be confused with 6927 :ref:`ref-tasks-compile`) task to the 6928 :ref:`do_package_write_* <ref-tasks-package_write_deb>` task of the recipes that build ``bar`` and 6929 ``baz``. 6930 6931 The names of the packages you list within :term:`RDEPENDS` must be the 6932 names of other packages --- they cannot be recipe names. Although 6933 package names and recipe names usually match, the important point 6934 here is that you are providing package names within the :term:`RDEPENDS` 6935 variable. For an example of the default list of packages created from 6936 a recipe, see the :term:`PACKAGES` variable. 6937 6938 Because the :term:`RDEPENDS` variable applies to packages being built, 6939 you should always use the variable in a form with an attached package 6940 name (remember that a single recipe can build multiple packages). For 6941 example, suppose you are building a development package that depends 6942 on the ``perl`` package. In this case, you would use the following 6943 :term:`RDEPENDS` statement:: 6944 6945 RDEPENDS:${PN}-dev += "perl" 6946 6947 In the example, 6948 the development package depends on the ``perl`` package. Thus, the 6949 :term:`RDEPENDS` variable has the ``${PN}-dev`` package name as part of 6950 the variable. 6951 6952 .. note:: 6953 6954 ``RDEPENDS:${PN}-dev`` includes ``${``\ :term:`PN`\ ``}`` 6955 by default. This default is set in the BitBake configuration file 6956 (``meta/conf/bitbake.conf``). Be careful not to accidentally remove 6957 ``${PN}`` when modifying ``RDEPENDS:${PN}-dev``. Use the "+=" operator 6958 rather than the "=" operator. 6959 6960 The package names you use with :term:`RDEPENDS` must appear as they would 6961 in the :term:`PACKAGES` variable. The :term:`PKG` variable 6962 allows a different name to be used for the final package (e.g. the 6963 :ref:`ref-classes-debian` class uses this to rename 6964 packages), but this final package name cannot be used with 6965 :term:`RDEPENDS`, which makes sense as :term:`RDEPENDS` is meant to be 6966 independent of the package format used. 6967 6968 BitBake, which the OpenEmbedded build system uses, supports 6969 specifying versioned dependencies. Although the syntax varies 6970 depending on the packaging format, BitBake hides these differences 6971 from you. Here is the general syntax to specify versions with the 6972 :term:`RDEPENDS` variable:: 6973 6974 RDEPENDS:${PN} = "package (operator version)" 6975 6976 For ``operator``, you can specify the following: 6977 6978 - = 6979 - < 6980 - > 6981 - <= 6982 - >= 6983 6984 For version, provide the version number. 6985 6986 .. note:: 6987 6988 You can use :term:`EXTENDPKGV` to provide a full package version 6989 specification. 6990 6991 For example, the following sets up a dependency on version 1.2 or 6992 greater of the package ``foo``:: 6993 6994 RDEPENDS:${PN} = "foo (>= 1.2)" 6995 6996 For information on build-time dependencies, see the :term:`DEPENDS` 6997 variable. You can also see the 6998 ":ref:`bitbake-user-manual/bitbake-user-manual-metadata:tasks`" and 6999 ":ref:`bitbake-user-manual/bitbake-user-manual-execution:dependencies`" sections in the 7000 BitBake User Manual for additional information on tasks and dependencies. 7001 7002 :term:`RECIPE_MAINTAINER` 7003 This variable defines the name and e-mail address of the maintainer of a 7004 recipe. Such information can be used by human users submitted changes, 7005 and by automated tools to send notifications, for example about 7006 vulnerabilities or source updates. 7007 7008 The variable can be defined in a global distribution :oe_git:`maintainers.inc 7009 </openembedded-core/tree/meta/conf/distro/include/maintainers.inc>` file:: 7010 7011 meta/conf/distro/include/maintainers.inc:RECIPE_MAINTAINER:pn-sysvinit = "Ross Burton <ross.burton@arm.com>" 7012 7013 It can also be directly defined in a recipe, 7014 for example in the ``libgpiod`` one:: 7015 7016 RECIPE_MAINTAINER = "Bartosz Golaszewski <brgl@bgdev.pl>" 7017 7018 :term:`RECIPE_NO_UPDATE_REASON` 7019 If a recipe should not be replaced by a more recent upstream version, 7020 putting the reason why in this variable in a recipe allows 7021 ``devtool check-upgrade-status`` command to display it, as explained 7022 in the ":ref:`ref-manual/devtool-reference:checking on the upgrade status of a recipe`" 7023 section. 7024 7025 :term:`RECIPE_SYSROOT` 7026 This variable points to the directory that holds all files populated from 7027 recipes specified in :term:`DEPENDS`. As the name indicates, 7028 think of this variable as a custom root (``/``) for the recipe that will be 7029 used by the compiler in order to find headers and other files needed to complete 7030 its job. 7031 7032 This variable is related to :term:`STAGING_DIR_HOST` or :term:`STAGING_DIR_TARGET` 7033 according to the type of the recipe and the build target. 7034 7035 To better understand this variable, consider the following examples: 7036 7037 - For ``#include <header.h>``, ``header.h`` should be in ``"${RECIPE_SYSROOT}/usr/include"`` 7038 7039 - For ``-lexample``, ``libexample.so`` should be in ``"${RECIPE_SYSROOT}/lib"`` 7040 or other library sysroot directories. 7041 7042 The default value is ``"${WORKDIR}/recipe-sysroot"``. 7043 Do not modify it. 7044 7045 :term:`RECIPE_SYSROOT_NATIVE` 7046 This is similar to :term:`RECIPE_SYSROOT` but the populated files are from 7047 ``-native`` recipes. This allows a recipe built for the target machine to 7048 use ``native`` tools. 7049 7050 This variable is related to :term:`STAGING_DIR_NATIVE`. 7051 7052 The default value is ``"${WORKDIR}/recipe-sysroot-native"``. 7053 Do not modify it. 7054 7055 :term:`REPODIR` 7056 See :term:`bitbake:REPODIR` in the BitBake manual. 7057 7058 :term:`REQUIRED_DISTRO_FEATURES` 7059 When inheriting the :ref:`ref-classes-features_check` 7060 class, this variable identifies distribution features that must exist 7061 in the current configuration in order for the OpenEmbedded build 7062 system to build the recipe. In other words, if the 7063 :term:`REQUIRED_DISTRO_FEATURES` variable lists a feature that does not 7064 appear in :term:`DISTRO_FEATURES` within the current configuration, then 7065 the recipe will be skipped, and if the build system attempts to build 7066 the recipe then an error will be triggered. 7067 7068 :term:`REQUIRED_VERSION` 7069 If there are multiple versions of a recipe available, this variable 7070 determines which version should be given preference. 7071 :term:`REQUIRED_VERSION` works in exactly the same manner as 7072 :term:`PREFERRED_VERSION`, except that if the specified version is not 7073 available then an error message is shown and the build fails 7074 immediately. 7075 7076 If both :term:`REQUIRED_VERSION` and :term:`PREFERRED_VERSION` are set 7077 for the same recipe, the :term:`REQUIRED_VERSION` value applies. 7078 7079 :term:`RM_WORK_EXCLUDE` 7080 With :ref:`ref-classes-rm-work` enabled, this variable 7081 specifies a list of recipes whose work directories should not be removed. 7082 See the ":ref:`ref-classes-rm-work`" section for more details. 7083 7084 :term:`ROOT_HOME` 7085 Defines the root home directory. By default, this directory is set as 7086 follows in the BitBake configuration file:: 7087 7088 ROOT_HOME ??= "/home/root" 7089 7090 .. note:: 7091 7092 This default value is likely used because some embedded solutions 7093 prefer to have a read-only root filesystem and prefer to keep 7094 writeable data in one place. 7095 7096 You can override the default by setting the variable in any layer or 7097 in the ``local.conf`` file. Because the default is set using a "weak" 7098 assignment (i.e. "??="), you can use either of the following forms to 7099 define your override:: 7100 7101 ROOT_HOME = "/root" 7102 ROOT_HOME ?= "/root" 7103 7104 These 7105 override examples use ``/root``, which is probably the most commonly 7106 used override. 7107 7108 :term:`ROOTFS` 7109 Indicates a filesystem image to include as the root filesystem. 7110 7111 The :term:`ROOTFS` variable is an optional variable used with the 7112 :ref:`ref-classes-image-live` class. 7113 7114 :term:`ROOTFS_POSTINSTALL_COMMAND` 7115 Specifies a list of functions to call after the OpenEmbedded build 7116 system has installed packages. You can specify functions separated by 7117 spaces:: 7118 7119 ROOTFS_POSTINSTALL_COMMAND += "function" 7120 7121 If you need to pass the root filesystem path to a command within a 7122 function, you can use ``${IMAGE_ROOTFS}``, which points to the 7123 directory that becomes the root filesystem image. See the 7124 :term:`IMAGE_ROOTFS` variable for more 7125 information. 7126 7127 :term:`ROOTFS_POSTPROCESS_COMMAND` 7128 Specifies a list of functions to call once the OpenEmbedded build 7129 system has created the root filesystem. You can specify functions 7130 separated by spaces:: 7131 7132 ROOTFS_POSTPROCESS_COMMAND += "function" 7133 7134 If you need to pass the root filesystem path to a command within a 7135 function, you can use ``${IMAGE_ROOTFS}``, which points to the 7136 directory that becomes the root filesystem image. See the 7137 :term:`IMAGE_ROOTFS` variable for more 7138 information. 7139 7140 :term:`ROOTFS_POSTUNINSTALL_COMMAND` 7141 Specifies a list of functions to call after the OpenEmbedded build 7142 system has removed unnecessary packages. When runtime package 7143 management is disabled in the image, several packages are removed 7144 including ``base-passwd``, ``shadow``, and ``update-alternatives``. 7145 You can specify functions separated by spaces:: 7146 7147 ROOTFS_POSTUNINSTALL_COMMAND += "function" 7148 7149 If you need to pass the root filesystem path to a command within a 7150 function, you can use ``${IMAGE_ROOTFS}``, which points to the 7151 directory that becomes the root filesystem image. See the 7152 :term:`IMAGE_ROOTFS` variable for more 7153 information. 7154 7155 :term:`ROOTFS_PREPROCESS_COMMAND` 7156 Specifies a list of functions to call before the OpenEmbedded build 7157 system has created the root filesystem. You can specify functions 7158 separated by spaces:: 7159 7160 ROOTFS_PREPROCESS_COMMAND += "function" 7161 7162 If you need to pass the root filesystem path to a command within a 7163 function, you can use ``${IMAGE_ROOTFS}``, which points to the 7164 directory that becomes the root filesystem image. See the 7165 :term:`IMAGE_ROOTFS` variable for more 7166 information. 7167 7168 :term:`RPMBUILD_EXTRA_PARAMS` 7169 Specifies extra user-defined parameters for the ``rpmbuild`` command. 7170 7171 :term:`RPROVIDES` 7172 A list of package name aliases that a package also provides. These 7173 aliases are useful for satisfying runtime dependencies of other 7174 packages both during the build and on the target (as specified by 7175 :term:`RDEPENDS`). 7176 7177 .. note:: 7178 7179 A package's own name is implicitly already in its :term:`RPROVIDES` list. 7180 7181 As with all package-controlling variables, you must always use the 7182 variable in conjunction with a package name override. Here is an 7183 example:: 7184 7185 RPROVIDES:${PN} = "widget-abi-2" 7186 7187 :term:`RRECOMMENDS` 7188 A list of packages that extends the usability of a package being 7189 built. The package being built does not depend on this list of 7190 packages in order to successfully build, but rather uses them for 7191 extended usability. To specify runtime dependencies for packages, see 7192 the :term:`RDEPENDS` variable. 7193 7194 The package manager will automatically install the :term:`RRECOMMENDS` 7195 list of packages when installing the built package. However, you can 7196 prevent listed packages from being installed by using the 7197 :term:`BAD_RECOMMENDATIONS`, 7198 :term:`NO_RECOMMENDATIONS`, and 7199 :term:`PACKAGE_EXCLUDE` variables. 7200 7201 Packages specified in :term:`RRECOMMENDS` need not actually be produced. 7202 However, there must be a recipe providing each package, either 7203 through the :term:`PACKAGES` or 7204 :term:`PACKAGES_DYNAMIC` variables or the 7205 :term:`RPROVIDES` variable, or an error will occur 7206 during the build. If such a recipe does exist and the package is not 7207 produced, the build continues without error. 7208 7209 Because the :term:`RRECOMMENDS` variable applies to packages being built, 7210 you should always attach an override to the variable to specify the 7211 particular package whose usability is being extended. For example, 7212 suppose you are building a development package that is extended to 7213 support wireless functionality. In this case, you would use the 7214 following:: 7215 7216 RRECOMMENDS:${PN}-dev += "wireless_package_name" 7217 7218 In the 7219 example, the package name (``${PN}-dev``) must appear as it would in 7220 the :term:`PACKAGES` namespace before any renaming of the output package 7221 by classes such as :ref:`ref-classes-debian`. 7222 7223 BitBake, which the OpenEmbedded build system uses, supports 7224 specifying versioned recommends. Although the syntax varies depending 7225 on the packaging format, BitBake hides these differences from you. 7226 Here is the general syntax to specify versions with the 7227 :term:`RRECOMMENDS` variable:: 7228 7229 RRECOMMENDS:${PN} = "package (operator version)" 7230 7231 For ``operator``, you can specify the following: 7232 7233 - = 7234 - < 7235 - > 7236 - <= 7237 - >= 7238 7239 For example, the following sets up a recommend on version 1.2 or 7240 greater of the package ``foo``:: 7241 7242 RRECOMMENDS:${PN} = "foo (>= 1.2)" 7243 7244 :term:`RREPLACES` 7245 A list of packages replaced by a package. The package manager uses 7246 this variable to determine which package should be installed to 7247 replace other package(s) during an upgrade. In order to also have the 7248 other package(s) removed at the same time, you must add the name of 7249 the other package to the :term:`RCONFLICTS` variable. 7250 7251 As with all package-controlling variables, you must use this variable 7252 in conjunction with a package name override. Here is an example:: 7253 7254 RREPLACES:${PN} = "other_package_being_replaced" 7255 7256 BitBake, which the OpenEmbedded build system uses, supports 7257 specifying versioned replacements. Although the syntax varies 7258 depending on the packaging format, BitBake hides these differences 7259 from you. Here is the general syntax to specify versions with the 7260 :term:`RREPLACES` variable:: 7261 7262 RREPLACES:${PN} = "package (operator version)" 7263 7264 For ``operator``, you can specify the following: 7265 7266 - = 7267 - < 7268 - > 7269 - <= 7270 - >= 7271 7272 For example, the following sets up a replacement using version 1.2 7273 or greater of the package ``foo``:: 7274 7275 RREPLACES:${PN} = "foo (>= 1.2)" 7276 7277 :term:`RSUGGESTS` 7278 A list of additional packages that you can suggest for installation 7279 by the package manager at the time a package is installed. Not all 7280 package managers support this functionality. 7281 7282 As with all package-controlling variables, you must always use this 7283 variable in conjunction with a package name override. Here is an 7284 example:: 7285 7286 RSUGGESTS:${PN} = "useful_package another_package" 7287 7288 :term:`RUST_CHANNEL` 7289 Specifies which version of Rust to build - "stable", "beta" or "nightly". 7290 The default value is "stable". Set this at your own risk, as values other 7291 than "stable" are not guaranteed to work at a given time. 7292 7293 :term:`S` 7294 The location in the :term:`Build Directory` where 7295 unpacked recipe source code resides. By default, this directory is 7296 ``${``\ :term:`WORKDIR`\ ``}/${``\ :term:`BPN`\ ``}-${``\ :term:`PV`\ ``}``, 7297 where ``${BPN}`` is the base recipe name and ``${PV}`` is the recipe 7298 version. If the source tarball extracts the code to a directory named 7299 anything other than ``${BPN}-${PV}``, or if the source code is 7300 fetched from an SCM such as Git or Subversion, then you must set 7301 :term:`S` in the recipe so that the OpenEmbedded build system knows where 7302 to find the unpacked source. 7303 7304 As an example, assume a :term:`Source Directory` 7305 top-level folder named ``poky`` and a default :term:`Build Directory` at 7306 ``poky/build``. In this case, the work directory the build system 7307 uses to keep the unpacked recipe for ``db`` is the following:: 7308 7309 poky/build/tmp/work/qemux86-poky-linux/db/5.1.19-r3/db-5.1.19 7310 7311 The unpacked source code resides in the ``db-5.1.19`` folder. 7312 7313 This next example assumes a Git repository. By default, Git 7314 repositories are cloned to ``${WORKDIR}/git`` during 7315 :ref:`ref-tasks-fetch`. Since this path is different 7316 from the default value of :term:`S`, you must set it specifically so the 7317 source can be located:: 7318 7319 SRC_URI = "git://path/to/repo.git;branch=main" 7320 S = "${WORKDIR}/git" 7321 7322 :term:`SANITY_REQUIRED_UTILITIES` 7323 Specifies a list of command-line utilities that should be checked for 7324 during the initial sanity checking process when running BitBake. If 7325 any of the utilities are not installed on the build host, then 7326 BitBake immediately exits with an error. 7327 7328 :term:`SANITY_TESTED_DISTROS` 7329 A list of the host distribution identifiers that the build system has 7330 been tested against. Identifiers consist of the host distributor ID 7331 followed by the release, as reported by the ``lsb_release`` tool or 7332 as read from ``/etc/lsb-release``. Separate the list items with 7333 explicit newline characters (``\n``). If :term:`SANITY_TESTED_DISTROS` is 7334 not empty and the current value of 7335 :term:`NATIVELSBSTRING` does not appear in the 7336 list, then the build system reports a warning that indicates the 7337 current host distribution has not been tested as a build host. 7338 7339 :term:`SDK_ARCH` 7340 The target architecture for the SDK. Typically, you do not directly 7341 set this variable. Instead, use :term:`SDKMACHINE`. 7342 7343 :term:`SDK_ARCHIVE_TYPE` 7344 Specifies the type of archive to create for the SDK. Valid values: 7345 7346 - ``tar.xz`` (default) 7347 - ``zip`` 7348 7349 Only one archive type can be specified. 7350 7351 :term:`SDK_BUILDINFO_FILE` 7352 When using the :ref:`ref-classes-image-buildinfo` class, 7353 specifies the file in the SDK to write the build information into. The 7354 default value is "``/buildinfo``". 7355 7356 :term:`SDK_CUSTOM_TEMPLATECONF` 7357 When building the extensible SDK, if :term:`SDK_CUSTOM_TEMPLATECONF` is set to 7358 "1" and a ``conf/templateconf.cfg`` file exists in the :term:`Build Directory` 7359 (:term:`TOPDIR`) then this will be copied into the SDK. 7360 7361 :term:`SDK_DEPLOY` 7362 The directory set up and used by the 7363 :ref:`populate_sdk_base <ref-classes-populate-sdk>` class to which the 7364 SDK is deployed. The :ref:`populate_sdk_base <ref-classes-populate-sdk>` 7365 class defines :term:`SDK_DEPLOY` as follows:: 7366 7367 SDK_DEPLOY = "${TMPDIR}/deploy/sdk" 7368 7369 :term:`SDK_DIR` 7370 The parent directory used by the OpenEmbedded build system when 7371 creating SDK output. The 7372 :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class defines 7373 the variable as follows:: 7374 7375 SDK_DIR = "${WORKDIR}/sdk" 7376 7377 .. note:: 7378 7379 The :term:`SDK_DIR` directory is a temporary directory as it is part of 7380 :term:`WORKDIR`. The final output directory is :term:`SDK_DEPLOY`. 7381 7382 :term:`SDK_EXT_TYPE` 7383 Controls whether or not shared state artifacts are copied into the 7384 extensible SDK. The default value of "full" copies all of the 7385 required shared state artifacts into the extensible SDK. The value 7386 "minimal" leaves these artifacts out of the SDK. 7387 7388 .. note:: 7389 7390 If you set the variable to "minimal", you need to ensure 7391 :term:`SSTATE_MIRRORS` is set in the SDK's configuration to enable the 7392 artifacts to be fetched as needed. 7393 7394 :term:`SDK_HOST_MANIFEST` 7395 The manifest file for the host part of the SDK. This file lists all 7396 the installed packages that make up the host part of the SDK. The 7397 file contains package information on a line-per-package basis as 7398 follows:: 7399 7400 packagename packagearch version 7401 7402 The :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class 7403 defines the manifest file as follows:: 7404 7405 SDK_HOST_MANIFEST = "${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.host.manifest" 7406 7407 The location is derived using the :term:`SDK_DEPLOY` and 7408 :term:`TOOLCHAIN_OUTPUTNAME` variables. 7409 7410 :term:`SDK_INCLUDE_PKGDATA` 7411 When set to "1", specifies to include the packagedata for all recipes 7412 in the "world" target in the extensible SDK. Including this data 7413 allows the ``devtool search`` command to find these recipes in search 7414 results, as well as allows the ``devtool add`` command to map 7415 dependencies more effectively. 7416 7417 .. note:: 7418 7419 Enabling the :term:`SDK_INCLUDE_PKGDATA` 7420 variable significantly increases build time because all of world 7421 needs to be built. Enabling the variable also slightly increases 7422 the size of the extensible SDK. 7423 7424 :term:`SDK_INCLUDE_TOOLCHAIN` 7425 When set to "1", specifies to include the toolchain in the extensible 7426 SDK. Including the toolchain is useful particularly when 7427 :term:`SDK_EXT_TYPE` is set to "minimal" to keep 7428 the SDK reasonably small but you still want to provide a usable 7429 toolchain. For example, suppose you want to use the toolchain from an 7430 IDE or from other tools and you do not want to perform additional 7431 steps to install the toolchain. 7432 7433 The :term:`SDK_INCLUDE_TOOLCHAIN` variable defaults to "0" if 7434 :term:`SDK_EXT_TYPE` is set to "minimal", and defaults to "1" if 7435 :term:`SDK_EXT_TYPE` is set to "full". 7436 7437 :term:`SDK_NAME` 7438 The base name for SDK output files. The default value (as set in 7439 ``meta-poky/conf/distro/poky.conf``) is derived from the 7440 :term:`DISTRO`, 7441 :term:`TCLIBC`, 7442 :term:`SDKMACHINE`, 7443 :term:`IMAGE_BASENAME`, 7444 :term:`TUNE_PKGARCH`, and 7445 :term:`MACHINE` variables:: 7446 7447 SDK_NAME = "${DISTRO}-${TCLIBC}-${SDKMACHINE}-${IMAGE_BASENAME}-${TUNE_PKGARCH}-${MACHINE}" 7448 7449 :term:`SDK_OS` 7450 Specifies the operating system for which the SDK will be built. The 7451 default value is the value of :term:`BUILD_OS`. 7452 7453 :term:`SDK_OUTPUT` 7454 The location used by the OpenEmbedded build system when creating SDK 7455 output. The :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` 7456 class defines the variable as follows:: 7457 7458 SDK_DIR = "${WORKDIR}/sdk" 7459 SDK_OUTPUT = "${SDK_DIR}/image" 7460 SDK_DEPLOY = "${DEPLOY_DIR}/sdk" 7461 7462 .. note:: 7463 7464 The :term:`SDK_OUTPUT` directory is a temporary directory as it is part of 7465 :term:`WORKDIR` by way of :term:`SDK_DIR`. The final output directory is 7466 :term:`SDK_DEPLOY`. 7467 7468 :term:`SDK_PACKAGE_ARCHS` 7469 Specifies a list of architectures compatible with the SDK machine. 7470 This variable is set automatically and should not normally be 7471 hand-edited. Entries are separated using spaces and listed in order 7472 of priority. The default value for :term:`SDK_PACKAGE_ARCHS` is "all any 7473 noarch ${SDK_ARCH}-${SDKPKGSUFFIX}". 7474 7475 :term:`SDK_POSTPROCESS_COMMAND` 7476 Specifies a list of functions to call once the OpenEmbedded build 7477 system creates the SDK. You can specify functions separated by 7478 spaces: 7479 7480 SDK_POSTPROCESS_COMMAND += "function" 7481 7482 If you need to pass an SDK path to a command within a function, you 7483 can use ``${SDK_DIR}``, which points to the parent directory used by 7484 the OpenEmbedded build system when creating SDK output. See the 7485 :term:`SDK_DIR` variable for more information. 7486 7487 :term:`SDK_PREFIX` 7488 The toolchain binary prefix used for 7489 :ref:`ref-classes-nativesdk` recipes. The 7490 OpenEmbedded build system uses the :term:`SDK_PREFIX` value to set the 7491 :term:`TARGET_PREFIX` when building 7492 ``nativesdk`` recipes. The default value is "${SDK_SYS}-". 7493 7494 :term:`SDK_RECRDEP_TASKS` 7495 A list of shared state tasks added to the extensible SDK. By default, 7496 the following tasks are added: 7497 7498 - :ref:`ref-tasks-populate_lic` 7499 - :ref:`ref-tasks-package_qa` 7500 - :ref:`ref-tasks-populate_sysroot` 7501 - :ref:`ref-tasks-deploy` 7502 7503 Despite the default value of "" for the 7504 :term:`SDK_RECRDEP_TASKS` variable, the above four tasks are always added 7505 to the SDK. To specify tasks beyond these four, you need to use the 7506 :term:`SDK_RECRDEP_TASKS` variable (e.g. you are defining additional 7507 tasks that are needed in order to build 7508 :term:`SDK_TARGETS`). 7509 7510 :term:`SDK_SYS` 7511 Specifies the system, including the architecture and the operating 7512 system, for which the SDK will be built. 7513 7514 The OpenEmbedded build system automatically sets this variable based 7515 on :term:`SDK_ARCH`, 7516 :term:`SDK_VENDOR`, and 7517 :term:`SDK_OS`. You do not need to set the :term:`SDK_SYS` 7518 variable yourself. 7519 7520 :term:`SDK_TARGET_MANIFEST` 7521 The manifest file for the target part of the SDK. This file lists all 7522 the installed packages that make up the target part of the SDK. The 7523 file contains package information on a line-per-package basis as 7524 follows:: 7525 7526 packagename packagearch version 7527 7528 The :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class 7529 defines the manifest file as follows:: 7530 7531 SDK_TARGET_MANIFEST = "${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.target.manifest" 7532 7533 The location is derived using the :term:`SDK_DEPLOY` and 7534 :term:`TOOLCHAIN_OUTPUTNAME` variables. 7535 7536 :term:`SDK_TARGETS` 7537 A list of targets to install from shared state as part of the 7538 standard or extensible SDK installation. The default value is "${PN}" 7539 (i.e. the image from which the SDK is built). 7540 7541 The :term:`SDK_TARGETS` variable is an internal variable and typically 7542 would not be changed. 7543 7544 :term:`SDK_TITLE` 7545 The title to be printed when running the SDK installer. By default, 7546 this title is based on the :term:`DISTRO_NAME` or 7547 :term:`DISTRO` variable and is set in the 7548 :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class as 7549 follows:: 7550 7551 SDK_TITLE ??= "${@d.getVar('DISTRO_NAME') or d.getVar('DISTRO')} SDK" 7552 7553 For the default distribution "poky", 7554 :term:`SDK_TITLE` is set to "Poky (Yocto Project Reference Distro)". 7555 7556 For information on how to change this default title, see the 7557 ":ref:`sdk-manual/appendix-customizing:changing the extensible sdk installer title`" 7558 section in the Yocto Project Application Development and the 7559 Extensible Software Development Kit (eSDK) manual. 7560 7561 :term:`SDK_TOOLCHAIN_LANGS` 7562 Specifies programming languages to support in the SDK, as a 7563 space-separated list. Currently supported items are ``rust`` and ``go``. 7564 7565 :term:`SDK_UPDATE_URL` 7566 An optional URL for an update server for the extensible SDK. If set, 7567 the value is used as the default update server when running 7568 ``devtool sdk-update`` within the extensible SDK. 7569 7570 :term:`SDK_VENDOR` 7571 Specifies the name of the SDK vendor. 7572 7573 :term:`SDK_VERSION` 7574 Specifies the version of the SDK. The Poky distribution configuration file 7575 (``/meta-poky/conf/distro/poky.conf``) sets the default 7576 :term:`SDK_VERSION` as follows:: 7577 7578 SDK_VERSION = "${@d.getVar('DISTRO_VERSION').replace('snapshot-${METADATA_REVISION}', 'snapshot')}" 7579 7580 For additional information, see the 7581 :term:`DISTRO_VERSION` and 7582 :term:`METADATA_REVISION` variables. 7583 7584 :term:`SDK_ZIP_OPTIONS` 7585 Specifies extra options to pass to the ``zip`` command when zipping the SDK 7586 (i.e. when :term:`SDK_ARCHIVE_TYPE` is set to "zip"). The default value is 7587 "-y". 7588 7589 :term:`SDKEXTPATH` 7590 The default installation directory for the Extensible SDK. By 7591 default, this directory is based on the :term:`DISTRO` 7592 variable and is set in the 7593 :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class as 7594 follows:: 7595 7596 SDKEXTPATH ??= "~/${@d.getVar('DISTRO')}_sdk" 7597 7598 For the 7599 default distribution "poky", the :term:`SDKEXTPATH` is set to "poky_sdk". 7600 7601 For information on how to change this default directory, see the 7602 ":ref:`sdk-manual/appendix-customizing:changing the default sdk installation directory`" 7603 section in the Yocto Project Application Development and the 7604 Extensible Software Development Kit (eSDK) manual. 7605 7606 :term:`SDKIMAGE_FEATURES` 7607 Equivalent to :term:`IMAGE_FEATURES`. However, this variable applies to 7608 the SDK generated from an image using the following command:: 7609 7610 $ bitbake -c populate_sdk imagename 7611 7612 :term:`SDKMACHINE` 7613 The machine for which the SDK is built. In other words, the SDK is built 7614 such that it runs on the target you specify with the :term:`SDKMACHINE` 7615 value. The value points to a corresponding ``.conf`` file under 7616 ``conf/machine-sdk/`` in the enabled layers, for example ``aarch64``, 7617 ``i586``, ``i686``, ``ppc64``, ``ppc64le``, and ``x86_64`` are 7618 :oe_git:`available in OpenEmbedded-Core </openembedded-core/tree/meta/conf/machine-sdk>`. 7619 7620 The variable defaults to :term:`BUILD_ARCH` so that SDKs are built for the 7621 architecture of the build machine. 7622 7623 .. note:: 7624 7625 You cannot set the :term:`SDKMACHINE` 7626 variable in your distribution configuration file. If you do, the 7627 configuration will not take effect. 7628 7629 :term:`SDKPATH` 7630 Defines the path used to collect the SDK components and build the 7631 installer. 7632 7633 :term:`SDKPATHINSTALL` 7634 Defines the path offered to the user for installation of the SDK that 7635 is generated by the OpenEmbedded build system. The path appears as 7636 the default location for installing the SDK when you run the SDK's 7637 installation script. You can override the offered path when you run 7638 the script. 7639 7640 :term:`SDKTARGETSYSROOT` 7641 The full path to the sysroot used for cross-compilation within an SDK 7642 as it will be when installed into the default 7643 :term:`SDKPATHINSTALL`. 7644 7645 :term:`SECTION` 7646 The section in which packages should be categorized. Package 7647 management utilities can make use of this variable. 7648 7649 :term:`SELECTED_OPTIMIZATION` 7650 Specifies the optimization flags passed to the C compiler when 7651 building for the target. The flags are passed through the default 7652 value of the :term:`TARGET_CFLAGS` variable. 7653 7654 The :term:`SELECTED_OPTIMIZATION` variable takes the value of 7655 :term:`FULL_OPTIMIZATION` unless :term:`DEBUG_BUILD` = "1", in which 7656 case the value of :term:`DEBUG_OPTIMIZATION` is used. 7657 7658 :term:`SERIAL_CONSOLES` 7659 Defines a serial console (TTY) to enable using 7660 :wikipedia:`getty <Getty_(Unix)>`. Provide a value that specifies the 7661 baud rate followed by the TTY device name separated by a semicolon. 7662 Use spaces to separate multiple devices:: 7663 7664 SERIAL_CONSOLES = "115200;ttyS0 115200;ttyS1" 7665 7666 :term:`SETUPTOOLS_BUILD_ARGS` 7667 When used by recipes that inherit the :ref:`ref-classes-setuptools3` 7668 class, this variable can be used to specify additional arguments to be 7669 passed to ``setup.py build`` in the ``setuptools3_do_compile()`` task. 7670 7671 :term:`SETUPTOOLS_INSTALL_ARGS` 7672 When used by recipes that inherit the :ref:`ref-classes-setuptools3` 7673 class, this variable can be used to specify additional arguments to be 7674 passed to ``setup.py install`` in the ``setuptools3_do_install()`` task. 7675 7676 :term:`SETUPTOOLS_SETUP_PATH` 7677 When used by recipes that inherit the :ref:`ref-classes-setuptools3` 7678 class, this variable should be used to specify the directory in which 7679 the ``setup.py`` file is located if it is not at the root of the source 7680 tree (as specified by :term:`S`). For example, in a recipe where the 7681 sources are fetched from a Git repository and ``setup.py`` is in a 7682 ``python/pythonmodule`` subdirectory, you would have this:: 7683 7684 S = "${WORKDIR}/git" 7685 SETUPTOOLS_SETUP_PATH = "${S}/python/pythonmodule" 7686 7687 :term:`SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS` 7688 A list of recipe dependencies that should not be used to determine 7689 signatures of tasks from one recipe when they depend on tasks from 7690 another recipe. For example:: 7691 7692 SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += "intone->mplayer2" 7693 7694 In the previous example, ``intone`` depends on ``mplayer2``. 7695 7696 You can use the special token ``"*"`` on the left-hand side of the 7697 dependency to match all recipes except the one on the right-hand 7698 side. Here is an example:: 7699 7700 SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += "*->quilt-native" 7701 7702 In the previous example, all recipes except ``quilt-native`` ignore 7703 task signatures from the ``quilt-native`` recipe when determining 7704 their task signatures. 7705 7706 Use of this variable is one mechanism to remove dependencies that 7707 affect task signatures and thus force rebuilds when a recipe changes. 7708 7709 .. note:: 7710 7711 If you add an inappropriate dependency for a recipe relationship, 7712 the software might break during runtime if the interface of the 7713 second recipe was changed after the first recipe had been built. 7714 7715 :term:`SIGGEN_EXCLUDERECIPES_ABISAFE` 7716 A list of recipes that are completely stable and will never change. 7717 The ABI for the recipes in the list are presented by output from the 7718 tasks run to build the recipe. Use of this variable is one way to 7719 remove dependencies from one recipe on another that affect task 7720 signatures and thus force rebuilds when the recipe changes. 7721 7722 .. note:: 7723 7724 If you add an inappropriate variable to this list, the software 7725 might break at runtime if the interface of the recipe was changed 7726 after the other had been built. 7727 7728 :term:`SITEINFO_BITS` 7729 Specifies the number of bits for the target system CPU. The value 7730 should be either "32" or "64". 7731 7732 :term:`SITEINFO_ENDIANNESS` 7733 Specifies the endian byte order of the target system. The value 7734 should be either "le" for little-endian or "be" for big-endian. 7735 7736 :term:`SKIP_FILEDEPS` 7737 Enables removal of all files from the "Provides" section of an RPM 7738 package. Removal of these files is required for packages containing 7739 prebuilt binaries and libraries such as ``libstdc++`` and ``glibc``. 7740 7741 To enable file removal, set the variable to "1" in your 7742 ``conf/local.conf`` configuration file in your: 7743 :term:`Build Directory`:: 7744 7745 SKIP_FILEDEPS = "1" 7746 7747 :term:`SKIP_RECIPE` 7748 Used to prevent the OpenEmbedded build system from building a given 7749 recipe. Specify the :term:`PN` value as a variable flag (``varflag``) 7750 and provide a reason, which will be reported when attempting to 7751 build the recipe. 7752 7753 To prevent a recipe from being built, use the :term:`SKIP_RECIPE` 7754 variable in your ``local.conf`` file or distribution configuration. 7755 Here is an example which prevents ``myrecipe`` from being built:: 7756 7757 SKIP_RECIPE[myrecipe] = "Not supported by our organization." 7758 7759 :term:`SOC_FAMILY` 7760 A colon-separated list grouping together machines based upon the same 7761 family of SoC (System On Chip). You typically set this variable in a 7762 common ``.inc`` file that you include in the configuration files of all 7763 the machines. 7764 7765 .. note:: 7766 7767 You must include ``conf/machine/include/soc-family.inc`` for this 7768 variable to appear in :term:`MACHINEOVERRIDES`. 7769 7770 :term:`SOLIBS` 7771 Defines the suffix for shared libraries used on the target platform. 7772 By default, this suffix is ".so.*" for all Linux-based systems and is 7773 defined in the ``meta/conf/bitbake.conf`` configuration file. 7774 7775 You will see this variable referenced in the default values of 7776 ``FILES:${PN}``. 7777 7778 :term:`SOLIBSDEV` 7779 Defines the suffix for the development symbolic link (symlink) for 7780 shared libraries on the target platform. By default, this suffix is 7781 ".so" for Linux-based systems and is defined in the 7782 ``meta/conf/bitbake.conf`` configuration file. 7783 7784 You will see this variable referenced in the default values of 7785 ``FILES:${PN}-dev``. 7786 7787 :term:`SOURCE_DATE_EPOCH` 7788 This defines a date expressed in number of seconds since 7789 the UNIX EPOCH (01 Jan 1970 00:00:00 UTC), which is used by 7790 multiple build systems to force a timestamp in built binaries. 7791 Many upstream projects already support this variable. 7792 7793 You will find more details in the `official specifications 7794 <https://reproducible-builds.org/specs/source-date-epoch/>`__. 7795 7796 A value for each recipe is computed from the sources by 7797 :oe_git:`meta/lib/oe/reproducible.py </openembedded-core/tree/meta/lib/oe/reproducible.py>`. 7798 7799 If a recipe wishes to override the default behavior, it should set its 7800 own :term:`SOURCE_DATE_EPOCH` value:: 7801 7802 SOURCE_DATE_EPOCH = "1613559011" 7803 7804 :term:`SOURCE_MIRROR_FETCH` 7805 When you are fetching files to create a mirror of sources (i.e. 7806 creating a source mirror), setting :term:`SOURCE_MIRROR_FETCH` to "1" in 7807 your ``local.conf`` configuration file ensures the source for all 7808 recipes are fetched regardless of whether or not a recipe is 7809 compatible with the configuration. A recipe is considered 7810 incompatible with the currently configured machine when either or 7811 both the :term:`COMPATIBLE_MACHINE` 7812 variable and :term:`COMPATIBLE_HOST` variables 7813 specify compatibility with a machine other than that of the current 7814 machine or host. 7815 7816 .. note:: 7817 7818 Do not set the :term:`SOURCE_MIRROR_FETCH` 7819 variable unless you are creating a source mirror. In other words, 7820 do not set the variable during a normal build. 7821 7822 :term:`SOURCE_MIRROR_URL` 7823 Defines your own :term:`PREMIRRORS` from which to 7824 first fetch source before attempting to fetch from the upstream 7825 specified in :term:`SRC_URI`. 7826 7827 To use this variable, you must globally inherit the 7828 :ref:`ref-classes-own-mirrors` class and then provide 7829 the URL to your mirrors. Here is the general syntax:: 7830 7831 INHERIT += "own-mirrors" 7832 SOURCE_MIRROR_URL = "http://example.com/my_source_mirror" 7833 7834 .. note:: 7835 7836 You can specify only a single URL in :term:`SOURCE_MIRROR_URL`. 7837 7838 :term:`SPDX_ARCHIVE_PACKAGED` 7839 This option allows to add to :term:`SPDX` output compressed archives 7840 of the files in the generated target packages. 7841 7842 Such archives are available in 7843 ``tmp/deploy/spdx/MACHINE/packages/packagename.tar.zst`` 7844 under the :term:`Build Directory`. 7845 7846 Enable this option as follows:: 7847 7848 SPDX_ARCHIVE_PACKAGED = "1" 7849 7850 According to our tests on release 4.1 "langdale", building 7851 ``core-image-minimal`` for the ``qemux86-64`` machine, enabling this 7852 option multiplied the size of the ``tmp/deploy/spdx`` directory by a 7853 factor of 13 (+1.6 GiB for this image), compared to just using the 7854 :ref:`ref-classes-create-spdx` class with no option. 7855 7856 Note that this option doesn't increase the size of :term:`SPDX` 7857 files in ``tmp/deploy/images/MACHINE``. 7858 7859 :term:`SPDX_ARCHIVE_SOURCES` 7860 This option allows to add to :term:`SPDX` output compressed archives 7861 of the sources for packages installed on the target. It currently 7862 only works when :term:`SPDX_INCLUDE_SOURCES` is set. 7863 7864 This is one way of fulfilling "source code access" license 7865 requirements. 7866 7867 Such source archives are available in 7868 ``tmp/deploy/spdx/MACHINE/recipes/recipe-packagename.tar.zst`` 7869 under the :term:`Build Directory`. 7870 7871 Enable this option as follows:: 7872 7873 SPDX_INCLUDE_SOURCES = "1" 7874 SPDX_ARCHIVE_SOURCES = "1" 7875 7876 According to our tests on release 4.1 "langdale", building 7877 ``core-image-minimal`` for the ``qemux86-64`` machine, enabling 7878 these options multiplied the size of the ``tmp/deploy/spdx`` 7879 directory by a factor of 11 (+1.4 GiB for this image), 7880 compared to just using the :ref:`ref-classes-create-spdx` 7881 class with no option. 7882 7883 Note that using this option only marginally increases the size 7884 of the :term:`SPDX` output in ``tmp/deploy/images/MACHINE/`` 7885 (+ 0.07\% with the tested image), compared to just enabling 7886 :term:`SPDX_INCLUDE_SOURCES`. 7887 7888 :term:`SPDX_CUSTOM_ANNOTATION_VARS` 7889 This option allows to associate `SPDX annotations 7890 <https://spdx.github.io/spdx-spec/v2.3/annotations/>`__ to a recipe, 7891 using the values of variables in the recipe:: 7892 7893 ANNOTATION1 = "First annotation for recipe" 7894 ANNOTATION2 = "Second annotation for recipe" 7895 SPDX_CUSTOM_ANNOTATION_VARS = "ANNOTATION1 ANNOTATION2" 7896 7897 This will add a new block to the recipe ``.sdpx.json`` output:: 7898 7899 "annotations": [ 7900 { 7901 "annotationDate": "2023-04-18T08:32:12Z", 7902 "annotationType": "OTHER", 7903 "annotator": "Tool: oe-spdx-creator - 1.0", 7904 "comment": "ANNOTATION1=First annotation for recipe" 7905 }, 7906 { 7907 "annotationDate": "2023-04-18T08:32:12Z", 7908 "annotationType": "OTHER", 7909 "annotator": "Tool: oe-spdx-creator - 1.0", 7910 "comment": "ANNOTATION2=Second annotation for recipe" 7911 } 7912 ], 7913 7914 :term:`SPDX_INCLUDE_SOURCES` 7915 This option allows to add a description of the source files used to build 7916 the host tools and the target packages, to the ``spdx.json`` files in 7917 ``tmp/deploy/spdx/MACHINE/recipes/`` under the :term:`Build Directory`. 7918 As a consequence, the ``spdx.json`` files under the ``by-namespace`` and 7919 ``packages`` subdirectories in ``tmp/deploy/spdx/MACHINE`` are also 7920 modified to include references to such source file descriptions. 7921 7922 Enable this option as follows:: 7923 7924 SPDX_INCLUDE_SOURCES = "1" 7925 7926 According to our tests on release 4.1 "langdale", building 7927 ``core-image-minimal`` for the ``qemux86-64`` machine, enabling 7928 this option multiplied the total size of the ``tmp/deploy/spdx`` 7929 directory by a factor of 3 (+291 MiB for this image), 7930 and the size of the ``IMAGE-MACHINE.spdx.tar.zst`` in 7931 ``tmp/deploy/images/MACHINE`` by a factor of 130 (+15 MiB for this 7932 image), compared to just using the :ref:`ref-classes-create-spdx` class 7933 with no option. 7934 7935 :term:`SPDX_NAMESPACE_PREFIX` 7936 This option could be used in order to change the prefix of ``spdxDocument`` 7937 and the prefix of ``documentNamespace``. It is set by default to 7938 ``http://spdx.org/spdxdoc``. 7939 7940 :term:`SPDX_PRETTY` 7941 This option makes the SPDX output more human-readable, using 7942 identation and newlines, instead of the default output in a 7943 single line:: 7944 7945 SPDX_PRETTY = "1" 7946 7947 The generated SPDX files are approximately 20% bigger, but 7948 this option is recommended if you want to inspect the SPDX 7949 output files with a text editor. 7950 7951 :term:`SPDXLICENSEMAP` 7952 Maps commonly used license names to their SPDX counterparts found in 7953 ``meta/files/common-licenses/``. For the default :term:`SPDXLICENSEMAP` 7954 mappings, see the ``meta/conf/licenses.conf`` file. 7955 7956 For additional information, see the :term:`LICENSE` 7957 variable. 7958 7959 :term:`SPECIAL_PKGSUFFIX` 7960 A list of prefixes for :term:`PN` used by the OpenEmbedded 7961 build system to create variants of recipes or packages. The list 7962 specifies the prefixes to strip off during certain circumstances such 7963 as the generation of the :term:`BPN` variable. 7964 7965 :term:`SPL_BINARY` 7966 The file type for the Secondary Program Loader (SPL). Some devices 7967 use an SPL from which to boot (e.g. the BeagleBone development 7968 board). For such cases, you can declare the file type of the SPL 7969 binary in the ``u-boot.inc`` include file, which is used in the 7970 U-Boot recipe. 7971 7972 The SPL file type is set to "null" by default in the ``u-boot.inc`` 7973 file as follows:: 7974 7975 # Some versions of u-boot build an SPL (Second Program Loader) image that 7976 # should be packaged along with the u-boot binary as well as placed in the 7977 # deploy directory. For those versions they can set the following variables 7978 # to allow packaging the SPL. 7979 SPL_BINARY ?= "" 7980 SPL_BINARYNAME ?= "${@os.path.basename(d.getVar("SPL_BINARY"))}" 7981 SPL_IMAGE ?= "${SPL_BINARYNAME}-${MACHINE}-${PV}-${PR}" 7982 SPL_SYMLINK ?= "${SPL_BINARYNAME}-${MACHINE}" 7983 7984 The :term:`SPL_BINARY` variable helps form 7985 various ``SPL_*`` variables used by the OpenEmbedded build system. 7986 7987 See the BeagleBone machine configuration example in the 7988 ":ref:`dev-manual/layers:adding a layer using the \`\`bitbake-layers\`\` script`" 7989 section in the Yocto Project Board Support Package Developer's Guide 7990 for additional information. 7991 7992 :term:`SPL_MKIMAGE_DTCOPTS` 7993 Options for the device tree compiler passed to ``mkimage -D`` feature 7994 while creating a FIT image with the :ref:`ref-classes-uboot-sign` 7995 class. If :term:`SPL_MKIMAGE_DTCOPTS` is not set then the 7996 :ref:`ref-classes-uboot-sign` class will not pass the ``-D`` option 7997 to ``mkimage``. 7998 7999 The default value is set to "" by the :ref:`ref-classes-uboot-config` 8000 class. 8001 8002 :term:`SPL_SIGN_ENABLE` 8003 Enable signing of the U-Boot FIT image. The default value is "0". 8004 This variable is used by the :ref:`ref-classes-uboot-sign` class. 8005 8006 :term:`SPL_SIGN_KEYDIR` 8007 Location of the directory containing the RSA key and certificate used for 8008 signing the U-Boot FIT image, used by the :ref:`ref-classes-uboot-sign` 8009 class. 8010 8011 :term:`SPL_SIGN_KEYNAME` 8012 The name of keys used by the :ref:`ref-classes-kernel-fitimage` class 8013 for signing U-Boot FIT image stored in the :term:`SPL_SIGN_KEYDIR` 8014 directory. If we have for example a ``dev.key`` key and a ``dev.crt`` 8015 certificate stored in the :term:`SPL_SIGN_KEYDIR` directory, you will 8016 have to set :term:`SPL_SIGN_KEYNAME` to ``dev``. 8017 8018 :term:`SPLASH` 8019 This variable, used by the :ref:`ref-classes-image` class, allows 8020 to choose splashscreen applications. Set it to the names of packages 8021 for such applications to use. This variable is set by default to 8022 ``psplash``. 8023 8024 :term:`SPLASH_IMAGES` 8025 This variable, used by the ``psplash`` recipe, allows to customize 8026 the default splashscreen image. 8027 8028 Specified images in PNG format are converted to ``.h`` files by the recipe, 8029 and are included in the ``psplash`` binary, so you won't find them in 8030 the root filesystem. 8031 8032 To make such a change, it is recommended to customize the 8033 ``psplash`` recipe in a custom layer. Here is an example structure for 8034 an ``ACME`` board:: 8035 8036 meta-acme/recipes-core/psplash 8037 ├── files 8038 │ └── logo-acme.png 8039 └── psplash_%.bbappend 8040 8041 And here are the contents of the ``psplash_%.bbappend`` file in 8042 this example:: 8043 8044 SPLASH_IMAGES = "file://logo-acme.png;outsuffix=default" 8045 FILESEXTRAPATHS:prepend := "${THISDIR}/files:" 8046 8047 You could even add specific configuration options for ``psplash``, 8048 for example:: 8049 8050 EXTRA_OECONF += "--disable-startup-msg --enable-img-fullscreen" 8051 8052 For information on append files, see the 8053 ":ref:`dev-manual/layers:appending other layers metadata with your layer`" 8054 section. 8055 8056 :term:`SRCREV_FORMAT` 8057 See :term:`bitbake:SRCREV_FORMAT` in the BitBake manual. 8058 8059 :term:`SRC_URI` 8060 8061 See the BitBake manual for the initial description for this variable: 8062 :term:`bitbake:SRC_URI`. 8063 8064 The following features are added by OpenEmbedded and the Yocto Project. 8065 8066 There are standard and recipe-specific options. Here are standard ones: 8067 8068 - ``apply`` --- whether to apply the patch or not. The default 8069 action is to apply the patch. 8070 8071 - ``striplevel`` --- which striplevel to use when applying the 8072 patch. The default level is 1. 8073 8074 - ``patchdir`` --- specifies the directory in which the patch should 8075 be applied. The default is ``${``\ :term:`S`\ ``}``. 8076 8077 Here are options specific to recipes building code from a revision 8078 control system: 8079 8080 - ``mindate`` --- apply the patch only if 8081 :term:`SRCDATE` is equal to or greater than 8082 ``mindate``. 8083 8084 - ``maxdate`` --- apply the patch only if :term:`SRCDATE` is not later 8085 than ``maxdate``. 8086 8087 - ``minrev`` --- apply the patch only if :term:`SRCREV` is equal to or 8088 greater than ``minrev``. 8089 8090 - ``maxrev`` --- apply the patch only if :term:`SRCREV` is not later 8091 than ``maxrev``. 8092 8093 - ``rev`` --- apply the patch only if :term:`SRCREV` is equal to 8094 ``rev``. 8095 8096 - ``notrev`` --- apply the patch only if :term:`SRCREV` is not equal to 8097 ``rev``. 8098 8099 .. note:: 8100 8101 If you want the build system to pick up files specified through 8102 a :term:`SRC_URI` statement from your append file, you need to be 8103 sure to extend the :term:`FILESPATH` variable by also using the 8104 :term:`FILESEXTRAPATHS` variable from within your append file. 8105 8106 :term:`SRC_URI_OVERRIDES_PACKAGE_ARCH` 8107 By default, the OpenEmbedded build system automatically detects 8108 whether :term:`SRC_URI` contains files that are machine-specific. If so, 8109 the build system automatically changes :term:`PACKAGE_ARCH`. Setting this 8110 variable to "0" disables this behavior. 8111 8112 :term:`SRCDATE` 8113 The date of the source code used to build the package. This variable 8114 applies only if the source was fetched from a Source Code Manager 8115 (SCM). 8116 8117 :term:`SRCPV` 8118 Returns the version string of the current package. This string is 8119 used to help define the value of :term:`PV`. 8120 8121 The :term:`SRCPV` variable is defined in the ``meta/conf/bitbake.conf`` 8122 configuration file in the :term:`Source Directory` as 8123 follows:: 8124 8125 SRCPV = "${@bb.fetch2.get_srcrev(d)}" 8126 8127 Recipes that need to define :term:`PV` do so with the help of the 8128 :term:`SRCPV`. For example, the ``ofono`` recipe (``ofono_git.bb``) 8129 located in ``meta/recipes-connectivity`` in the Source Directory 8130 defines :term:`PV` as follows:: 8131 8132 PV = "0.12-git${SRCPV}" 8133 8134 :term:`SRCREV` 8135 The revision of the source code used to build the package. This 8136 variable applies to Subversion, Git, Mercurial, and Bazaar only. Note 8137 that if you want to build a fixed revision and you want to avoid 8138 performing a query on the remote repository every time BitBake parses 8139 your recipe, you should specify a :term:`SRCREV` that is a full revision 8140 identifier (e.g. the full SHA hash in git) and not just a tag. 8141 8142 .. note:: 8143 8144 For information on limitations when inheriting the latest revision 8145 of software using :term:`SRCREV`, see the :term:`AUTOREV` variable 8146 description and the 8147 ":ref:`dev-manual/packages:automatically incrementing a package version number`" 8148 section, which is in the Yocto Project Development Tasks Manual. 8149 8150 :term:`SRCTREECOVEREDTASKS` 8151 A list of tasks that are typically not relevant (and therefore skipped) 8152 when building using the :ref:`ref-classes-externalsrc` 8153 class. The default value as set in that class file is the set of tasks 8154 that are rarely needed when using external source:: 8155 8156 SRCTREECOVEREDTASKS ?= "do_patch do_unpack do_fetch" 8157 8158 The notable exception is when processing external kernel source as 8159 defined in the :ref:`ref-classes-kernel-yocto` class file (formatted for 8160 aesthetics):: 8161 8162 SRCTREECOVEREDTASKS += "\ 8163 do_validate_branches \ 8164 do_kernel_configcheck \ 8165 do_kernel_checkout \ 8166 do_fetch \ 8167 do_unpack \ 8168 do_patch \ 8169 " 8170 8171 See the associated :term:`EXTERNALSRC` and :term:`EXTERNALSRC_BUILD` 8172 variables for more information. 8173 8174 :term:`SSTATE_DIR` 8175 The directory for the shared state cache. 8176 8177 :term:`SSTATE_EXCLUDEDEPS_SYSROOT` 8178 This variable allows to specify indirect dependencies to exclude 8179 from sysroots, for example to avoid the situations when a dependency on 8180 any ``-native`` recipe will pull in all dependencies of that recipe 8181 in the recipe sysroot. This behaviour might not always be wanted, 8182 for example when that ``-native`` recipe depends on build tools 8183 that are not relevant for the current recipe. 8184 8185 This way, irrelevant dependencies are ignored, which could have 8186 prevented the reuse of prebuilt artifacts stored in the Shared 8187 State Cache. 8188 8189 :term:`SSTATE_EXCLUDEDEPS_SYSROOT` is evaluated as two regular 8190 expressions of recipe and dependency to ignore. An example 8191 is the rule in :oe_git:`meta/conf/layer.conf </openembedded-core/tree/meta/conf/layer.conf>`:: 8192 8193 # Nothing needs to depend on libc-initial 8194 # base-passwd/shadow-sysroot don't need their dependencies 8195 SSTATE_EXCLUDEDEPS_SYSROOT += "\ 8196 .*->.*-initial.* \ 8197 .*(base-passwd|shadow-sysroot)->.* \ 8198 " 8199 8200 The ``->`` substring represents the dependency between 8201 the two regular expressions. 8202 8203 :term:`SSTATE_MIRROR_ALLOW_NETWORK` 8204 If set to "1", allows fetches from mirrors that are specified in 8205 :term:`SSTATE_MIRRORS` to work even when 8206 fetching from the network is disabled by setting :term:`BB_NO_NETWORK` to 8207 "1". Using the :term:`SSTATE_MIRROR_ALLOW_NETWORK` variable is useful if 8208 you have set :term:`SSTATE_MIRRORS` to point to an internal server for 8209 your shared state cache, but you want to disable any other fetching 8210 from the network. 8211 8212 :term:`SSTATE_MIRRORS` 8213 Configures the OpenEmbedded build system to search other mirror 8214 locations for prebuilt cache data objects before building out the 8215 data. This variable works like fetcher :term:`MIRRORS` 8216 and :term:`PREMIRRORS` and points to the cache 8217 locations to check for the shared state (sstate) objects. 8218 8219 You can specify a filesystem directory or a remote URL such as HTTP 8220 or FTP. The locations you specify need to contain the shared state 8221 cache (sstate-cache) results from previous builds. The sstate-cache 8222 you point to can also be from builds on other machines. 8223 8224 When pointing to sstate build artifacts on another machine that uses 8225 a different GCC version for native builds, you must configure 8226 :term:`SSTATE_MIRRORS` with a regular expression that maps local search 8227 paths to server paths. The paths need to take into account 8228 :term:`NATIVELSBSTRING` set by the :ref:`ref-classes-uninative` class. 8229 For example, the following maps the local search path ``universal-4.9`` 8230 to the server-provided path server_url_sstate_path:: 8231 8232 SSTATE_MIRRORS ?= "file://universal-4.9/(.*) https://server_url_sstate_path/universal-4.8/\1" 8233 8234 If a mirror uses the same structure as 8235 :term:`SSTATE_DIR`, you need to add "PATH" at the 8236 end as shown in the examples below. The build system substitutes the 8237 correct path within the directory structure:: 8238 8239 SSTATE_MIRRORS ?= "\ 8240 file://.* https://someserver.tld/share/sstate/PATH;downloadfilename=PATH \ 8241 file://.* file:///some-local-dir/sstate/PATH" 8242 8243 The Yocto Project actually shares the cache data objects built by its 8244 autobuilder:: 8245 8246 SSTATE_MIRRORS ?= "file://.* http://cdn.jsdelivr.net/yocto/sstate/all/PATH;downloadfilename=PATH" 8247 8248 As such binary artifacts are built for the generic QEMU machines 8249 supported by the various Poky releases, they are less likely to be 8250 reusable in real projects building binaries optimized for a specific 8251 CPU family. 8252 8253 :term:`SSTATE_SCAN_FILES` 8254 Controls the list of files the OpenEmbedded build system scans for 8255 hardcoded installation paths. The variable uses a space-separated 8256 list of filenames (not paths) with standard wildcard characters 8257 allowed. 8258 8259 During a build, the OpenEmbedded build system creates a shared state 8260 (sstate) object during the first stage of preparing the sysroots. 8261 That object is scanned for hardcoded paths for original installation 8262 locations. The list of files that are scanned for paths is controlled 8263 by the :term:`SSTATE_SCAN_FILES` variable. Typically, recipes add files 8264 they want to be scanned to the value of :term:`SSTATE_SCAN_FILES` rather 8265 than the variable being comprehensively set. The 8266 :ref:`ref-classes-sstate` class specifies the default list of files. 8267 8268 For details on the process, see the :ref:`ref-classes-staging` class. 8269 8270 :term:`STAGING_BASE_LIBDIR_NATIVE` 8271 Specifies the path to the ``/lib`` subdirectory of the sysroot 8272 directory for the build host. 8273 8274 :term:`STAGING_BASELIBDIR` 8275 Specifies the path to the ``/lib`` subdirectory of the sysroot 8276 directory for the target for which the current recipe is being built 8277 (:term:`STAGING_DIR_HOST`). 8278 8279 :term:`STAGING_BINDIR` 8280 Specifies the path to the ``/usr/bin`` subdirectory of the sysroot 8281 directory for the target for which the current recipe is being built 8282 (:term:`STAGING_DIR_HOST`). 8283 8284 :term:`STAGING_BINDIR_CROSS` 8285 Specifies the path to the directory containing binary configuration 8286 scripts. These scripts provide configuration information for other 8287 software that wants to make use of libraries or include files 8288 provided by the software associated with the script. 8289 8290 .. note:: 8291 8292 This style of build configuration has been largely replaced by 8293 ``pkg-config``. Consequently, if ``pkg-config`` is supported by the 8294 library to which you are linking, it is recommended you use 8295 ``pkg-config`` instead of a provided configuration script. 8296 8297 :term:`STAGING_BINDIR_NATIVE` 8298 Specifies the path to the ``/usr/bin`` subdirectory of the sysroot 8299 directory for the build host. 8300 8301 :term:`STAGING_DATADIR` 8302 Specifies the path to the ``/usr/share`` subdirectory of the sysroot 8303 directory for the target for which the current recipe is being built 8304 (:term:`STAGING_DIR_HOST`). 8305 8306 :term:`STAGING_DATADIR_NATIVE` 8307 Specifies the path to the ``/usr/share`` subdirectory of the sysroot 8308 directory for the build host. 8309 8310 :term:`STAGING_DIR` 8311 Helps construct the ``recipe-sysroots`` directory, which is used 8312 during packaging. 8313 8314 For information on how staging for recipe-specific sysroots occurs, 8315 see the :ref:`ref-tasks-populate_sysroot` 8316 task, the ":ref:`sdk-manual/extensible:sharing files between recipes`" 8317 section in the Yocto Project Development Tasks Manual, the 8318 ":ref:`overview-manual/concepts:configuration, compilation, and staging`" 8319 section in the Yocto Project Overview and Concepts Manual, and the 8320 :term:`SYSROOT_DIRS` variable. 8321 8322 .. note:: 8323 8324 Recipes should never write files directly under the :term:`STAGING_DIR` 8325 directory because the OpenEmbedded build system manages the 8326 directory automatically. Instead, files should be installed to 8327 ``${``\ :term:`D`\ ``}`` within your recipe's :ref:`ref-tasks-install` 8328 task and then the OpenEmbedded build system will stage a subset of 8329 those files into the sysroot. 8330 8331 :term:`STAGING_DIR_HOST` 8332 Specifies the path to the sysroot directory for the system on which 8333 the component is built to run (the system that hosts the component). 8334 For most recipes, this sysroot is the one in which that recipe's 8335 :ref:`ref-tasks-populate_sysroot` task copies 8336 files. Exceptions include ``-native`` recipes, where the 8337 :ref:`ref-tasks-populate_sysroot` task instead uses 8338 :term:`STAGING_DIR_NATIVE`. Depending on 8339 the type of recipe and the build target, :term:`STAGING_DIR_HOST` can 8340 have the following values: 8341 8342 - For recipes building for the target machine, the value is 8343 "${:term:`STAGING_DIR`}/${:term:`MACHINE`}". 8344 8345 - For native recipes building for the build host, the value is empty 8346 given the assumption that when building for the build host, the 8347 build host's own directories should be used. 8348 8349 .. note:: 8350 8351 ``-native`` recipes are not installed into host paths like such 8352 as ``/usr``. Rather, these recipes are installed into 8353 :term:`STAGING_DIR_NATIVE`. When compiling ``-native`` recipes, 8354 standard build environment variables such as 8355 :term:`CPPFLAGS` and 8356 :term:`CFLAGS` are set up so that both host paths 8357 and :term:`STAGING_DIR_NATIVE` are searched for libraries and 8358 headers using, for example, GCC's ``-isystem`` option. 8359 8360 Thus, the emphasis is that the ``STAGING_DIR*`` variables 8361 should be viewed as input variables by tasks such as 8362 :ref:`ref-tasks-configure`, 8363 :ref:`ref-tasks-compile`, and 8364 :ref:`ref-tasks-install`. Having the real system 8365 root correspond to :term:`STAGING_DIR_HOST` makes conceptual sense 8366 for ``-native`` recipes, as they make use of host headers and 8367 libraries. 8368 8369 Check :term:`RECIPE_SYSROOT` and :term:`RECIPE_SYSROOT_NATIVE`. 8370 8371 :term:`STAGING_DIR_NATIVE` 8372 Specifies the path to the sysroot directory used when building 8373 components that run on the build host itself. 8374 8375 The default value is ``"${RECIPE_SYSROOT_NATIVE}"``, 8376 check :term:`RECIPE_SYSROOT_NATIVE`. 8377 8378 :term:`STAGING_DIR_TARGET` 8379 Specifies the path to the sysroot used for the system for which the 8380 component generates code. For components that do not generate code, 8381 which is the majority, :term:`STAGING_DIR_TARGET` is set to match 8382 :term:`STAGING_DIR_HOST`. 8383 8384 Some recipes build binaries that can run on the target system but those 8385 binaries in turn generate code for another different system (e.g. 8386 :ref:`ref-classes-cross-canadian` recipes). Using terminology from GNU, 8387 the primary system is referred to as the "HOST" and the secondary, or 8388 different, system is referred to as the "TARGET". Thus, the binaries 8389 run on the "HOST" system and generate binaries for the "TARGET" 8390 system. The :term:`STAGING_DIR_HOST` variable points to the sysroot used 8391 for the "HOST" system, while :term:`STAGING_DIR_TARGET` points to the 8392 sysroot used for the "TARGET" system. 8393 8394 :term:`STAGING_ETCDIR_NATIVE` 8395 Specifies the path to the ``/etc`` subdirectory of the sysroot 8396 directory for the build host. 8397 8398 :term:`STAGING_EXECPREFIXDIR` 8399 Specifies the path to the ``/usr`` subdirectory of the sysroot 8400 directory for the target for which the current recipe is being built 8401 (:term:`STAGING_DIR_HOST`). 8402 8403 :term:`STAGING_INCDIR` 8404 Specifies the path to the ``/usr/include`` subdirectory of the 8405 sysroot directory for the target for which the current recipe being 8406 built (:term:`STAGING_DIR_HOST`). 8407 8408 :term:`STAGING_INCDIR_NATIVE` 8409 Specifies the path to the ``/usr/include`` subdirectory of the 8410 sysroot directory for the build host. 8411 8412 :term:`STAGING_KERNEL_BUILDDIR` 8413 Points to the directory containing the kernel build artifacts. 8414 Recipes building software that needs to access kernel build artifacts 8415 (e.g. ``systemtap-uprobes``) can look in the directory specified with 8416 the :term:`STAGING_KERNEL_BUILDDIR` variable to find these artifacts 8417 after the kernel has been built. 8418 8419 :term:`STAGING_KERNEL_DIR` 8420 The directory with kernel headers that are required to build 8421 out-of-tree modules. 8422 8423 :term:`STAGING_LIBDIR` 8424 Specifies the path to the ``/usr/lib`` subdirectory of the sysroot 8425 directory for the target for which the current recipe is being built 8426 (:term:`STAGING_DIR_HOST`). 8427 8428 :term:`STAGING_LIBDIR_NATIVE` 8429 Specifies the path to the ``/usr/lib`` subdirectory of the sysroot 8430 directory for the build host. 8431 8432 :term:`STAMP` 8433 Specifies the base path used to create recipe stamp files. The path 8434 to an actual stamp file is constructed by evaluating this string and 8435 then appending additional information. Currently, the default 8436 assignment for :term:`STAMP` as set in the ``meta/conf/bitbake.conf`` 8437 file is:: 8438 8439 STAMP = "${STAMPS_DIR}/${MULTIMACH_TARGET_SYS}/${PN}/${EXTENDPE}${PV}-${PR}" 8440 8441 For information on how BitBake uses stamp files to determine if a 8442 task should be rerun, see the 8443 ":ref:`overview-manual/concepts:stamp files and the rerunning of tasks`" 8444 section in the Yocto Project Overview and Concepts Manual. 8445 8446 See :term:`STAMPS_DIR`, 8447 :term:`MULTIMACH_TARGET_SYS`, 8448 :term:`PN`, :term:`EXTENDPE`, 8449 :term:`PV`, and :term:`PR` for related variable 8450 information. 8451 8452 :term:`STAMPCLEAN` 8453 See :term:`bitbake:STAMPCLEAN` in the BitBake manual. 8454 8455 :term:`STAMPS_DIR` 8456 Specifies the base directory in which the OpenEmbedded build system 8457 places stamps. The default directory is ``${TMPDIR}/stamps``. 8458 8459 :term:`STRIP` 8460 The minimal command and arguments to run ``strip``, which is used to 8461 strip symbols. 8462 8463 :term:`SUMMARY` 8464 The short (72 characters or less) summary of the binary package for 8465 packaging systems such as ``opkg``, ``rpm``, or ``dpkg``. By default, 8466 :term:`SUMMARY` is used to define the 8467 :term:`DESCRIPTION` variable if :term:`DESCRIPTION` is 8468 not set in the recipe. 8469 8470 :term:`SVNDIR` 8471 The directory in which files checked out of a Subversion system are 8472 stored. 8473 8474 :term:`SYSLINUX_DEFAULT_CONSOLE` 8475 Specifies the kernel boot default console. If you want to use a 8476 console other than the default, set this variable in your recipe as 8477 follows where "X" is the console number you want to use:: 8478 8479 SYSLINUX_DEFAULT_CONSOLE = "console=ttyX" 8480 8481 The :ref:`ref-classes-syslinux` class initially sets 8482 this variable to null but then checks for a value later. 8483 8484 :term:`SYSLINUX_OPTS` 8485 Lists additional options to add to the syslinux file. You need to set 8486 this variable in your recipe. If you want to list multiple options, 8487 separate the options with a semicolon character (``;``). 8488 8489 The :ref:`ref-classes-syslinux` class uses this variable 8490 to create a set of options. 8491 8492 :term:`SYSLINUX_SERIAL` 8493 Specifies the alternate serial port or turns it off. To turn off 8494 serial, set this variable to an empty string in your recipe. The 8495 variable's default value is set in the 8496 :ref:`ref-classes-syslinux` class as follows:: 8497 8498 SYSLINUX_SERIAL ?= "0 115200" 8499 8500 The class checks for and uses the variable as needed. 8501 8502 :term:`SYSLINUX_SERIAL_TTY` 8503 Specifies the alternate console=tty... kernel boot argument. The 8504 variable's default value is set in the :ref:`ref-classes-syslinux` 8505 class as follows:: 8506 8507 SYSLINUX_SERIAL_TTY ?= "console=ttyS0,115200" 8508 8509 The class checks for and uses the variable as needed. 8510 8511 :term:`SYSLINUX_SPLASH` 8512 An ``.LSS`` file used as the background for the VGA boot menu when 8513 you use the boot menu. You need to set this variable in your recipe. 8514 8515 The :ref:`ref-classes-syslinux` class checks for this 8516 variable and if found, the OpenEmbedded build system installs the 8517 splash screen. 8518 8519 :term:`SYSROOT_DESTDIR` 8520 Points to the temporary directory under the work directory (default 8521 "``${``\ :term:`WORKDIR`\ ``}/sysroot-destdir``") 8522 where the files populated into the sysroot are assembled during the 8523 :ref:`ref-tasks-populate_sysroot` task. 8524 8525 :term:`SYSROOT_DIRS` 8526 Directories that are staged into the sysroot by the 8527 :ref:`ref-tasks-populate_sysroot` task. By 8528 default, the following directories are staged:: 8529 8530 SYSROOT_DIRS = " \ 8531 ${includedir} \ 8532 ${libdir} \ 8533 ${base_libdir} \ 8534 ${nonarch_base_libdir} \ 8535 ${datadir} \ 8536 /sysroot-only \ 8537 " 8538 8539 :term:`SYSROOT_DIRS_IGNORE` 8540 Directories that are not staged into the sysroot by the 8541 :ref:`ref-tasks-populate_sysroot` task. You 8542 can use this variable to exclude certain subdirectories of 8543 directories listed in :term:`SYSROOT_DIRS` from 8544 staging. By default, the following directories are not staged:: 8545 8546 SYSROOT_DIRS_IGNORE = " \ 8547 ${mandir} \ 8548 ${docdir} \ 8549 ${infodir} \ 8550 ${datadir}/X11/locale \ 8551 ${datadir}/applications \ 8552 ${datadir}/bash-completion \ 8553 ${datadir}/fonts \ 8554 ${datadir}/gtk-doc/html \ 8555 ${datadir}/installed-tests \ 8556 ${datadir}/locale \ 8557 ${datadir}/pixmaps \ 8558 ${datadir}/terminfo \ 8559 ${libdir}/${BPN}/ptest \ 8560 " 8561 8562 Consider the following example in which you need to manipulate this variable. 8563 Assume you have a recipe ``A`` that provides a shared library ``.so.*`` that is 8564 installed into a custom folder other than "``${libdir}``" 8565 or "``${base_libdir}``", let's say "``/opt/lib``". 8566 8567 .. note:: 8568 8569 This is not a recommended way to deal with shared libraries, but this 8570 is just to show the usefulness of setting :term:`SYSROOT_DIRS`. 8571 8572 When a recipe ``B`` :term:`DEPENDS` on ``A``, it means what is in 8573 :term:`SYSROOT_DIRS` will be copied from :term:`D` of the recipe ``B`` 8574 into ``B``'s :term:`SYSROOT_DESTDIR` that is "``${WORKDIR}/sysroot-destdir``". 8575 8576 Now, since ``/opt/lib`` is not in :term:`SYSROOT_DIRS`, it will never be copied to 8577 ``A``'s :term:`RECIPE_SYSROOT`, which is "``${WORKDIR}/recipe-sysroot``". So, 8578 the linking process will fail. 8579 8580 To fix this, you need to add ``/opt/lib`` to :term:`SYSROOT_DIRS`:: 8581 8582 SYSROOT_DIRS:append = " /opt/lib" 8583 8584 .. note:: 8585 Even after setting ``/opt/lib`` to :term:`SYSROOT_DIRS`, the linking process will still fail 8586 because the linker does not know that location, since :term:`TARGET_LDFLAGS` 8587 doesn't contain it (if your recipe is for the target). Therefore, so you should add:: 8588 8589 TARGET_LDFLAGS:append = " -L${RECIPE_SYSROOT}/opt/lib" 8590 8591 :term:`SYSROOT_DIRS_NATIVE` 8592 Extra directories staged into the sysroot by the 8593 :ref:`ref-tasks-populate_sysroot` task for 8594 ``-native`` recipes, in addition to those specified in 8595 :term:`SYSROOT_DIRS`. By default, the following 8596 extra directories are staged:: 8597 8598 SYSROOT_DIRS_NATIVE = " \ 8599 ${bindir} \ 8600 ${sbindir} \ 8601 ${base_bindir} \ 8602 ${base_sbindir} \ 8603 ${libexecdir} \ 8604 ${sysconfdir} \ 8605 ${localstatedir} \ 8606 " 8607 8608 .. note:: 8609 8610 Programs built by ``-native`` recipes run directly from the sysroot 8611 (:term:`STAGING_DIR_NATIVE`), which is why additional directories 8612 containing program executables and supporting files need to be staged. 8613 8614 :term:`SYSROOT_PREPROCESS_FUNCS` 8615 A list of functions to execute after files are staged into the 8616 sysroot. These functions are usually used to apply additional 8617 processing on the staged files, or to stage additional files. 8618 8619 :term:`SYSTEMD_AUTO_ENABLE` 8620 When inheriting the :ref:`ref-classes-systemd` class, 8621 this variable specifies whether the specified service in 8622 :term:`SYSTEMD_SERVICE` should start 8623 automatically or not. By default, the service is enabled to 8624 automatically start at boot time. The default setting is in the 8625 :ref:`ref-classes-systemd` class as follows:: 8626 8627 SYSTEMD_AUTO_ENABLE ??= "enable" 8628 8629 You can disable the service by setting the variable to "disable". 8630 8631 :term:`SYSTEMD_BOOT_CFG` 8632 When :term:`EFI_PROVIDER` is set to 8633 "systemd-boot", the :term:`SYSTEMD_BOOT_CFG` variable specifies the 8634 configuration file that should be used. By default, the 8635 :ref:`ref-classes-systemd-boot` class sets the 8636 :term:`SYSTEMD_BOOT_CFG` as follows:: 8637 8638 SYSTEMD_BOOT_CFG ?= "${S}/loader.conf" 8639 8640 For information on Systemd-boot, see the `Systemd-boot 8641 documentation <https://www.freedesktop.org/wiki/Software/systemd/systemd-boot/>`__. 8642 8643 :term:`SYSTEMD_BOOT_ENTRIES` 8644 When :term:`EFI_PROVIDER` is set to 8645 "systemd-boot", the :term:`SYSTEMD_BOOT_ENTRIES` variable specifies a 8646 list of entry files (``*.conf``) to install that contain one boot 8647 entry per file. By default, the :ref:`ref-classes-systemd-boot` class 8648 sets the :term:`SYSTEMD_BOOT_ENTRIES` as follows:: 8649 8650 SYSTEMD_BOOT_ENTRIES ?= "" 8651 8652 For information on Systemd-boot, see the `Systemd-boot 8653 documentation <https://www.freedesktop.org/wiki/Software/systemd/systemd-boot/>`__. 8654 8655 :term:`SYSTEMD_BOOT_TIMEOUT` 8656 When :term:`EFI_PROVIDER` is set to 8657 "systemd-boot", the :term:`SYSTEMD_BOOT_TIMEOUT` variable specifies the 8658 boot menu timeout in seconds. By default, the 8659 :ref:`ref-classes-systemd-boot` class sets the 8660 :term:`SYSTEMD_BOOT_TIMEOUT` as follows:: 8661 8662 SYSTEMD_BOOT_TIMEOUT ?= "10" 8663 8664 For information on Systemd-boot, see the `Systemd-boot 8665 documentation <https://www.freedesktop.org/wiki/Software/systemd/systemd-boot/>`__. 8666 8667 :term:`SYSTEMD_DEFAULT_TARGET` 8668 8669 This variable allows to set the default unit that systemd starts at bootup. 8670 Usually, this is either ``multi-user.target`` or ``graphical.target``. 8671 This works by creating a ``default.target`` symbolic link to the chosen systemd 8672 target file. 8673 8674 See `systemd's documentation 8675 <https://www.freedesktop.org/software/systemd/man/systemd.special.html>`__ 8676 for details. 8677 8678 For example, this variable is used in the :oe_git:`core-image-minimal-xfce.bb 8679 </meta-openembedded/tree/meta-xfce/recipes-core/images/core-image-minimal-xfce.bb>` 8680 recipe:: 8681 8682 SYSTEMD_DEFAULT_TARGET = "graphical.target" 8683 8684 :term:`SYSTEMD_PACKAGES` 8685 When inheriting the :ref:`ref-classes-systemd` class, 8686 this variable locates the systemd unit files when they are not found 8687 in the main recipe's package. By default, the :term:`SYSTEMD_PACKAGES` 8688 variable is set such that the systemd unit files are assumed to 8689 reside in the recipes main package:: 8690 8691 SYSTEMD_PACKAGES ?= "${PN}" 8692 8693 If these unit files are not in this recipe's main package, you need 8694 to use :term:`SYSTEMD_PACKAGES` to list the package or packages in which 8695 the build system can find the systemd unit files. 8696 8697 :term:`SYSTEMD_SERVICE` 8698 When inheriting the :ref:`ref-classes-systemd` class, 8699 this variable specifies the systemd service name for a package. 8700 8701 Multiple services can be specified, each one separated by a space. 8702 8703 When you specify this file in your recipe, use a package name 8704 override to indicate the package to which the value applies. Here is 8705 an example from the connman recipe:: 8706 8707 SYSTEMD_SERVICE:${PN} = "connman.service" 8708 8709 The package overrides that can be specified are directly related to the value of 8710 :term:`SYSTEMD_PACKAGES`. Overrides not included in :term:`SYSTEMD_PACKAGES` 8711 will be silently ignored. 8712 8713 :term:`SYSVINIT_ENABLED_GETTYS` 8714 When using :ref:`SysVinit <dev-manual/new-recipe:enabling system services>`, 8715 specifies a space-separated list of the virtual terminals that should 8716 run a :wikipedia:`getty <Getty_(Unix)>` (allowing login), assuming 8717 :term:`USE_VT` is not set to "0". 8718 8719 The default value for :term:`SYSVINIT_ENABLED_GETTYS` is "1" (i.e. only 8720 run a getty on the first virtual terminal). 8721 8722 :term:`T` 8723 This variable points to a directory were BitBake places temporary 8724 files, which consist mostly of task logs and scripts, when building a 8725 particular recipe. The variable is typically set as follows:: 8726 8727 T = "${WORKDIR}/temp" 8728 8729 The :term:`WORKDIR` is the directory into which 8730 BitBake unpacks and builds the recipe. The default ``bitbake.conf`` 8731 file sets this variable. 8732 8733 The :term:`T` variable is not to be confused with the 8734 :term:`TMPDIR` variable, which points to the root of 8735 the directory tree where BitBake places the output of an entire 8736 build. 8737 8738 :term:`TARGET_ARCH` 8739 The target machine's architecture. The OpenEmbedded build system 8740 supports many architectures. Here is an example list of architectures 8741 supported. This list is by no means complete as the architecture is 8742 configurable: 8743 8744 - arm 8745 - i586 8746 - x86_64 8747 - powerpc 8748 - powerpc64 8749 - mips 8750 - mipsel 8751 8752 For additional information on machine architectures, see the 8753 :term:`TUNE_ARCH` variable. 8754 8755 :term:`TARGET_AS_ARCH` 8756 Specifies architecture-specific assembler flags for the target 8757 system. :term:`TARGET_AS_ARCH` is initialized from 8758 :term:`TUNE_ASARGS` by default in the BitBake 8759 configuration file (``meta/conf/bitbake.conf``):: 8760 8761 TARGET_AS_ARCH = "${TUNE_ASARGS}" 8762 8763 :term:`TARGET_CC_ARCH` 8764 Specifies architecture-specific C compiler flags for the target 8765 system. :term:`TARGET_CC_ARCH` is initialized from 8766 :term:`TUNE_CCARGS` by default. 8767 8768 .. note:: 8769 8770 It is a common workaround to append :term:`LDFLAGS` to 8771 :term:`TARGET_CC_ARCH` in recipes that build software for the target that 8772 would not otherwise respect the exported :term:`LDFLAGS` variable. 8773 8774 :term:`TARGET_CC_KERNEL_ARCH` 8775 This is a specific kernel compiler flag for a CPU or Application 8776 Binary Interface (ABI) tune. The flag is used rarely and only for 8777 cases where a userspace :term:`TUNE_CCARGS` is not 8778 compatible with the kernel compilation. The :term:`TARGET_CC_KERNEL_ARCH` 8779 variable allows the kernel (and associated modules) to use a 8780 different configuration. See the 8781 ``meta/conf/machine/include/arm/feature-arm-thumb.inc`` file in the 8782 :term:`Source Directory` for an example. 8783 8784 :term:`TARGET_CFLAGS` 8785 Specifies the flags to pass to the C compiler when building for the 8786 target. When building in the target context, 8787 :term:`CFLAGS` is set to the value of this variable by 8788 default. 8789 8790 Additionally, the SDK's environment setup script sets the :term:`CFLAGS` 8791 variable in the environment to the :term:`TARGET_CFLAGS` value so that 8792 executables built using the SDK also have the flags applied. 8793 8794 :term:`TARGET_CPPFLAGS` 8795 Specifies the flags to pass to the C pre-processor (i.e. to both the 8796 C and the C++ compilers) when building for the target. When building 8797 in the target context, :term:`CPPFLAGS` is set to the 8798 value of this variable by default. 8799 8800 Additionally, the SDK's environment setup script sets the 8801 :term:`CPPFLAGS` variable in the environment to the :term:`TARGET_CPPFLAGS` 8802 value so that executables built using the SDK also have the flags 8803 applied. 8804 8805 :term:`TARGET_CXXFLAGS` 8806 Specifies the flags to pass to the C++ compiler when building for the 8807 target. When building in the target context, 8808 :term:`CXXFLAGS` is set to the value of this variable 8809 by default. 8810 8811 Additionally, the SDK's environment setup script sets the 8812 :term:`CXXFLAGS` variable in the environment to the :term:`TARGET_CXXFLAGS` 8813 value so that executables built using the SDK also have the flags 8814 applied. 8815 8816 :term:`TARGET_DBGSRC_DIR` 8817 Specifies the target path to debug source files. The default is 8818 ``/usr/src/debug/${PN}/${PV}``. 8819 8820 :term:`TARGET_FPU` 8821 Specifies the method for handling FPU code. For FPU-less targets, 8822 which include most ARM CPUs, the variable must be set to "soft". If 8823 not, the kernel emulation gets used, which results in a performance 8824 penalty. 8825 8826 :term:`TARGET_LD_ARCH` 8827 Specifies architecture-specific linker flags for the target system. 8828 :term:`TARGET_LD_ARCH` is initialized from 8829 :term:`TUNE_LDARGS` by default in the BitBake 8830 configuration file (``meta/conf/bitbake.conf``):: 8831 8832 TARGET_LD_ARCH = "${TUNE_LDARGS}" 8833 8834 :term:`TARGET_LDFLAGS` 8835 Specifies the flags to pass to the linker when building for the 8836 target. When building in the target context, 8837 :term:`LDFLAGS` is set to the value of this variable 8838 by default. 8839 8840 Additionally, the SDK's environment setup script sets the 8841 :term:`LDFLAGS` variable in the environment to the 8842 :term:`TARGET_LDFLAGS` value so that executables built using the SDK also 8843 have the flags applied. 8844 8845 :term:`TARGET_OS` 8846 Specifies the target's operating system. The variable can be set to 8847 "linux" for glibc-based systems (GNU C Library) and to "linux-musl" 8848 for musl libc. For ARM/EABI targets, the possible values are 8849 "linux-gnueabi" and "linux-musleabi". 8850 8851 :term:`TARGET_PREFIX` 8852 Specifies the prefix used for the toolchain binary target tools. 8853 8854 Depending on the type of recipe and the build target, 8855 :term:`TARGET_PREFIX` is set as follows: 8856 8857 - For recipes building for the target machine, the value is 8858 "${:term:`TARGET_SYS`}-". 8859 8860 - For native recipes, the build system sets the variable to the 8861 value of :term:`BUILD_PREFIX`. 8862 8863 - For native SDK recipes (:ref:`ref-classes-nativesdk`), 8864 the build system sets the variable to the value of :term:`SDK_PREFIX`. 8865 8866 :term:`TARGET_SYS` 8867 Specifies the system, including the architecture and the operating 8868 system, for which the build is occurring in the context of the 8869 current recipe. 8870 8871 The OpenEmbedded build system automatically sets this variable based 8872 on :term:`TARGET_ARCH`, 8873 :term:`TARGET_VENDOR`, and 8874 :term:`TARGET_OS` variables. 8875 8876 .. note:: 8877 8878 You do not need to set the :term:`TARGET_SYS` variable yourself. 8879 8880 Consider these two examples: 8881 8882 - Given a native recipe on a 32-bit, x86 machine running Linux, the 8883 value is "i686-linux". 8884 8885 - Given a recipe being built for a little-endian, MIPS target 8886 running Linux, the value might be "mipsel-linux". 8887 8888 :term:`TARGET_VENDOR` 8889 Specifies the name of the target vendor. 8890 8891 :term:`TCLIBC` 8892 Specifies the GNU standard C library (``libc``) variant to use during 8893 the build process. 8894 8895 You can select "glibc", "musl", "newlib", or "baremetal". 8896 8897 :term:`TCLIBCAPPEND` 8898 Specifies a suffix to be appended onto the :term:`TMPDIR` value. The 8899 suffix identifies the ``libc`` variant for building. When you are 8900 building for multiple variants with the same :term:`Build Directory`, 8901 this mechanism ensures that output for different ``libc`` variants is 8902 kept separate to avoid potential conflicts. 8903 8904 In the ``defaultsetup.conf`` file, the default value of 8905 :term:`TCLIBCAPPEND` is "-${TCLIBC}". However, distros such as poky, 8906 which normally only support one ``libc`` variant, set 8907 :term:`TCLIBCAPPEND` to "" in their distro configuration file resulting 8908 in no suffix being applied. 8909 8910 :term:`TCMODE` 8911 Specifies the toolchain selector. :term:`TCMODE` controls the 8912 characteristics of the generated packages and images by telling the 8913 OpenEmbedded build system which toolchain profile to use. By default, 8914 the OpenEmbedded build system builds its own internal toolchain. The 8915 variable's default value is "default", which uses that internal 8916 toolchain. 8917 8918 .. note:: 8919 8920 If :term:`TCMODE` is set to a value other than "default", then it is your 8921 responsibility to ensure that the toolchain is compatible with the 8922 default toolchain. Using older or newer versions of these 8923 components might cause build problems. See 8924 :doc:`Release Information </migration-guides/index>` for your 8925 version of the Yocto Project, to find the specific components with 8926 which the toolchain must be compatible. 8927 8928 The :term:`TCMODE` variable is similar to :term:`TCLIBC`, 8929 which controls the variant of the GNU standard C library (``libc``) 8930 used during the build process: ``glibc`` or ``musl``. 8931 8932 With additional layers, it is possible to use a pre-compiled external 8933 toolchain. One example is the Sourcery G++ Toolchain. The support for 8934 this toolchain resides in the separate Mentor Graphics 8935 ``meta-sourcery`` layer at 8936 https://github.com/MentorEmbedded/meta-sourcery/. 8937 8938 The layer's ``README`` file contains information on how to use the 8939 Sourcery G++ Toolchain as an external toolchain. You will have to 8940 add the layer to your ``bblayers.conf`` file and then set the 8941 :term:`EXTERNAL_TOOLCHAIN` variable in your ``local.conf`` file to 8942 the location of the toolchain. 8943 8944 The fundamentals used for this example apply to any external 8945 toolchain. You can use ``meta-sourcery`` as a template for adding 8946 support for other external toolchains. 8947 8948 In addition to toolchain configuration, you will also need a 8949 corresponding toolchain recipe file. This recipe file needs to package 8950 up any pre-built objects in the toolchain such as ``libgcc``, 8951 ``libstdcc++``, any locales, and ``libc``. 8952 8953 :term:`TC_CXX_RUNTIME` 8954 Specifies the C/C++ STL and runtime variant to use during 8955 the build process. Default value is 'gnu' 8956 8957 You can select "gnu", "llvm", or "android". 8958 8959 :term:`TEMPLATECONF` 8960 Specifies the directory used by the build system to find templates 8961 from which to build the ``bblayers.conf`` and ``local.conf`` files. 8962 Use this variable if you wish to customize such files, and the default 8963 BitBake targets shown when sourcing the ``oe-init-build-env`` script. 8964 8965 For details, see the 8966 :ref:`dev-manual/custom-template-configuration-directory:creating a custom template configuration directory` 8967 section in the Yocto Project Development Tasks manual. 8968 8969 .. note:: 8970 8971 You must set this variable in the external environment in order 8972 for it to work. 8973 8974 :term:`TEST_EXPORT_DIR` 8975 The location the OpenEmbedded build system uses to export tests when 8976 the :term:`TEST_EXPORT_ONLY` variable is set 8977 to "1". 8978 8979 The :term:`TEST_EXPORT_DIR` variable defaults to 8980 ``"${TMPDIR}/testimage/${PN}"``. 8981 8982 :term:`TEST_EXPORT_ONLY` 8983 Specifies to export the tests only. Set this variable to "1" if you 8984 do not want to run the tests but you want them to be exported in a 8985 manner that you to run them outside of the build system. 8986 8987 :term:`TEST_LOG_DIR` 8988 Holds the SSH log and the boot log for QEMU machines. The 8989 :term:`TEST_LOG_DIR` variable defaults to ``"${WORKDIR}/testimage"``. 8990 8991 .. note:: 8992 8993 Actual test results reside in the task log (``log.do_testimage``), 8994 which is in the ``${WORKDIR}/temp/`` directory. 8995 8996 :term:`TEST_POWERCONTROL_CMD` 8997 For automated hardware testing, specifies the command to use to 8998 control the power of the target machine under test. Typically, this 8999 command would point to a script that performs the appropriate action 9000 (e.g. interacting with a web-enabled power strip). The specified 9001 command should expect to receive as the last argument "off", "on" or 9002 "cycle" specifying to power off, on, or cycle (power off and then 9003 power on) the device, respectively. 9004 9005 :term:`TEST_POWERCONTROL_EXTRA_ARGS` 9006 For automated hardware testing, specifies additional arguments to 9007 pass through to the command specified in 9008 :term:`TEST_POWERCONTROL_CMD`. Setting 9009 :term:`TEST_POWERCONTROL_EXTRA_ARGS` is optional. You can use it if you 9010 wish, for example, to separate the machine-specific and 9011 non-machine-specific parts of the arguments. 9012 9013 :term:`TEST_QEMUBOOT_TIMEOUT` 9014 The time in seconds allowed for an image to boot before automated 9015 runtime tests begin to run against an image. The default timeout 9016 period to allow the boot process to reach the login prompt is 500 9017 seconds. You can specify a different value in the ``local.conf`` 9018 file. 9019 9020 For more information on testing images, see the 9021 ":ref:`dev-manual/runtime-testing:performing automated runtime testing`" 9022 section in the Yocto Project Development Tasks Manual. 9023 9024 :term:`TEST_SERIALCONTROL_CMD` 9025 For automated hardware testing, specifies the command to use to 9026 connect to the serial console of the target machine under test. This 9027 command simply needs to connect to the serial console and forward 9028 that connection to standard input and output as any normal terminal 9029 program does. 9030 9031 For example, to use the Picocom terminal program on serial device 9032 ``/dev/ttyUSB0`` at 115200bps, you would set the variable as follows:: 9033 9034 TEST_SERIALCONTROL_CMD = "picocom /dev/ttyUSB0 -b 115200" 9035 9036 :term:`TEST_SERIALCONTROL_EXTRA_ARGS` 9037 For automated hardware testing, specifies additional arguments to 9038 pass through to the command specified in 9039 :term:`TEST_SERIALCONTROL_CMD`. Setting 9040 :term:`TEST_SERIALCONTROL_EXTRA_ARGS` is optional. You can use it if you 9041 wish, for example, to separate the machine-specific and 9042 non-machine-specific parts of the command. 9043 9044 :term:`TEST_SERVER_IP` 9045 The IP address of the build machine (host machine). This IP address 9046 is usually automatically detected. However, if detection fails, this 9047 variable needs to be set to the IP address of the build machine (i.e. 9048 where the build is taking place). 9049 9050 .. note:: 9051 9052 The :term:`TEST_SERVER_IP` variable is only used for a small number of 9053 tests such as the "dnf" test suite, which needs to download packages 9054 from ``WORKDIR/oe-rootfs-repo``. 9055 9056 :term:`TEST_SUITES` 9057 An ordered list of tests (modules) to run against an image when 9058 performing automated runtime testing. 9059 9060 The OpenEmbedded build system provides a core set of tests that can 9061 be used against images. 9062 9063 .. note:: 9064 9065 Currently, there is only support for running these tests under 9066 QEMU. 9067 9068 Tests include ``ping``, ``ssh``, ``df`` among others. You can add 9069 your own tests to the list of tests by appending :term:`TEST_SUITES` as 9070 follows:: 9071 9072 TEST_SUITES:append = " mytest" 9073 9074 Alternatively, you can 9075 provide the "auto" option to have all applicable tests run against 9076 the image:: 9077 9078 TEST_SUITES:append = " auto" 9079 9080 Using this option causes the 9081 build system to automatically run tests that are applicable to the 9082 image. Tests that are not applicable are skipped. 9083 9084 The order in which tests are run is important. Tests that depend on 9085 another test must appear later in the list than the test on which 9086 they depend. For example, if you append the list of tests with two 9087 tests (``test_A`` and ``test_B``) where ``test_B`` is dependent on 9088 ``test_A``, then you must order the tests as follows:: 9089 9090 TEST_SUITES = "test_A test_B" 9091 9092 For more information on testing images, see the 9093 ":ref:`dev-manual/runtime-testing:performing automated runtime testing`" 9094 section in the Yocto Project Development Tasks Manual. 9095 9096 :term:`TEST_TARGET` 9097 Specifies the target controller to use when running tests against a 9098 test image. The default controller to use is "qemu":: 9099 9100 TEST_TARGET = "qemu" 9101 9102 A target controller is a class that defines how an image gets 9103 deployed on a target and how a target is started. A layer can extend 9104 the controllers by adding a module in the layer's 9105 ``/lib/oeqa/controllers`` directory and by inheriting the 9106 ``BaseTarget`` class, which is an abstract class that cannot be used 9107 as a value of :term:`TEST_TARGET`. 9108 9109 You can provide the following arguments with :term:`TEST_TARGET`: 9110 9111 - *"qemu":* Boots a QEMU image and runs the tests. See the 9112 ":ref:`dev-manual/runtime-testing:enabling runtime tests on qemu`" section 9113 in the Yocto Project Development Tasks Manual for more 9114 information. 9115 9116 - *"simpleremote":* Runs the tests on target hardware that is 9117 already up and running. The hardware can be on the network or it 9118 can be a device running an image on QEMU. You must also set 9119 :term:`TEST_TARGET_IP` when you use 9120 "simpleremote". 9121 9122 .. note:: 9123 9124 This argument is defined in 9125 ``meta/lib/oeqa/controllers/simpleremote.py``. 9126 9127 For information on running tests on hardware, see the 9128 ":ref:`dev-manual/runtime-testing:enabling runtime tests on hardware`" 9129 section in the Yocto Project Development Tasks Manual. 9130 9131 :term:`TEST_TARGET_IP` 9132 The IP address of your hardware under test. The :term:`TEST_TARGET_IP` 9133 variable has no effect when :term:`TEST_TARGET` is 9134 set to "qemu". 9135 9136 When you specify the IP address, you can also include a port. Here is 9137 an example:: 9138 9139 TEST_TARGET_IP = "192.168.1.4:2201" 9140 9141 Specifying a port is 9142 useful when SSH is started on a non-standard port or in cases when 9143 your hardware under test is behind a firewall or network that is not 9144 directly accessible from your host and you need to do port address 9145 translation. 9146 9147 :term:`TESTIMAGE_AUTO` 9148 Automatically runs the series of automated tests for images when an 9149 image is successfully built. Setting :term:`TESTIMAGE_AUTO` to "1" causes 9150 any image that successfully builds to automatically boot under QEMU. 9151 Using the variable also adds in dependencies so that any SDK for 9152 which testing is requested is automatically built first. 9153 9154 These tests are written in Python making use of the ``unittest`` 9155 module, and the majority of them run commands on the target system 9156 over ``ssh``. You can set this variable to "1" in your ``local.conf`` 9157 file in the :term:`Build Directory` to have the 9158 OpenEmbedded build system automatically run these tests after an 9159 image successfully builds: 9160 9161 TESTIMAGE_AUTO = "1" 9162 9163 For more information 9164 on enabling, running, and writing these tests, see the 9165 ":ref:`dev-manual/runtime-testing:performing automated runtime testing`" 9166 section in the Yocto Project Development Tasks Manual and the 9167 ":ref:`ref-classes-testimage`" section. 9168 9169 :term:`THISDIR` 9170 The directory in which the file BitBake is currently parsing is 9171 located. Do not manually set this variable. 9172 9173 :term:`TIME` 9174 The time the build was started. Times appear using the hour, minute, 9175 and second (HMS) format (e.g. "140159" for one minute and fifty-nine 9176 seconds past 1400 hours). 9177 9178 :term:`TMPDIR` 9179 This variable is the base directory the OpenEmbedded build system 9180 uses for all build output and intermediate files (other than the 9181 shared state cache). By default, the :term:`TMPDIR` variable points to 9182 ``tmp`` within the :term:`Build Directory`. 9183 9184 If you want to establish this directory in a location other than the 9185 default, you can uncomment and edit the following statement in the 9186 ``conf/local.conf`` file in the :term:`Source Directory`:: 9187 9188 #TMPDIR = "${TOPDIR}/tmp" 9189 9190 An example use for this scenario is to set :term:`TMPDIR` to a local disk, 9191 which does not use NFS, while having the :term:`Build Directory` use NFS. 9192 9193 The filesystem used by :term:`TMPDIR` must have standard filesystem 9194 semantics (i.e. mixed-case files are unique, POSIX file locking, and 9195 persistent inodes). Due to various issues with NFS and bugs in some 9196 implementations, NFS does not meet this minimum requirement. 9197 Consequently, :term:`TMPDIR` cannot be on NFS. 9198 9199 :term:`TOOLCHAIN_HOST_TASK` 9200 This variable lists packages the OpenEmbedded build system uses when 9201 building an SDK, which contains a cross-development environment. The 9202 packages specified by this variable are part of the toolchain set 9203 that runs on the :term:`SDKMACHINE`, and each 9204 package should usually have the prefix ``nativesdk-``. For example, 9205 consider the following command when building an SDK:: 9206 9207 $ bitbake -c populate_sdk imagename 9208 9209 In this case, a default list of packages is 9210 set in this variable, but you can add additional packages to the 9211 list. See the 9212 ":ref:`sdk-manual/appendix-customizing-standard:adding individual packages to the standard sdk`" section 9213 in the Yocto Project Application Development and the Extensible 9214 Software Development Kit (eSDK) manual for more information. 9215 9216 For background information on cross-development toolchains in the 9217 Yocto Project development environment, see the 9218 ":ref:`sdk-manual/intro:the cross-development toolchain`" 9219 section in the Yocto Project Overview and Concepts Manual. For 9220 information on setting up a cross-development environment, see the 9221 :doc:`/sdk-manual/index` manual. 9222 9223 Note that this variable applies to building an SDK, not an eSDK, 9224 in which case the :term:`TOOLCHAIN_HOST_TASK_ESDK` setting should be 9225 used instead. 9226 9227 :term:`TOOLCHAIN_HOST_TASK_ESDK` 9228 This variable allows to extend what is installed in the host 9229 portion of an eSDK. This is similar to :term:`TOOLCHAIN_HOST_TASK` 9230 applying to SDKs. 9231 9232 :term:`TOOLCHAIN_OPTIONS` 9233 This variable holds extra options passed to the compiler and the linker 9234 for non ``-native`` recipes as they have to point to their custom 9235 ``sysroot`` folder pointed to by :term:`RECIPE_SYSROOT`:: 9236 9237 TOOLCHAIN_OPTIONS = " --sysroot=${RECIPE_SYSROOT}" 9238 9239 Native recipes don't need this variable to be set, as they are 9240 built for the host machine with the native compiler. 9241 9242 :term:`TOOLCHAIN_OUTPUTNAME` 9243 This variable defines the name used for the toolchain output. The 9244 :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class sets 9245 the :term:`TOOLCHAIN_OUTPUTNAME` variable as follows:: 9246 9247 TOOLCHAIN_OUTPUTNAME ?= "${SDK_NAME}-toolchain-${SDK_VERSION}" 9248 9249 See 9250 the :term:`SDK_NAME` and 9251 :term:`SDK_VERSION` variables for additional 9252 information. 9253 9254 :term:`TOOLCHAIN_TARGET_TASK` 9255 This variable lists packages the OpenEmbedded build system uses when 9256 it creates the target part of an SDK (i.e. the part built for the 9257 target hardware), which includes libraries and headers. Use this 9258 variable to add individual packages to the part of the SDK that runs 9259 on the target. See the 9260 ":ref:`sdk-manual/appendix-customizing-standard:adding individual packages to the standard sdk`" section 9261 in the Yocto Project Application Development and the Extensible 9262 Software Development Kit (eSDK) manual for more information. 9263 9264 For background information on cross-development toolchains in the 9265 Yocto Project development environment, see the 9266 ":ref:`sdk-manual/intro:the cross-development toolchain`" 9267 section in the Yocto Project Overview and Concepts Manual. For 9268 information on setting up a cross-development environment, see the 9269 :doc:`/sdk-manual/index` manual. 9270 9271 :term:`TOPDIR` 9272 See :term:`bitbake:TOPDIR` in the BitBake manual. 9273 9274 :term:`TRANSLATED_TARGET_ARCH` 9275 A sanitized version of :term:`TARGET_ARCH`. This 9276 variable is used where the architecture is needed in a value where 9277 underscores are not allowed, for example within package filenames. In 9278 this case, dash characters replace any underscore characters used in 9279 :term:`TARGET_ARCH`. 9280 9281 Do not edit this variable. 9282 9283 :term:`TUNE_ARCH` 9284 The GNU canonical architecture for a specific architecture (i.e. 9285 ``arm``, ``armeb``, ``mips``, ``mips64``, and so forth). BitBake uses 9286 this value to setup configuration. 9287 9288 :term:`TUNE_ARCH` definitions are specific to a given architecture. The 9289 definitions can be a single static definition, or can be dynamically 9290 adjusted. You can see details for a given CPU family by looking at 9291 the architecture's ``README`` file. For example, the 9292 ``meta/conf/machine/include/mips/README`` file in the 9293 :term:`Source Directory` provides information for 9294 :term:`TUNE_ARCH` specific to the ``mips`` architecture. 9295 9296 :term:`TUNE_ARCH` is tied closely to 9297 :term:`TARGET_ARCH`, which defines the target 9298 machine's architecture. The BitBake configuration file 9299 (``meta/conf/bitbake.conf``) sets :term:`TARGET_ARCH` as follows:: 9300 9301 TARGET_ARCH = "${TUNE_ARCH}" 9302 9303 The following list, which is by no means complete since architectures 9304 are configurable, shows supported machine architectures: 9305 9306 - arm 9307 - i586 9308 - x86_64 9309 - powerpc 9310 - powerpc64 9311 - mips 9312 - mipsel 9313 9314 :term:`TUNE_ASARGS` 9315 Specifies architecture-specific assembler flags for the target 9316 system. The set of flags is based on the selected tune features. 9317 :term:`TUNE_ASARGS` is set using the tune include files, which are 9318 typically under ``meta/conf/machine/include/`` and are influenced 9319 through :term:`TUNE_FEATURES`. For example, the 9320 ``meta/conf/machine/include/x86/arch-x86.inc`` file defines the flags 9321 for the x86 architecture as follows:: 9322 9323 TUNE_ASARGS += "${@bb.utils.contains("TUNE_FEATURES", "mx32", "-x32", "", d)}" 9324 9325 .. note:: 9326 9327 Board Support Packages (BSPs) select the tune. The selected tune, 9328 in turn, affects the tune variables themselves (i.e. the tune can 9329 supply its own set of flags). 9330 9331 :term:`TUNE_CCARGS` 9332 Specifies architecture-specific C compiler flags for the target 9333 system. The set of flags is based on the selected tune features. 9334 :term:`TUNE_CCARGS` is set using the tune include files, which are 9335 typically under ``meta/conf/machine/include/`` and are influenced 9336 through :term:`TUNE_FEATURES`. 9337 9338 .. note:: 9339 9340 Board Support Packages (BSPs) select the tune. The selected tune, 9341 in turn, affects the tune variables themselves (i.e. the tune can 9342 supply its own set of flags). 9343 9344 :term:`TUNE_FEATURES` 9345 Features used to "tune" a compiler for optimal use given a specific 9346 processor. The features are defined within the tune files and allow 9347 arguments (i.e. ``TUNE_*ARGS``) to be dynamically generated based on 9348 the features. 9349 9350 The OpenEmbedded build system verifies the features to be sure they 9351 are not conflicting and that they are supported. 9352 9353 The BitBake configuration file (``meta/conf/bitbake.conf``) defines 9354 :term:`TUNE_FEATURES` as follows:: 9355 9356 TUNE_FEATURES ??= "${TUNE_FEATURES:tune-${DEFAULTTUNE}}" 9357 9358 See the :term:`DEFAULTTUNE` variable for more information. 9359 9360 :term:`TUNE_LDARGS` 9361 Specifies architecture-specific linker flags for the target system. 9362 The set of flags is based on the selected tune features. 9363 :term:`TUNE_LDARGS` is set using the tune include files, which are 9364 typically under ``meta/conf/machine/include/`` and are influenced 9365 through :term:`TUNE_FEATURES`. For example, the 9366 ``meta/conf/machine/include/x86/arch-x86.inc`` file defines the flags 9367 for the x86 architecture as follows:: 9368 9369 TUNE_LDARGS += "${@bb.utils.contains("TUNE_FEATURES", "mx32", "-m elf32_x86_64", "", d)}" 9370 9371 .. note:: 9372 9373 Board Support Packages (BSPs) select the tune. The selected tune, 9374 in turn, affects the tune variables themselves (i.e. the tune can 9375 supply its own set of flags). 9376 9377 :term:`TUNE_PKGARCH` 9378 The package architecture understood by the packaging system to define 9379 the architecture, ABI, and tuning of output packages. The specific 9380 tune is defined using the "_tune" override as follows:: 9381 9382 TUNE_PKGARCH:tune-tune = "tune" 9383 9384 These tune-specific package architectures are defined in the machine 9385 include files. Here is an example of the "core2-32" tuning as used in 9386 the ``meta/conf/machine/include/x86/tune-core2.inc`` file:: 9387 9388 TUNE_PKGARCH:tune-core2-32 = "core2-32" 9389 9390 :term:`TUNECONFLICTS[feature]` 9391 Specifies CPU or Application Binary Interface (ABI) tuning features 9392 that conflict with feature. 9393 9394 Known tuning conflicts are specified in the machine include files in 9395 the :term:`Source Directory`. Here is an example from 9396 the ``meta/conf/machine/include/mips/arch-mips.inc`` include file 9397 that lists the "o32" and "n64" features as conflicting with the "n32" 9398 feature:: 9399 9400 TUNECONFLICTS[n32] = "o32 n64" 9401 9402 :term:`TUNEVALID[feature]` 9403 Specifies a valid CPU or Application Binary Interface (ABI) tuning 9404 feature. The specified feature is stored as a flag. Valid features 9405 are specified in the machine include files (e.g. 9406 ``meta/conf/machine/include/arm/arch-arm.inc``). Here is an example 9407 from that file:: 9408 9409 TUNEVALID[bigendian] = "Enable big-endian mode." 9410 9411 See the machine include files in the :term:`Source Directory` 9412 for these features. 9413 9414 :term:`UBOOT_BINARY` 9415 Specifies the name of the binary build by U-Boot. 9416 9417 :term:`UBOOT_CONFIG` 9418 Configures one or more U-Boot configurations to build. Each 9419 configuration can define the :term:`UBOOT_MACHINE` and optionally the 9420 :term:`IMAGE_FSTYPES` and the :term:`UBOOT_BINARY`. 9421 9422 Here is an example from the ``meta-freescale`` layer. :: 9423 9424 UBOOT_CONFIG ??= "sdcard-ifc-secure-boot sdcard-ifc sdcard-qspi lpuart qspi secure-boot nor" 9425 UBOOT_CONFIG[nor] = "ls1021atwr_nor_defconfig" 9426 UBOOT_CONFIG[sdcard-ifc] = "ls1021atwr_sdcard_ifc_defconfig,,u-boot-with-spl-pbl.bin" 9427 UBOOT_CONFIG[sdcard-qspi] = "ls1021atwr_sdcard_qspi_defconfig,,u-boot-with-spl-pbl.bin" 9428 UBOOT_CONFIG[lpuart] = "ls1021atwr_nor_lpuart_defconfig" 9429 UBOOT_CONFIG[qspi] = "ls1021atwr_qspi_defconfig" 9430 UBOOT_CONFIG[secure-boot] = "ls1021atwr_nor_SECURE_BOOT_defconfig" 9431 UBOOT_CONFIG[sdcard-ifc-secure-boot] = "ls1021atwr_sdcard_ifc_SECURE_BOOT_defconfig,,u-boot-with-spl-pbl.bin" 9432 9433 In this example, all possible seven configurations are selected. Each 9434 configuration specifies "..._defconfig" as :term:`UBOOT_MACHINE`, and 9435 the "sd..." configurations define an individual name for 9436 :term:`UBOOT_BINARY`. No configuration defines a second parameter for 9437 :term:`IMAGE_FSTYPES` to use for the U-Boot image. 9438 9439 For more information on how the :term:`UBOOT_CONFIG` is handled, see the 9440 :ref:`ref-classes-uboot-config` class. 9441 9442 :term:`UBOOT_DTB_LOADADDRESS` 9443 Specifies the load address for the dtb image used by U-Boot. During FIT 9444 image creation, the :term:`UBOOT_DTB_LOADADDRESS` variable is used in 9445 :ref:`ref-classes-kernel-fitimage` class to specify the load address to be 9446 used in creating the dtb sections of Image Tree Source for the FIT image. 9447 9448 :term:`UBOOT_DTBO_LOADADDRESS` 9449 Specifies the load address for the dtbo image used by U-Boot. During FIT 9450 image creation, the :term:`UBOOT_DTBO_LOADADDRESS` variable is used in 9451 :ref:`ref-classes-kernel-fitimage` class to specify the load address to be 9452 used in creating the dtbo sections of Image Tree Source for the FIT image. 9453 9454 :term:`UBOOT_ENTRYPOINT` 9455 Specifies the entry point for the U-Boot image. During U-Boot image 9456 creation, the :term:`UBOOT_ENTRYPOINT` variable is passed as a 9457 command-line parameter to the ``uboot-mkimage`` utility. 9458 9459 To pass a 64 bit address for FIT image creation, you will need to set: 9460 - The :term:`FIT_ADDRESS_CELLS` variable for FIT image creation. 9461 - The :term:`UBOOT_FIT_ADDRESS_CELLS` variable for U-Boot FIT image creation. 9462 9463 This variable is used by the :ref:`ref-classes-kernel-fitimage`, 9464 :ref:`ref-classes-kernel-uimage`, :ref:`ref-classes-kernel`, 9465 :ref:`ref-classes-uboot-config` and :ref:`ref-classes-uboot-sign` 9466 classes. 9467 9468 :term:`UBOOT_FIT_ADDRESS_CELLS` 9469 Specifies the value of the ``#address-cells`` value for the 9470 description of the U-Boot FIT image. 9471 9472 The default value is set to "1" by the :ref:`ref-classes-uboot-sign` 9473 class, which corresponds to 32 bit addresses. 9474 9475 For platforms that need to set 64 bit addresses in 9476 :term:`UBOOT_LOADADDRESS` and :term:`UBOOT_ENTRYPOINT`, you need to 9477 set this value to "2", as two 32 bit values (cells) will be needed 9478 to represent such addresses. 9479 9480 Here is an example setting "0x400000000" as a load address:: 9481 9482 UBOOT_FIT_ADDRESS_CELLS = "2" 9483 UBOOT_LOADADDRESS= "0x04 0x00000000" 9484 9485 See `more details about #address-cells <https://elinux.org/Device_Tree_Usage#How_Addressing_Works>`__. 9486 9487 :term:`UBOOT_FIT_DESC` 9488 Specifies the description string encoded into a U-Boot fitImage. The default 9489 value is set by the :ref:`ref-classes-uboot-sign` class as follows:: 9490 9491 UBOOT_FIT_DESC ?= "U-Boot fitImage for ${DISTRO_NAME}/${PV}/${MACHINE}" 9492 9493 :term:`UBOOT_FIT_GENERATE_KEYS` 9494 Decides whether to generate the keys for signing the U-Boot fitImage if 9495 they don't already exist. The keys are created in :term:`SPL_SIGN_KEYDIR`. 9496 The default value is "0". 9497 9498 Enable this as follows:: 9499 9500 UBOOT_FIT_GENERATE_KEYS = "1" 9501 9502 This variable is used in the :ref:`ref-classes-uboot-sign` class. 9503 9504 :term:`UBOOT_FIT_HASH_ALG` 9505 Specifies the hash algorithm used in creating the U-Boot FIT Image. 9506 It is set by default to ``sha256`` by the :ref:`ref-classes-uboot-sign` 9507 class. 9508 9509 :term:`UBOOT_FIT_KEY_GENRSA_ARGS` 9510 Arguments to ``openssl genrsa`` for generating a RSA private key for 9511 signing the U-Boot FIT image. The default value of this variable 9512 is set to "-F4" by the :ref:`ref-classes-uboot-sign` class. 9513 9514 :term:`UBOOT_FIT_KEY_REQ_ARGS` 9515 Arguments to ``openssl req`` for generating a certificate for signing 9516 the U-Boot FIT image. The default value is "-batch -new" by the 9517 :ref:`ref-classes-uboot-sign` class, "batch" for 9518 non interactive mode and "new" for generating new keys. 9519 9520 :term:`UBOOT_FIT_KEY_SIGN_PKCS` 9521 Format for the public key certificate used for signing the U-Boot FIT 9522 image. The default value is set to "x509" by the 9523 :ref:`ref-classes-uboot-sign` class. 9524 9525 :term:`UBOOT_FIT_SIGN_ALG` 9526 Specifies the signature algorithm used in creating the U-Boot FIT Image. 9527 This variable is set by default to "rsa2048" by the 9528 :ref:`ref-classes-uboot-sign` class. 9529 9530 :term:`UBOOT_FIT_SIGN_NUMBITS` 9531 Size of the private key used in signing the U-Boot FIT image, in number 9532 of bits. The default value for this variable is set to "2048" 9533 by the :ref:`ref-classes-uboot-sign` class. 9534 9535 :term:`UBOOT_FITIMAGE_ENABLE` 9536 This variable allows to generate a FIT image for U-Boot, which is one 9537 of the ways to implement a verified boot process. 9538 9539 Its default value is "0", so set it to "1" to enable this functionality:: 9540 9541 UBOOT_FITIMAGE_ENABLE = "1" 9542 9543 See the :ref:`ref-classes-uboot-sign` class for details. 9544 9545 :term:`UBOOT_LOADADDRESS` 9546 Specifies the load address for the U-Boot image. During U-Boot image 9547 creation, the :term:`UBOOT_LOADADDRESS` variable is passed as a 9548 command-line parameter to the ``uboot-mkimage`` utility. 9549 9550 To pass a 64 bit address, you will also need to set: 9551 9552 - The :term:`FIT_ADDRESS_CELLS` variable for FIT image creation. 9553 - The :term:`UBOOT_FIT_ADDRESS_CELLS` variable for U-Boot FIT image creation. 9554 9555 This variable is used by the :ref:`ref-classes-kernel-fitimage`, 9556 :ref:`ref-classes-kernel-uimage`, :ref:`ref-classes-kernel`, 9557 :ref:`ref-classes-uboot-config` and :ref:`ref-classes-uboot-sign` 9558 classes. 9559 9560 :term:`UBOOT_LOCALVERSION` 9561 Appends a string to the name of the local version of the U-Boot 9562 image. For example, assuming the version of the U-Boot image built 9563 was "2013.10", the full version string reported by U-Boot would be 9564 "2013.10-yocto" given the following statement:: 9565 9566 UBOOT_LOCALVERSION = "-yocto" 9567 9568 :term:`UBOOT_MACHINE` 9569 Specifies the value passed on the ``make`` command line when building 9570 a U-Boot image. The value indicates the target platform 9571 configuration. You typically set this variable from the machine 9572 configuration file (i.e. ``conf/machine/machine_name.conf``). 9573 9574 Please see the "Selection of Processor Architecture and Board Type" 9575 section in the U-Boot README for valid values for this variable. 9576 9577 :term:`UBOOT_MAKE_TARGET` 9578 Specifies the target called in the ``Makefile``. The default target 9579 is "all". 9580 9581 :term:`UBOOT_MKIMAGE` 9582 Specifies the name of the mkimage command as used by the 9583 :ref:`ref-classes-kernel-fitimage` class to assemble 9584 the FIT image. This can be used to substitute an alternative command, wrapper 9585 script or function if desired. The default is "uboot-mkimage". 9586 9587 :term:`UBOOT_MKIMAGE_DTCOPTS` 9588 Options for the device tree compiler passed to ``mkimage -D`` feature 9589 while creating a FIT image with the :ref:`ref-classes-kernel-fitimage` 9590 class. If :term:`UBOOT_MKIMAGE_DTCOPTS` is not set then the 9591 :ref:`ref-classes-kernel-fitimage` class will not pass the ``-D`` option 9592 to ``mkimage``. 9593 9594 This variable is also used by the :ref:`ref-classes-uboot-sign` class. 9595 9596 :term:`UBOOT_MKIMAGE_KERNEL_TYPE` 9597 Specifies the type argument for the kernel as passed to ``uboot-mkimage``. 9598 The default value is "kernel". 9599 9600 :term:`UBOOT_MKIMAGE_SIGN` 9601 Specifies the name of the mkimage command as used by the 9602 :ref:`ref-classes-kernel-fitimage` class to sign 9603 the FIT image after it has been assembled (if enabled). This can be used 9604 to substitute an alternative command, wrapper script or function if 9605 desired. The default is "${:term:`UBOOT_MKIMAGE`}". 9606 9607 :term:`UBOOT_MKIMAGE_SIGN_ARGS` 9608 Optionally specifies additional arguments for the 9609 :ref:`ref-classes-kernel-fitimage` class to pass to the 9610 mkimage command when signing the FIT image. 9611 9612 :term:`UBOOT_RD_ENTRYPOINT` 9613 Specifies the entrypoint for the RAM disk image. During FIT image 9614 creation, the :term:`UBOOT_RD_ENTRYPOINT` variable is used in 9615 :ref:`ref-classes-kernel-fitimage` class to specify the entrypoint to be 9616 used in creating the Image Tree Source for the FIT image. 9617 9618 :term:`UBOOT_RD_LOADADDRESS` 9619 Specifies the load address for the RAM disk image. During FIT image 9620 creation, the :term:`UBOOT_RD_LOADADDRESS` variable is used in 9621 :ref:`ref-classes-kernel-fitimage` class to specify the load address to 9622 be used in creating the Image Tree Source for the FIT image. 9623 9624 :term:`UBOOT_SIGN_ENABLE` 9625 Enable signing of FIT image. The default value is "0". 9626 9627 This variable is used by the :ref:`ref-classes-kernel-fitimage`, 9628 :ref:`ref-classes-uboot-config` and :ref:`ref-classes-uboot-sign` 9629 classes. 9630 9631 :term:`UBOOT_SIGN_KEYDIR` 9632 Location of the directory containing the RSA key and certificate used for 9633 signing FIT image, used by the :ref:`ref-classes-kernel-fitimage` and 9634 :ref:`ref-classes-uboot-sign` classes. 9635 9636 :term:`UBOOT_SIGN_KEYNAME` 9637 The name of keys used by the :ref:`ref-classes-kernel-fitimage` class 9638 for signing U-Boot FIT image stored in the :term:`UBOOT_SIGN_KEYDIR` 9639 directory. If we have for example a ``dev.key`` key and a ``dev.crt`` 9640 certificate stored in the :term:`UBOOT_SIGN_KEYDIR` directory, you will 9641 have to set :term:`UBOOT_SIGN_KEYNAME` to ``dev``. 9642 9643 :term:`UBOOT_SUFFIX` 9644 Points to the generated U-Boot extension. For example, ``u-boot.sb`` 9645 has a ``.sb`` extension. 9646 9647 The default U-Boot extension is ``.bin`` 9648 9649 :term:`UBOOT_TARGET` 9650 Specifies the target used for building U-Boot. The target is passed 9651 directly as part of the "make" command (e.g. SPL and AIS). If you do 9652 not specifically set this variable, the OpenEmbedded build process 9653 passes and uses "all" for the target during the U-Boot building 9654 process. 9655 9656 :term:`UNKNOWN_CONFIGURE_OPT_IGNORE` 9657 Specifies a list of options that, if reported by the configure script 9658 as being invalid, should not generate a warning during the 9659 :ref:`ref-tasks-configure` task. Normally, invalid 9660 configure options are simply not passed to the configure script (e.g. 9661 should be removed from :term:`EXTRA_OECONF` or 9662 :term:`PACKAGECONFIG_CONFARGS`). 9663 However, there are common options that are passed to all 9664 configure scripts at a class level, but might not be valid for some 9665 configure scripts. Therefore warnings about these options are useless. 9666 For these cases, the options are added to :term:`UNKNOWN_CONFIGURE_OPT_IGNORE`. 9667 9668 The configure arguments check that uses 9669 :term:`UNKNOWN_CONFIGURE_OPT_IGNORE` is part of the 9670 :ref:`ref-classes-insane` class and is only enabled if the 9671 recipe inherits the :ref:`ref-classes-autotools` class. 9672 9673 :term:`UPDATERCPN` 9674 For recipes inheriting the 9675 :ref:`ref-classes-update-rc.d` class, :term:`UPDATERCPN` 9676 specifies the package that contains the initscript that is enabled. 9677 9678 The default value is "${PN}". Given that almost all recipes that 9679 install initscripts package them in the main package for the recipe, 9680 you rarely need to set this variable in individual recipes. 9681 9682 :term:`UPSTREAM_CHECK_COMMITS` 9683 You can perform a per-recipe check for what the latest upstream 9684 source code version is by calling ``devtool latest-version recipe``. If 9685 the recipe source code is provided from Git repositories, but 9686 releases are not identified by Git tags, set :term:`UPSTREAM_CHECK_COMMITS` 9687 to ``1`` in the recipe, and the OpenEmbedded build system 9688 will compare the latest commit with the one currently specified 9689 by the recipe (:term:`SRCREV`):: 9690 9691 UPSTREAM_CHECK_COMMITS = "1" 9692 9693 :term:`UPSTREAM_CHECK_GITTAGREGEX` 9694 You can perform a per-recipe check for what the latest upstream 9695 source code version is by calling ``devtool latest-version recipe``. If 9696 the recipe source code is provided from Git repositories, the 9697 OpenEmbedded build system determines the latest upstream version by 9698 picking the latest tag from the list of all repository tags. 9699 9700 You can use the :term:`UPSTREAM_CHECK_GITTAGREGEX` variable to provide a 9701 regular expression to filter only the relevant tags should the 9702 default filter not work correctly:: 9703 9704 UPSTREAM_CHECK_GITTAGREGEX = "git_tag_regex" 9705 9706 :term:`UPSTREAM_CHECK_REGEX` 9707 Use the :term:`UPSTREAM_CHECK_REGEX` variable to specify a different 9708 regular expression instead of the default one when the package 9709 checking system is parsing the page found using 9710 :term:`UPSTREAM_CHECK_URI`:: 9711 9712 UPSTREAM_CHECK_REGEX = "package_regex" 9713 9714 :term:`UPSTREAM_CHECK_URI` 9715 You can perform a per-recipe check for what the latest upstream 9716 source code version is by calling ``devtool latest-version recipe``. If 9717 the source code is provided from tarballs, the latest version is 9718 determined by fetching the directory listing where the tarball is and 9719 attempting to find a later tarball. When this approach does not work, 9720 you can use :term:`UPSTREAM_CHECK_URI` to provide a different URI that 9721 contains the link to the latest tarball:: 9722 9723 UPSTREAM_CHECK_URI = "recipe_url" 9724 9725 :term:`UPSTREAM_VERSION_UNKNOWN` 9726 You can perform a per-recipe check for what the latest upstream 9727 source code version is by calling ``devtool latest-version recipe``. 9728 If no combination of the :term:`UPSTREAM_CHECK_URI`, :term:`UPSTREAM_CHECK_REGEX`, 9729 :term:`UPSTREAM_CHECK_GITTAGREGEX` and :term:`UPSTREAM_CHECK_COMMITS` variables in 9730 the recipe allows to determine what the latest upstream version is, 9731 you can set :term:`UPSTREAM_VERSION_UNKNOWN` to ``1`` in the recipe 9732 to acknowledge that the check cannot be performed:: 9733 9734 UPSTREAM_VERSION_UNKNOWN = "1" 9735 9736 :term:`USE_DEVFS` 9737 Determines if ``devtmpfs`` is used for ``/dev`` population. The 9738 default value used for :term:`USE_DEVFS` is "1" when no value is 9739 specifically set. Typically, you would set :term:`USE_DEVFS` to "0" for a 9740 statically populated ``/dev`` directory. 9741 9742 See the ":ref:`dev-manual/device-manager:selecting a device manager`" section in 9743 the Yocto Project Development Tasks Manual for information on how to 9744 use this variable. 9745 9746 :term:`USE_VT` 9747 When using 9748 :ref:`SysVinit <dev-manual/new-recipe:enabling system services>`, 9749 determines whether or not to run a :wikipedia:`getty <Getty_(Unix)>` 9750 on any virtual terminals in order to enable logging in through those 9751 terminals. 9752 9753 The default value used for :term:`USE_VT` is "1" when no default value is 9754 specifically set. Typically, you would set :term:`USE_VT` to "0" in the 9755 machine configuration file for machines that do not have a graphical 9756 display attached and therefore do not need virtual terminal 9757 functionality. 9758 9759 :term:`USER_CLASSES` 9760 A list of classes to globally inherit. These classes are used by the 9761 OpenEmbedded build system to enable extra features. 9762 9763 Classes inherited using :term:`USER_CLASSES` must be located in the 9764 ``classes-global/`` or ``classes/`` subdirectories. 9765 9766 The default list is set in your ``local.conf`` file:: 9767 9768 USER_CLASSES ?= "buildstats" 9769 9770 For more information, see 9771 ``meta-poky/conf/templates/default/local.conf.sample`` in the 9772 :term:`Source Directory`. 9773 9774 :term:`USERADD_ERROR_DYNAMIC` 9775 If set to ``error``, forces the OpenEmbedded build system to produce 9776 an error if the user identification (``uid``) and group 9777 identification (``gid``) values are not defined in any of the files 9778 listed in :term:`USERADD_UID_TABLES` and 9779 :term:`USERADD_GID_TABLES`. If set to 9780 ``warn``, a warning will be issued instead. 9781 9782 The default behavior for the build system is to dynamically apply 9783 ``uid`` and ``gid`` values. Consequently, the 9784 :term:`USERADD_ERROR_DYNAMIC` variable is by default not set. If you plan 9785 on using statically assigned ``gid`` and ``uid`` values, you should 9786 set the :term:`USERADD_ERROR_DYNAMIC` variable in your ``local.conf`` 9787 file as follows:: 9788 9789 USERADD_ERROR_DYNAMIC = "error" 9790 9791 Overriding the 9792 default behavior implies you are going to also take steps to set 9793 static ``uid`` and ``gid`` values through use of the 9794 :term:`USERADDEXTENSION`, 9795 :term:`USERADD_UID_TABLES`, and 9796 :term:`USERADD_GID_TABLES` variables. 9797 9798 .. note:: 9799 9800 There is a difference in behavior between setting 9801 :term:`USERADD_ERROR_DYNAMIC` to ``error`` and setting it to ``warn``. 9802 When it is set to ``warn``, the build system will report a warning for 9803 every undefined ``uid`` and ``gid`` in any recipe. But when it is set 9804 to ``error``, it will only report errors for recipes that are actually 9805 built. 9806 This saves you from having to add static IDs for recipes that you 9807 know will never be built. 9808 9809 :term:`USERADD_GID_TABLES` 9810 Specifies a password file to use for obtaining static group 9811 identification (``gid``) values when the OpenEmbedded build system 9812 adds a group to the system during package installation. 9813 9814 When applying static group identification (``gid``) values, the 9815 OpenEmbedded build system looks in :term:`BBPATH` for a 9816 ``files/group`` file and then applies those ``uid`` values. Set the 9817 variable as follows in your ``local.conf`` file:: 9818 9819 9820 USERADD_GID_TABLES = "files/group" 9821 9822 .. note:: 9823 9824 Setting the :term:`USERADDEXTENSION` variable to "useradd-staticids" 9825 causes the build system to use static ``gid`` values. 9826 9827 :term:`USERADD_PACKAGES` 9828 When inheriting the :ref:`ref-classes-useradd` class, 9829 this variable specifies the individual packages within the recipe 9830 that require users and/or groups to be added. 9831 9832 You must set this variable if the recipe inherits the class. For 9833 example, the following enables adding a user for the main package in 9834 a recipe:: 9835 9836 USERADD_PACKAGES = "${PN}" 9837 9838 .. note:: 9839 9840 It follows that if you are going to use the :term:`USERADD_PACKAGES` 9841 variable, you need to set one or more of the :term:`USERADD_PARAM`, 9842 :term:`GROUPADD_PARAM`, or :term:`GROUPMEMS_PARAM` variables. 9843 9844 :term:`USERADD_PARAM` 9845 When inheriting the :ref:`ref-classes-useradd` class, 9846 this variable specifies for a package what parameters should pass to 9847 the ``useradd`` command if you add a user to the system when the 9848 package is installed. 9849 9850 Here is an example from the ``dbus`` recipe:: 9851 9852 USERADD_PARAM:${PN} = "--system --home ${localstatedir}/lib/dbus \ 9853 --no-create-home --shell /bin/false \ 9854 --user-group messagebus" 9855 9856 For information on the 9857 standard Linux shell command ``useradd``, see 9858 https://linux.die.net/man/8/useradd. 9859 9860 :term:`USERADD_UID_TABLES` 9861 Specifies a password file to use for obtaining static user 9862 identification (``uid``) values when the OpenEmbedded build system 9863 adds a user to the system during package installation. 9864 9865 When applying static user identification (``uid``) values, the 9866 OpenEmbedded build system looks in :term:`BBPATH` for a 9867 ``files/passwd`` file and then applies those ``uid`` values. Set the 9868 variable as follows in your ``local.conf`` file:: 9869 9870 USERADD_UID_TABLES = "files/passwd" 9871 9872 .. note:: 9873 9874 Setting the :term:`USERADDEXTENSION` variable to "useradd-staticids" 9875 causes the build system to use static ``uid`` values. 9876 9877 :term:`USERADDEXTENSION` 9878 When set to "useradd-staticids", causes the OpenEmbedded build system 9879 to base all user and group additions on a static ``passwd`` and 9880 ``group`` files found in :term:`BBPATH`. 9881 9882 To use static user identification (``uid``) and group identification 9883 (``gid``) values, set the variable as follows in your ``local.conf`` 9884 file: USERADDEXTENSION = "useradd-staticids" 9885 9886 .. note:: 9887 9888 Setting this variable to use static ``uid`` and ``gid`` 9889 values causes the OpenEmbedded build system to employ the 9890 :ref:`ref-classes-useradd` class. 9891 9892 If you use static ``uid`` and ``gid`` information, you must also 9893 specify the ``files/passwd`` and ``files/group`` files by setting the 9894 :term:`USERADD_UID_TABLES` and 9895 :term:`USERADD_GID_TABLES` variables. 9896 Additionally, you should also set the 9897 :term:`USERADD_ERROR_DYNAMIC` variable. 9898 9899 :term:`VIRTUAL-RUNTIME` 9900 :term:`VIRTUAL-RUNTIME` is a commonly used prefix for defining virtual 9901 packages for runtime usage, typically for use in :term:`RDEPENDS` 9902 or in image definitions. 9903 9904 An example is ``VIRTUAL-RUNTIME_base-utils`` that makes it possible 9905 to either use BusyBox based utilities:: 9906 9907 VIRTUAL-RUNTIME_base-utils = "busybox" 9908 9909 or their full featured implementations from GNU Coreutils 9910 and other projects:: 9911 9912 VIRTUAL-RUNTIME_base-utils = "packagegroup-core-base-utils" 9913 9914 Here are two examples using this virtual runtime package. The 9915 first one is in :yocto_git:`initramfs-framework_1.0.bb 9916 </poky/tree/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb?h=scarthgap>`:: 9917 9918 RDEPENDS:${PN} += "${VIRTUAL-RUNTIME_base-utils}" 9919 9920 The second example is in the :yocto_git:`core-image-initramfs-boot 9921 </poky/tree/meta/recipes-core/images/core-image-initramfs-boot.bb?h=scarthgap>` 9922 image definition:: 9923 9924 PACKAGE_INSTALL = "${INITRAMFS_SCRIPTS} ${VIRTUAL-RUNTIME_base-utils} base-passwd" 9925 9926 :term:`VOLATILE_LOG_DIR` 9927 Specifies the persistence of the target's ``/var/log`` directory, 9928 which is used to house postinstall target log files. 9929 9930 By default, :term:`VOLATILE_LOG_DIR` is set to "yes", which means the 9931 file is not persistent. You can override this setting by setting the 9932 variable to "no" to make the log directory persistent. 9933 9934 :term:`VOLATILE_TMP_DIR` 9935 Specifies the persistence of the target's ``/tmp`` directory. 9936 9937 By default, :term:`VOLATILE_TMP_DIR` is set to "yes", in which case 9938 ``/tmp`` links to a directory which resides in RAM in a ``tmpfs`` 9939 filesystem. 9940 9941 If instead, you want the ``/tmp`` directory to be persistent, set the 9942 variable to "no" to make it a regular directory in the root filesystem. 9943 9944 This supports both sysvinit and systemd based systems. 9945 9946 :term:`WARN_QA` 9947 Specifies the quality assurance checks whose failures are reported as 9948 warnings by the OpenEmbedded build system. You set this variable in 9949 your distribution configuration file. For a list of the checks you 9950 can control with this variable, see the 9951 ":ref:`ref-classes-insane`" section. 9952 9953 :term:`WATCHDOG_TIMEOUT` 9954 Specifies the timeout in seconds used by the ``watchdog`` recipe and 9955 also by ``systemd`` during reboot. The default is 60 seconds. 9956 9957 :term:`WIRELESS_DAEMON` 9958 For ``connman`` and ``packagegroup-base``, specifies the wireless 9959 daemon to use. The default is "wpa-supplicant" (note that the value 9960 uses a dash and not an underscore). 9961 9962 :term:`WKS_FILE` 9963 Specifies the location of the Wic kickstart file that is used by the 9964 OpenEmbedded build system to create a partitioned image 9965 (``image.wic``). For information on how to create a partitioned 9966 image, see the 9967 ":ref:`dev-manual/wic:creating partitioned images using wic`" 9968 section in the Yocto Project Development Tasks Manual. For details on 9969 the kickstart file format, see the ":doc:`/ref-manual/kickstart`" Chapter. 9970 9971 :term:`WKS_FILE_DEPENDS` 9972 When placed in the recipe that builds your image, this variable lists 9973 build-time dependencies. The :term:`WKS_FILE_DEPENDS` variable is only 9974 applicable when Wic images are active (i.e. when 9975 :term:`IMAGE_FSTYPES` contains entries related 9976 to Wic). If your recipe does not create Wic images, the variable has 9977 no effect. 9978 9979 The :term:`WKS_FILE_DEPENDS` variable is similar to the 9980 :term:`DEPENDS` variable. When you use the variable in 9981 your recipe that builds the Wic image, dependencies you list in the 9982 :term:`WKS_FILE_DEPENDS` variable are added to the :term:`DEPENDS` variable. 9983 9984 With the :term:`WKS_FILE_DEPENDS` variable, you have the possibility to 9985 specify a list of additional dependencies (e.g. native tools, 9986 bootloaders, and so forth), that are required to build Wic images. 9987 Here is an example:: 9988 9989 WKS_FILE_DEPENDS = "some-native-tool" 9990 9991 In the 9992 previous example, some-native-tool would be replaced with an actual 9993 native tool on which the build would depend. 9994 9995 :term:`WKS_FILES` 9996 Specifies a list of candidate Wic kickstart files to be used by the 9997 OpenEmbedded build system to create a partitioned image. Only the 9998 first one that is found, from left to right, will be used. 9999 10000 This is only useful when there are multiple ``.wks`` files that can be 10001 used to produce an image. A typical case is when multiple layers are 10002 used for different hardware platforms, each supplying a different 10003 ``.wks`` file. In this case, you specify all possible ones through 10004 :term:`WKS_FILES`. 10005 10006 If only one ``.wks`` file is used, set :term:`WKS_FILE` instead. 10007 10008 :term:`WORKDIR` 10009 The pathname of the work directory in which the OpenEmbedded build 10010 system builds a recipe. This directory is located within the 10011 :term:`TMPDIR` directory structure and is specific to 10012 the recipe being built and the system for which it is being built. 10013 10014 The :term:`WORKDIR` directory is defined as follows:: 10015 10016 ${TMPDIR}/work/${MULTIMACH_TARGET_SYS}/${PN}/${EXTENDPE}${PV}-${PR} 10017 10018 The actual directory depends on several things: 10019 10020 - :term:`TMPDIR`: The top-level build output directory 10021 - :term:`MULTIMACH_TARGET_SYS`: The target system identifier 10022 - :term:`PN`: The recipe name 10023 - :term:`EXTENDPE`: The epoch --- if :term:`PE` is not specified, which 10024 is usually the case for most recipes, then :term:`EXTENDPE` is blank. 10025 - :term:`PV`: The recipe version 10026 - :term:`PR`: The recipe revision 10027 10028 As an example, assume a Source Directory top-level folder name 10029 ``poky``, a default :term:`Build Directory` at ``poky/build``, and a 10030 ``qemux86-poky-linux`` machine target system. Furthermore, suppose 10031 your recipe is named ``foo_1.3.0-r0.bb``. In this case, the work 10032 directory the build system uses to build the package would be as 10033 follows:: 10034 10035 poky/build/tmp/work/qemux86-poky-linux/foo/1.3.0-r0 10036 10037 :term:`XSERVER` 10038 Specifies the packages that should be installed to provide an X 10039 server and drivers for the current machine, assuming your image 10040 directly includes ``packagegroup-core-x11-xserver`` or, perhaps 10041 indirectly, includes "x11-base" in 10042 :term:`IMAGE_FEATURES`. 10043 10044 The default value of :term:`XSERVER`, if not specified in the machine 10045 configuration, is "xserver-xorg xf86-video-fbdev xf86-input-evdev". 10046 10047 :term:`XZ_THREADS` 10048 Specifies the number of parallel threads that should be used when 10049 using xz compression. 10050 10051 By default this scales with core count, but is never set less than 2 10052 to ensure that multi-threaded mode is always used so that the output 10053 file contents are deterministic. Builds will work with a value of 1 10054 but the output will differ compared to the output from the compression 10055 generated when more than one thread is used. 10056 10057 On systems where many tasks run in parallel, setting a limit to this 10058 can be helpful in controlling system resource usage. 10059 10060 :term:`XZ_MEMLIMIT` 10061 Specifies the maximum memory the xz compression should use as a percentage 10062 of system memory. If unconstrained the xz compressor can use large amounts of 10063 memory and become problematic with parallelism elsewhere in the build. 10064 "50%" has been found to be a good value. 10065 10066 :term:`ZSTD_THREADS` 10067 Specifies the number of parallel threads that should be used when 10068 using ZStandard compression. 10069 10070 By default this scales with core count, but is never set less than 2 10071 to ensure that multi-threaded mode is always used so that the output 10072 file contents are deterministic. Builds will work with a value of 1 10073 but the output will differ compared to the output from the compression 10074 generated when more than one thread is used. 10075 10076 On systems where many tasks run in parallel, setting a limit to this 10077 can be helpful in controlling system resource usage. 10078