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