1.. SPDX-License-Identifier: CC-BY-2.5 2 3================== 4Variables Glossary 5================== 6 7| 8 9This chapter lists common variables used by BitBake and gives an 10overview of their function and contents. 11 12.. note:: 13 14 Following are some points regarding the variables listed in this 15 glossary: 16 17 - The variables listed in this glossary are specific to BitBake. 18 Consequently, the descriptions are limited to that context. 19 20 - Also, variables exist in other systems that use BitBake (e.g. The 21 Yocto Project and OpenEmbedded) that have names identical to those 22 found in this glossary. For such cases, the variables in those 23 systems extend the functionality of the variable as it is 24 described here in this glossary. 25 26.. glossary:: 27 :sorted: 28 29 :term:`ASSUME_PROVIDED` 30 Lists recipe names (:term:`PN` values) BitBake does not 31 attempt to build. Instead, BitBake assumes these recipes have already 32 been built. 33 34 In OpenEmbedded-Core, :term:`ASSUME_PROVIDED` mostly specifies native 35 tools that should not be built. An example is ``git-native``, which 36 when specified allows for the Git binary from the host to be used 37 rather than building ``git-native``. 38 39 :term:`AZ_SAS` 40 Azure Storage Shared Access Signature, when using the 41 :ref:`Azure Storage fetcher <bitbake-user-manual/bitbake-user-manual-fetching:fetchers>` 42 This variable can be defined to be used by the fetcher to authenticate 43 and gain access to non-public artifacts:: 44 45 AZ_SAS = ""se=2021-01-01&sp=r&sv=2018-11-09&sr=c&skoid=<skoid>&sig=<signature>"" 46 47 For more information see Microsoft's Azure Storage documentation at 48 https://docs.microsoft.com/en-us/azure/storage/common/storage-sas-overview 49 50 51 :term:`B` 52 The directory in which BitBake executes functions during a recipe's 53 build process. 54 55 :term:`BB_ALLOWED_NETWORKS` 56 Specifies a space-delimited list of hosts that the fetcher is allowed 57 to use to obtain the required source code. Following are 58 considerations surrounding this variable: 59 60 - This host list is only used if 61 :term:`BB_NO_NETWORK` is either not set or 62 set to "0". 63 64 - Limited support for the "``*``" wildcard character for matching 65 against the beginning of host names exists. For example, the 66 following setting matches ``git.gnu.org``, ``ftp.gnu.org``, and 67 ``foo.git.gnu.org``. :: 68 69 BB_ALLOWED_NETWORKS = "\*.gnu.org" 70 71 .. important:: 72 73 The use of the "``*``" character only works at the beginning of 74 a host name and it must be isolated from the remainder of the 75 host name. You cannot use the wildcard character in any other 76 location of the name or combined with the front part of the 77 name. 78 79 For example, ``*.foo.bar`` is supported, while ``*aa.foo.bar`` 80 is not. 81 82 - Mirrors not in the host list are skipped and logged in debug. 83 84 - Attempts to access networks not in the host list cause a failure. 85 86 Using :term:`BB_ALLOWED_NETWORKS` in conjunction with 87 :term:`PREMIRRORS` is very useful. Adding the 88 host you want to use to :term:`PREMIRRORS` results in the source code 89 being fetched from an allowed location and avoids raising an error 90 when a host that is not allowed is in a 91 :term:`SRC_URI` statement. This is because the 92 fetcher does not attempt to use the host listed in :term:`SRC_URI` after 93 a successful fetch from the :term:`PREMIRRORS` occurs. 94 95 :term:`BB_BASEHASH_IGNORE_VARS` 96 Lists variables that are excluded from checksum and dependency data. 97 Variables that are excluded can therefore change without affecting 98 the checksum mechanism. A common example would be the variable for 99 the path of the build. BitBake's output should not (and usually does 100 not) depend on the directory in which it was built. 101 102 :term:`BB_CACHEDIR` 103 Specifies the code parser cache directory (distinct from :term:`CACHE` 104 and :term:`PERSISTENT_DIR` although they can be set to the same value 105 if desired). The default value is "${TOPDIR}/cache". 106 107 :term:`BB_CHECK_SSL_CERTS` 108 Specifies if SSL certificates should be checked when fetching. The default 109 value is ``1`` and certificates are not checked if the value is set to ``0``. 110 111 :term:`BB_HASH_CODEPARSER_VALS` 112 Specifies values for variables to use when populating the codeparser cache. 113 This can be used selectively to set dummy values for variables to avoid 114 the codeparser cache growing on every parse. Variables that would typically 115 be included are those where the value is not significant for where the 116 codeparser cache is used (i.e. when calculating variable dependencies for 117 code fragments.) The value is space-separated without quoting values, for 118 example:: 119 120 BB_HASH_CODEPARSER_VALS = "T=/ WORKDIR=/ DATE=1234 TIME=1234" 121 122 :term:`BB_CONSOLELOG` 123 Specifies the path to a log file into which BitBake's user interface 124 writes output during the build. 125 126 :term:`BB_CURRENTTASK` 127 Contains the name of the currently running task. The name does not 128 include the ``do_`` prefix. 129 130 :term:`BB_DEFAULT_TASK` 131 The default task to use when none is specified (e.g. with the ``-c`` 132 command line option). The task name specified should not include the 133 ``do_`` prefix. 134 135 :term:`BB_DEFAULT_UMASK` 136 The default umask to apply to tasks if specified and no task specific 137 umask flag is set. 138 139 :term:`BB_DISKMON_DIRS` 140 Monitors disk space and available inodes during the build and allows 141 you to control the build based on these parameters. 142 143 Disk space monitoring is disabled by default. When setting this 144 variable, use the following form:: 145 146 BB_DISKMON_DIRS = "<action>,<dir>,<threshold> [...]" 147 148 where: 149 150 <action> is: 151 HALT: Immediately halt the build when 152 a threshold is broken. 153 STOPTASKS: Stop the build after the currently 154 executing tasks have finished when 155 a threshold is broken. 156 WARN: Issue a warning but continue the 157 build when a threshold is broken. 158 Subsequent warnings are issued as 159 defined by the 160 BB_DISKMON_WARNINTERVAL variable, 161 which must be defined. 162 163 <dir> is: 164 Any directory you choose. You can specify one or 165 more directories to monitor by separating the 166 groupings with a space. If two directories are 167 on the same device, only the first directory 168 is monitored. 169 170 <threshold> is: 171 Either the minimum available disk space, 172 the minimum number of free inodes, or 173 both. You must specify at least one. To 174 omit one or the other, simply omit the value. 175 Specify the threshold using G, M, K for Gbytes, 176 Mbytes, and Kbytes, respectively. If you do 177 not specify G, M, or K, Kbytes is assumed by 178 default. Do not use GB, MB, or KB. 179 180 Here are some examples:: 181 182 BB_DISKMON_DIRS = "HALT,${TMPDIR},1G,100K WARN,${SSTATE_DIR},1G,100K" 183 BB_DISKMON_DIRS = "STOPTASKS,${TMPDIR},1G" 184 BB_DISKMON_DIRS = "HALT,${TMPDIR},,100K" 185 186 The first example works only if you also set the 187 :term:`BB_DISKMON_WARNINTERVAL` 188 variable. This example causes the build system to immediately halt 189 when either the disk space in ``${TMPDIR}`` drops below 1 Gbyte or 190 the available free inodes drops below 100 Kbytes. Because two 191 directories are provided with the variable, the build system also 192 issues a warning when the disk space in the ``${SSTATE_DIR}`` 193 directory drops below 1 Gbyte or the number of free inodes drops 194 below 100 Kbytes. Subsequent warnings are issued during intervals as 195 defined by the :term:`BB_DISKMON_WARNINTERVAL` variable. 196 197 The second example stops the build after all currently executing 198 tasks complete when the minimum disk space in the ``${TMPDIR}`` 199 directory drops below 1 Gbyte. No disk monitoring occurs for the free 200 inodes in this case. 201 202 The final example immediately halts the build when the number of 203 free inodes in the ``${TMPDIR}`` directory drops below 100 Kbytes. No 204 disk space monitoring for the directory itself occurs in this case. 205 206 :term:`BB_DISKMON_WARNINTERVAL` 207 Defines the disk space and free inode warning intervals. 208 209 If you are going to use the :term:`BB_DISKMON_WARNINTERVAL` variable, you 210 must also use the :term:`BB_DISKMON_DIRS` 211 variable and define its action as "WARN". During the build, 212 subsequent warnings are issued each time disk space or number of free 213 inodes further reduces by the respective interval. 214 215 If you do not provide a :term:`BB_DISKMON_WARNINTERVAL` variable and you 216 do use :term:`BB_DISKMON_DIRS` with the "WARN" action, the disk 217 monitoring interval defaults to the following: 218 BB_DISKMON_WARNINTERVAL = "50M,5K" 219 220 When specifying the variable in your configuration file, use the 221 following form:: 222 223 BB_DISKMON_WARNINTERVAL = "<disk_space_interval>,<disk_inode_interval>" 224 225 where: 226 227 <disk_space_interval> is: 228 An interval of memory expressed in either 229 G, M, or K for Gbytes, Mbytes, or Kbytes, 230 respectively. You cannot use GB, MB, or KB. 231 232 <disk_inode_interval> is: 233 An interval of free inodes expressed in either 234 G, M, or K for Gbytes, Mbytes, or Kbytes, 235 respectively. You cannot use GB, MB, or KB. 236 237 Here is an example:: 238 239 BB_DISKMON_DIRS = "WARN,${SSTATE_DIR},1G,100K" 240 BB_DISKMON_WARNINTERVAL = "50M,5K" 241 242 These variables cause BitBake to 243 issue subsequent warnings each time the available disk space further 244 reduces by 50 Mbytes or the number of free inodes further reduces by 245 5 Kbytes in the ``${SSTATE_DIR}`` directory. Subsequent warnings 246 based on the interval occur each time a respective interval is 247 reached beyond the initial warning (i.e. 1 Gbytes and 100 Kbytes). 248 249 :term:`BB_ENV_PASSTHROUGH` 250 Specifies the internal list of variables to allow through from 251 the external environment into BitBake's datastore. If the value of 252 this variable is not specified (which is the default), the following 253 list is used: :term:`BBPATH`, :term:`BB_PRESERVE_ENV`, 254 :term:`BB_ENV_PASSTHROUGH`, and :term:`BB_ENV_PASSTHROUGH_ADDITIONS`. 255 256 .. note:: 257 258 You must set this variable in the external environment in order 259 for it to work. 260 261 :term:`BB_ENV_PASSTHROUGH_ADDITIONS` 262 Specifies an additional set of variables to allow through from the 263 external environment into BitBake's datastore. This list of variables 264 are on top of the internal list set in 265 :term:`BB_ENV_PASSTHROUGH`. 266 267 .. note:: 268 269 You must set this variable in the external environment in order 270 for it to work. 271 272 :term:`BB_FETCH_PREMIRRORONLY` 273 When set to "1", causes BitBake's fetcher module to only search 274 :term:`PREMIRRORS` for files. BitBake will not 275 search the main :term:`SRC_URI` or 276 :term:`MIRRORS`. 277 278 :term:`BB_FILENAME` 279 Contains the filename of the recipe that owns the currently running 280 task. For example, if the ``do_fetch`` task that resides in the 281 ``my-recipe.bb`` is executing, the :term:`BB_FILENAME` variable contains 282 "/foo/path/my-recipe.bb". 283 284 :term:`BB_GENERATE_MIRROR_TARBALLS` 285 Causes tarballs of the Git repositories, including the Git metadata, 286 to be placed in the :term:`DL_DIR` directory. Anyone 287 wishing to create a source mirror would want to enable this variable. 288 289 For performance reasons, creating and placing tarballs of the Git 290 repositories is not the default action by BitBake. :: 291 292 BB_GENERATE_MIRROR_TARBALLS = "1" 293 294 :term:`BB_GENERATE_SHALLOW_TARBALLS` 295 Setting this variable to "1" when :term:`BB_GIT_SHALLOW` is also set to 296 "1" causes bitbake to generate shallow mirror tarballs when fetching git 297 repositories. The number of commits included in the shallow mirror 298 tarballs is controlled by :term:`BB_GIT_SHALLOW_DEPTH`. 299 300 If both :term:`BB_GIT_SHALLOW` and :term:`BB_GENERATE_MIRROR_TARBALLS` are 301 enabled, bitbake will generate shallow mirror tarballs by default for git 302 repositories. This separate variable exists so that shallow tarball 303 generation can be enabled without needing to also enable normal mirror 304 generation if it is not desired. 305 306 For example usage, see :term:`BB_GIT_SHALLOW`. 307 308 :term:`BB_GIT_SHALLOW` 309 Setting this variable to "1" enables the support for fetching, using and 310 generating mirror tarballs of `shallow git repositories <https://riptutorial.com/git/example/4584/shallow-clone>`_. 311 The external `git-make-shallow <https://git.openembedded.org/bitbake/tree/bin/git-make-shallow>`_ 312 script is used for shallow mirror tarball creation. 313 314 When :term:`BB_GIT_SHALLOW` is enabled, bitbake will attempt to fetch a shallow 315 mirror tarball. If the shallow mirror tarball cannot be fetched, it will 316 try to fetch the full mirror tarball and use that. 317 318 When a mirror tarball is not available, a full git clone will be performed 319 regardless of whether this variable is set or not. Support for shallow 320 clones is not currently implemented as git does not directly support 321 shallow cloning a particular git commit hash (it only supports cloning 322 from a tag or branch reference). 323 324 See also :term:`BB_GIT_SHALLOW_DEPTH` and 325 :term:`BB_GENERATE_SHALLOW_TARBALLS`. 326 327 Example usage:: 328 329 BB_GIT_SHALLOW ?= "1" 330 331 # Keep only the top commit 332 BB_GIT_SHALLOW_DEPTH ?= "1" 333 334 # This defaults to enabled if both BB_GIT_SHALLOW and 335 # BB_GENERATE_MIRROR_TARBALLS are enabled 336 BB_GENERATE_SHALLOW_TARBALLS ?= "1" 337 338 :term:`BB_GIT_SHALLOW_DEPTH` 339 When used with :term:`BB_GENERATE_SHALLOW_TARBALLS`, this variable sets 340 the number of commits to include in generated shallow mirror tarballs. 341 With a depth of 1, only the commit referenced in :term:`SRCREV` is 342 included in the shallow mirror tarball. Increasing the depth includes 343 additional parent commits, working back through the commit history. 344 345 If this variable is unset, bitbake will default to a depth of 1 when 346 generating shallow mirror tarballs. 347 348 For example usage, see :term:`BB_GIT_SHALLOW`. 349 350 :term:`BB_GLOBAL_PYMODULES` 351 Specifies the list of Python modules to place in the global namespace. 352 It is intended that only the core layer should set this and it is meant 353 to be a very small list, typically just ``os`` and ``sys``. 354 :term:`BB_GLOBAL_PYMODULES` is expected to be set before the first 355 ``addpylib`` directive. 356 See also ":ref:`bitbake-user-manual/bitbake-user-manual-metadata:extending python library code`". 357 358 :term:`BB_HASHCHECK_FUNCTION` 359 Specifies the name of the function to call during the "setscene" part 360 of the task's execution in order to validate the list of task hashes. 361 The function returns the list of setscene tasks that should be 362 executed. 363 364 At this point in the execution of the code, the objective is to 365 quickly verify if a given setscene function is likely to work or not. 366 It's easier to check the list of setscene functions in one pass than 367 to call many individual tasks. The returned list need not be 368 completely accurate. A given setscene task can still later fail. 369 However, the more accurate the data returned, the more efficient the 370 build will be. 371 372 :term:`BB_HASHCONFIG_IGNORE_VARS` 373 Lists variables that are excluded from base configuration checksum, 374 which is used to determine if the cache can be reused. 375 376 One of the ways BitBake determines whether to re-parse the main 377 metadata is through checksums of the variables in the datastore of 378 the base configuration data. There are variables that you typically 379 want to exclude when checking whether or not to re-parse and thus 380 rebuild the cache. As an example, you would usually exclude ``TIME`` 381 and ``DATE`` because these variables are always changing. If you did 382 not exclude them, BitBake would never reuse the cache. 383 384 :term:`BB_HASHSERVE` 385 Specifies the Hash Equivalence server to use. 386 387 If set to ``auto``, BitBake automatically starts its own server 388 over a UNIX domain socket. An option is to connect this server 389 to an upstream one, by setting :term:`BB_HASHSERVE_UPSTREAM`. 390 391 If set to ``unix://path``, BitBake will connect to an existing 392 hash server available over a UNIX domain socket. 393 394 If set to ``host:port``, BitBake will connect to a remote server on the 395 specified host. This allows multiple clients to share the same 396 hash equivalence data. 397 398 The remote server can be started manually through 399 the ``bin/bitbake-hashserv`` script provided by BitBake, 400 which supports UNIX domain sockets too. This script also allows 401 to start the server in read-only mode, to avoid accepting 402 equivalences that correspond to Share State caches that are 403 only available on specific clients. 404 405 :term:`BB_HASHSERVE_UPSTREAM` 406 Specifies an upstream Hash Equivalence server. 407 408 This optional setting is only useful when a local Hash Equivalence 409 server is started (setting :term:`BB_HASHSERVE` to ``auto``), 410 and you wish the local server to query an upstream server for 411 Hash Equivalence data. 412 413 Example usage:: 414 415 BB_HASHSERVE_UPSTREAM = "hashserv.yoctoproject.org:8686" 416 417 :term:`BB_INVALIDCONF` 418 Used in combination with the ``ConfigParsed`` event to trigger 419 re-parsing the base metadata (i.e. all the recipes). The 420 ``ConfigParsed`` event can set the variable to trigger the re-parse. 421 You must be careful to avoid recursive loops with this functionality. 422 423 :term:`BB_LOADFACTOR_MAX` 424 Setting this to a value will cause BitBake to check the system load 425 average before executing new tasks. If the load average is above the 426 the number of CPUs multipled by this factor, no new task will be started 427 unless there is no task executing. A value of "1.5" has been found to 428 work reasonably. This is helpful for systems which don't have pressure 429 regulation enabled, which is more granular. Pressure values take 430 precedence over loadfactor. 431 432 :term:`BB_LOGCONFIG` 433 Specifies the name of a config file that contains the user logging 434 configuration. See 435 :ref:`bitbake-user-manual/bitbake-user-manual-execution:logging` 436 for additional information 437 438 :term:`BB_LOGFMT` 439 Specifies the name of the log files saved into 440 ``${``\ :term:`T`\ ``}``. By default, the :term:`BB_LOGFMT` 441 variable is undefined and the log filenames get created using the 442 following form:: 443 444 log.{task}.{pid} 445 446 If you want to force log files to take a specific name, you can set this 447 variable in a configuration file. 448 449 :term:`BB_MULTI_PROVIDER_ALLOWED` 450 Allows you to suppress BitBake warnings caused when building two 451 separate recipes that provide the same output. 452 453 BitBake normally issues a warning when building two different recipes 454 where each provides the same output. This scenario is usually 455 something the user does not want. However, cases do exist where it 456 makes sense, particularly in the ``virtual/*`` namespace. You can use 457 this variable to suppress BitBake's warnings. 458 459 To use the variable, list provider names (e.g. recipe names, 460 ``virtual/kernel``, and so forth). 461 462 :term:`BB_NICE_LEVEL` 463 Allows BitBake to run at a specific priority (i.e. nice level). 464 System permissions usually mean that BitBake can reduce its priority 465 but not raise it again. See :term:`BB_TASK_NICE_LEVEL` for 466 additional information. 467 468 :term:`BB_NO_NETWORK` 469 Disables network access in the BitBake fetcher modules. With this 470 access disabled, any command that attempts to access the network 471 becomes an error. 472 473 Disabling network access is useful for testing source mirrors, 474 running builds when not connected to the Internet, and when operating 475 in certain kinds of firewall environments. 476 477 :term:`BB_NUMBER_PARSE_THREADS` 478 Sets the number of threads BitBake uses when parsing. By default, the 479 number of threads is equal to the number of cores on the system. 480 481 :term:`BB_NUMBER_THREADS` 482 The maximum number of tasks BitBake should run in parallel at any one 483 time. If your host development system supports multiple cores, a good 484 rule of thumb is to set this variable to twice the number of cores. 485 486 :term:`BB_ORIGENV` 487 Contains a copy of the original external environment in which BitBake 488 was run. The copy is taken before any variable values configured to 489 pass through from the external environment are filtered into BitBake's 490 datastore. 491 492 .. note:: 493 494 The contents of this variable is a datastore object that can be 495 queried using the normal datastore operations. 496 497 :term:`BB_PRESERVE_ENV` 498 Disables environment filtering and instead allows all variables through 499 from the external environment into BitBake's datastore. 500 501 .. note:: 502 503 You must set this variable in the external environment in order 504 for it to work. 505 506 :term:`BB_PRESSURE_MAX_CPU` 507 Specifies a maximum CPU pressure threshold, above which BitBake's 508 scheduler will not start new tasks (providing there is at least 509 one active task). If no value is set, CPU pressure is not 510 monitored when starting tasks. 511 512 The pressure data is calculated based upon what Linux kernels since 513 version 4.20 expose under ``/proc/pressure``. The threshold represents 514 the difference in "total" pressure from the previous second. The 515 minimum value is 1.0 (extremely slow builds) and the maximum is 516 1000000 (a pressure value unlikely to ever be reached). 517 518 This threshold can be set in ``conf/local.conf`` as:: 519 520 BB_PRESSURE_MAX_CPU = "500" 521 522 :term:`BB_PRESSURE_MAX_IO` 523 Specifies a maximum I/O pressure threshold, above which BitBake's 524 scheduler will not start new tasks (providing there is at least 525 one active task). If no value is set, I/O pressure is not 526 monitored when starting tasks. 527 528 The pressure data is calculated based upon what Linux kernels since 529 version 4.20 expose under ``/proc/pressure``. The threshold represents 530 the difference in "total" pressure from the previous second. The 531 minimum value is 1.0 (extremely slow builds) and the maximum is 532 1000000 (a pressure value unlikely to ever be reached). 533 534 At this point in time, experiments show that IO pressure tends to 535 be short-lived and regulating just the CPU with 536 :term:`BB_PRESSURE_MAX_CPU` can help to reduce it. 537 538 :term:`BB_PRESSURE_MAX_MEMORY` 539 540 Specifies a maximum memory pressure threshold, above which BitBake's 541 scheduler will not start new tasks (providing there is at least 542 one active task). If no value is set, memory pressure is not 543 monitored when starting tasks. 544 545 The pressure data is calculated based upon what Linux kernels since 546 version 4.20 expose under ``/proc/pressure``. The threshold represents 547 the difference in "total" pressure from the previous second. The 548 minimum value is 1.0 (extremely slow builds) and the maximum is 549 1000000 (a pressure value unlikely to ever be reached). 550 551 Memory pressure is experienced when time is spent swapping, 552 refaulting pages from the page cache or performing direct reclaim. 553 This is why memory pressure is rarely seen, but setting this variable 554 might be useful as a last resort to prevent OOM errors if they are 555 occurring during builds. 556 557 :term:`BB_RUNFMT` 558 Specifies the name of the executable script files (i.e. run files) 559 saved into ``${``\ :term:`T`\ ``}``. By default, the 560 :term:`BB_RUNFMT` variable is undefined and the run filenames get 561 created using the following form:: 562 563 run.{func}.{pid} 564 565 If you want to force run files to take a specific name, you can set this 566 variable in a configuration file. 567 568 :term:`BB_RUNTASK` 569 Contains the name of the currently executing task. The value includes 570 the "do\_" prefix. For example, if the currently executing task is 571 ``do_config``, the value is "do_config". 572 573 :term:`BB_SCHEDULER` 574 Selects the name of the scheduler to use for the scheduling of 575 BitBake tasks. Three options exist: 576 577 - *basic* --- the basic framework from which everything derives. Using 578 this option causes tasks to be ordered numerically as they are 579 parsed. 580 581 - *speed* --- executes tasks first that have more tasks depending on 582 them. The "speed" option is the default. 583 584 - *completion* --- causes the scheduler to try to complete a given 585 recipe once its build has started. 586 587 :term:`BB_SCHEDULERS` 588 Defines custom schedulers to import. Custom schedulers need to be 589 derived from the ``RunQueueScheduler`` class. 590 591 For information how to select a scheduler, see the 592 :term:`BB_SCHEDULER` variable. 593 594 :term:`BB_SETSCENE_DEPVALID` 595 Specifies a function BitBake calls that determines whether BitBake 596 requires a setscene dependency to be met. 597 598 When running a setscene task, BitBake needs to know which 599 dependencies of that setscene task also need to be run. Whether 600 dependencies also need to be run is highly dependent on the metadata. 601 The function specified by this variable returns a "True" or "False" 602 depending on whether the dependency needs to be met. 603 604 :term:`BB_SIGNATURE_EXCLUDE_FLAGS` 605 Lists variable flags (varflags) that can be safely excluded from 606 checksum and dependency data for keys in the datastore. When 607 generating checksum or dependency data for keys in the datastore, the 608 flags set against that key are normally included in the checksum. 609 610 For more information on varflags, see the 611 ":ref:`bitbake-user-manual/bitbake-user-manual-metadata:variable flags`" 612 section. 613 614 :term:`BB_SIGNATURE_HANDLER` 615 Defines the name of the signature handler BitBake uses. The signature 616 handler defines the way stamp files are created and handled, if and 617 how the signature is incorporated into the stamps, and how the 618 signature itself is generated. 619 620 A new signature handler can be added by injecting a class derived 621 from the ``SignatureGenerator`` class into the global namespace. 622 623 :term:`BB_SRCREV_POLICY` 624 Defines the behavior of the fetcher when it interacts with source 625 control systems and dynamic source revisions. The 626 :term:`BB_SRCREV_POLICY` variable is useful when working without a 627 network. 628 629 The variable can be set using one of two policies: 630 631 - *cache* --- retains the value the system obtained previously rather 632 than querying the source control system each time. 633 634 - *clear* --- queries the source controls system every time. With this 635 policy, there is no cache. The "clear" policy is the default. 636 637 :term:`BB_STRICT_CHECKSUM` 638 Sets a more strict checksum mechanism for non-local URLs. Setting 639 this variable to a value causes BitBake to report an error if it 640 encounters a non-local URL that does not have at least one checksum 641 specified. 642 643 :term:`BB_TASK_IONICE_LEVEL` 644 Allows adjustment of a task's Input/Output priority. During 645 Autobuilder testing, random failures can occur for tasks due to I/O 646 starvation. These failures occur during various QEMU runtime 647 timeouts. You can use the :term:`BB_TASK_IONICE_LEVEL` variable to adjust 648 the I/O priority of these tasks. 649 650 .. note:: 651 652 This variable works similarly to the :term:`BB_TASK_NICE_LEVEL` 653 variable except with a task's I/O priorities. 654 655 Set the variable as follows:: 656 657 BB_TASK_IONICE_LEVEL = "class.prio" 658 659 For *class*, the default value is "2", which is a best effort. You can use 660 "1" for realtime and "3" for idle. If you want to use realtime, you 661 must have superuser privileges. 662 663 For *prio*, you can use any value from "0", which is the highest 664 priority, to "7", which is the lowest. The default value is "4". You 665 do not need any special privileges to use this range of priority 666 values. 667 668 .. note:: 669 670 In order for your I/O priority settings to take effect, you need the 671 Completely Fair Queuing (CFQ) Scheduler selected for the backing block 672 device. To select the scheduler, use the following command form where 673 device is the device (e.g. sda, sdb, and so forth):: 674 675 $ sudo sh -c "echo cfq > /sys/block/device/queu/scheduler" 676 677 :term:`BB_TASK_NICE_LEVEL` 678 Allows specific tasks to change their priority (i.e. nice level). 679 680 You can use this variable in combination with task overrides to raise 681 or lower priorities of specific tasks. For example, on the `Yocto 682 Project <https://www.yoctoproject.org>`__ autobuilder, QEMU emulation 683 in images is given a higher priority as compared to build tasks to 684 ensure that images do not suffer timeouts on loaded systems. 685 686 :term:`BB_TASKHASH` 687 Within an executing task, this variable holds the hash of the task as 688 returned by the currently enabled signature generator. 689 690 :term:`BB_VERBOSE_LOGS` 691 Controls how verbose BitBake is during builds. If set, shell scripts 692 echo commands and shell script output appears on standard out 693 (stdout). 694 695 :term:`BB_WORKERCONTEXT` 696 Specifies if the current context is executing a task. BitBake sets 697 this variable to "1" when a task is being executed. The value is not 698 set when the task is in server context during parsing or event 699 handling. 700 701 :term:`BBCLASSEXTEND` 702 Allows you to extend a recipe so that it builds variants of the 703 software. Some examples of these variants for recipes from the 704 OpenEmbedded-Core metadata are "natives" such as ``quilt-native``, 705 which is a copy of Quilt built to run on the build system; "crosses" 706 such as ``gcc-cross``, which is a compiler built to run on the build 707 machine but produces binaries that run on the target ``MACHINE``; 708 "nativesdk", which targets the SDK machine instead of ``MACHINE``; 709 and "mulitlibs" in the form "``multilib:``\ multilib_name". 710 711 To build a different variant of the recipe with a minimal amount of 712 code, it usually is as simple as adding the variable to your recipe. 713 Here are two examples. The "native" variants are from the 714 OpenEmbedded-Core metadata:: 715 716 BBCLASSEXTEND =+ "native nativesdk" 717 BBCLASSEXTEND =+ "multilib:multilib_name" 718 719 .. note:: 720 721 Internally, the :term:`BBCLASSEXTEND` mechanism generates recipe 722 variants by rewriting variable values and applying overrides such 723 as ``_class-native``. For example, to generate a native version of 724 a recipe, a :term:`DEPENDS` on "foo" is 725 rewritten to a :term:`DEPENDS` on "foo-native". 726 727 Even when using :term:`BBCLASSEXTEND`, the recipe is only parsed once. 728 Parsing once adds some limitations. For example, it is not 729 possible to include a different file depending on the variant, 730 since ``include`` statements are processed when the recipe is 731 parsed. 732 733 :term:`BBDEBUG` 734 Sets the BitBake debug output level to a specific value as 735 incremented by the ``-D`` command line option. 736 737 .. note:: 738 739 You must set this variable in the external environment in order 740 for it to work. 741 742 :term:`BBFILE_COLLECTIONS` 743 Lists the names of configured layers. These names are used to find 744 the other ``BBFILE_*`` variables. Typically, each layer appends its 745 name to this variable in its ``conf/layer.conf`` file. 746 747 :term:`BBFILE_PATTERN` 748 Variable that expands to match files from 749 :term:`BBFILES` in a particular layer. This 750 variable is used in the ``conf/layer.conf`` file and must be suffixed 751 with the name of the specific layer (e.g. 752 ``BBFILE_PATTERN_emenlow``). 753 754 :term:`BBFILE_PRIORITY` 755 Assigns the priority for recipe files in each layer. 756 757 This variable is used in the ``conf/layer.conf`` file and must be 758 suffixed with a `_` followed by the name of the specific layer (e.g. 759 ``BBFILE_PRIORITY_emenlow``). Colon as separator is not supported. 760 761 This variable is useful in situations where the same recipe appears 762 in more than one layer. Setting this variable allows you to 763 prioritize a layer against other layers that contain the same recipe 764 --- effectively letting you control the precedence for the multiple 765 layers. The precedence established through this variable stands 766 regardless of a recipe's version (:term:`PV` variable). 767 For example, a layer that has a recipe with a higher :term:`PV` value but 768 for which the :term:`BBFILE_PRIORITY` is set to have a lower precedence 769 still has a lower precedence. 770 771 A larger value for the :term:`BBFILE_PRIORITY` variable results in a 772 higher precedence. For example, the value 6 has a higher precedence 773 than the value 5. If not specified, the :term:`BBFILE_PRIORITY` variable 774 is set based on layer dependencies (see the :term:`LAYERDEPENDS` variable 775 for more information). The default priority, if unspecified for a 776 layer with no dependencies, is the lowest defined priority + 1 (or 1 777 if no priorities are defined). 778 779 .. tip:: 780 781 You can use the command bitbake-layers show-layers to list all 782 configured layers along with their priorities. 783 784 :term:`BBFILES` 785 A space-separated list of recipe files BitBake uses to build 786 software. 787 788 When specifying recipe files, you can pattern match using Python's 789 `glob <https://docs.python.org/3/library/glob.html>`_ syntax. 790 For details on the syntax, see the documentation by following the 791 previous link. 792 793 :term:`BBFILES_DYNAMIC` 794 Activates content depending on presence of identified layers. You 795 identify the layers by the collections that the layers define. 796 797 Use the :term:`BBFILES_DYNAMIC` variable to avoid ``.bbappend`` files whose 798 corresponding ``.bb`` file is in a layer that attempts to modify other 799 layers through ``.bbappend`` but does not want to introduce a hard 800 dependency on those other layers. 801 802 Additionally you can prefix the rule with "!" to add ``.bbappend`` and 803 ``.bb`` files in case a layer is not present. Use this avoid hard 804 dependency on those other layers. 805 806 Use the following form for :term:`BBFILES_DYNAMIC`:: 807 808 collection_name:filename_pattern 809 810 The following example identifies two collection names and two filename 811 patterns:: 812 813 BBFILES_DYNAMIC += "\ 814 clang-layer:${LAYERDIR}/bbappends/meta-clang/*/*/*.bbappend \ 815 core:${LAYERDIR}/bbappends/openembedded-core/meta/*/*/*.bbappend \ 816 " 817 818 When the collection name is prefixed with "!" it will add the file pattern in case 819 the layer is absent:: 820 821 BBFILES_DYNAMIC += "\ 822 !clang-layer:${LAYERDIR}/backfill/meta-clang/*/*/*.bb \ 823 " 824 825 This next example shows an error message that occurs because invalid 826 entries are found, which cause parsing to fail:: 827 828 ERROR: BBFILES_DYNAMIC entries must be of the form {!}<collection name>:<filename pattern>, not: 829 /work/my-layer/bbappends/meta-security-isafw/*/*/*.bbappend 830 /work/my-layer/bbappends/openembedded-core/meta/*/*/*.bbappend 831 832 :term:`BBINCLUDED` 833 Contains a space-separated list of all of all files that BitBake's 834 parser included during parsing of the current file. 835 836 :term:`BBINCLUDELOGS` 837 If set to a value, enables printing the task log when reporting a 838 failed task. 839 840 :term:`BBINCLUDELOGS_LINES` 841 If :term:`BBINCLUDELOGS` is set, specifies 842 the maximum number of lines from the task log file to print when 843 reporting a failed task. If you do not set :term:`BBINCLUDELOGS_LINES`, 844 the entire log is printed. 845 846 :term:`BBLAYERS` 847 Lists the layers to enable during the build. This variable is defined 848 in the ``bblayers.conf`` configuration file in the build directory. 849 Here is an example:: 850 851 BBLAYERS = " \ 852 /home/scottrif/poky/meta \ 853 /home/scottrif/poky/meta-yocto \ 854 /home/scottrif/poky/meta-yocto-bsp \ 855 /home/scottrif/poky/meta-mykernel \ 856 " 857 858 This example enables four layers, one of which is a custom, user-defined 859 layer named ``meta-mykernel``. 860 861 :term:`BBLAYERS_FETCH_DIR` 862 Sets the base location where layers are stored. This setting is used 863 in conjunction with ``bitbake-layers layerindex-fetch`` and tells 864 ``bitbake-layers`` where to place the fetched layers. 865 866 :term:`BBMASK` 867 Prevents BitBake from processing recipes and recipe append files. 868 869 You can use the :term:`BBMASK` variable to "hide" these ``.bb`` and 870 ``.bbappend`` files. BitBake ignores any recipe or recipe append 871 files that match any of the expressions. It is as if BitBake does not 872 see them at all. Consequently, matching files are not parsed or 873 otherwise used by BitBake. 874 875 The values you provide are passed to Python's regular expression 876 compiler. Consequently, the syntax follows Python's Regular 877 Expression (re) syntax. The expressions are compared against the full 878 paths to the files. For complete syntax information, see Python's 879 documentation at http://docs.python.org/3/library/re.html. 880 881 The following example uses a complete regular expression to tell 882 BitBake to ignore all recipe and recipe append files in the 883 ``meta-ti/recipes-misc/`` directory:: 884 885 BBMASK = "meta-ti/recipes-misc/" 886 887 If you want to mask out multiple directories or recipes, you can 888 specify multiple regular expression fragments. This next example 889 masks out multiple directories and individual recipes:: 890 891 BBMASK += "/meta-ti/recipes-misc/ meta-ti/recipes-ti/packagegroup/" 892 BBMASK += "/meta-oe/recipes-support/" 893 BBMASK += "/meta-foo/.*/openldap" 894 BBMASK += "opencv.*\.bbappend" 895 BBMASK += "lzma" 896 897 .. note:: 898 899 When specifying a directory name, use the trailing slash character 900 to ensure you match just that directory name. 901 902 :term:`BBMULTICONFIG` 903 Enables BitBake to perform multiple configuration builds and lists 904 each separate configuration (multiconfig). You can use this variable 905 to cause BitBake to build multiple targets where each target has a 906 separate configuration. Define :term:`BBMULTICONFIG` in your 907 ``conf/local.conf`` configuration file. 908 909 As an example, the following line specifies three multiconfigs, each 910 having a separate configuration file:: 911 912 BBMULTIFONFIG = "configA configB configC" 913 914 Each configuration file you use must reside in the 915 build directory within a directory named ``conf/multiconfig`` (e.g. 916 build_directory\ ``/conf/multiconfig/configA.conf``). 917 918 For information on how to use :term:`BBMULTICONFIG` in an environment 919 that supports building targets with multiple configurations, see the 920 ":ref:`bitbake-user-manual/bitbake-user-manual-intro:executing a multiple configuration build`" 921 section. 922 923 :term:`BBPATH` 924 A colon-separated list used by BitBake to locate class (``.bbclass``) 925 and configuration (``.conf``) files. This variable is analogous to the 926 ``PATH`` variable. 927 928 If you run BitBake from a directory outside of the build directory, 929 you must be sure to set :term:`BBPATH` to point to the build directory. 930 Set the variable as you would any environment variable and then run 931 BitBake:: 932 933 $ BBPATH="build_directory" 934 $ export BBPATH 935 $ bitbake target 936 937 :term:`BBSERVER` 938 Points to the server that runs memory-resident BitBake. The variable 939 is only used when you employ memory-resident BitBake. 940 941 :term:`BBTARGETS` 942 Allows you to use a configuration file to add to the list of 943 command-line target recipes you want to build. 944 945 :term:`BITBAKE_UI` 946 Used to specify the UI module to use when running BitBake. Using this 947 variable is equivalent to using the ``-u`` command-line option. 948 949 .. note:: 950 951 You must set this variable in the external environment in order 952 for it to work. 953 954 :term:`BUILDNAME` 955 A name assigned to the build. The name defaults to a datetime stamp 956 of when the build was started but can be defined by the metadata. 957 958 :term:`BZRDIR` 959 The directory in which files checked out of a Bazaar system are 960 stored. 961 962 :term:`CACHE` 963 Specifies the directory BitBake uses to store a cache of the metadata 964 so it does not need to be parsed every time BitBake is started. 965 966 :term:`CVSDIR` 967 The directory in which files checked out under the CVS system are 968 stored. 969 970 :term:`DEFAULT_PREFERENCE` 971 Specifies a weak bias for recipe selection priority. 972 973 The most common usage of this is variable is to set it to "-1" within 974 a recipe for a development version of a piece of software. Using the 975 variable in this way causes the stable version of the recipe to build 976 by default in the absence of :term:`PREFERRED_VERSION` being used to 977 build the development version. 978 979 .. note:: 980 981 The bias provided by DEFAULT_PREFERENCE is weak and is overridden by 982 :term:`BBFILE_PRIORITY` if that variable is different between two 983 layers that contain different versions of the same recipe. 984 985 :term:`DEPENDS` 986 Lists a recipe's build-time dependencies (i.e. other recipe files). 987 988 Consider this simple example for two recipes named "a" and "b" that 989 produce similarly named packages. In this example, the :term:`DEPENDS` 990 statement appears in the "a" recipe:: 991 992 DEPENDS = "b" 993 994 Here, the dependency is such that the ``do_configure`` task for recipe "a" 995 depends on the ``do_populate_sysroot`` task of recipe "b". This means 996 anything that recipe "b" puts into sysroot is available when recipe "a" is 997 configuring itself. 998 999 For information on runtime dependencies, see the :term:`RDEPENDS` 1000 variable. 1001 1002 :term:`DESCRIPTION` 1003 A long description for the recipe. 1004 1005 :term:`DL_DIR` 1006 The central download directory used by the build process to store 1007 downloads. By default, :term:`DL_DIR` gets files suitable for mirroring for 1008 everything except Git repositories. If you want tarballs of Git 1009 repositories, use the :term:`BB_GENERATE_MIRROR_TARBALLS` variable. 1010 1011 :term:`EXCLUDE_FROM_WORLD` 1012 Directs BitBake to exclude a recipe from world builds (i.e. 1013 ``bitbake world``). During world builds, BitBake locates, parses and 1014 builds all recipes found in every layer exposed in the 1015 ``bblayers.conf`` configuration file. 1016 1017 To exclude a recipe from a world build using this variable, set the 1018 variable to "1" in the recipe. Set it to "0" to add it back to world build. 1019 1020 .. note:: 1021 1022 Recipes added to :term:`EXCLUDE_FROM_WORLD` may still be built during a world 1023 build in order to satisfy dependencies of other recipes. Adding a 1024 recipe to :term:`EXCLUDE_FROM_WORLD` only ensures that the recipe is not 1025 explicitly added to the list of build targets in a world build. 1026 1027 :term:`FAKEROOT` 1028 Contains the command to use when running a shell script in a fakeroot 1029 environment. The :term:`FAKEROOT` variable is obsolete and has been 1030 replaced by the other ``FAKEROOT*`` variables. See these entries in 1031 the glossary for more information. 1032 1033 :term:`FAKEROOTBASEENV` 1034 Lists environment variables to set when executing the command defined 1035 by :term:`FAKEROOTCMD` that starts the 1036 bitbake-worker process in the fakeroot environment. 1037 1038 :term:`FAKEROOTCMD` 1039 Contains the command that starts the bitbake-worker process in the 1040 fakeroot environment. 1041 1042 :term:`FAKEROOTDIRS` 1043 Lists directories to create before running a task in the fakeroot 1044 environment. 1045 1046 :term:`FAKEROOTENV` 1047 Lists environment variables to set when running a task in the 1048 fakeroot environment. For additional information on environment 1049 variables and the fakeroot environment, see the 1050 :term:`FAKEROOTBASEENV` variable. 1051 1052 :term:`FAKEROOTNOENV` 1053 Lists environment variables to set when running a task that is not in 1054 the fakeroot environment. For additional information on environment 1055 variables and the fakeroot environment, see the 1056 :term:`FAKEROOTENV` variable. 1057 1058 :term:`FETCHCMD` 1059 Defines the command the BitBake fetcher module executes when running 1060 fetch operations. You need to use an override suffix when you use the 1061 variable (e.g. ``FETCHCMD_git`` or ``FETCHCMD_svn``). 1062 1063 :term:`FILE` 1064 Points at the current file. BitBake sets this variable during the 1065 parsing process to identify the file being parsed. BitBake also sets 1066 this variable when a recipe is being executed to identify the recipe 1067 file. 1068 1069 :term:`FILESPATH` 1070 Specifies directories BitBake uses when searching for patches and 1071 files. The "local" fetcher module uses these directories when 1072 handling ``file://`` URLs. The variable behaves like a shell ``PATH`` 1073 environment variable. The value is a colon-separated list of 1074 directories that are searched left-to-right in order. 1075 1076 :term:`FILE_LAYERNAME` 1077 During parsing and task execution, this is set to the name of the 1078 layer containing the recipe file. Code can use this to identify which 1079 layer a recipe is from. 1080 1081 :term:`GITDIR` 1082 The directory in which a local copy of a Git repository is stored 1083 when it is cloned. 1084 1085 :term:`HGDIR` 1086 The directory in which files checked out of a Mercurial system are 1087 stored. 1088 1089 :term:`HOMEPAGE` 1090 Website where more information about the software the recipe is 1091 building can be found. 1092 1093 :term:`INHERIT` 1094 Causes the named class or classes to be inherited globally. Anonymous 1095 functions in the class or classes are not executed for the base 1096 configuration and in each individual recipe. The OpenEmbedded build 1097 system ignores changes to :term:`INHERIT` in individual recipes. 1098 1099 For more information on :term:`INHERIT`, see the 1100 ":ref:`bitbake-user-manual/bitbake-user-manual-metadata:\`\`inherit\`\` configuration directive`" 1101 section. 1102 1103 :term:`LAYERDEPENDS` 1104 Lists the layers, separated by spaces, upon which this recipe 1105 depends. Optionally, you can specify a specific layer version for a 1106 dependency by adding it to the end of the layer name with a colon, 1107 (e.g. "anotherlayer:3" to be compared against 1108 :term:`LAYERVERSION`\ ``_anotherlayer`` in 1109 this case). BitBake produces an error if any dependency is missing or 1110 the version numbers do not match exactly (if specified). 1111 1112 You use this variable in the ``conf/layer.conf`` file. You must also 1113 use the specific layer name as a suffix to the variable (e.g. 1114 ``LAYERDEPENDS_mylayer``). 1115 1116 :term:`LAYERDIR` 1117 When used inside the ``layer.conf`` configuration file, this variable 1118 provides the path of the current layer. This variable is not 1119 available outside of ``layer.conf`` and references are expanded 1120 immediately when parsing of the file completes. 1121 1122 :term:`LAYERDIR_RE` 1123 When used inside the ``layer.conf`` configuration file, this variable 1124 provides the path of the current layer, escaped for use in a regular 1125 expression (:term:`BBFILE_PATTERN`). This 1126 variable is not available outside of ``layer.conf`` and references 1127 are expanded immediately when parsing of the file completes. 1128 1129 :term:`LAYERSERIES_COMPAT` 1130 Lists the versions of the OpenEmbedded-Core (OE-Core) for which 1131 a layer is compatible. Using the :term:`LAYERSERIES_COMPAT` variable 1132 allows the layer maintainer to indicate which combinations of the 1133 layer and OE-Core can be expected to work. The variable gives the 1134 system a way to detect when a layer has not been tested with new 1135 releases of OE-Core (e.g. the layer is not maintained). 1136 1137 To specify the OE-Core versions for which a layer is compatible, use 1138 this variable in your layer's ``conf/layer.conf`` configuration file. 1139 For the list, use the Yocto Project release name (e.g. "kirkstone", 1140 "mickledore"). To specify multiple OE-Core versions for the layer, use 1141 a space-separated list:: 1142 1143 LAYERSERIES_COMPAT_layer_root_name = "kirkstone mickledore" 1144 1145 .. note:: 1146 1147 Setting :term:`LAYERSERIES_COMPAT` is required by the Yocto Project 1148 Compatible version 2 standard. 1149 The OpenEmbedded build system produces a warning if the variable 1150 is not set for any given layer. 1151 1152 :term:`LAYERVERSION` 1153 Optionally specifies the version of a layer as a single number. You 1154 can use this variable within 1155 :term:`LAYERDEPENDS` for another layer in 1156 order to depend on a specific version of the layer. 1157 1158 You use this variable in the ``conf/layer.conf`` file. You must also 1159 use the specific layer name as a suffix to the variable (e.g. 1160 ``LAYERDEPENDS_mylayer``). 1161 1162 :term:`LICENSE` 1163 The list of source licenses for the recipe. 1164 1165 :term:`MIRRORS` 1166 Specifies additional paths from which BitBake gets source code. When 1167 the build system searches for source code, it first tries the local 1168 download directory. If that location fails, the build system tries 1169 locations defined by :term:`PREMIRRORS`, the 1170 upstream source, and then locations specified by :term:`MIRRORS` in that 1171 order. 1172 1173 :term:`OVERRIDES` 1174 A colon-separated list that BitBake uses to control what variables are 1175 overridden after BitBake parses recipes and configuration files. 1176 1177 Following is a simple example that uses an overrides list based on 1178 machine architectures: OVERRIDES = "arm:x86:mips:powerpc" You can 1179 find information on how to use :term:`OVERRIDES` in the 1180 ":ref:`bitbake-user-manual/bitbake-user-manual-metadata:conditional syntax 1181 (overrides)`" section. 1182 1183 :term:`P4DIR` 1184 The directory in which a local copy of a Perforce depot is stored 1185 when it is fetched. 1186 1187 :term:`PACKAGES` 1188 The list of packages the recipe creates. 1189 1190 :term:`PACKAGES_DYNAMIC` 1191 A promise that your recipe satisfies runtime dependencies for 1192 optional modules that are found in other recipes. 1193 :term:`PACKAGES_DYNAMIC` does not actually satisfy the dependencies, it 1194 only states that they should be satisfied. For example, if a hard, 1195 runtime dependency (:term:`RDEPENDS`) of another 1196 package is satisfied during the build through the 1197 :term:`PACKAGES_DYNAMIC` variable, but a package with the module name is 1198 never actually produced, then the other package will be broken. 1199 1200 :term:`PE` 1201 The epoch of the recipe. By default, this variable is unset. The 1202 variable is used to make upgrades possible when the versioning scheme 1203 changes in some backwards incompatible way. 1204 1205 :term:`PERSISTENT_DIR` 1206 Specifies the directory BitBake uses to store data that should be 1207 preserved between builds. In particular, the data stored is the data 1208 that uses BitBake's persistent data API and the data used by the PR 1209 Server and PR Service. 1210 1211 :term:`PF` 1212 Specifies the recipe or package name and includes all version and 1213 revision numbers (i.e. ``eglibc-2.13-r20+svnr15508/`` and 1214 ``bash-4.2-r1/``). 1215 1216 :term:`PN` 1217 The recipe name. 1218 1219 :term:`PR` 1220 The revision of the recipe. 1221 1222 :term:`PREFERRED_PROVIDER` 1223 Determines which recipe should be given preference when multiple 1224 recipes provide the same item. You should always suffix the variable 1225 with the name of the provided item, and you should set it to the 1226 :term:`PN` of the recipe to which you want to give 1227 precedence. Some examples:: 1228 1229 PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto" 1230 PREFERRED_PROVIDER_virtual/xserver = "xserver-xf86" 1231 PREFERRED_PROVIDER_virtual/libgl ?= "mesa" 1232 1233 :term:`PREFERRED_PROVIDERS` 1234 Determines which recipe should be given preference for cases where 1235 multiple recipes provide the same item. Functionally, 1236 :term:`PREFERRED_PROVIDERS` is identical to 1237 :term:`PREFERRED_PROVIDER`. However, the :term:`PREFERRED_PROVIDERS` variable 1238 lets you define preferences for multiple situations using the following 1239 form:: 1240 1241 PREFERRED_PROVIDERS = "xxx:yyy aaa:bbb ..." 1242 1243 This form is a convenient replacement for the following:: 1244 1245 PREFERRED_PROVIDER_xxx = "yyy" 1246 PREFERRED_PROVIDER_aaa = "bbb" 1247 1248 :term:`PREFERRED_VERSION` 1249 If there are multiple versions of a recipe available, this variable 1250 determines which version should be given preference. You must always 1251 suffix the variable with the :term:`PN` you want to 1252 select, and you should set :term:`PV` accordingly for 1253 precedence. 1254 1255 The :term:`PREFERRED_VERSION` variable supports limited wildcard use 1256 through the "``%``" character. You can use the character to match any 1257 number of characters, which can be useful when specifying versions 1258 that contain long revision numbers that potentially change. Here are 1259 two examples:: 1260 1261 PREFERRED_VERSION_python = "2.7.3" 1262 PREFERRED_VERSION_linux-yocto = "4.12%" 1263 1264 .. important:: 1265 1266 The use of the " % " character is limited in that it only works at the 1267 end of the string. You cannot use the wildcard character in any other 1268 location of the string. 1269 1270 If a recipe with the specified version is not available, a warning 1271 message will be shown. See :term:`REQUIRED_VERSION` if you want this 1272 to be an error instead. 1273 1274 :term:`PREMIRRORS` 1275 Specifies additional paths from which BitBake gets source code. When 1276 the build system searches for source code, it first tries the local 1277 download directory. If that location fails, the build system tries 1278 locations defined by :term:`PREMIRRORS`, the upstream source, and then 1279 locations specified by :term:`MIRRORS` in that order. 1280 1281 Typically, you would add a specific server for the build system to 1282 attempt before any others by adding something like the following to 1283 your configuration:: 1284 1285 PREMIRRORS:prepend = "\ 1286 git://.*/.* http://downloads.yoctoproject.org/mirror/sources/ \ 1287 ftp://.*/.* http://downloads.yoctoproject.org/mirror/sources/ \ 1288 http://.*/.* http://downloads.yoctoproject.org/mirror/sources/ \ 1289 https://.*/.* http://downloads.yoctoproject.org/mirror/sources/" 1290 1291 These changes cause the build system to intercept Git, FTP, HTTP, and 1292 HTTPS requests and direct them to the ``http://`` sources mirror. You can 1293 use ``file://`` URLs to point to local directories or network shares as 1294 well. 1295 1296 :term:`PROVIDES` 1297 A list of aliases by which a particular recipe can be known. By 1298 default, a recipe's own :term:`PN` is implicitly already in its 1299 :term:`PROVIDES` list. If a recipe uses :term:`PROVIDES`, the additional 1300 aliases are synonyms for the recipe and can be useful satisfying 1301 dependencies of other recipes during the build as specified by 1302 :term:`DEPENDS`. 1303 1304 Consider the following example :term:`PROVIDES` statement from a recipe 1305 file ``libav_0.8.11.bb``:: 1306 1307 PROVIDES += "libpostproc" 1308 1309 The :term:`PROVIDES` statement results in the "libav" recipe also being known 1310 as "libpostproc". 1311 1312 In addition to providing recipes under alternate names, the 1313 :term:`PROVIDES` mechanism is also used to implement virtual targets. A 1314 virtual target is a name that corresponds to some particular 1315 functionality (e.g. a Linux kernel). Recipes that provide the 1316 functionality in question list the virtual target in :term:`PROVIDES`. 1317 Recipes that depend on the functionality in question can include the 1318 virtual target in :term:`DEPENDS` to leave the 1319 choice of provider open. 1320 1321 Conventionally, virtual targets have names on the form 1322 "virtual/function" (e.g. "virtual/kernel"). The slash is simply part 1323 of the name and has no syntactical significance. 1324 1325 :term:`PRSERV_HOST` 1326 The network based :term:`PR` service host and port. 1327 1328 Following is an example of how the :term:`PRSERV_HOST` variable is set:: 1329 1330 PRSERV_HOST = "localhost:0" 1331 1332 You must set the variable if you want to automatically start a local PR 1333 service. You can set :term:`PRSERV_HOST` to other values to use a remote PR 1334 service. 1335 1336 :term:`PV` 1337 The version of the recipe. 1338 1339 :term:`RDEPENDS` 1340 Lists a package's runtime dependencies (i.e. other packages) that 1341 must be installed in order for the built package to run correctly. If 1342 a package in this list cannot be found during the build, you will get 1343 a build error. 1344 1345 Because the :term:`RDEPENDS` variable applies to packages being built, 1346 you should always use the variable in a form with an attached package 1347 name. For example, suppose you are building a development package 1348 that depends on the ``perl`` package. In this case, you would use the 1349 following :term:`RDEPENDS` statement:: 1350 1351 RDEPENDS:${PN}-dev += "perl" 1352 1353 In the example, the development package depends on the ``perl`` package. 1354 Thus, the :term:`RDEPENDS` variable has the ``${PN}-dev`` package name as part 1355 of the variable. 1356 1357 BitBake supports specifying versioned dependencies. Although the 1358 syntax varies depending on the packaging format, BitBake hides these 1359 differences from you. Here is the general syntax to specify versions 1360 with the :term:`RDEPENDS` variable:: 1361 1362 RDEPENDS:${PN} = "package (operator version)" 1363 1364 For ``operator``, you can specify the following:: 1365 1366 = 1367 < 1368 > 1369 <= 1370 >= 1371 1372 For example, the following sets up a dependency on version 1.2 or 1373 greater of the package ``foo``:: 1374 1375 RDEPENDS:${PN} = "foo (>= 1.2)" 1376 1377 For information on build-time dependencies, see the :term:`DEPENDS` 1378 variable. 1379 1380 :term:`REPODIR` 1381 The directory in which a local copy of a ``google-repo`` directory is 1382 stored when it is synced. 1383 1384 :term:`REQUIRED_VERSION` 1385 If there are multiple versions of a recipe available, this variable 1386 determines which version should be given preference. :term:`REQUIRED_VERSION` 1387 works in exactly the same manner as :term:`PREFERRED_VERSION`, except 1388 that if the specified version is not available then an error message 1389 is shown and the build fails immediately. 1390 1391 If both :term:`REQUIRED_VERSION` and :term:`PREFERRED_VERSION` are set for 1392 the same recipe, the :term:`REQUIRED_VERSION` value applies. 1393 1394 :term:`RPROVIDES` 1395 A list of package name aliases that a package also provides. These 1396 aliases are useful for satisfying runtime dependencies of other 1397 packages both during the build and on the target (as specified by 1398 :term:`RDEPENDS`). 1399 1400 As with all package-controlling variables, you must always use the 1401 variable in conjunction with a package name override. Here is an 1402 example:: 1403 1404 RPROVIDES:${PN} = "widget-abi-2" 1405 1406 :term:`RRECOMMENDS` 1407 A list of packages that extends the usability of a package being 1408 built. The package being built does not depend on this list of 1409 packages in order to successfully build, but needs them for the 1410 extended usability. To specify runtime dependencies for packages, see 1411 the :term:`RDEPENDS` variable. 1412 1413 BitBake supports specifying versioned recommends. Although the syntax 1414 varies depending on the packaging format, BitBake hides these 1415 differences from you. Here is the general syntax to specify versions 1416 with the :term:`RRECOMMENDS` variable:: 1417 1418 RRECOMMENDS:${PN} = "package (operator version)" 1419 1420 For ``operator``, you can specify the following:: 1421 1422 = 1423 < 1424 > 1425 <= 1426 >= 1427 1428 For example, the following sets up a recommend on version 1429 1.2 or greater of the package ``foo``:: 1430 1431 RRECOMMENDS:${PN} = "foo (>= 1.2)" 1432 1433 :term:`SECTION` 1434 The section in which packages should be categorized. 1435 1436 :term:`SRC_URI` 1437 The list of source files --- local or remote. This variable tells 1438 BitBake which bits to pull for the build and how to pull them. For 1439 example, if the recipe or append file needs to fetch a single tarball 1440 from the Internet, the recipe or append file uses a :term:`SRC_URI` 1441 entry that specifies that tarball. On the other hand, if the recipe or 1442 append file needs to fetch a tarball, apply two patches, and include 1443 a custom file, the recipe or append file needs an :term:`SRC_URI` 1444 variable that specifies all those sources. 1445 1446 The following list explains the available URI protocols. URI 1447 protocols are highly dependent on particular BitBake Fetcher 1448 submodules. Depending on the fetcher BitBake uses, various URL 1449 parameters are employed. For specifics on the supported Fetchers, see 1450 the :ref:`bitbake-user-manual/bitbake-user-manual-fetching:fetchers` 1451 section. 1452 1453 - ``az://``: Fetches files from an Azure Storage account using HTTPS. 1454 1455 - ``bzr://``: Fetches files from a Bazaar revision control 1456 repository. 1457 1458 - ``ccrc://``: Fetches files from a ClearCase repository. 1459 1460 - ``cvs://``: Fetches files from a CVS revision control 1461 repository. 1462 1463 - ``file://``: Fetches files, which are usually files shipped 1464 with the Metadata, from the local machine. 1465 The path is relative to the :term:`FILESPATH` 1466 variable. Thus, the build system searches, in order, from the 1467 following directories, which are assumed to be a subdirectories of 1468 the directory in which the recipe file (``.bb``) or append file 1469 (``.bbappend``) resides: 1470 1471 - ``${BPN}``: the base recipe name without any special suffix 1472 or version numbers. 1473 1474 - ``${BP}`` - ``${BPN}-${PV}``: the base recipe name and 1475 version but without any special package name suffix. 1476 1477 - ``files``: files within a directory, which is named ``files`` 1478 and is also alongside the recipe or append file. 1479 1480 - ``ftp://``: Fetches files from the Internet using FTP. 1481 1482 - ``git://``: Fetches files from a Git revision control 1483 repository. 1484 1485 - ``gitsm://``: Fetches submodules from a Git revision control 1486 repository. 1487 1488 - ``hg://``: Fetches files from a Mercurial (``hg``) revision 1489 control repository. 1490 1491 - ``http://``: Fetches files from the Internet using HTTP. 1492 1493 - ``https://``: Fetches files from the Internet using HTTPS. 1494 1495 - ``npm://``: Fetches JavaScript modules from a registry. 1496 1497 - ``osc://``: Fetches files from an OSC (OpenSUSE Build service) 1498 revision control repository. 1499 1500 - ``p4://``: Fetches files from a Perforce (``p4``) revision 1501 control repository. 1502 1503 - ``repo://``: Fetches files from a repo (Git) repository. 1504 1505 - ``ssh://``: Fetches files from a secure shell. 1506 1507 - ``svn://``: Fetches files from a Subversion (``svn``) revision 1508 control repository. 1509 1510 Here are some additional options worth mentioning: 1511 1512 - ``downloadfilename``: Specifies the filename used when storing 1513 the downloaded file. 1514 1515 - ``name``: Specifies a name to be used for association with 1516 :term:`SRC_URI` checksums or :term:`SRCREV` when you have more than one 1517 file or git repository specified in :term:`SRC_URI`. For example:: 1518 1519 SRC_URI = "git://example.com/foo.git;branch=main;name=first \ 1520 git://example.com/bar.git;branch=main;name=second \ 1521 http://example.com/file.tar.gz;name=third" 1522 1523 SRCREV_first = "f1d2d2f924e986ac86fdf7b36c94bcdf32beec15" 1524 SRCREV_second = "e242ed3bffccdf271b7fbaf34ed72d089537b42f" 1525 SRC_URI[third.sha256sum] = "13550350a8681c84c861aac2e5b440161c2b33a3e4f302ac680ca5b686de48de" 1526 1527 - ``subdir``: Places the file (or extracts its contents) into the 1528 specified subdirectory. This option is useful for unusual tarballs 1529 or other archives that do not have their files already in a 1530 subdirectory within the archive. 1531 1532 - ``subpath``: Limits the checkout to a specific subpath of the 1533 tree when using the Git fetcher is used. 1534 1535 - ``unpack``: Controls whether or not to unpack the file if it is 1536 an archive. The default action is to unpack the file. 1537 1538 :term:`SRCDATE` 1539 The date of the source code used to build the package. This variable 1540 applies only if the source was fetched from a Source Code Manager 1541 (SCM). 1542 1543 :term:`SRCREV` 1544 The revision of the source code used to build the package. This 1545 variable applies only when using Subversion, Git, Mercurial and 1546 Bazaar. If you want to build a fixed revision and you want to avoid 1547 performing a query on the remote repository every time BitBake parses 1548 your recipe, you should specify a :term:`SRCREV` that is a full revision 1549 identifier and not just a tag. 1550 1551 :term:`SRCREV_FORMAT` 1552 Helps construct valid :term:`SRCREV` values when 1553 multiple source controlled URLs are used in 1554 :term:`SRC_URI`. 1555 1556 The system needs help constructing these values under these 1557 circumstances. Each component in the :term:`SRC_URI` is assigned a name 1558 and these are referenced in the :term:`SRCREV_FORMAT` variable. Consider 1559 an example with URLs named "machine" and "meta". In this case, 1560 :term:`SRCREV_FORMAT` could look like "machine_meta" and those names 1561 would have the SCM versions substituted into each position. Only one 1562 ``AUTOINC`` placeholder is added and if needed. And, this placeholder 1563 is placed at the start of the returned string. 1564 1565 :term:`STAMP` 1566 Specifies the base path used to create recipe stamp files. The path 1567 to an actual stamp file is constructed by evaluating this string and 1568 then appending additional information. 1569 1570 :term:`STAMPCLEAN` 1571 Specifies the base path used to create recipe stamp files. Unlike the 1572 :term:`STAMP` variable, :term:`STAMPCLEAN` can contain 1573 wildcards to match the range of files a clean operation should 1574 remove. BitBake uses a clean operation to remove any other stamps it 1575 should be removing when creating a new stamp. 1576 1577 :term:`SUMMARY` 1578 A short summary for the recipe, which is 72 characters or less. 1579 1580 :term:`SVNDIR` 1581 The directory in which files checked out of a Subversion system are 1582 stored. 1583 1584 :term:`T` 1585 Points to a directory were BitBake places temporary files, which 1586 consist mostly of task logs and scripts, when building a particular 1587 recipe. 1588 1589 :term:`TOPDIR` 1590 Points to the build directory. BitBake automatically sets this 1591 variable. 1592