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