xref: /openbmc/openbmc/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-ref-variables.rst (revision 96e4b4e121e0e2da1535d7d537d6a982a6ff5bc0)
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