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