blob: 3522d2b77b6ce883d8351b518a45f0538efb7b04 [file] [log] [blame]
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001.. 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
Andrew Geisslerc9f78652020-09-18 14:11:35 -050026.. glossary::
Patrick Williams213cb262021-08-07 19:21:33 -050027 :sorted:
Andrew Geisslerc9f78652020-09-18 14:11:35 -050028
Andrew Geisslerf0343792020-11-18 10:42:21 -060029 :term:`ASSUME_PROVIDED`
Andrew Geisslerc9f78652020-09-18 14:11:35 -050030 Lists recipe names (:term:`PN` values) BitBake does not
31 attempt to build. Instead, BitBake assumes these recipes have already
32 been built.
33
Patrick Williams213cb262021-08-07 19:21:33 -050034 In OpenEmbedded-Core, :term:`ASSUME_PROVIDED` mostly specifies native
Andrew Geisslerc9f78652020-09-18 14:11:35 -050035 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
Andrew Geissler95ac1b82021-03-31 14:34:31 -050039 :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
46 AZ_SAS = ""se=2021-01-01&sp=r&sv=2018-11-09&sr=c&skoid=<skoid>&sig=<signature>""
47
48 For more information see Microsoft's Azure Storage documentation at
49 https://docs.microsoft.com/en-us/azure/storage/common/storage-sas-overview
50
51
Andrew Geisslerf0343792020-11-18 10:42:21 -060052 :term:`B`
Andrew Geisslerc9f78652020-09-18 14:11:35 -050053 The directory in which BitBake executes functions during a recipe's
54 build process.
55
Andrew Geisslerf0343792020-11-18 10:42:21 -060056 :term:`BB_ALLOWED_NETWORKS`
Andrew Geisslerc9f78652020-09-18 14:11:35 -050057 Specifies a space-delimited list of hosts that the fetcher is allowed
58 to use to obtain the required source code. Following are
59 considerations surrounding this variable:
60
61 - This host list is only used if
62 :term:`BB_NO_NETWORK` is either not set or
63 set to "0".
64
65 - Limited support for the "``*``" wildcard character for matching
66 against the beginning of host names exists. For example, the
67 following setting matches ``git.gnu.org``, ``ftp.gnu.org``, and
68 ``foo.git.gnu.org``. ::
69
70 BB_ALLOWED_NETWORKS = "\*.gnu.org"
71
72 .. important::
73
74 The use of the "``*``" character only works at the beginning of
75 a host name and it must be isolated from the remainder of the
76 host name. You cannot use the wildcard character in any other
77 location of the name or combined with the front part of the
78 name.
79
80 For example, ``*.foo.bar`` is supported, while ``*aa.foo.bar``
81 is not.
82
83 - Mirrors not in the host list are skipped and logged in debug.
84
85 - Attempts to access networks not in the host list cause a failure.
86
Patrick Williams213cb262021-08-07 19:21:33 -050087 Using :term:`BB_ALLOWED_NETWORKS` in conjunction with
Andrew Geisslerc9f78652020-09-18 14:11:35 -050088 :term:`PREMIRRORS` is very useful. Adding the
Patrick Williams213cb262021-08-07 19:21:33 -050089 host you want to use to :term:`PREMIRRORS` results in the source code
Andrew Geisslerc9f78652020-09-18 14:11:35 -050090 being fetched from an allowed location and avoids raising an error
91 when a host that is not allowed is in a
92 :term:`SRC_URI` statement. This is because the
Patrick Williams213cb262021-08-07 19:21:33 -050093 fetcher does not attempt to use the host listed in :term:`SRC_URI` after
94 a successful fetch from the :term:`PREMIRRORS` occurs.
Andrew Geisslerc9f78652020-09-18 14:11:35 -050095
Andrew Geissler9aee5002022-03-30 16:27:02 +000096 :term:`BB_BASEHASH_IGNORE_VARS`
97 Lists variables that are excluded from checksum and dependency data.
98 Variables that are excluded can therefore change without affecting
99 the checksum mechanism. A common example would be the variable for
100 the path of the build. BitBake's output should not (and usually does
101 not) depend on the directory in which it was built.
102
Patrick Williams0ca19cc2021-08-16 14:03:13 -0500103 :term:`BB_CHECK_SSL_CERTS`
104 Specifies if SSL certificates should be checked when fetching. The default
105 value is ``1`` and certificates are not checked if the value is set to ``0``.
106
Andrew Geisslerf0343792020-11-18 10:42:21 -0600107 :term:`BB_CONSOLELOG`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500108 Specifies the path to a log file into which BitBake's user interface
109 writes output during the build.
110
Andrew Geisslerf0343792020-11-18 10:42:21 -0600111 :term:`BB_CURRENTTASK`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500112 Contains the name of the currently running task. The name does not
113 include the ``do_`` prefix.
114
Andrew Geisslerf0343792020-11-18 10:42:21 -0600115 :term:`BB_DANGLINGAPPENDS_WARNONLY`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500116 Defines how BitBake handles situations where an append file
117 (``.bbappend``) has no corresponding recipe file (``.bb``). This
118 condition often occurs when layers get out of sync (e.g. ``oe-core``
119 bumps a recipe version and the old recipe no longer exists and the
120 other layer has not been updated to the new version of the recipe
121 yet).
122
123 The default fatal behavior is safest because it is the sane reaction
124 given something is out of sync. It is important to realize when your
125 changes are no longer being applied.
126
Andrew Geisslerf0343792020-11-18 10:42:21 -0600127 :term:`BB_DEFAULT_TASK`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500128 The default task to use when none is specified (e.g. with the ``-c``
129 command line option). The task name specified should not include the
130 ``do_`` prefix.
131
Andrew Geissler9b4d8b02021-02-19 12:26:16 -0600132 :term:`BB_DEFAULT_UMASK`
133 The default umask to apply to tasks if specified and no task specific
134 umask flag is set.
135
Andrew Geisslerf0343792020-11-18 10:42:21 -0600136 :term:`BB_DISKMON_DIRS`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500137 Monitors disk space and available inodes during the build and allows
138 you to control the build based on these parameters.
139
140 Disk space monitoring is disabled by default. When setting this
Andrew Geisslerc926e172021-05-07 16:11:35 -0500141 variable, use the following form::
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500142
143 BB_DISKMON_DIRS = "<action>,<dir>,<threshold> [...]"
144
145 where:
146
147 <action> is:
Andrew Geissler7e0e3c02022-02-25 20:34:39 +0000148 HALT: Immediately halt the build when
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500149 a threshold is broken.
150 STOPTASKS: Stop the build after the currently
151 executing tasks have finished when
152 a threshold is broken.
153 WARN: Issue a warning but continue the
154 build when a threshold is broken.
155 Subsequent warnings are issued as
156 defined by the
157 BB_DISKMON_WARNINTERVAL variable,
158 which must be defined.
159
160 <dir> is:
161 Any directory you choose. You can specify one or
162 more directories to monitor by separating the
163 groupings with a space. If two directories are
164 on the same device, only the first directory
165 is monitored.
166
167 <threshold> is:
168 Either the minimum available disk space,
169 the minimum number of free inodes, or
170 both. You must specify at least one. To
171 omit one or the other, simply omit the value.
172 Specify the threshold using G, M, K for Gbytes,
173 Mbytes, and Kbytes, respectively. If you do
174 not specify G, M, or K, Kbytes is assumed by
175 default. Do not use GB, MB, or KB.
176
Andrew Geisslerc926e172021-05-07 16:11:35 -0500177 Here are some examples::
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500178
Andrew Geissler7e0e3c02022-02-25 20:34:39 +0000179 BB_DISKMON_DIRS = "HALT,${TMPDIR},1G,100K WARN,${SSTATE_DIR},1G,100K"
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500180 BB_DISKMON_DIRS = "STOPTASKS,${TMPDIR},1G"
Andrew Geissler7e0e3c02022-02-25 20:34:39 +0000181 BB_DISKMON_DIRS = "HALT,${TMPDIR},,100K"
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500182
183 The first example works only if you also set the
184 :term:`BB_DISKMON_WARNINTERVAL`
Andrew Geissler7e0e3c02022-02-25 20:34:39 +0000185 variable. This example causes the build system to immediately halt
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500186 when either the disk space in ``${TMPDIR}`` drops below 1 Gbyte or
187 the available free inodes drops below 100 Kbytes. Because two
188 directories are provided with the variable, the build system also
189 issues a warning when the disk space in the ``${SSTATE_DIR}``
190 directory drops below 1 Gbyte or the number of free inodes drops
191 below 100 Kbytes. Subsequent warnings are issued during intervals as
Patrick Williams213cb262021-08-07 19:21:33 -0500192 defined by the :term:`BB_DISKMON_WARNINTERVAL` variable.
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500193
194 The second example stops the build after all currently executing
195 tasks complete when the minimum disk space in the ``${TMPDIR}``
196 directory drops below 1 Gbyte. No disk monitoring occurs for the free
197 inodes in this case.
198
Andrew Geissler7e0e3c02022-02-25 20:34:39 +0000199 The final example immediately halts the build when the number of
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500200 free inodes in the ``${TMPDIR}`` directory drops below 100 Kbytes. No
201 disk space monitoring for the directory itself occurs in this case.
202
Andrew Geisslerf0343792020-11-18 10:42:21 -0600203 :term:`BB_DISKMON_WARNINTERVAL`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500204 Defines the disk space and free inode warning intervals.
205
Patrick Williams213cb262021-08-07 19:21:33 -0500206 If you are going to use the :term:`BB_DISKMON_WARNINTERVAL` variable, you
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500207 must also use the :term:`BB_DISKMON_DIRS`
208 variable and define its action as "WARN". During the build,
209 subsequent warnings are issued each time disk space or number of free
210 inodes further reduces by the respective interval.
211
Patrick Williams213cb262021-08-07 19:21:33 -0500212 If you do not provide a :term:`BB_DISKMON_WARNINTERVAL` variable and you
213 do use :term:`BB_DISKMON_DIRS` with the "WARN" action, the disk
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500214 monitoring interval defaults to the following:
215 BB_DISKMON_WARNINTERVAL = "50M,5K"
216
217 When specifying the variable in your configuration file, use the
Andrew Geisslerc926e172021-05-07 16:11:35 -0500218 following form::
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500219
220 BB_DISKMON_WARNINTERVAL = "<disk_space_interval>,<disk_inode_interval>"
221
222 where:
223
224 <disk_space_interval> is:
225 An interval of memory expressed in either
226 G, M, or K for Gbytes, Mbytes, or Kbytes,
227 respectively. You cannot use GB, MB, or KB.
228
229 <disk_inode_interval> is:
230 An interval of free inodes expressed in either
231 G, M, or K for Gbytes, Mbytes, or Kbytes,
232 respectively. You cannot use GB, MB, or KB.
233
Andrew Geisslerc926e172021-05-07 16:11:35 -0500234 Here is an example::
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500235
236 BB_DISKMON_DIRS = "WARN,${SSTATE_DIR},1G,100K"
237 BB_DISKMON_WARNINTERVAL = "50M,5K"
238
239 These variables cause BitBake to
240 issue subsequent warnings each time the available disk space further
241 reduces by 50 Mbytes or the number of free inodes further reduces by
242 5 Kbytes in the ``${SSTATE_DIR}`` directory. Subsequent warnings
243 based on the interval occur each time a respective interval is
244 reached beyond the initial warning (i.e. 1 Gbytes and 100 Kbytes).
245
Andrew Geissler7e0e3c02022-02-25 20:34:39 +0000246 :term:`BB_ENV_PASSTHROUGH`
247 Specifies the internal list of variables to allow through from
Patrick Williams213cb262021-08-07 19:21:33 -0500248 the external environment into BitBake's datastore. If the value of
249 this variable is not specified (which is the default), the following
250 list is used: :term:`BBPATH`, :term:`BB_PRESERVE_ENV`,
Andrew Geissler7e0e3c02022-02-25 20:34:39 +0000251 :term:`BB_ENV_PASSTHROUGH`, and :term:`BB_ENV_PASSTHROUGH_ADDITIONS`.
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500252
253 .. note::
254
255 You must set this variable in the external environment in order
256 for it to work.
257
Andrew Geissler9aee5002022-03-30 16:27:02 +0000258 :term:`BB_ENV_PASSTHROUGH_ADDITIONS`
259 Specifies an additional set of variables to allow through from the
260 external environment into BitBake's datastore. This list of variables
261 are on top of the internal list set in
262 :term:`BB_ENV_PASSTHROUGH`.
263
264 .. note::
265
266 You must set this variable in the external environment in order
267 for it to work.
268
Andrew Geisslerf0343792020-11-18 10:42:21 -0600269 :term:`BB_FETCH_PREMIRRORONLY`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500270 When set to "1", causes BitBake's fetcher module to only search
271 :term:`PREMIRRORS` for files. BitBake will not
272 search the main :term:`SRC_URI` or
273 :term:`MIRRORS`.
274
Andrew Geisslerf0343792020-11-18 10:42:21 -0600275 :term:`BB_FILENAME`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500276 Contains the filename of the recipe that owns the currently running
277 task. For example, if the ``do_fetch`` task that resides in the
Patrick Williams213cb262021-08-07 19:21:33 -0500278 ``my-recipe.bb`` is executing, the :term:`BB_FILENAME` variable contains
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500279 "/foo/path/my-recipe.bb".
280
Andrew Geisslerf0343792020-11-18 10:42:21 -0600281 :term:`BB_GENERATE_MIRROR_TARBALLS`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500282 Causes tarballs of the Git repositories, including the Git metadata,
283 to be placed in the :term:`DL_DIR` directory. Anyone
284 wishing to create a source mirror would want to enable this variable.
285
286 For performance reasons, creating and placing tarballs of the Git
287 repositories is not the default action by BitBake. ::
288
289 BB_GENERATE_MIRROR_TARBALLS = "1"
290
Andrew Geisslereff27472021-10-29 15:35:00 -0500291 :term:`BB_GENERATE_SHALLOW_TARBALLS`
292 Setting this variable to "1" when :term:`BB_GIT_SHALLOW` is also set to
293 "1" causes bitbake to generate shallow mirror tarballs when fetching git
294 repositories. The number of commits included in the shallow mirror
295 tarballs is controlled by :term:`BB_GIT_SHALLOW_DEPTH`.
296
297 If both :term:`BB_GIT_SHALLOW` and :term:`BB_GENERATE_MIRROR_TARBALLS` are
298 enabled, bitbake will generate shallow mirror tarballs by default for git
299 repositories. This separate variable exists so that shallow tarball
300 generation can be enabled without needing to also enable normal mirror
301 generation if it is not desired.
302
303 For example usage, see :term:`BB_GIT_SHALLOW`.
304
305 :term:`BB_GIT_SHALLOW`
306 Setting this variable to "1" enables the support for fetching, using and
307 generating mirror tarballs of `shallow git repositories <https://riptutorial.com/git/example/4584/shallow-clone>`_.
308 The external `git-make-shallow <https://git.openembedded.org/bitbake/tree/bin/git-make-shallow>`_
309 script is used for shallow mirror tarball creation.
310
311 When :term:`BB_GIT_SHALLOW` is enabled, bitbake will attempt to fetch a shallow
312 mirror tarball. If the shallow mirror tarball cannot be fetched, it will
313 try to fetch the full mirror tarball and use that.
314
315 When a mirror tarball is not available, a full git clone will be performed
316 regardless of whether this variable is set or not. Support for shallow
317 clones is not currently implemented as git does not directly support
318 shallow cloning a particular git commit hash (it only supports cloning
319 from a tag or branch reference).
320
321 See also :term:`BB_GIT_SHALLOW_DEPTH` and
322 :term:`BB_GENERATE_SHALLOW_TARBALLS`.
323
324 Example usage::
325
326 BB_GIT_SHALLOW ?= "1"
327
328 # Keep only the top commit
329 BB_GIT_SHALLOW_DEPTH ?= "1"
330
331 # This defaults to enabled if both BB_GIT_SHALLOW and
332 # BB_GENERATE_MIRROR_TARBALLS are enabled
333 BB_GENERATE_SHALLOW_TARBALLS ?= "1"
334
335 :term:`BB_GIT_SHALLOW_DEPTH`
336 When used with :term:`BB_GENERATE_SHALLOW_TARBALLS`, this variable sets
337 the number of commits to include in generated shallow mirror tarballs.
338 With a depth of 1, only the commit referenced in :term:`SRCREV` is
339 included in the shallow mirror tarball. Increasing the depth includes
340 additional parent commits, working back through the commit history.
341
342 If this variable is unset, bitbake will default to a depth of 1 when
343 generating shallow mirror tarballs.
344
345 For example usage, see :term:`BB_GIT_SHALLOW`.
346
Andrew Geisslerf0343792020-11-18 10:42:21 -0600347 :term:`BB_HASHCHECK_FUNCTION`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500348 Specifies the name of the function to call during the "setscene" part
349 of the task's execution in order to validate the list of task hashes.
350 The function returns the list of setscene tasks that should be
351 executed.
352
353 At this point in the execution of the code, the objective is to
354 quickly verify if a given setscene function is likely to work or not.
355 It's easier to check the list of setscene functions in one pass than
356 to call many individual tasks. The returned list need not be
357 completely accurate. A given setscene task can still later fail.
358 However, the more accurate the data returned, the more efficient the
359 build will be.
360
Andrew Geissler7e0e3c02022-02-25 20:34:39 +0000361 :term:`BB_HASHCONFIG_IGNORE_VARS`
Patrick Williams213cb262021-08-07 19:21:33 -0500362 Lists variables that are excluded from base configuration checksum,
363 which is used to determine if the cache can be reused.
364
365 One of the ways BitBake determines whether to re-parse the main
366 metadata is through checksums of the variables in the datastore of
367 the base configuration data. There are variables that you typically
368 want to exclude when checking whether or not to re-parse and thus
369 rebuild the cache. As an example, you would usually exclude ``TIME``
370 and ``DATE`` because these variables are always changing. If you did
371 not exclude them, BitBake would never reuse the cache.
372
Andrew Geissler09036742021-06-25 14:25:14 -0500373 :term:`BB_HASHSERVE`
374 Specifies the Hash Equivalence server to use.
375
376 If set to ``auto``, BitBake automatically starts its own server
Andrew Geissler595f6302022-01-24 19:11:47 +0000377 over a UNIX domain socket. An option is to connect this server
378 to an upstream one, by setting :term:`BB_HASHSERVE_UPSTREAM`.
Andrew Geissler09036742021-06-25 14:25:14 -0500379
Andrew Geissler595f6302022-01-24 19:11:47 +0000380 If set to ``unix://path``, BitBake will connect to an existing
381 hash server available over a UNIX domain socket.
382
383 If set to ``host:port``, BitBake will connect to a remote server on the
Andrew Geissler09036742021-06-25 14:25:14 -0500384 specified host. This allows multiple clients to share the same
385 hash equivalence data.
386
Andrew Geissler595f6302022-01-24 19:11:47 +0000387 The remote server can be started manually through
388 the ``bin/bitbake-hashserv`` script provided by BitBake,
389 which supports UNIX domain sockets too. This script also allows
390 to start the server in read-only mode, to avoid accepting
391 equivalences that correspond to Share State caches that are
392 only available on specific clients.
393
394 :term:`BB_HASHSERVE_UPSTREAM`
395 Specifies an upstream Hash Equivalence server.
396
397 This optional setting is only useful when a local Hash Equivalence
398 server is started (setting :term:`BB_HASHSERVE` to ``auto``),
399 and you wish the local server to query an upstream server for
400 Hash Equivalence data.
401
402 Example usage::
403
Patrick Williamsdb4c27e2022-08-05 08:10:29 -0500404 BB_HASHSERVE_UPSTREAM = "hashserv.yocto.io:8687"
Andrew Geissler595f6302022-01-24 19:11:47 +0000405
Andrew Geisslerf0343792020-11-18 10:42:21 -0600406 :term:`BB_INVALIDCONF`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500407 Used in combination with the ``ConfigParsed`` event to trigger
408 re-parsing the base metadata (i.e. all the recipes). The
409 ``ConfigParsed`` event can set the variable to trigger the re-parse.
410 You must be careful to avoid recursive loops with this functionality.
411
Andrew Geisslerf0343792020-11-18 10:42:21 -0600412 :term:`BB_LOGCONFIG`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500413 Specifies the name of a config file that contains the user logging
414 configuration. See
415 :ref:`bitbake-user-manual/bitbake-user-manual-execution:logging`
416 for additional information
417
Andrew Geisslerf0343792020-11-18 10:42:21 -0600418 :term:`BB_LOGFMT`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500419 Specifies the name of the log files saved into
Patrick Williams213cb262021-08-07 19:21:33 -0500420 ``${``\ :term:`T`\ ``}``. By default, the :term:`BB_LOGFMT`
Andrew Geissler5199d832021-09-24 16:47:35 -0500421 variable is undefined and the log filenames get created using the
Andrew Geisslerc926e172021-05-07 16:11:35 -0500422 following form::
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500423
424 log.{task}.{pid}
425
426 If you want to force log files to take a specific name, you can set this
427 variable in a configuration file.
428
Andrew Geissler9aee5002022-03-30 16:27:02 +0000429 :term:`BB_MULTI_PROVIDER_ALLOWED`
430 Allows you to suppress BitBake warnings caused when building two
431 separate recipes that provide the same output.
432
433 BitBake normally issues a warning when building two different recipes
434 where each provides the same output. This scenario is usually
435 something the user does not want. However, cases do exist where it
436 makes sense, particularly in the ``virtual/*`` namespace. You can use
437 this variable to suppress BitBake's warnings.
438
439 To use the variable, list provider names (e.g. recipe names,
440 ``virtual/kernel``, and so forth).
441
Andrew Geisslerf0343792020-11-18 10:42:21 -0600442 :term:`BB_NICE_LEVEL`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500443 Allows BitBake to run at a specific priority (i.e. nice level).
444 System permissions usually mean that BitBake can reduce its priority
445 but not raise it again. See :term:`BB_TASK_NICE_LEVEL` for
446 additional information.
447
Andrew Geisslerf0343792020-11-18 10:42:21 -0600448 :term:`BB_NO_NETWORK`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500449 Disables network access in the BitBake fetcher modules. With this
450 access disabled, any command that attempts to access the network
451 becomes an error.
452
453 Disabling network access is useful for testing source mirrors,
454 running builds when not connected to the Internet, and when operating
455 in certain kinds of firewall environments.
456
Patrick Williams213cb262021-08-07 19:21:33 -0500457 :term:`BB_NUMBER_PARSE_THREADS`
458 Sets the number of threads BitBake uses when parsing. By default, the
459 number of threads is equal to the number of cores on the system.
460
Andrew Geisslerf0343792020-11-18 10:42:21 -0600461 :term:`BB_NUMBER_THREADS`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500462 The maximum number of tasks BitBake should run in parallel at any one
463 time. If your host development system supports multiple cores, a good
464 rule of thumb is to set this variable to twice the number of cores.
465
Andrew Geisslerf0343792020-11-18 10:42:21 -0600466 :term:`BB_ORIGENV`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500467 Contains a copy of the original external environment in which BitBake
Andrew Geissler7e0e3c02022-02-25 20:34:39 +0000468 was run. The copy is taken before any variable values configured to
469 pass through from the external environment are filtered into BitBake's
470 datastore.
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500471
472 .. note::
473
474 The contents of this variable is a datastore object that can be
475 queried using the normal datastore operations.
476
Andrew Geisslerf0343792020-11-18 10:42:21 -0600477 :term:`BB_PRESERVE_ENV`
Andrew Geissler7e0e3c02022-02-25 20:34:39 +0000478 Disables environment filtering and instead allows all variables through
479 from the external environment into BitBake's datastore.
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500480
481 .. note::
482
483 You must set this variable in the external environment in order
484 for it to work.
485
Andrew Geissler87f5cff2022-09-30 13:13:31 -0500486 :term:`BB_PRESSURE_MAX_CPU`
Patrick Williams2390b1b2022-11-03 13:47:49 -0500487 Specifies a maximum CPU pressure threshold, above which BitBake's
488 scheduler will not start new tasks (providing there is at least
489 one active task). If no value is set, CPU pressure is not
490 monitored when starting tasks.
491
492 The pressure data is calculated based upon what Linux kernels since
493 version 4.20 expose under ``/proc/pressure``. The threshold represents
494 the difference in "total" pressure from the previous second. The
495 minimum value is 1.0 (extremely slow builds) and the maximum is
496 1000000 (a pressure value unlikely to ever be reached).
497
498 This threshold can be set in ``conf/local.conf`` as::
Andrew Geissler87f5cff2022-09-30 13:13:31 -0500499
500 BB_PRESSURE_MAX_CPU = "500"
501
502 :term:`BB_PRESSURE_MAX_IO`
Patrick Williams2390b1b2022-11-03 13:47:49 -0500503 Specifies a maximum I/O pressure threshold, above which BitBake's
504 scheduler will not start new tasks (providing there is at least
505 one active task). If no value is set, I/O pressure is not
506 monitored when starting tasks.
507
508 The pressure data is calculated based upon what Linux kernels since
509 version 4.20 expose under ``/proc/pressure``. The threshold represents
510 the difference in "total" pressure from the previous second. The
511 minimum value is 1.0 (extremely slow builds) and the maximum is
512 1000000 (a pressure value unlikely to ever be reached).
513
514 At this point in time, experiments show that IO pressure tends to
515 be short-lived and regulating just the CPU with
516 :term:`BB_PRESSURE_MAX_CPU` can help to reduce it.
Andrew Geissler87f5cff2022-09-30 13:13:31 -0500517
518 :term:`BB_PRESSURE_MAX_MEMORY`
Patrick Williams2390b1b2022-11-03 13:47:49 -0500519
520 Specifies a maximum memory pressure threshold, above which BitBake's
521 scheduler will not start new tasks (providing there is at least
522 one active task). If no value is set, memory pressure is not
523 monitored when starting tasks.
524
525 The pressure data is calculated based upon what Linux kernels since
526 version 4.20 expose under ``/proc/pressure``. The threshold represents
527 the difference in "total" pressure from the previous second. The
528 minimum value is 1.0 (extremely slow builds) and the maximum is
529 1000000 (a pressure value unlikely to ever be reached).
530
531 Memory pressure is experienced when time is spent swapping,
532 refaulting pages from the page cache or performing direct reclaim.
533 This is why memory pressure is rarely seen, but setting this variable
534 might be useful as a last resort to prevent OOM errors if they are
535 occurring during builds.
Andrew Geissler87f5cff2022-09-30 13:13:31 -0500536
Andrew Geisslerf0343792020-11-18 10:42:21 -0600537 :term:`BB_RUNFMT`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500538 Specifies the name of the executable script files (i.e. run files)
539 saved into ``${``\ :term:`T`\ ``}``. By default, the
Andrew Geissler5199d832021-09-24 16:47:35 -0500540 :term:`BB_RUNFMT` variable is undefined and the run filenames get
Andrew Geisslerc926e172021-05-07 16:11:35 -0500541 created using the following form::
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500542
543 run.{task}.{pid}
544
545 If you want to force run files to take a specific name, you can set this
546 variable in a configuration file.
547
Andrew Geisslerf0343792020-11-18 10:42:21 -0600548 :term:`BB_RUNTASK`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500549 Contains the name of the currently executing task. The value includes
550 the "do\_" prefix. For example, if the currently executing task is
551 ``do_config``, the value is "do_config".
552
Andrew Geisslerf0343792020-11-18 10:42:21 -0600553 :term:`BB_SCHEDULER`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500554 Selects the name of the scheduler to use for the scheduling of
555 BitBake tasks. Three options exist:
556
Andrew Geissler9aee5002022-03-30 16:27:02 +0000557 - *basic* --- the basic framework from which everything derives. Using
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500558 this option causes tasks to be ordered numerically as they are
559 parsed.
560
Andrew Geissler9aee5002022-03-30 16:27:02 +0000561 - *speed* --- executes tasks first that have more tasks depending on
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500562 them. The "speed" option is the default.
563
Andrew Geissler9aee5002022-03-30 16:27:02 +0000564 - *completion* --- causes the scheduler to try to complete a given
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500565 recipe once its build has started.
566
Andrew Geisslerf0343792020-11-18 10:42:21 -0600567 :term:`BB_SCHEDULERS`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500568 Defines custom schedulers to import. Custom schedulers need to be
569 derived from the ``RunQueueScheduler`` class.
570
571 For information how to select a scheduler, see the
572 :term:`BB_SCHEDULER` variable.
573
Andrew Geisslerf0343792020-11-18 10:42:21 -0600574 :term:`BB_SETSCENE_DEPVALID`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500575 Specifies a function BitBake calls that determines whether BitBake
576 requires a setscene dependency to be met.
577
578 When running a setscene task, BitBake needs to know which
579 dependencies of that setscene task also need to be run. Whether
580 dependencies also need to be run is highly dependent on the metadata.
581 The function specified by this variable returns a "True" or "False"
582 depending on whether the dependency needs to be met.
583
Andrew Geisslerf0343792020-11-18 10:42:21 -0600584 :term:`BB_SIGNATURE_EXCLUDE_FLAGS`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500585 Lists variable flags (varflags) that can be safely excluded from
586 checksum and dependency data for keys in the datastore. When
587 generating checksum or dependency data for keys in the datastore, the
588 flags set against that key are normally included in the checksum.
589
590 For more information on varflags, see the
591 ":ref:`bitbake-user-manual/bitbake-user-manual-metadata:variable flags`"
592 section.
593
Andrew Geisslerf0343792020-11-18 10:42:21 -0600594 :term:`BB_SIGNATURE_HANDLER`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500595 Defines the name of the signature handler BitBake uses. The signature
596 handler defines the way stamp files are created and handled, if and
597 how the signature is incorporated into the stamps, and how the
598 signature itself is generated.
599
600 A new signature handler can be added by injecting a class derived
601 from the ``SignatureGenerator`` class into the global namespace.
602
Andrew Geisslerf0343792020-11-18 10:42:21 -0600603 :term:`BB_SRCREV_POLICY`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500604 Defines the behavior of the fetcher when it interacts with source
605 control systems and dynamic source revisions. The
Patrick Williams213cb262021-08-07 19:21:33 -0500606 :term:`BB_SRCREV_POLICY` variable is useful when working without a
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500607 network.
608
609 The variable can be set using one of two policies:
610
Andrew Geissler9aee5002022-03-30 16:27:02 +0000611 - *cache* --- retains the value the system obtained previously rather
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500612 than querying the source control system each time.
613
Andrew Geissler9aee5002022-03-30 16:27:02 +0000614 - *clear* --- queries the source controls system every time. With this
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500615 policy, there is no cache. The "clear" policy is the default.
616
Andrew Geisslerf0343792020-11-18 10:42:21 -0600617 :term:`BB_STRICT_CHECKSUM`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500618 Sets a more strict checksum mechanism for non-local URLs. Setting
619 this variable to a value causes BitBake to report an error if it
620 encounters a non-local URL that does not have at least one checksum
621 specified.
622
Andrew Geisslerf0343792020-11-18 10:42:21 -0600623 :term:`BB_TASK_IONICE_LEVEL`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500624 Allows adjustment of a task's Input/Output priority. During
625 Autobuilder testing, random failures can occur for tasks due to I/O
626 starvation. These failures occur during various QEMU runtime
Patrick Williams213cb262021-08-07 19:21:33 -0500627 timeouts. You can use the :term:`BB_TASK_IONICE_LEVEL` variable to adjust
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500628 the I/O priority of these tasks.
629
630 .. note::
631
632 This variable works similarly to the :term:`BB_TASK_NICE_LEVEL`
633 variable except with a task's I/O priorities.
634
Andrew Geisslerc926e172021-05-07 16:11:35 -0500635 Set the variable as follows::
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500636
637 BB_TASK_IONICE_LEVEL = "class.prio"
638
639 For *class*, the default value is "2", which is a best effort. You can use
640 "1" for realtime and "3" for idle. If you want to use realtime, you
641 must have superuser privileges.
642
643 For *prio*, you can use any value from "0", which is the highest
644 priority, to "7", which is the lowest. The default value is "4". You
645 do not need any special privileges to use this range of priority
646 values.
647
648 .. note::
649
650 In order for your I/O priority settings to take effect, you need the
651 Completely Fair Queuing (CFQ) Scheduler selected for the backing block
652 device. To select the scheduler, use the following command form where
Andrew Geisslerc926e172021-05-07 16:11:35 -0500653 device is the device (e.g. sda, sdb, and so forth)::
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500654
Andrew Geisslerf0343792020-11-18 10:42:21 -0600655 $ sudo sh -c "echo cfq > /sys/block/device/queu/scheduler"
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500656
Andrew Geisslerf0343792020-11-18 10:42:21 -0600657 :term:`BB_TASK_NICE_LEVEL`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500658 Allows specific tasks to change their priority (i.e. nice level).
659
660 You can use this variable in combination with task overrides to raise
661 or lower priorities of specific tasks. For example, on the `Yocto
Andrew Geisslereff27472021-10-29 15:35:00 -0500662 Project <https://www.yoctoproject.org>`__ autobuilder, QEMU emulation
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500663 in images is given a higher priority as compared to build tasks to
664 ensure that images do not suffer timeouts on loaded systems.
665
Andrew Geisslerf0343792020-11-18 10:42:21 -0600666 :term:`BB_TASKHASH`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500667 Within an executing task, this variable holds the hash of the task as
668 returned by the currently enabled signature generator.
669
Andrew Geisslerf0343792020-11-18 10:42:21 -0600670 :term:`BB_VERBOSE_LOGS`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500671 Controls how verbose BitBake is during builds. If set, shell scripts
672 echo commands and shell script output appears on standard out
673 (stdout).
674
Andrew Geisslerf0343792020-11-18 10:42:21 -0600675 :term:`BB_WORKERCONTEXT`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500676 Specifies if the current context is executing a task. BitBake sets
677 this variable to "1" when a task is being executed. The value is not
678 set when the task is in server context during parsing or event
679 handling.
680
Andrew Geisslerf0343792020-11-18 10:42:21 -0600681 :term:`BBCLASSEXTEND`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500682 Allows you to extend a recipe so that it builds variants of the
683 software. Some examples of these variants for recipes from the
684 OpenEmbedded-Core metadata are "natives" such as ``quilt-native``,
685 which is a copy of Quilt built to run on the build system; "crosses"
686 such as ``gcc-cross``, which is a compiler built to run on the build
687 machine but produces binaries that run on the target ``MACHINE``;
688 "nativesdk", which targets the SDK machine instead of ``MACHINE``;
689 and "mulitlibs" in the form "``multilib:``\ multilib_name".
690
691 To build a different variant of the recipe with a minimal amount of
692 code, it usually is as simple as adding the variable to your recipe.
693 Here are two examples. The "native" variants are from the
Andrew Geisslerc926e172021-05-07 16:11:35 -0500694 OpenEmbedded-Core metadata::
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500695
696 BBCLASSEXTEND =+ "native nativesdk"
697 BBCLASSEXTEND =+ "multilib:multilib_name"
698
699 .. note::
700
Patrick Williams213cb262021-08-07 19:21:33 -0500701 Internally, the :term:`BBCLASSEXTEND` mechanism generates recipe
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500702 variants by rewriting variable values and applying overrides such
703 as ``_class-native``. For example, to generate a native version of
704 a recipe, a :term:`DEPENDS` on "foo" is
Patrick Williams213cb262021-08-07 19:21:33 -0500705 rewritten to a :term:`DEPENDS` on "foo-native".
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500706
Patrick Williams213cb262021-08-07 19:21:33 -0500707 Even when using :term:`BBCLASSEXTEND`, the recipe is only parsed once.
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500708 Parsing once adds some limitations. For example, it is not
709 possible to include a different file depending on the variant,
710 since ``include`` statements are processed when the recipe is
711 parsed.
712
Andrew Geisslerf0343792020-11-18 10:42:21 -0600713 :term:`BBDEBUG`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500714 Sets the BitBake debug output level to a specific value as
715 incremented by the ``-D`` command line option.
716
717 .. note::
718
719 You must set this variable in the external environment in order
720 for it to work.
721
Andrew Geisslerf0343792020-11-18 10:42:21 -0600722 :term:`BBFILE_COLLECTIONS`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500723 Lists the names of configured layers. These names are used to find
724 the other ``BBFILE_*`` variables. Typically, each layer appends its
725 name to this variable in its ``conf/layer.conf`` file.
726
Andrew Geisslerf0343792020-11-18 10:42:21 -0600727 :term:`BBFILE_PATTERN`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500728 Variable that expands to match files from
729 :term:`BBFILES` in a particular layer. This
730 variable is used in the ``conf/layer.conf`` file and must be suffixed
731 with the name of the specific layer (e.g.
732 ``BBFILE_PATTERN_emenlow``).
733
Andrew Geisslerf0343792020-11-18 10:42:21 -0600734 :term:`BBFILE_PRIORITY`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500735 Assigns the priority for recipe files in each layer.
736
737 This variable is useful in situations where the same recipe appears
738 in more than one layer. Setting this variable allows you to
739 prioritize a layer against other layers that contain the same recipe
Andrew Geissler9aee5002022-03-30 16:27:02 +0000740 --- effectively letting you control the precedence for the multiple
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500741 layers. The precedence established through this variable stands
742 regardless of a recipe's version (:term:`PV` variable).
Patrick Williams213cb262021-08-07 19:21:33 -0500743 For example, a layer that has a recipe with a higher :term:`PV` value but
744 for which the :term:`BBFILE_PRIORITY` is set to have a lower precedence
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500745 still has a lower precedence.
746
Patrick Williams213cb262021-08-07 19:21:33 -0500747 A larger value for the :term:`BBFILE_PRIORITY` variable results in a
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500748 higher precedence. For example, the value 6 has a higher precedence
Patrick Williams213cb262021-08-07 19:21:33 -0500749 than the value 5. If not specified, the :term:`BBFILE_PRIORITY` variable
750 is set based on layer dependencies (see the :term:`LAYERDEPENDS` variable
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500751 for more information. The default priority, if unspecified for a
752 layer with no dependencies, is the lowest defined priority + 1 (or 1
753 if no priorities are defined).
754
755 .. tip::
756
757 You can use the command bitbake-layers show-layers to list all
758 configured layers along with their priorities.
759
Andrew Geisslerf0343792020-11-18 10:42:21 -0600760 :term:`BBFILES`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500761 A space-separated list of recipe files BitBake uses to build
762 software.
763
764 When specifying recipe files, you can pattern match using Python's
765 `glob <https://docs.python.org/3/library/glob.html>`_ syntax.
766 For details on the syntax, see the documentation by following the
767 previous link.
768
Andrew Geissler95ac1b82021-03-31 14:34:31 -0500769 :term:`BBFILES_DYNAMIC`
770 Activates content depending on presence of identified layers. You
771 identify the layers by the collections that the layers define.
772
Patrick Williams213cb262021-08-07 19:21:33 -0500773 Use the :term:`BBFILES_DYNAMIC` variable to avoid ``.bbappend`` files whose
Andrew Geissler95ac1b82021-03-31 14:34:31 -0500774 corresponding ``.bb`` file is in a layer that attempts to modify other
775 layers through ``.bbappend`` but does not want to introduce a hard
776 dependency on those other layers.
777
778 Additionally you can prefix the rule with "!" to add ``.bbappend`` and
779 ``.bb`` files in case a layer is not present. Use this avoid hard
780 dependency on those other layers.
781
Patrick Williams213cb262021-08-07 19:21:33 -0500782 Use the following form for :term:`BBFILES_DYNAMIC`::
Andrew Geissler95ac1b82021-03-31 14:34:31 -0500783
784 collection_name:filename_pattern
785
786 The following example identifies two collection names and two filename
Andrew Geisslerc926e172021-05-07 16:11:35 -0500787 patterns::
Andrew Geissler95ac1b82021-03-31 14:34:31 -0500788
789 BBFILES_DYNAMIC += "\
790 clang-layer:${LAYERDIR}/bbappends/meta-clang/*/*/*.bbappend \
791 core:${LAYERDIR}/bbappends/openembedded-core/meta/*/*/*.bbappend \
792 "
793
794 When the collection name is prefixed with "!" it will add the file pattern in case
Andrew Geisslerc926e172021-05-07 16:11:35 -0500795 the layer is absent::
Andrew Geissler95ac1b82021-03-31 14:34:31 -0500796
797 BBFILES_DYNAMIC += "\
798 !clang-layer:${LAYERDIR}/backfill/meta-clang/*/*/*.bb \
799 "
800
801 This next example shows an error message that occurs because invalid
Andrew Geissler7e0e3c02022-02-25 20:34:39 +0000802 entries are found, which cause parsing to fail::
Andrew Geissler95ac1b82021-03-31 14:34:31 -0500803
804 ERROR: BBFILES_DYNAMIC entries must be of the form {!}<collection name>:<filename pattern>, not:
805 /work/my-layer/bbappends/meta-security-isafw/*/*/*.bbappend
806 /work/my-layer/bbappends/openembedded-core/meta/*/*/*.bbappend
807
Andrew Geisslerf0343792020-11-18 10:42:21 -0600808 :term:`BBINCLUDED`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500809 Contains a space-separated list of all of all files that BitBake's
810 parser included during parsing of the current file.
811
Andrew Geisslerf0343792020-11-18 10:42:21 -0600812 :term:`BBINCLUDELOGS`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500813 If set to a value, enables printing the task log when reporting a
814 failed task.
815
Andrew Geisslerf0343792020-11-18 10:42:21 -0600816 :term:`BBINCLUDELOGS_LINES`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500817 If :term:`BBINCLUDELOGS` is set, specifies
818 the maximum number of lines from the task log file to print when
Patrick Williams213cb262021-08-07 19:21:33 -0500819 reporting a failed task. If you do not set :term:`BBINCLUDELOGS_LINES`,
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500820 the entire log is printed.
821
Andrew Geisslerf0343792020-11-18 10:42:21 -0600822 :term:`BBLAYERS`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500823 Lists the layers to enable during the build. This variable is defined
824 in the ``bblayers.conf`` configuration file in the build directory.
Andrew Geisslerc926e172021-05-07 16:11:35 -0500825 Here is an example::
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500826
827 BBLAYERS = " \
828 /home/scottrif/poky/meta \
829 /home/scottrif/poky/meta-yocto \
830 /home/scottrif/poky/meta-yocto-bsp \
831 /home/scottrif/poky/meta-mykernel \
832 "
833
834 This example enables four layers, one of which is a custom, user-defined
835 layer named ``meta-mykernel``.
836
Andrew Geisslerf0343792020-11-18 10:42:21 -0600837 :term:`BBLAYERS_FETCH_DIR`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500838 Sets the base location where layers are stored. This setting is used
839 in conjunction with ``bitbake-layers layerindex-fetch`` and tells
840 ``bitbake-layers`` where to place the fetched layers.
841
Andrew Geisslerf0343792020-11-18 10:42:21 -0600842 :term:`BBMASK`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500843 Prevents BitBake from processing recipes and recipe append files.
844
Patrick Williams213cb262021-08-07 19:21:33 -0500845 You can use the :term:`BBMASK` variable to "hide" these ``.bb`` and
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500846 ``.bbappend`` files. BitBake ignores any recipe or recipe append
847 files that match any of the expressions. It is as if BitBake does not
848 see them at all. Consequently, matching files are not parsed or
849 otherwise used by BitBake.
850
851 The values you provide are passed to Python's regular expression
852 compiler. Consequently, the syntax follows Python's Regular
853 Expression (re) syntax. The expressions are compared against the full
854 paths to the files. For complete syntax information, see Python's
855 documentation at http://docs.python.org/3/library/re.html.
856
857 The following example uses a complete regular expression to tell
858 BitBake to ignore all recipe and recipe append files in the
Andrew Geisslerc926e172021-05-07 16:11:35 -0500859 ``meta-ti/recipes-misc/`` directory::
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500860
861 BBMASK = "meta-ti/recipes-misc/"
862
863 If you want to mask out multiple directories or recipes, you can
864 specify multiple regular expression fragments. This next example
Andrew Geisslerc926e172021-05-07 16:11:35 -0500865 masks out multiple directories and individual recipes::
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500866
867 BBMASK += "/meta-ti/recipes-misc/ meta-ti/recipes-ti/packagegroup/"
868 BBMASK += "/meta-oe/recipes-support/"
869 BBMASK += "/meta-foo/.*/openldap"
870 BBMASK += "opencv.*\.bbappend"
871 BBMASK += "lzma"
872
873 .. note::
874
875 When specifying a directory name, use the trailing slash character
876 to ensure you match just that directory name.
877
Andrew Geisslerf0343792020-11-18 10:42:21 -0600878 :term:`BBMULTICONFIG`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500879 Enables BitBake to perform multiple configuration builds and lists
880 each separate configuration (multiconfig). You can use this variable
881 to cause BitBake to build multiple targets where each target has a
Patrick Williams213cb262021-08-07 19:21:33 -0500882 separate configuration. Define :term:`BBMULTICONFIG` in your
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500883 ``conf/local.conf`` configuration file.
884
885 As an example, the following line specifies three multiconfigs, each
Andrew Geisslerc926e172021-05-07 16:11:35 -0500886 having a separate configuration file::
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500887
888 BBMULTIFONFIG = "configA configB configC"
889
890 Each configuration file you use must reside in the
891 build directory within a directory named ``conf/multiconfig`` (e.g.
892 build_directory\ ``/conf/multiconfig/configA.conf``).
893
Patrick Williams213cb262021-08-07 19:21:33 -0500894 For information on how to use :term:`BBMULTICONFIG` in an environment
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500895 that supports building targets with multiple configurations, see the
896 ":ref:`bitbake-user-manual/bitbake-user-manual-intro:executing a multiple configuration build`"
897 section.
898
Andrew Geisslerf0343792020-11-18 10:42:21 -0600899 :term:`BBPATH`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500900 Used by BitBake to locate class (``.bbclass``) and configuration
901 (``.conf``) files. This variable is analogous to the ``PATH``
902 variable.
903
904 If you run BitBake from a directory outside of the build directory,
Patrick Williams213cb262021-08-07 19:21:33 -0500905 you must be sure to set :term:`BBPATH` to point to the build directory.
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500906 Set the variable as you would any environment variable and then run
Andrew Geisslerc926e172021-05-07 16:11:35 -0500907 BitBake::
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500908
909 $ BBPATH="build_directory"
910 $ export BBPATH
911 $ bitbake target
912
Andrew Geisslerf0343792020-11-18 10:42:21 -0600913 :term:`BBSERVER`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500914 Points to the server that runs memory-resident BitBake. The variable
915 is only used when you employ memory-resident BitBake.
916
Andrew Geisslerf0343792020-11-18 10:42:21 -0600917 :term:`BBTARGETS`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500918 Allows you to use a configuration file to add to the list of
919 command-line target recipes you want to build.
920
Andrew Geisslerf0343792020-11-18 10:42:21 -0600921 :term:`BITBAKE_UI`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500922 Used to specify the UI module to use when running BitBake. Using this
923 variable is equivalent to using the ``-u`` command-line option.
924
925 .. note::
926
927 You must set this variable in the external environment in order
928 for it to work.
929
Andrew Geisslerf0343792020-11-18 10:42:21 -0600930 :term:`BUILDNAME`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500931 A name assigned to the build. The name defaults to a datetime stamp
932 of when the build was started but can be defined by the metadata.
933
Andrew Geisslerf0343792020-11-18 10:42:21 -0600934 :term:`BZRDIR`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500935 The directory in which files checked out of a Bazaar system are
936 stored.
937
Andrew Geisslerf0343792020-11-18 10:42:21 -0600938 :term:`CACHE`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500939 Specifies the directory BitBake uses to store a cache of the metadata
940 so it does not need to be parsed every time BitBake is started.
941
Andrew Geisslerf0343792020-11-18 10:42:21 -0600942 :term:`CVSDIR`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500943 The directory in which files checked out under the CVS system are
944 stored.
945
Andrew Geisslerf0343792020-11-18 10:42:21 -0600946 :term:`DEFAULT_PREFERENCE`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500947 Specifies a weak bias for recipe selection priority.
948
949 The most common usage of this is variable is to set it to "-1" within
950 a recipe for a development version of a piece of software. Using the
951 variable in this way causes the stable version of the recipe to build
Patrick Williams213cb262021-08-07 19:21:33 -0500952 by default in the absence of :term:`PREFERRED_VERSION` being used to
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500953 build the development version.
954
955 .. note::
956
957 The bias provided by DEFAULT_PREFERENCE is weak and is overridden by
958 :term:`BBFILE_PRIORITY` if that variable is different between two
959 layers that contain different versions of the same recipe.
960
Andrew Geisslerf0343792020-11-18 10:42:21 -0600961 :term:`DEPENDS`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500962 Lists a recipe's build-time dependencies (i.e. other recipe files).
963
964 Consider this simple example for two recipes named "a" and "b" that
Patrick Williams213cb262021-08-07 19:21:33 -0500965 produce similarly named packages. In this example, the :term:`DEPENDS`
Andrew Geisslerc926e172021-05-07 16:11:35 -0500966 statement appears in the "a" recipe::
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500967
968 DEPENDS = "b"
969
970 Here, the dependency is such that the ``do_configure`` task for recipe "a"
971 depends on the ``do_populate_sysroot`` task of recipe "b". This means
972 anything that recipe "b" puts into sysroot is available when recipe "a" is
973 configuring itself.
974
975 For information on runtime dependencies, see the :term:`RDEPENDS`
976 variable.
977
Andrew Geisslerf0343792020-11-18 10:42:21 -0600978 :term:`DESCRIPTION`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500979 A long description for the recipe.
980
Andrew Geisslerf0343792020-11-18 10:42:21 -0600981 :term:`DL_DIR`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500982 The central download directory used by the build process to store
Patrick Williams213cb262021-08-07 19:21:33 -0500983 downloads. By default, :term:`DL_DIR` gets files suitable for mirroring for
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500984 everything except Git repositories. If you want tarballs of Git
985 repositories, use the :term:`BB_GENERATE_MIRROR_TARBALLS` variable.
986
Andrew Geisslerf0343792020-11-18 10:42:21 -0600987 :term:`EXCLUDE_FROM_WORLD`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500988 Directs BitBake to exclude a recipe from world builds (i.e.
989 ``bitbake world``). During world builds, BitBake locates, parses and
990 builds all recipes found in every layer exposed in the
991 ``bblayers.conf`` configuration file.
992
993 To exclude a recipe from a world build using this variable, set the
994 variable to "1" in the recipe.
995
996 .. note::
997
Patrick Williams213cb262021-08-07 19:21:33 -0500998 Recipes added to :term:`EXCLUDE_FROM_WORLD` may still be built during a world
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500999 build in order to satisfy dependencies of other recipes. Adding a
Patrick Williams213cb262021-08-07 19:21:33 -05001000 recipe to :term:`EXCLUDE_FROM_WORLD` only ensures that the recipe is not
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001001 explicitly added to the list of build targets in a world build.
1002
Andrew Geisslerf0343792020-11-18 10:42:21 -06001003 :term:`FAKEROOT`
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001004 Contains the command to use when running a shell script in a fakeroot
Patrick Williams213cb262021-08-07 19:21:33 -05001005 environment. The :term:`FAKEROOT` variable is obsolete and has been
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001006 replaced by the other ``FAKEROOT*`` variables. See these entries in
1007 the glossary for more information.
1008
Andrew Geisslerf0343792020-11-18 10:42:21 -06001009 :term:`FAKEROOTBASEENV`
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001010 Lists environment variables to set when executing the command defined
1011 by :term:`FAKEROOTCMD` that starts the
1012 bitbake-worker process in the fakeroot environment.
1013
Andrew Geisslerf0343792020-11-18 10:42:21 -06001014 :term:`FAKEROOTCMD`
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001015 Contains the command that starts the bitbake-worker process in the
1016 fakeroot environment.
1017
Andrew Geisslerf0343792020-11-18 10:42:21 -06001018 :term:`FAKEROOTDIRS`
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001019 Lists directories to create before running a task in the fakeroot
1020 environment.
1021
Andrew Geisslerf0343792020-11-18 10:42:21 -06001022 :term:`FAKEROOTENV`
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001023 Lists environment variables to set when running a task in the
1024 fakeroot environment. For additional information on environment
1025 variables and the fakeroot environment, see the
1026 :term:`FAKEROOTBASEENV` variable.
1027
Andrew Geisslerf0343792020-11-18 10:42:21 -06001028 :term:`FAKEROOTNOENV`
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001029 Lists environment variables to set when running a task that is not in
1030 the fakeroot environment. For additional information on environment
1031 variables and the fakeroot environment, see the
1032 :term:`FAKEROOTENV` variable.
1033
Andrew Geisslerf0343792020-11-18 10:42:21 -06001034 :term:`FETCHCMD`
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001035 Defines the command the BitBake fetcher module executes when running
1036 fetch operations. You need to use an override suffix when you use the
1037 variable (e.g. ``FETCHCMD_git`` or ``FETCHCMD_svn``).
1038
Andrew Geisslerf0343792020-11-18 10:42:21 -06001039 :term:`FILE`
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001040 Points at the current file. BitBake sets this variable during the
1041 parsing process to identify the file being parsed. BitBake also sets
1042 this variable when a recipe is being executed to identify the recipe
1043 file.
1044
Andrew Geisslerf0343792020-11-18 10:42:21 -06001045 :term:`FILESPATH`
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001046 Specifies directories BitBake uses when searching for patches and
1047 files. The "local" fetcher module uses these directories when
1048 handling ``file://`` URLs. The variable behaves like a shell ``PATH``
1049 environment variable. The value is a colon-separated list of
1050 directories that are searched left-to-right in order.
1051
Andrew Geisslerf0343792020-11-18 10:42:21 -06001052 :term:`GITDIR`
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001053 The directory in which a local copy of a Git repository is stored
1054 when it is cloned.
1055
Andrew Geisslerf0343792020-11-18 10:42:21 -06001056 :term:`HGDIR`
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001057 The directory in which files checked out of a Mercurial system are
1058 stored.
1059
Andrew Geisslerf0343792020-11-18 10:42:21 -06001060 :term:`HOMEPAGE`
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001061 Website where more information about the software the recipe is
1062 building can be found.
1063
Andrew Geisslerf0343792020-11-18 10:42:21 -06001064 :term:`INHERIT`
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001065 Causes the named class or classes to be inherited globally. Anonymous
1066 functions in the class or classes are not executed for the base
1067 configuration and in each individual recipe. The OpenEmbedded build
Patrick Williams213cb262021-08-07 19:21:33 -05001068 system ignores changes to :term:`INHERIT` in individual recipes.
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001069
Patrick Williams213cb262021-08-07 19:21:33 -05001070 For more information on :term:`INHERIT`, see the
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001071 ":ref:`bitbake-user-manual/bitbake-user-manual-metadata:\`\`inherit\`\` configuration directive`"
1072 section.
1073
Andrew Geisslerf0343792020-11-18 10:42:21 -06001074 :term:`LAYERDEPENDS`
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001075 Lists the layers, separated by spaces, upon which this recipe
1076 depends. Optionally, you can specify a specific layer version for a
1077 dependency by adding it to the end of the layer name with a colon,
1078 (e.g. "anotherlayer:3" to be compared against
1079 :term:`LAYERVERSION`\ ``_anotherlayer`` in
1080 this case). BitBake produces an error if any dependency is missing or
1081 the version numbers do not match exactly (if specified).
1082
1083 You use this variable in the ``conf/layer.conf`` file. You must also
1084 use the specific layer name as a suffix to the variable (e.g.
1085 ``LAYERDEPENDS_mylayer``).
1086
Andrew Geisslerf0343792020-11-18 10:42:21 -06001087 :term:`LAYERDIR`
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001088 When used inside the ``layer.conf`` configuration file, this variable
1089 provides the path of the current layer. This variable is not
1090 available outside of ``layer.conf`` and references are expanded
1091 immediately when parsing of the file completes.
1092
Andrew Geisslerf0343792020-11-18 10:42:21 -06001093 :term:`LAYERDIR_RE`
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001094 When used inside the ``layer.conf`` configuration file, this variable
1095 provides the path of the current layer, escaped for use in a regular
1096 expression (:term:`BBFILE_PATTERN`). This
1097 variable is not available outside of ``layer.conf`` and references
1098 are expanded immediately when parsing of the file completes.
1099
Andrew Geisslerf0343792020-11-18 10:42:21 -06001100 :term:`LAYERVERSION`
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001101 Optionally specifies the version of a layer as a single number. You
1102 can use this variable within
1103 :term:`LAYERDEPENDS` for another layer in
1104 order to depend on a specific version of the layer.
1105
1106 You use this variable in the ``conf/layer.conf`` file. You must also
1107 use the specific layer name as a suffix to the variable (e.g.
1108 ``LAYERDEPENDS_mylayer``).
1109
Andrew Geisslerf0343792020-11-18 10:42:21 -06001110 :term:`LICENSE`
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001111 The list of source licenses for the recipe.
1112
Andrew Geisslerf0343792020-11-18 10:42:21 -06001113 :term:`MIRRORS`
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001114 Specifies additional paths from which BitBake gets source code. When
1115 the build system searches for source code, it first tries the local
1116 download directory. If that location fails, the build system tries
1117 locations defined by :term:`PREMIRRORS`, the
Patrick Williams213cb262021-08-07 19:21:33 -05001118 upstream source, and then locations specified by :term:`MIRRORS` in that
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001119 order.
1120
Andrew Geisslerf0343792020-11-18 10:42:21 -06001121 :term:`OVERRIDES`
Patrick Williams213cb262021-08-07 19:21:33 -05001122 BitBake uses :term:`OVERRIDES` to control what variables are overridden
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001123 after BitBake parses recipes and configuration files.
1124
1125 Following is a simple example that uses an overrides list based on
1126 machine architectures: OVERRIDES = "arm:x86:mips:powerpc" You can
Patrick Williams213cb262021-08-07 19:21:33 -05001127 find information on how to use :term:`OVERRIDES` in the
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001128 ":ref:`bitbake-user-manual/bitbake-user-manual-metadata:conditional syntax
1129 (overrides)`" section.
1130
Andrew Geisslerf0343792020-11-18 10:42:21 -06001131 :term:`P4DIR`
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001132 The directory in which a local copy of a Perforce depot is stored
1133 when it is fetched.
1134
Andrew Geisslerf0343792020-11-18 10:42:21 -06001135 :term:`PACKAGES`
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001136 The list of packages the recipe creates.
1137
Andrew Geisslerf0343792020-11-18 10:42:21 -06001138 :term:`PACKAGES_DYNAMIC`
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001139 A promise that your recipe satisfies runtime dependencies for
1140 optional modules that are found in other recipes.
Patrick Williams213cb262021-08-07 19:21:33 -05001141 :term:`PACKAGES_DYNAMIC` does not actually satisfy the dependencies, it
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001142 only states that they should be satisfied. For example, if a hard,
1143 runtime dependency (:term:`RDEPENDS`) of another
1144 package is satisfied during the build through the
Patrick Williams213cb262021-08-07 19:21:33 -05001145 :term:`PACKAGES_DYNAMIC` variable, but a package with the module name is
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001146 never actually produced, then the other package will be broken.
1147
Andrew Geisslerf0343792020-11-18 10:42:21 -06001148 :term:`PE`
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001149 The epoch of the recipe. By default, this variable is unset. The
1150 variable is used to make upgrades possible when the versioning scheme
1151 changes in some backwards incompatible way.
1152
Andrew Geisslerf0343792020-11-18 10:42:21 -06001153 :term:`PERSISTENT_DIR`
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001154 Specifies the directory BitBake uses to store data that should be
1155 preserved between builds. In particular, the data stored is the data
1156 that uses BitBake's persistent data API and the data used by the PR
1157 Server and PR Service.
1158
Andrew Geisslerf0343792020-11-18 10:42:21 -06001159 :term:`PF`
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001160 Specifies the recipe or package name and includes all version and
1161 revision numbers (i.e. ``eglibc-2.13-r20+svnr15508/`` and
1162 ``bash-4.2-r1/``).
1163
Andrew Geisslerf0343792020-11-18 10:42:21 -06001164 :term:`PN`
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001165 The recipe name.
1166
Andrew Geisslerf0343792020-11-18 10:42:21 -06001167 :term:`PR`
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001168 The revision of the recipe.
1169
Andrew Geisslerf0343792020-11-18 10:42:21 -06001170 :term:`PREFERRED_PROVIDER`
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001171 Determines which recipe should be given preference when multiple
1172 recipes provide the same item. You should always suffix the variable
1173 with the name of the provided item, and you should set it to the
1174 :term:`PN` of the recipe to which you want to give
Andrew Geisslerc926e172021-05-07 16:11:35 -05001175 precedence. Some examples::
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001176
1177 PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
1178 PREFERRED_PROVIDER_virtual/xserver = "xserver-xf86"
1179 PREFERRED_PROVIDER_virtual/libgl ?= "mesa"
1180
Andrew Geisslerf0343792020-11-18 10:42:21 -06001181 :term:`PREFERRED_PROVIDERS`
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001182 Determines which recipe should be given preference for cases where
1183 multiple recipes provide the same item. Functionally,
Patrick Williams213cb262021-08-07 19:21:33 -05001184 :term:`PREFERRED_PROVIDERS` is identical to
1185 :term:`PREFERRED_PROVIDER`. However, the :term:`PREFERRED_PROVIDERS` variable
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001186 lets you define preferences for multiple situations using the following
Andrew Geisslerc926e172021-05-07 16:11:35 -05001187 form::
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001188
1189 PREFERRED_PROVIDERS = "xxx:yyy aaa:bbb ..."
1190
Andrew Geisslerc926e172021-05-07 16:11:35 -05001191 This form is a convenient replacement for the following::
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001192
1193 PREFERRED_PROVIDER_xxx = "yyy"
1194 PREFERRED_PROVIDER_aaa = "bbb"
1195
Andrew Geisslerf0343792020-11-18 10:42:21 -06001196 :term:`PREFERRED_VERSION`
Andrew Geissler3b8a17c2021-04-15 15:55:55 -05001197 If there are multiple versions of a recipe available, this variable
1198 determines which version should be given preference. You must always
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001199 suffix the variable with the :term:`PN` you want to
1200 select, and you should set :term:`PV` accordingly for
1201 precedence.
1202
Patrick Williams213cb262021-08-07 19:21:33 -05001203 The :term:`PREFERRED_VERSION` variable supports limited wildcard use
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001204 through the "``%``" character. You can use the character to match any
1205 number of characters, which can be useful when specifying versions
1206 that contain long revision numbers that potentially change. Here are
Andrew Geisslerc926e172021-05-07 16:11:35 -05001207 two examples::
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001208
1209 PREFERRED_VERSION_python = "2.7.3"
1210 PREFERRED_VERSION_linux-yocto = "4.12%"
1211
1212 .. important::
1213
1214 The use of the " % " character is limited in that it only works at the
1215 end of the string. You cannot use the wildcard character in any other
1216 location of the string.
1217
Andrew Geissler3b8a17c2021-04-15 15:55:55 -05001218 If a recipe with the specified version is not available, a warning
1219 message will be shown. See :term:`REQUIRED_VERSION` if you want this
1220 to be an error instead.
1221
Andrew Geisslerf0343792020-11-18 10:42:21 -06001222 :term:`PREMIRRORS`
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001223 Specifies additional paths from which BitBake gets source code. When
1224 the build system searches for source code, it first tries the local
1225 download directory. If that location fails, the build system tries
Patrick Williams213cb262021-08-07 19:21:33 -05001226 locations defined by :term:`PREMIRRORS`, the upstream source, and then
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001227 locations specified by :term:`MIRRORS` in that order.
1228
1229 Typically, you would add a specific server for the build system to
1230 attempt before any others by adding something like the following to
Andrew Geisslerc926e172021-05-07 16:11:35 -05001231 your configuration::
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001232
Patrick Williams213cb262021-08-07 19:21:33 -05001233 PREMIRRORS:prepend = "\
Andrew Geissler7e0e3c02022-02-25 20:34:39 +00001234 git://.*/.* http://downloads.yoctoproject.org/mirror/sources/ \
1235 ftp://.*/.* http://downloads.yoctoproject.org/mirror/sources/ \
1236 http://.*/.* http://downloads.yoctoproject.org/mirror/sources/ \
1237 https://.*/.* http://downloads.yoctoproject.org/mirror/sources/"
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001238
1239 These changes cause the build system to intercept Git, FTP, HTTP, and
1240 HTTPS requests and direct them to the ``http://`` sources mirror. You can
1241 use ``file://`` URLs to point to local directories or network shares as
1242 well.
1243
Andrew Geisslerf0343792020-11-18 10:42:21 -06001244 :term:`PROVIDES`
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001245 A list of aliases by which a particular recipe can be known. By
Patrick Williams213cb262021-08-07 19:21:33 -05001246 default, a recipe's own :term:`PN` is implicitly already in its
1247 :term:`PROVIDES` list. If a recipe uses :term:`PROVIDES`, the additional
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001248 aliases are synonyms for the recipe and can be useful satisfying
1249 dependencies of other recipes during the build as specified by
Patrick Williams213cb262021-08-07 19:21:33 -05001250 :term:`DEPENDS`.
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001251
Patrick Williams213cb262021-08-07 19:21:33 -05001252 Consider the following example :term:`PROVIDES` statement from a recipe
Andrew Geisslerc926e172021-05-07 16:11:35 -05001253 file ``libav_0.8.11.bb``::
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001254
1255 PROVIDES += "libpostproc"
1256
Patrick Williams213cb262021-08-07 19:21:33 -05001257 The :term:`PROVIDES` statement results in the "libav" recipe also being known
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001258 as "libpostproc".
1259
1260 In addition to providing recipes under alternate names, the
Patrick Williams213cb262021-08-07 19:21:33 -05001261 :term:`PROVIDES` mechanism is also used to implement virtual targets. A
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001262 virtual target is a name that corresponds to some particular
1263 functionality (e.g. a Linux kernel). Recipes that provide the
Patrick Williams213cb262021-08-07 19:21:33 -05001264 functionality in question list the virtual target in :term:`PROVIDES`.
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001265 Recipes that depend on the functionality in question can include the
1266 virtual target in :term:`DEPENDS` to leave the
1267 choice of provider open.
1268
1269 Conventionally, virtual targets have names on the form
1270 "virtual/function" (e.g. "virtual/kernel"). The slash is simply part
1271 of the name and has no syntactical significance.
1272
Andrew Geisslerf0343792020-11-18 10:42:21 -06001273 :term:`PRSERV_HOST`
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001274 The network based :term:`PR` service host and port.
1275
Patrick Williams213cb262021-08-07 19:21:33 -05001276 Following is an example of how the :term:`PRSERV_HOST` variable is set::
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001277
1278 PRSERV_HOST = "localhost:0"
1279
1280 You must set the variable if you want to automatically start a local PR
Patrick Williams213cb262021-08-07 19:21:33 -05001281 service. You can set :term:`PRSERV_HOST` to other values to use a remote PR
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001282 service.
1283
Andrew Geisslerf0343792020-11-18 10:42:21 -06001284 :term:`PV`
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001285 The version of the recipe.
1286
Andrew Geisslerf0343792020-11-18 10:42:21 -06001287 :term:`RDEPENDS`
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001288 Lists a package's runtime dependencies (i.e. other packages) that
1289 must be installed in order for the built package to run correctly. If
1290 a package in this list cannot be found during the build, you will get
1291 a build error.
1292
Patrick Williams213cb262021-08-07 19:21:33 -05001293 Because the :term:`RDEPENDS` variable applies to packages being built,
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001294 you should always use the variable in a form with an attached package
1295 name. For example, suppose you are building a development package
1296 that depends on the ``perl`` package. In this case, you would use the
Patrick Williams213cb262021-08-07 19:21:33 -05001297 following :term:`RDEPENDS` statement::
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001298
Patrick Williams213cb262021-08-07 19:21:33 -05001299 RDEPENDS:${PN}-dev += "perl"
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001300
1301 In the example, the development package depends on the ``perl`` package.
Patrick Williams213cb262021-08-07 19:21:33 -05001302 Thus, the :term:`RDEPENDS` variable has the ``${PN}-dev`` package name as part
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001303 of the variable.
1304
1305 BitBake supports specifying versioned dependencies. Although the
1306 syntax varies depending on the packaging format, BitBake hides these
1307 differences from you. Here is the general syntax to specify versions
Patrick Williams213cb262021-08-07 19:21:33 -05001308 with the :term:`RDEPENDS` variable::
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001309
Patrick Williams213cb262021-08-07 19:21:33 -05001310 RDEPENDS:${PN} = "package (operator version)"
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001311
Andrew Geisslerc926e172021-05-07 16:11:35 -05001312 For ``operator``, you can specify the following::
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001313
1314 =
1315 <
1316 >
1317 <=
1318 >=
1319
1320 For example, the following sets up a dependency on version 1.2 or
Andrew Geisslerc926e172021-05-07 16:11:35 -05001321 greater of the package ``foo``::
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001322
Patrick Williams213cb262021-08-07 19:21:33 -05001323 RDEPENDS:${PN} = "foo (>= 1.2)"
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001324
1325 For information on build-time dependencies, see the :term:`DEPENDS`
1326 variable.
1327
Andrew Geisslerf0343792020-11-18 10:42:21 -06001328 :term:`REPODIR`
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001329 The directory in which a local copy of a ``google-repo`` directory is
1330 stored when it is synced.
1331
Andrew Geissler3b8a17c2021-04-15 15:55:55 -05001332 :term:`REQUIRED_VERSION`
1333 If there are multiple versions of a recipe available, this variable
Patrick Williams213cb262021-08-07 19:21:33 -05001334 determines which version should be given preference. :term:`REQUIRED_VERSION`
Andrew Geissler3b8a17c2021-04-15 15:55:55 -05001335 works in exactly the same manner as :term:`PREFERRED_VERSION`, except
1336 that if the specified version is not available then an error message
1337 is shown and the build fails immediately.
1338
Patrick Williams213cb262021-08-07 19:21:33 -05001339 If both :term:`REQUIRED_VERSION` and :term:`PREFERRED_VERSION` are set for
1340 the same recipe, the :term:`REQUIRED_VERSION` value applies.
Andrew Geissler3b8a17c2021-04-15 15:55:55 -05001341
Andrew Geisslerf0343792020-11-18 10:42:21 -06001342 :term:`RPROVIDES`
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001343 A list of package name aliases that a package also provides. These
1344 aliases are useful for satisfying runtime dependencies of other
1345 packages both during the build and on the target (as specified by
Patrick Williams213cb262021-08-07 19:21:33 -05001346 :term:`RDEPENDS`).
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001347
1348 As with all package-controlling variables, you must always use the
1349 variable in conjunction with a package name override. Here is an
Andrew Geisslerc926e172021-05-07 16:11:35 -05001350 example::
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001351
Patrick Williams213cb262021-08-07 19:21:33 -05001352 RPROVIDES:${PN} = "widget-abi-2"
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001353
Andrew Geisslerf0343792020-11-18 10:42:21 -06001354 :term:`RRECOMMENDS`
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001355 A list of packages that extends the usability of a package being
1356 built. The package being built does not depend on this list of
1357 packages in order to successfully build, but needs them for the
1358 extended usability. To specify runtime dependencies for packages, see
Patrick Williams213cb262021-08-07 19:21:33 -05001359 the :term:`RDEPENDS` variable.
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001360
1361 BitBake supports specifying versioned recommends. Although the syntax
1362 varies depending on the packaging format, BitBake hides these
1363 differences from you. Here is the general syntax to specify versions
Patrick Williams213cb262021-08-07 19:21:33 -05001364 with the :term:`RRECOMMENDS` variable::
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001365
Patrick Williams213cb262021-08-07 19:21:33 -05001366 RRECOMMENDS:${PN} = "package (operator version)"
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001367
Andrew Geisslerc926e172021-05-07 16:11:35 -05001368 For ``operator``, you can specify the following::
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001369
1370 =
1371 <
1372 >
1373 <=
1374 >=
1375
1376 For example, the following sets up a recommend on version
Andrew Geisslerc926e172021-05-07 16:11:35 -05001377 1.2 or greater of the package ``foo``::
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001378
Patrick Williams213cb262021-08-07 19:21:33 -05001379 RRECOMMENDS:${PN} = "foo (>= 1.2)"
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001380
Andrew Geisslerf0343792020-11-18 10:42:21 -06001381 :term:`SECTION`
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001382 The section in which packages should be categorized.
1383
Andrew Geisslerf0343792020-11-18 10:42:21 -06001384 :term:`SRC_URI`
Andrew Geissler9aee5002022-03-30 16:27:02 +00001385 The list of source files --- local or remote. This variable tells
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001386 BitBake which bits to pull for the build and how to pull them. For
1387 example, if the recipe or append file needs to fetch a single tarball
Andrew Geissler595f6302022-01-24 19:11:47 +00001388 from the Internet, the recipe or append file uses a :term:`SRC_URI`
1389 entry that specifies that tarball. On the other hand, if the recipe or
1390 append file needs to fetch a tarball, apply two patches, and include
1391 a custom file, the recipe or append file needs an :term:`SRC_URI`
1392 variable that specifies all those sources.
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001393
Andrew Geissler595f6302022-01-24 19:11:47 +00001394 The following list explains the available URI protocols. URI
1395 protocols are highly dependent on particular BitBake Fetcher
1396 submodules. Depending on the fetcher BitBake uses, various URL
1397 parameters are employed. For specifics on the supported Fetchers, see
1398 the :ref:`bitbake-user-manual/bitbake-user-manual-fetching:fetchers`
1399 section.
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001400
Andrew Geissler9aee5002022-03-30 16:27:02 +00001401 - ``az://``: Fetches files from an Azure Storage account using HTTPS.
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001402
Andrew Geissler9aee5002022-03-30 16:27:02 +00001403 - ``bzr://``: Fetches files from a Bazaar revision control
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001404 repository.
1405
Andrew Geissler9aee5002022-03-30 16:27:02 +00001406 - ``ccrc://``: Fetches files from a ClearCase repository.
Andrew Geissler595f6302022-01-24 19:11:47 +00001407
Andrew Geissler9aee5002022-03-30 16:27:02 +00001408 - ``cvs://``: Fetches files from a CVS revision control
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001409 repository.
1410
Andrew Geissler9aee5002022-03-30 16:27:02 +00001411 - ``file://``: Fetches files, which are usually files shipped
Andrew Geissler595f6302022-01-24 19:11:47 +00001412 with the Metadata, from the local machine.
1413 The path is relative to the :term:`FILESPATH`
1414 variable. Thus, the build system searches, in order, from the
1415 following directories, which are assumed to be a subdirectories of
1416 the directory in which the recipe file (``.bb``) or append file
1417 (``.bbappend``) resides:
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001418
Andrew Geissler9aee5002022-03-30 16:27:02 +00001419 - ``${BPN}``: the base recipe name without any special suffix
Andrew Geissler595f6302022-01-24 19:11:47 +00001420 or version numbers.
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001421
Andrew Geissler9aee5002022-03-30 16:27:02 +00001422 - ``${BP}`` - ``${BPN}-${PV}``: the base recipe name and
Andrew Geissler595f6302022-01-24 19:11:47 +00001423 version but without any special package name suffix.
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001424
Andrew Geissler9aee5002022-03-30 16:27:02 +00001425 - ``files``: files within a directory, which is named ``files``
Andrew Geissler595f6302022-01-24 19:11:47 +00001426 and is also alongside the recipe or append file.
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001427
Andrew Geissler9aee5002022-03-30 16:27:02 +00001428 - ``ftp://``: Fetches files from the Internet using FTP.
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001429
Andrew Geissler9aee5002022-03-30 16:27:02 +00001430 - ``git://``: Fetches files from a Git revision control
Andrew Geissler595f6302022-01-24 19:11:47 +00001431 repository.
1432
Andrew Geissler9aee5002022-03-30 16:27:02 +00001433 - ``gitsm://``: Fetches submodules from a Git revision control
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001434 repository.
1435
Andrew Geissler9aee5002022-03-30 16:27:02 +00001436 - ``hg://``: Fetches files from a Mercurial (``hg``) revision
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001437 control repository.
1438
Andrew Geissler9aee5002022-03-30 16:27:02 +00001439 - ``http://``: Fetches files from the Internet using HTTP.
Andrew Geissler595f6302022-01-24 19:11:47 +00001440
Andrew Geissler9aee5002022-03-30 16:27:02 +00001441 - ``https://``: Fetches files from the Internet using HTTPS.
Andrew Geissler595f6302022-01-24 19:11:47 +00001442
Andrew Geissler9aee5002022-03-30 16:27:02 +00001443 - ``npm://``: Fetches JavaScript modules from a registry.
Andrew Geissler595f6302022-01-24 19:11:47 +00001444
Andrew Geissler9aee5002022-03-30 16:27:02 +00001445 - ``osc://``: Fetches files from an OSC (OpenSUSE Build service)
Andrew Geissler595f6302022-01-24 19:11:47 +00001446 revision control repository.
1447
Andrew Geissler9aee5002022-03-30 16:27:02 +00001448 - ``p4://``: Fetches files from a Perforce (``p4``) revision
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001449 control repository.
1450
Andrew Geissler9aee5002022-03-30 16:27:02 +00001451 - ``repo://``: Fetches files from a repo (Git) repository.
Andrew Geissler595f6302022-01-24 19:11:47 +00001452
Andrew Geissler9aee5002022-03-30 16:27:02 +00001453 - ``ssh://``: Fetches files from a secure shell.
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001454
Andrew Geissler9aee5002022-03-30 16:27:02 +00001455 - ``svn://``: Fetches files from a Subversion (``svn``) revision
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001456 control repository.
1457
1458 Here are some additional options worth mentioning:
1459
Andrew Geissler9aee5002022-03-30 16:27:02 +00001460 - ``downloadfilename``: Specifies the filename used when storing
Andrew Geissler595f6302022-01-24 19:11:47 +00001461 the downloaded file.
1462
Andrew Geissler9aee5002022-03-30 16:27:02 +00001463 - ``name``: Specifies a name to be used for association with
Andrew Geissler595f6302022-01-24 19:11:47 +00001464 :term:`SRC_URI` checksums or :term:`SRCREV` when you have more than one
1465 file or git repository specified in :term:`SRC_URI`. For example::
1466
Andrew Geissler9aee5002022-03-30 16:27:02 +00001467 SRC_URI = "git://example.com/foo.git;branch=main;name=first \
1468 git://example.com/bar.git;branch=main;name=second \
Andrew Geissler595f6302022-01-24 19:11:47 +00001469 http://example.com/file.tar.gz;name=third"
1470
1471 SRCREV_first = "f1d2d2f924e986ac86fdf7b36c94bcdf32beec15"
1472 SRCREV_second = "e242ed3bffccdf271b7fbaf34ed72d089537b42f"
1473 SRC_URI[third.sha256sum] = "13550350a8681c84c861aac2e5b440161c2b33a3e4f302ac680ca5b686de48de"
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001474
Andrew Geissler9aee5002022-03-30 16:27:02 +00001475 - ``subdir``: Places the file (or extracts its contents) into the
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001476 specified subdirectory. This option is useful for unusual tarballs
1477 or other archives that do not have their files already in a
1478 subdirectory within the archive.
1479
Andrew Geissler9aee5002022-03-30 16:27:02 +00001480 - ``subpath``: Limits the checkout to a specific subpath of the
Andrew Geissler595f6302022-01-24 19:11:47 +00001481 tree when using the Git fetcher is used.
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001482
Andrew Geissler9aee5002022-03-30 16:27:02 +00001483 - ``unpack``: Controls whether or not to unpack the file if it is
Andrew Geissler595f6302022-01-24 19:11:47 +00001484 an archive. The default action is to unpack the file.
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001485
Andrew Geisslerf0343792020-11-18 10:42:21 -06001486 :term:`SRCDATE`
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001487 The date of the source code used to build the package. This variable
1488 applies only if the source was fetched from a Source Code Manager
1489 (SCM).
1490
Andrew Geisslerf0343792020-11-18 10:42:21 -06001491 :term:`SRCREV`
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001492 The revision of the source code used to build the package. This
1493 variable applies only when using Subversion, Git, Mercurial and
1494 Bazaar. If you want to build a fixed revision and you want to avoid
1495 performing a query on the remote repository every time BitBake parses
Patrick Williams213cb262021-08-07 19:21:33 -05001496 your recipe, you should specify a :term:`SRCREV` that is a full revision
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001497 identifier and not just a tag.
1498
Andrew Geisslerf0343792020-11-18 10:42:21 -06001499 :term:`SRCREV_FORMAT`
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001500 Helps construct valid :term:`SRCREV` values when
1501 multiple source controlled URLs are used in
1502 :term:`SRC_URI`.
1503
1504 The system needs help constructing these values under these
Patrick Williams213cb262021-08-07 19:21:33 -05001505 circumstances. Each component in the :term:`SRC_URI` is assigned a name
1506 and these are referenced in the :term:`SRCREV_FORMAT` variable. Consider
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001507 an example with URLs named "machine" and "meta". In this case,
Patrick Williams213cb262021-08-07 19:21:33 -05001508 :term:`SRCREV_FORMAT` could look like "machine_meta" and those names
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001509 would have the SCM versions substituted into each position. Only one
1510 ``AUTOINC`` placeholder is added and if needed. And, this placeholder
1511 is placed at the start of the returned string.
1512
Andrew Geisslerf0343792020-11-18 10:42:21 -06001513 :term:`STAMP`
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001514 Specifies the base path used to create recipe stamp files. The path
1515 to an actual stamp file is constructed by evaluating this string and
1516 then appending additional information.
1517
Andrew Geisslerf0343792020-11-18 10:42:21 -06001518 :term:`STAMPCLEAN`
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001519 Specifies the base path used to create recipe stamp files. Unlike the
Patrick Williams213cb262021-08-07 19:21:33 -05001520 :term:`STAMP` variable, :term:`STAMPCLEAN` can contain
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001521 wildcards to match the range of files a clean operation should
1522 remove. BitBake uses a clean operation to remove any other stamps it
1523 should be removing when creating a new stamp.
1524
Andrew Geisslerf0343792020-11-18 10:42:21 -06001525 :term:`SUMMARY`
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001526 A short summary for the recipe, which is 72 characters or less.
1527
Andrew Geisslerf0343792020-11-18 10:42:21 -06001528 :term:`SVNDIR`
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001529 The directory in which files checked out of a Subversion system are
1530 stored.
1531
Andrew Geisslerf0343792020-11-18 10:42:21 -06001532 :term:`T`
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001533 Points to a directory were BitBake places temporary files, which
1534 consist mostly of task logs and scripts, when building a particular
1535 recipe.
1536
Andrew Geisslerf0343792020-11-18 10:42:21 -06001537 :term:`TOPDIR`
Andrew Geisslerc9f78652020-09-18 14:11:35 -05001538 Points to the build directory. BitBake automatically sets this
1539 variable.