1*4882a593Smuzhiyun.. SPDX-License-Identifier: CC-BY-SA-2.0-UK 2*4882a593Smuzhiyun 3*4882a593Smuzhiyun************************** 4*4882a593SmuzhiyunSource Directory Structure 5*4882a593Smuzhiyun************************** 6*4882a593Smuzhiyun 7*4882a593SmuzhiyunThe :term:`Source Directory` consists of numerous files, 8*4882a593Smuzhiyundirectories and subdirectories; understanding their locations and 9*4882a593Smuzhiyuncontents is key to using the Yocto Project effectively. This chapter 10*4882a593Smuzhiyundescribes the Source Directory and gives information about those files 11*4882a593Smuzhiyunand directories. 12*4882a593Smuzhiyun 13*4882a593SmuzhiyunFor information on how to establish a local Source Directory on your 14*4882a593Smuzhiyundevelopment system, see the 15*4882a593Smuzhiyun":ref:`dev-manual/start:locating yocto project source files`" 16*4882a593Smuzhiyunsection in the Yocto Project Development Tasks Manual. 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun.. note:: 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun The OpenEmbedded build system does not support file or directory 21*4882a593Smuzhiyun names that contain spaces. Be sure that the Source Directory you use 22*4882a593Smuzhiyun does not contain these types of names. 23*4882a593Smuzhiyun 24*4882a593Smuzhiyun.. _structure-core: 25*4882a593Smuzhiyun 26*4882a593SmuzhiyunTop-Level Core Components 27*4882a593Smuzhiyun========================= 28*4882a593Smuzhiyun 29*4882a593SmuzhiyunThis section describes the top-level components of the :term:`Source Directory`. 30*4882a593Smuzhiyun 31*4882a593Smuzhiyun.. _structure-core-bitbake: 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun``bitbake/`` 34*4882a593Smuzhiyun------------ 35*4882a593Smuzhiyun 36*4882a593SmuzhiyunThis directory includes a copy of BitBake for ease of use. The copy 37*4882a593Smuzhiyunusually matches the current stable BitBake release from the BitBake 38*4882a593Smuzhiyunproject. BitBake, a :term:`Metadata` interpreter, reads the 39*4882a593SmuzhiyunYocto Project Metadata and runs the tasks defined by that data. Failures 40*4882a593Smuzhiyunare usually caused by errors in your Metadata and not from BitBake 41*4882a593Smuzhiyunitself. 42*4882a593Smuzhiyun 43*4882a593SmuzhiyunWhen you run the ``bitbake`` command, the main BitBake executable (which 44*4882a593Smuzhiyunresides in the ``bitbake/bin/`` directory) starts. Sourcing the 45*4882a593Smuzhiyunenvironment setup script (i.e. :ref:`structure-core-script`) places 46*4882a593Smuzhiyunthe ``scripts/`` and ``bitbake/bin/`` directories (in that order) into 47*4882a593Smuzhiyunthe shell's ``PATH`` environment variable. 48*4882a593Smuzhiyun 49*4882a593SmuzhiyunFor more information on BitBake, see the :doc:`BitBake User Manual 50*4882a593Smuzhiyun<bitbake:index>`. 51*4882a593Smuzhiyun 52*4882a593Smuzhiyun.. _structure-core-build: 53*4882a593Smuzhiyun 54*4882a593Smuzhiyun``build/`` 55*4882a593Smuzhiyun---------- 56*4882a593Smuzhiyun 57*4882a593SmuzhiyunThis directory contains user configuration files and the output 58*4882a593Smuzhiyungenerated by the OpenEmbedded build system in its standard configuration 59*4882a593Smuzhiyunwhere the source tree is combined with the output. The :term:`Build Directory` 60*4882a593Smuzhiyunis created initially when you ``source`` 61*4882a593Smuzhiyunthe OpenEmbedded build environment setup script (i.e. 62*4882a593Smuzhiyun:ref:`structure-core-script`). 63*4882a593Smuzhiyun 64*4882a593SmuzhiyunIt is also possible to place output and configuration files in a 65*4882a593Smuzhiyundirectory separate from the :term:`Source Directory` by 66*4882a593Smuzhiyunproviding a directory name when you ``source`` the setup script. For 67*4882a593Smuzhiyuninformation on separating output from your local Source Directory files 68*4882a593Smuzhiyun(commonly described as an "out of tree" build), see the 69*4882a593Smuzhiyun":ref:`structure-core-script`" section. 70*4882a593Smuzhiyun 71*4882a593Smuzhiyun.. _handbook: 72*4882a593Smuzhiyun 73*4882a593Smuzhiyun``documentation/`` 74*4882a593Smuzhiyun------------------ 75*4882a593Smuzhiyun 76*4882a593SmuzhiyunThis directory holds the source for the Yocto Project documentation as 77*4882a593Smuzhiyunwell as templates and tools that allow you to generate PDF and HTML 78*4882a593Smuzhiyunversions of the manuals. Each manual is contained in its own sub-folder; 79*4882a593Smuzhiyunfor example, the files for this reference manual reside in the 80*4882a593Smuzhiyun``ref-manual/`` directory. 81*4882a593Smuzhiyun 82*4882a593Smuzhiyun.. _structure-core-meta: 83*4882a593Smuzhiyun 84*4882a593Smuzhiyun``meta/`` 85*4882a593Smuzhiyun--------- 86*4882a593Smuzhiyun 87*4882a593SmuzhiyunThis directory contains the minimal, underlying OpenEmbedded-Core 88*4882a593Smuzhiyunmetadata. The directory holds recipes, common classes, and machine 89*4882a593Smuzhiyunconfiguration for strictly emulated targets (``qemux86``, ``qemuarm``, 90*4882a593Smuzhiyunand so forth.) 91*4882a593Smuzhiyun 92*4882a593Smuzhiyun.. _structure-core-meta-poky: 93*4882a593Smuzhiyun 94*4882a593Smuzhiyun``meta-poky/`` 95*4882a593Smuzhiyun-------------- 96*4882a593Smuzhiyun 97*4882a593SmuzhiyunDesigned above the ``meta/`` content, this directory adds just enough 98*4882a593Smuzhiyunmetadata to define the Poky reference distribution. 99*4882a593Smuzhiyun 100*4882a593Smuzhiyun.. _structure-core-meta-yocto-bsp: 101*4882a593Smuzhiyun 102*4882a593Smuzhiyun``meta-yocto-bsp/`` 103*4882a593Smuzhiyun------------------- 104*4882a593Smuzhiyun 105*4882a593SmuzhiyunThis directory contains the Yocto Project reference hardware Board 106*4882a593SmuzhiyunSupport Packages (BSPs). For more information on BSPs, see the 107*4882a593Smuzhiyun:doc:`/bsp-guide/index`. 108*4882a593Smuzhiyun 109*4882a593Smuzhiyun.. _structure-meta-selftest: 110*4882a593Smuzhiyun 111*4882a593Smuzhiyun``meta-selftest/`` 112*4882a593Smuzhiyun------------------ 113*4882a593Smuzhiyun 114*4882a593SmuzhiyunThis directory adds additional recipes and append files used by the 115*4882a593SmuzhiyunOpenEmbedded selftests to verify the behavior of the build system. You 116*4882a593Smuzhiyundo not have to add this layer to your ``bblayers.conf`` file unless you 117*4882a593Smuzhiyunwant to run the selftests. 118*4882a593Smuzhiyun 119*4882a593Smuzhiyun.. _structure-meta-skeleton: 120*4882a593Smuzhiyun 121*4882a593Smuzhiyun``meta-skeleton/`` 122*4882a593Smuzhiyun------------------ 123*4882a593Smuzhiyun 124*4882a593SmuzhiyunThis directory contains template recipes for BSP and kernel development. 125*4882a593Smuzhiyun 126*4882a593Smuzhiyun.. _structure-core-scripts: 127*4882a593Smuzhiyun 128*4882a593Smuzhiyun``scripts/`` 129*4882a593Smuzhiyun------------ 130*4882a593Smuzhiyun 131*4882a593SmuzhiyunThis directory contains various integration scripts that implement extra 132*4882a593Smuzhiyunfunctionality in the Yocto Project environment (e.g. QEMU scripts). The 133*4882a593Smuzhiyun:ref:`structure-core-script` script prepends this directory to the 134*4882a593Smuzhiyunshell's ``PATH`` environment variable. 135*4882a593Smuzhiyun 136*4882a593SmuzhiyunThe ``scripts`` directory has useful scripts that assist in contributing 137*4882a593Smuzhiyunback to the Yocto Project, such as ``create-pull-request`` and 138*4882a593Smuzhiyun``send-pull-request``. 139*4882a593Smuzhiyun 140*4882a593Smuzhiyun.. _structure-core-script: 141*4882a593Smuzhiyun 142*4882a593Smuzhiyun``oe-init-build-env`` 143*4882a593Smuzhiyun--------------------- 144*4882a593Smuzhiyun 145*4882a593SmuzhiyunThis script sets up the OpenEmbedded build environment. Running this 146*4882a593Smuzhiyunscript with the ``source`` command in a shell makes changes to ``PATH`` 147*4882a593Smuzhiyunand sets other core BitBake variables based on the current working 148*4882a593Smuzhiyundirectory. You need to run an environment setup script before running 149*4882a593SmuzhiyunBitBake commands. The script uses other scripts within the ``scripts`` 150*4882a593Smuzhiyundirectory to do the bulk of the work. 151*4882a593Smuzhiyun 152*4882a593SmuzhiyunWhen you run this script, your Yocto Project environment is set up, a 153*4882a593Smuzhiyun:term:`Build Directory` is created, your working 154*4882a593Smuzhiyundirectory becomes the Build Directory, and you are presented with some 155*4882a593Smuzhiyunsimple suggestions as to what to do next, including a list of some 156*4882a593Smuzhiyunpossible targets to build. Here is an example:: 157*4882a593Smuzhiyun 158*4882a593Smuzhiyun $ source oe-init-build-env 159*4882a593Smuzhiyun 160*4882a593Smuzhiyun ### Shell environment set up for builds. ### 161*4882a593Smuzhiyun 162*4882a593Smuzhiyun You can now run 'bitbake <target>' 163*4882a593Smuzhiyun 164*4882a593Smuzhiyun Common targets are: 165*4882a593Smuzhiyun core-image-minimal 166*4882a593Smuzhiyun core-image-sato 167*4882a593Smuzhiyun meta-toolchain 168*4882a593Smuzhiyun meta-ide-support 169*4882a593Smuzhiyun 170*4882a593Smuzhiyun You can also run generated QEMU images with a command like 'runqemu qemux86-64' 171*4882a593Smuzhiyun 172*4882a593SmuzhiyunThe default output of the ``oe-init-build-env`` script is from the 173*4882a593Smuzhiyun``conf-notes.txt`` file, which is found in the ``meta-poky`` directory 174*4882a593Smuzhiyunwithin the :term:`Source Directory`. If you design a 175*4882a593Smuzhiyuncustom distribution, you can include your own version of this 176*4882a593Smuzhiyunconfiguration file to mention the targets defined by your distribution. 177*4882a593SmuzhiyunSee the 178*4882a593Smuzhiyun":ref:`dev-manual/common-tasks:creating a custom template configuration directory`" 179*4882a593Smuzhiyunsection in the Yocto Project Development Tasks Manual for more 180*4882a593Smuzhiyuninformation. 181*4882a593Smuzhiyun 182*4882a593SmuzhiyunBy default, running this script without a Build Directory argument 183*4882a593Smuzhiyuncreates the ``build/`` directory in your current working directory. If 184*4882a593Smuzhiyunyou provide a Build Directory argument when you ``source`` the script, 185*4882a593Smuzhiyunyou direct the OpenEmbedded build system to create a Build Directory of 186*4882a593Smuzhiyunyour choice. For example, the following command creates a Build 187*4882a593SmuzhiyunDirectory named ``mybuilds/`` that is outside of the :term:`Source Directory`:: 188*4882a593Smuzhiyun 189*4882a593Smuzhiyun $ source oe-init-build-env ~/mybuilds 190*4882a593Smuzhiyun 191*4882a593SmuzhiyunThe OpenEmbedded build system uses the template configuration files, which 192*4882a593Smuzhiyunare found by default in the ``meta-poky/conf/`` directory in the Source 193*4882a593SmuzhiyunDirectory. See the 194*4882a593Smuzhiyun":ref:`dev-manual/common-tasks:creating a custom template configuration directory`" 195*4882a593Smuzhiyunsection in the Yocto Project Development Tasks Manual for more 196*4882a593Smuzhiyuninformation. 197*4882a593Smuzhiyun 198*4882a593Smuzhiyun.. note:: 199*4882a593Smuzhiyun 200*4882a593Smuzhiyun The OpenEmbedded build system does not support file or directory 201*4882a593Smuzhiyun names that contain spaces. If you attempt to run the ``oe-init-build-env`` 202*4882a593Smuzhiyun script from a Source Directory that contains spaces in either the 203*4882a593Smuzhiyun filenames or directory names, the script returns an error indicating 204*4882a593Smuzhiyun no such file or directory. Be sure to use a Source Directory free of 205*4882a593Smuzhiyun names containing spaces. 206*4882a593Smuzhiyun 207*4882a593Smuzhiyun.. _structure-basic-top-level: 208*4882a593Smuzhiyun 209*4882a593Smuzhiyun``LICENSE, README, and README.hardware`` 210*4882a593Smuzhiyun---------------------------------------- 211*4882a593Smuzhiyun 212*4882a593SmuzhiyunThese files are standard top-level files. 213*4882a593Smuzhiyun 214*4882a593Smuzhiyun.. _structure-build: 215*4882a593Smuzhiyun 216*4882a593SmuzhiyunThe Build Directory - ``build/`` 217*4882a593Smuzhiyun================================ 218*4882a593Smuzhiyun 219*4882a593SmuzhiyunThe OpenEmbedded build system creates the :term:`Build Directory` 220*4882a593Smuzhiyunwhen you run the build environment setup 221*4882a593Smuzhiyunscript :ref:`structure-core-script`. If you do not give the Build 222*4882a593SmuzhiyunDirectory a specific name when you run the setup script, the name 223*4882a593Smuzhiyundefaults to ``build/``. 224*4882a593Smuzhiyun 225*4882a593SmuzhiyunFor subsequent parsing and processing, the name of the Build directory 226*4882a593Smuzhiyunis available via the :term:`TOPDIR` variable. 227*4882a593Smuzhiyun 228*4882a593Smuzhiyun.. _structure-build-buildhistory: 229*4882a593Smuzhiyun 230*4882a593Smuzhiyun``build/buildhistory/`` 231*4882a593Smuzhiyun----------------------- 232*4882a593Smuzhiyun 233*4882a593SmuzhiyunThe OpenEmbedded build system creates this directory when you enable 234*4882a593Smuzhiyunbuild history via the :ref:`buildhistory <ref-classes-buildhistory>` class file. The directory 235*4882a593Smuzhiyunorganizes build information into image, packages, and SDK 236*4882a593Smuzhiyunsubdirectories. For information on the build history feature, see the 237*4882a593Smuzhiyun":ref:`dev-manual/common-tasks:maintaining build output quality`" 238*4882a593Smuzhiyunsection in the Yocto Project Development Tasks Manual. 239*4882a593Smuzhiyun 240*4882a593Smuzhiyun.. _structure-build-conf-local.conf: 241*4882a593Smuzhiyun 242*4882a593Smuzhiyun``build/conf/local.conf`` 243*4882a593Smuzhiyun------------------------- 244*4882a593Smuzhiyun 245*4882a593SmuzhiyunThis configuration file contains all the local user configurations for 246*4882a593Smuzhiyunyour build environment. The ``local.conf`` file contains documentation 247*4882a593Smuzhiyunon the various configuration options. Any variable set here overrides 248*4882a593Smuzhiyunany variable set elsewhere within the environment unless that variable 249*4882a593Smuzhiyunis hard-coded within a file (e.g. by using '=' instead of '?='). Some 250*4882a593Smuzhiyunvariables are hard-coded for various reasons but such variables are 251*4882a593Smuzhiyunrelatively rare. 252*4882a593Smuzhiyun 253*4882a593SmuzhiyunAt a minimum, you would normally edit this file to select the target 254*4882a593Smuzhiyun:term:`MACHINE`, which package types you wish to use 255*4882a593Smuzhiyun(:term:`PACKAGE_CLASSES`), and the location from 256*4882a593Smuzhiyunwhich you want to access downloaded files (:term:`DL_DIR`). 257*4882a593Smuzhiyun 258*4882a593SmuzhiyunIf ``local.conf`` is not present when you start the build, the 259*4882a593SmuzhiyunOpenEmbedded build system creates it from ``local.conf.sample`` when you 260*4882a593Smuzhiyun``source`` the top-level build environment setup script 261*4882a593Smuzhiyun:ref:`structure-core-script`. 262*4882a593Smuzhiyun 263*4882a593SmuzhiyunThe source ``local.conf.sample`` file used depends on the 264*4882a593Smuzhiyun``$TEMPLATECONF`` script variable, which defaults to ``meta-poky/conf/`` 265*4882a593Smuzhiyunwhen you are building from the Yocto Project development environment, 266*4882a593Smuzhiyunand to ``meta/conf/`` when you are building from the OpenEmbedded-Core 267*4882a593Smuzhiyunenvironment. Because the script variable points to the source of the 268*4882a593Smuzhiyun``local.conf.sample`` file, this implies that you can configure your 269*4882a593Smuzhiyunbuild environment from any layer by setting the variable in the 270*4882a593Smuzhiyuntop-level build environment setup script as follows:: 271*4882a593Smuzhiyun 272*4882a593Smuzhiyun TEMPLATECONF=your_layer/conf 273*4882a593Smuzhiyun 274*4882a593SmuzhiyunOnce the build process gets the sample 275*4882a593Smuzhiyunfile, it uses ``sed`` to substitute final 276*4882a593Smuzhiyun``${``\ :term:`OEROOT`\ ``}`` values for all 277*4882a593Smuzhiyun``##OEROOT##`` values. 278*4882a593Smuzhiyun 279*4882a593Smuzhiyun.. note:: 280*4882a593Smuzhiyun 281*4882a593Smuzhiyun You can see how the ``TEMPLATECONF`` variable is used by looking at the 282*4882a593Smuzhiyun ``scripts/oe-setup-builddir`` script in the :term:`Source Directory`. 283*4882a593Smuzhiyun You can find the Yocto Project version of the ``local.conf.sample`` file in 284*4882a593Smuzhiyun the ``meta-poky/conf`` directory. 285*4882a593Smuzhiyun 286*4882a593Smuzhiyun.. _structure-build-conf-bblayers.conf: 287*4882a593Smuzhiyun 288*4882a593Smuzhiyun``build/conf/bblayers.conf`` 289*4882a593Smuzhiyun---------------------------- 290*4882a593Smuzhiyun 291*4882a593SmuzhiyunThis configuration file defines 292*4882a593Smuzhiyun:ref:`layers <dev-manual/common-tasks:understanding and creating layers>`, 293*4882a593Smuzhiyunwhich are directory trees, traversed (or walked) by BitBake. The 294*4882a593Smuzhiyun``bblayers.conf`` file uses the :term:`BBLAYERS` 295*4882a593Smuzhiyunvariable to list the layers BitBake tries to find. 296*4882a593Smuzhiyun 297*4882a593SmuzhiyunIf ``bblayers.conf`` is not present when you start the build, the 298*4882a593SmuzhiyunOpenEmbedded build system creates it from ``bblayers.conf.sample`` when 299*4882a593Smuzhiyunyou ``source`` the top-level build environment setup script (i.e. 300*4882a593Smuzhiyun:ref:`structure-core-script`). 301*4882a593Smuzhiyun 302*4882a593SmuzhiyunAs with the ``local.conf`` file, the source ``bblayers.conf.sample`` 303*4882a593Smuzhiyunfile used depends on the ``$TEMPLATECONF`` script variable, which 304*4882a593Smuzhiyundefaults to ``meta-poky/conf/`` when you are building from the Yocto 305*4882a593SmuzhiyunProject development environment, and to ``meta/conf/`` when you are 306*4882a593Smuzhiyunbuilding from the OpenEmbedded-Core environment. Because the script 307*4882a593Smuzhiyunvariable points to the source of the ``bblayers.conf.sample`` file, this 308*4882a593Smuzhiyunimplies that you can base your build from any layer by setting the 309*4882a593Smuzhiyunvariable in the top-level build environment setup script as follows:: 310*4882a593Smuzhiyun 311*4882a593Smuzhiyun TEMPLATECONF=your_layer/conf 312*4882a593Smuzhiyun 313*4882a593SmuzhiyunOnce the build process gets the sample file, it uses ``sed`` to substitute final 314*4882a593Smuzhiyun``${``\ :term:`OEROOT`\ ``}`` values for all ``##OEROOT##`` values. 315*4882a593Smuzhiyun 316*4882a593Smuzhiyun.. note:: 317*4882a593Smuzhiyun 318*4882a593Smuzhiyun You can see how the ``TEMPLATECONF`` variable ``scripts/oe-setup-builddir`` 319*4882a593Smuzhiyun script in the :term:`Source Directory`. You can find the Yocto Project 320*4882a593Smuzhiyun version of the ``bblayers.conf.sample`` file in the ``meta-poky/conf/`` 321*4882a593Smuzhiyun directory. 322*4882a593Smuzhiyun 323*4882a593Smuzhiyun.. _structure-build-conf-sanity_info: 324*4882a593Smuzhiyun 325*4882a593Smuzhiyun``build/cache/sanity_info`` 326*4882a593Smuzhiyun--------------------------- 327*4882a593Smuzhiyun 328*4882a593SmuzhiyunThis file indicates the state of the sanity checks and is created during 329*4882a593Smuzhiyunthe build. 330*4882a593Smuzhiyun 331*4882a593Smuzhiyun.. _structure-build-downloads: 332*4882a593Smuzhiyun 333*4882a593Smuzhiyun``build/downloads/`` 334*4882a593Smuzhiyun-------------------- 335*4882a593Smuzhiyun 336*4882a593SmuzhiyunThis directory contains downloaded upstream source tarballs. You can 337*4882a593Smuzhiyunreuse the directory for multiple builds or move the directory to another 338*4882a593Smuzhiyunlocation. You can control the location of this directory through the 339*4882a593Smuzhiyun:term:`DL_DIR` variable. 340*4882a593Smuzhiyun 341*4882a593Smuzhiyun.. _structure-build-sstate-cache: 342*4882a593Smuzhiyun 343*4882a593Smuzhiyun``build/sstate-cache/`` 344*4882a593Smuzhiyun----------------------- 345*4882a593Smuzhiyun 346*4882a593SmuzhiyunThis directory contains the shared state cache. You can reuse the 347*4882a593Smuzhiyundirectory for multiple builds or move the directory to another location. 348*4882a593SmuzhiyunYou can control the location of this directory through the 349*4882a593Smuzhiyun:term:`SSTATE_DIR` variable. 350*4882a593Smuzhiyun 351*4882a593Smuzhiyun.. _structure-build-tmp: 352*4882a593Smuzhiyun 353*4882a593Smuzhiyun``build/tmp/`` 354*4882a593Smuzhiyun-------------- 355*4882a593Smuzhiyun 356*4882a593SmuzhiyunThe OpenEmbedded build system creates and uses this directory for all 357*4882a593Smuzhiyunthe build system's output. The :term:`TMPDIR` variable 358*4882a593Smuzhiyunpoints to this directory. 359*4882a593Smuzhiyun 360*4882a593SmuzhiyunBitBake creates this directory if it does not exist. As a last resort, 361*4882a593Smuzhiyunto clean up a build and start it from scratch (other than the 362*4882a593Smuzhiyundownloads), you can remove everything in the ``tmp`` directory or get 363*4882a593Smuzhiyunrid of the directory completely. If you do, you should also completely 364*4882a593Smuzhiyunremove the ``build/sstate-cache`` directory. 365*4882a593Smuzhiyun 366*4882a593Smuzhiyun.. _structure-build-tmp-buildstats: 367*4882a593Smuzhiyun 368*4882a593Smuzhiyun``build/tmp/buildstats/`` 369*4882a593Smuzhiyun------------------------- 370*4882a593Smuzhiyun 371*4882a593SmuzhiyunThis directory stores the build statistics. 372*4882a593Smuzhiyun 373*4882a593Smuzhiyun.. _structure-build-tmp-cache: 374*4882a593Smuzhiyun 375*4882a593Smuzhiyun``build/tmp/cache/`` 376*4882a593Smuzhiyun-------------------- 377*4882a593Smuzhiyun 378*4882a593SmuzhiyunWhen BitBake parses the metadata (recipes and configuration files), it 379*4882a593Smuzhiyuncaches the results in ``build/tmp/cache/`` to speed up future builds. 380*4882a593SmuzhiyunThe results are stored on a per-machine basis. 381*4882a593Smuzhiyun 382*4882a593SmuzhiyunDuring subsequent builds, BitBake checks each recipe (together with, for 383*4882a593Smuzhiyunexample, any files included or appended to it) to see if they have been 384*4882a593Smuzhiyunmodified. Changes can be detected, for example, through file 385*4882a593Smuzhiyunmodification time (mtime) changes and hashing of file contents. If no 386*4882a593Smuzhiyunchanges to the file are detected, then the parsed result stored in the 387*4882a593Smuzhiyuncache is reused. If the file has changed, it is reparsed. 388*4882a593Smuzhiyun 389*4882a593Smuzhiyun.. _structure-build-tmp-deploy: 390*4882a593Smuzhiyun 391*4882a593Smuzhiyun``build/tmp/deploy/`` 392*4882a593Smuzhiyun--------------------- 393*4882a593Smuzhiyun 394*4882a593SmuzhiyunThis directory contains any "end result" output from the OpenEmbedded 395*4882a593Smuzhiyunbuild process. The :term:`DEPLOY_DIR` variable points 396*4882a593Smuzhiyunto this directory. For more detail on the contents of the ``deploy`` 397*4882a593Smuzhiyundirectory, see the 398*4882a593Smuzhiyun":ref:`overview-manual/concepts:images`" and 399*4882a593Smuzhiyun":ref:`overview-manual/concepts:application development sdk`" sections in the Yocto 400*4882a593SmuzhiyunProject Overview and Concepts Manual. 401*4882a593Smuzhiyun 402*4882a593Smuzhiyun.. _structure-build-tmp-deploy-deb: 403*4882a593Smuzhiyun 404*4882a593Smuzhiyun``build/tmp/deploy/deb/`` 405*4882a593Smuzhiyun------------------------- 406*4882a593Smuzhiyun 407*4882a593SmuzhiyunThis directory receives any ``.deb`` packages produced by the build 408*4882a593Smuzhiyunprocess. The packages are sorted into feeds for different architecture 409*4882a593Smuzhiyuntypes. 410*4882a593Smuzhiyun 411*4882a593Smuzhiyun.. _structure-build-tmp-deploy-rpm: 412*4882a593Smuzhiyun 413*4882a593Smuzhiyun``build/tmp/deploy/rpm/`` 414*4882a593Smuzhiyun------------------------- 415*4882a593Smuzhiyun 416*4882a593SmuzhiyunThis directory receives any ``.rpm`` packages produced by the build 417*4882a593Smuzhiyunprocess. The packages are sorted into feeds for different architecture 418*4882a593Smuzhiyuntypes. 419*4882a593Smuzhiyun 420*4882a593Smuzhiyun.. _structure-build-tmp-deploy-ipk: 421*4882a593Smuzhiyun 422*4882a593Smuzhiyun``build/tmp/deploy/ipk/`` 423*4882a593Smuzhiyun------------------------- 424*4882a593Smuzhiyun 425*4882a593SmuzhiyunThis directory receives ``.ipk`` packages produced by the build process. 426*4882a593Smuzhiyun 427*4882a593Smuzhiyun.. _structure-build-tmp-deploy-licenses: 428*4882a593Smuzhiyun 429*4882a593Smuzhiyun``build/tmp/deploy/licenses/`` 430*4882a593Smuzhiyun------------------------------ 431*4882a593Smuzhiyun 432*4882a593SmuzhiyunThis directory receives package licensing information. For example, the 433*4882a593Smuzhiyundirectory contains sub-directories for ``bash``, ``busybox``, and 434*4882a593Smuzhiyun``glibc`` (among others) that in turn contain appropriate ``COPYING`` 435*4882a593Smuzhiyunlicense files with other licensing information. For information on 436*4882a593Smuzhiyunlicensing, see the 437*4882a593Smuzhiyun":ref:`dev-manual/common-tasks:maintaining open source license compliance during your product's lifecycle`" 438*4882a593Smuzhiyunsection in the Yocto Project Development Tasks Manual. 439*4882a593Smuzhiyun 440*4882a593Smuzhiyun.. _structure-build-tmp-deploy-images: 441*4882a593Smuzhiyun 442*4882a593Smuzhiyun``build/tmp/deploy/images/`` 443*4882a593Smuzhiyun---------------------------- 444*4882a593Smuzhiyun 445*4882a593SmuzhiyunThis directory is populated with the basic output objects of the build 446*4882a593Smuzhiyun(think of them as the "generated artifacts" of the build process), 447*4882a593Smuzhiyunincluding things like the boot loader image, kernel, root filesystem and 448*4882a593Smuzhiyunmore. If you want to flash the resulting image from a build onto a 449*4882a593Smuzhiyundevice, look here for the necessary components. 450*4882a593Smuzhiyun 451*4882a593SmuzhiyunBe careful when deleting files in this directory. You can safely delete 452*4882a593Smuzhiyunold images from this directory (e.g. ``core-image-*``). However, the 453*4882a593Smuzhiyunkernel (``*zImage*``, ``*uImage*``, etc.), bootloader and other 454*4882a593Smuzhiyunsupplementary files might be deployed here prior to building an image. 455*4882a593SmuzhiyunBecause these files are not directly produced from the image, if you 456*4882a593Smuzhiyundelete them they will not be automatically re-created when you build the 457*4882a593Smuzhiyunimage again. 458*4882a593Smuzhiyun 459*4882a593SmuzhiyunIf you do accidentally delete files here, you will need to force them to 460*4882a593Smuzhiyunbe re-created. In order to do that, you will need to know the target 461*4882a593Smuzhiyunthat produced them. For example, these commands rebuild and re-create 462*4882a593Smuzhiyunthe kernel files:: 463*4882a593Smuzhiyun 464*4882a593Smuzhiyun $ bitbake -c clean virtual/kernel 465*4882a593Smuzhiyun $ bitbake virtual/kernel 466*4882a593Smuzhiyun 467*4882a593Smuzhiyun.. _structure-build-tmp-deploy-sdk: 468*4882a593Smuzhiyun 469*4882a593Smuzhiyun``build/tmp/deploy/sdk/`` 470*4882a593Smuzhiyun------------------------- 471*4882a593Smuzhiyun 472*4882a593SmuzhiyunThe OpenEmbedded build system creates this directory to hold toolchain 473*4882a593Smuzhiyuninstaller scripts which, when executed, install the sysroot that matches 474*4882a593Smuzhiyunyour target hardware. You can find out more about these installers in 475*4882a593Smuzhiyunthe ":ref:`sdk-manual/appendix-obtain:building an sdk installer`" 476*4882a593Smuzhiyunsection in the Yocto Project Application Development and the Extensible 477*4882a593SmuzhiyunSoftware Development Kit (eSDK) manual. 478*4882a593Smuzhiyun 479*4882a593Smuzhiyun.. _structure-build-tmp-sstate-control: 480*4882a593Smuzhiyun 481*4882a593Smuzhiyun``build/tmp/sstate-control/`` 482*4882a593Smuzhiyun----------------------------- 483*4882a593Smuzhiyun 484*4882a593SmuzhiyunThe OpenEmbedded build system uses this directory for the shared state 485*4882a593Smuzhiyunmanifest files. The shared state code uses these files to record the 486*4882a593Smuzhiyunfiles installed by each sstate task so that the files can be removed 487*4882a593Smuzhiyunwhen cleaning the recipe or when a newer version is about to be 488*4882a593Smuzhiyuninstalled. The build system also uses the manifests to detect and 489*4882a593Smuzhiyunproduce a warning when files from one task are overwriting those from 490*4882a593Smuzhiyunanother. 491*4882a593Smuzhiyun 492*4882a593Smuzhiyun.. _structure-build-tmp-sysroots-components: 493*4882a593Smuzhiyun 494*4882a593Smuzhiyun``build/tmp/sysroots-components/`` 495*4882a593Smuzhiyun---------------------------------- 496*4882a593Smuzhiyun 497*4882a593SmuzhiyunThis directory is the location of the sysroot contents that the task 498*4882a593Smuzhiyun:ref:`ref-tasks-prepare_recipe_sysroot` 499*4882a593Smuzhiyunlinks or copies into the recipe-specific sysroot for each recipe listed 500*4882a593Smuzhiyunin :term:`DEPENDS`. Population of this directory is 501*4882a593Smuzhiyunhandled through shared state, while the path is specified by the 502*4882a593Smuzhiyun:term:`COMPONENTS_DIR` variable. Apart from a few 503*4882a593Smuzhiyununusual circumstances, handling of the ``sysroots-components`` directory 504*4882a593Smuzhiyunshould be automatic, and recipes should not directly reference 505*4882a593Smuzhiyun``build/tmp/sysroots-components``. 506*4882a593Smuzhiyun 507*4882a593Smuzhiyun.. _structure-build-tmp-sysroots: 508*4882a593Smuzhiyun 509*4882a593Smuzhiyun``build/tmp/sysroots/`` 510*4882a593Smuzhiyun----------------------- 511*4882a593Smuzhiyun 512*4882a593SmuzhiyunPrevious versions of the OpenEmbedded build system used to create a 513*4882a593Smuzhiyunglobal shared sysroot per machine along with a native sysroot. Since 514*4882a593Smuzhiyunthe 2.3 version of the Yocto Project, there are sysroots in 515*4882a593Smuzhiyunrecipe-specific :term:`WORKDIR` directories. Thus, the 516*4882a593Smuzhiyun``build/tmp/sysroots/`` directory is unused. 517*4882a593Smuzhiyun 518*4882a593Smuzhiyun.. note:: 519*4882a593Smuzhiyun 520*4882a593Smuzhiyun The ``build/tmp/sysroots/`` directory can still be populated using the 521*4882a593Smuzhiyun ``bitbake build-sysroots`` command and can be used for compatibility in some 522*4882a593Smuzhiyun cases. However, in general it is not recommended to populate this directory. 523*4882a593Smuzhiyun Individual recipe-specific sysroots should be used. 524*4882a593Smuzhiyun 525*4882a593Smuzhiyun.. _structure-build-tmp-stamps: 526*4882a593Smuzhiyun 527*4882a593Smuzhiyun``build/tmp/stamps/`` 528*4882a593Smuzhiyun--------------------- 529*4882a593Smuzhiyun 530*4882a593SmuzhiyunThis directory holds information that BitBake uses for accounting 531*4882a593Smuzhiyunpurposes to track what tasks have run and when they have run. The 532*4882a593Smuzhiyundirectory is sub-divided by architecture, package name, and version. 533*4882a593SmuzhiyunFollowing is an example:: 534*4882a593Smuzhiyun 535*4882a593Smuzhiyun stamps/all-poky-linux/distcc-config/1.0-r0.do_build-2fdd....2do 536*4882a593Smuzhiyun 537*4882a593SmuzhiyunAlthough the files in the directory are empty of data, BitBake uses the filenames 538*4882a593Smuzhiyunand timestamps for tracking purposes. 539*4882a593Smuzhiyun 540*4882a593SmuzhiyunFor information on how BitBake uses stamp files to determine if a task 541*4882a593Smuzhiyunshould be rerun, see the 542*4882a593Smuzhiyun":ref:`overview-manual/concepts:stamp files and the rerunning of tasks`" 543*4882a593Smuzhiyunsection in the Yocto Project Overview and Concepts Manual. 544*4882a593Smuzhiyun 545*4882a593Smuzhiyun.. _structure-build-tmp-log: 546*4882a593Smuzhiyun 547*4882a593Smuzhiyun``build/tmp/log/`` 548*4882a593Smuzhiyun------------------ 549*4882a593Smuzhiyun 550*4882a593SmuzhiyunThis directory contains general logs that are not otherwise placed using 551*4882a593Smuzhiyunthe package's :term:`WORKDIR`. Examples of logs are the output from the 552*4882a593Smuzhiyun``do_check_pkg`` or ``do_distro_check`` tasks. Running a build does not 553*4882a593Smuzhiyunnecessarily mean this directory is created. 554*4882a593Smuzhiyun 555*4882a593Smuzhiyun.. _structure-build-tmp-work: 556*4882a593Smuzhiyun 557*4882a593Smuzhiyun``build/tmp/work/`` 558*4882a593Smuzhiyun------------------- 559*4882a593Smuzhiyun 560*4882a593SmuzhiyunThis directory contains architecture-specific work sub-directories for 561*4882a593Smuzhiyunpackages built by BitBake. All tasks execute from the appropriate work 562*4882a593Smuzhiyundirectory. For example, the source for a particular package is unpacked, 563*4882a593Smuzhiyunpatched, configured and compiled all within its own work directory. 564*4882a593SmuzhiyunWithin the work directory, organization is based on the package group 565*4882a593Smuzhiyunand version for which the source is being compiled as defined by the 566*4882a593Smuzhiyun:term:`WORKDIR`. 567*4882a593Smuzhiyun 568*4882a593SmuzhiyunIt is worth considering the structure of a typical work directory. As an 569*4882a593Smuzhiyunexample, consider ``linux-yocto-kernel-3.0`` on the machine ``qemux86`` 570*4882a593Smuzhiyunbuilt within the Yocto Project. For this package, a work directory of 571*4882a593Smuzhiyun``tmp/work/qemux86-poky-linux/linux-yocto/3.0+git1+<.....>``, referred 572*4882a593Smuzhiyunto as the :term:`WORKDIR`, is created. Within this directory, the source is 573*4882a593Smuzhiyununpacked to ``linux-qemux86-standard-build`` and then patched by Quilt. 574*4882a593Smuzhiyun(See the ":ref:`dev-manual/common-tasks:using quilt in your workflow`" section in 575*4882a593Smuzhiyunthe Yocto Project Development Tasks Manual for more information.) Within 576*4882a593Smuzhiyunthe ``linux-qemux86-standard-build`` directory, standard Quilt 577*4882a593Smuzhiyundirectories ``linux-3.0/patches`` and ``linux-3.0/.pc`` are created, and 578*4882a593Smuzhiyunstandard Quilt commands can be used. 579*4882a593Smuzhiyun 580*4882a593SmuzhiyunThere are other directories generated within :term:`WORKDIR`. The most 581*4882a593Smuzhiyunimportant directory is ``WORKDIR/temp/``, which has log files for each 582*4882a593Smuzhiyuntask (``log.do_*.pid``) and contains the scripts BitBake runs for each 583*4882a593Smuzhiyuntask (``run.do_*.pid``). The ``WORKDIR/image/`` directory is where "make 584*4882a593Smuzhiyuninstall" places its output that is then split into sub-packages within 585*4882a593Smuzhiyun``WORKDIR/packages-split/``. 586*4882a593Smuzhiyun 587*4882a593Smuzhiyun.. _structure-build-tmp-work-tunearch-recipename-version: 588*4882a593Smuzhiyun 589*4882a593Smuzhiyun``build/tmp/work/tunearch/recipename/version/`` 590*4882a593Smuzhiyun----------------------------------------------- 591*4882a593Smuzhiyun 592*4882a593SmuzhiyunThe recipe work directory - ``${WORKDIR}``. 593*4882a593Smuzhiyun 594*4882a593SmuzhiyunAs described earlier in the 595*4882a593Smuzhiyun":ref:`structure-build-tmp-sysroots`" section, 596*4882a593Smuzhiyunbeginning with the 2.3 release of the Yocto Project, the OpenEmbedded 597*4882a593Smuzhiyunbuild system builds each recipe in its own work directory (i.e. 598*4882a593Smuzhiyun:term:`WORKDIR`). The path to the work directory is 599*4882a593Smuzhiyunconstructed using the architecture of the given build (e.g. 600*4882a593Smuzhiyun:term:`TUNE_PKGARCH`, :term:`MACHINE_ARCH`, or "allarch"), the recipe 601*4882a593Smuzhiyunname, and the version of the recipe (i.e. 602*4882a593Smuzhiyun:term:`PE`\ ``:``\ :term:`PV`\ ``-``\ :term:`PR`). 603*4882a593Smuzhiyun 604*4882a593SmuzhiyunHere are key subdirectories within each recipe work directory: 605*4882a593Smuzhiyun 606*4882a593Smuzhiyun- ``${WORKDIR}/temp``: Contains the log files of each task executed for 607*4882a593Smuzhiyun this recipe, the "run" files for each executed task, which contain 608*4882a593Smuzhiyun the code run, and a ``log.task_order`` file, which lists the order in 609*4882a593Smuzhiyun which tasks were executed. 610*4882a593Smuzhiyun 611*4882a593Smuzhiyun- ``${WORKDIR}/image``: Contains the output of the 612*4882a593Smuzhiyun :ref:`ref-tasks-install` task, which corresponds to 613*4882a593Smuzhiyun the ``${``\ :term:`D`\ ``}`` variable in that task. 614*4882a593Smuzhiyun 615*4882a593Smuzhiyun- ``${WORKDIR}/pseudo``: Contains the pseudo database and log for any 616*4882a593Smuzhiyun tasks executed under pseudo for the recipe. 617*4882a593Smuzhiyun 618*4882a593Smuzhiyun- ``${WORKDIR}/sysroot-destdir``: Contains the output of the 619*4882a593Smuzhiyun :ref:`ref-tasks-populate_sysroot` task. 620*4882a593Smuzhiyun 621*4882a593Smuzhiyun- ``${WORKDIR}/package``: Contains the output of the 622*4882a593Smuzhiyun :ref:`ref-tasks-package` task before the output is 623*4882a593Smuzhiyun split into individual packages. 624*4882a593Smuzhiyun 625*4882a593Smuzhiyun- ``${WORKDIR}/packages-split``: Contains the output of the 626*4882a593Smuzhiyun ``do_package`` task after the output has been split into individual 627*4882a593Smuzhiyun packages. There are subdirectories for each individual package created by 628*4882a593Smuzhiyun the recipe. 629*4882a593Smuzhiyun 630*4882a593Smuzhiyun- ``${WORKDIR}/recipe-sysroot``: A directory populated with the target 631*4882a593Smuzhiyun dependencies of the recipe. This directory looks like the target 632*4882a593Smuzhiyun filesystem and contains libraries that the recipe might need to link 633*4882a593Smuzhiyun against (e.g. the C library). 634*4882a593Smuzhiyun 635*4882a593Smuzhiyun- ``${WORKDIR}/recipe-sysroot-native``: A directory populated with the 636*4882a593Smuzhiyun native dependencies of the recipe. This directory contains the tools 637*4882a593Smuzhiyun the recipe needs to build (e.g. the compiler, Autoconf, libtool, and 638*4882a593Smuzhiyun so forth). 639*4882a593Smuzhiyun 640*4882a593Smuzhiyun- ``${WORKDIR}/build``: This subdirectory applies only to recipes that 641*4882a593Smuzhiyun support builds where the source is separate from the build artifacts. 642*4882a593Smuzhiyun The OpenEmbedded build system uses this directory as a separate build 643*4882a593Smuzhiyun directory (i.e. ``${``\ :term:`B`\ ``}``). 644*4882a593Smuzhiyun 645*4882a593Smuzhiyun.. _structure-build-work-shared: 646*4882a593Smuzhiyun 647*4882a593Smuzhiyun``build/tmp/work-shared/`` 648*4882a593Smuzhiyun-------------------------- 649*4882a593Smuzhiyun 650*4882a593SmuzhiyunFor efficiency, the OpenEmbedded build system creates and uses this 651*4882a593Smuzhiyundirectory to hold recipes that share a work directory with other 652*4882a593Smuzhiyunrecipes. In practice, this is only used for ``gcc`` and its variants 653*4882a593Smuzhiyun(e.g. ``gcc-cross``, ``libgcc``, ``gcc-runtime``, and so forth). 654*4882a593Smuzhiyun 655*4882a593Smuzhiyun.. _structure-meta: 656*4882a593Smuzhiyun 657*4882a593SmuzhiyunThe Metadata - ``meta/`` 658*4882a593Smuzhiyun======================== 659*4882a593Smuzhiyun 660*4882a593SmuzhiyunAs mentioned previously, :term:`Metadata` is the core of the 661*4882a593SmuzhiyunYocto Project. Metadata has several important subdivisions: 662*4882a593Smuzhiyun 663*4882a593Smuzhiyun.. _structure-meta-classes: 664*4882a593Smuzhiyun 665*4882a593Smuzhiyun``meta/classes/`` 666*4882a593Smuzhiyun----------------- 667*4882a593Smuzhiyun 668*4882a593SmuzhiyunThis directory contains the ``*.bbclass`` files. Class files are used to 669*4882a593Smuzhiyunabstract common code so it can be reused by multiple packages. Every 670*4882a593Smuzhiyunpackage inherits the :ref:`ref-classes-base` file. Examples of other important 671*4882a593Smuzhiyunclasses are :ref:`ref-classes-autotools`, which in theory allows any 672*4882a593SmuzhiyunAutotool-enabled package to work with the Yocto Project with minimal 673*4882a593Smuzhiyuneffort. Another example is :ref:`ref-classes-kernel` that contains common code 674*4882a593Smuzhiyunand functions for working with the Linux kernel. Functions like image 675*4882a593Smuzhiyungeneration or packaging also have their specific class files such as 676*4882a593Smuzhiyun:ref:`ref-classes-image`, :ref:`ref-classes-rootfs*` and 677*4882a593Smuzhiyun:ref:`package*.bbclass <ref-classes-package>`. 678*4882a593Smuzhiyun 679*4882a593SmuzhiyunFor reference information on classes, see the 680*4882a593Smuzhiyun":doc:`/ref-manual/classes`" chapter. 681*4882a593Smuzhiyun 682*4882a593Smuzhiyun.. _structure-meta-conf: 683*4882a593Smuzhiyun 684*4882a593Smuzhiyun``meta/conf/`` 685*4882a593Smuzhiyun-------------- 686*4882a593Smuzhiyun 687*4882a593SmuzhiyunThis directory contains the core set of configuration files that start 688*4882a593Smuzhiyunfrom ``bitbake.conf`` and from which all other configuration files are 689*4882a593Smuzhiyunincluded. See the include statements at the end of the ``bitbake.conf`` 690*4882a593Smuzhiyunfile and you will note that even ``local.conf`` is loaded from there. 691*4882a593SmuzhiyunWhile ``bitbake.conf`` sets up the defaults, you can often override 692*4882a593Smuzhiyunthese by using the (``local.conf``) file, machine file or the 693*4882a593Smuzhiyundistribution configuration file. 694*4882a593Smuzhiyun 695*4882a593Smuzhiyun.. _structure-meta-conf-machine: 696*4882a593Smuzhiyun 697*4882a593Smuzhiyun``meta/conf/machine/`` 698*4882a593Smuzhiyun---------------------- 699*4882a593Smuzhiyun 700*4882a593SmuzhiyunThis directory contains all the machine configuration files. If you set 701*4882a593Smuzhiyun``MACHINE = "qemux86"``, the OpenEmbedded build system looks for a 702*4882a593Smuzhiyun``qemux86.conf`` file in this directory. The ``include`` directory 703*4882a593Smuzhiyuncontains various data common to multiple machines. If you want to add 704*4882a593Smuzhiyunsupport for a new machine to the Yocto Project, look in this directory. 705*4882a593Smuzhiyun 706*4882a593Smuzhiyun.. _structure-meta-conf-distro: 707*4882a593Smuzhiyun 708*4882a593Smuzhiyun``meta/conf/distro/`` 709*4882a593Smuzhiyun--------------------- 710*4882a593Smuzhiyun 711*4882a593SmuzhiyunThe contents of this directory controls any distribution-specific 712*4882a593Smuzhiyunconfigurations. For the Yocto Project, the ``defaultsetup.conf`` is the 713*4882a593Smuzhiyunmain file here. This directory includes the versions and the :term:`SRCDATE` 714*4882a593Smuzhiyundefinitions for applications that are configured here. An example of an 715*4882a593Smuzhiyunalternative configuration might be ``poky-bleeding.conf``. Although this 716*4882a593Smuzhiyunfile mainly inherits its configuration from Poky. 717*4882a593Smuzhiyun 718*4882a593Smuzhiyun.. _structure-meta-conf-machine-sdk: 719*4882a593Smuzhiyun 720*4882a593Smuzhiyun``meta/conf/machine-sdk/`` 721*4882a593Smuzhiyun-------------------------- 722*4882a593Smuzhiyun 723*4882a593SmuzhiyunThe OpenEmbedded build system searches this directory for configuration 724*4882a593Smuzhiyunfiles that correspond to the value of 725*4882a593Smuzhiyun:term:`SDKMACHINE`. By default, 32-bit and 64-bit x86 726*4882a593Smuzhiyunfiles ship with the Yocto Project that support some SDK hosts. However, 727*4882a593Smuzhiyunit is possible to extend that support to other SDK hosts by adding 728*4882a593Smuzhiyunadditional configuration files in this subdirectory within another 729*4882a593Smuzhiyunlayer. 730*4882a593Smuzhiyun 731*4882a593Smuzhiyun.. _structure-meta-files: 732*4882a593Smuzhiyun 733*4882a593Smuzhiyun``meta/files/`` 734*4882a593Smuzhiyun--------------- 735*4882a593Smuzhiyun 736*4882a593SmuzhiyunThis directory contains common license files and several text files used 737*4882a593Smuzhiyunby the build system. The text files contain minimal device information 738*4882a593Smuzhiyunand lists of files and directories with known permissions. 739*4882a593Smuzhiyun 740*4882a593Smuzhiyun.. _structure-meta-lib: 741*4882a593Smuzhiyun 742*4882a593Smuzhiyun``meta/lib/`` 743*4882a593Smuzhiyun------------- 744*4882a593Smuzhiyun 745*4882a593SmuzhiyunThis directory contains OpenEmbedded Python library code used during the 746*4882a593Smuzhiyunbuild process. 747*4882a593Smuzhiyun 748*4882a593Smuzhiyun.. _structure-meta-recipes-bsp: 749*4882a593Smuzhiyun 750*4882a593Smuzhiyun``meta/recipes-bsp/`` 751*4882a593Smuzhiyun--------------------- 752*4882a593Smuzhiyun 753*4882a593SmuzhiyunThis directory contains anything linking to specific hardware or 754*4882a593Smuzhiyunhardware configuration information such as "u-boot" and "grub". 755*4882a593Smuzhiyun 756*4882a593Smuzhiyun.. _structure-meta-recipes-connectivity: 757*4882a593Smuzhiyun 758*4882a593Smuzhiyun``meta/recipes-connectivity/`` 759*4882a593Smuzhiyun------------------------------ 760*4882a593Smuzhiyun 761*4882a593SmuzhiyunThis directory contains libraries and applications related to 762*4882a593Smuzhiyuncommunication with other devices. 763*4882a593Smuzhiyun 764*4882a593Smuzhiyun.. _structure-meta-recipes-core: 765*4882a593Smuzhiyun 766*4882a593Smuzhiyun``meta/recipes-core/`` 767*4882a593Smuzhiyun---------------------- 768*4882a593Smuzhiyun 769*4882a593SmuzhiyunThis directory contains what is needed to build a basic working Linux 770*4882a593Smuzhiyunimage including commonly used dependencies. 771*4882a593Smuzhiyun 772*4882a593Smuzhiyun.. _structure-meta-recipes-devtools: 773*4882a593Smuzhiyun 774*4882a593Smuzhiyun``meta/recipes-devtools/`` 775*4882a593Smuzhiyun-------------------------- 776*4882a593Smuzhiyun 777*4882a593SmuzhiyunThis directory contains tools that are primarily used by the build 778*4882a593Smuzhiyunsystem. The tools, however, can also be used on targets. 779*4882a593Smuzhiyun 780*4882a593Smuzhiyun.. _structure-meta-recipes-extended: 781*4882a593Smuzhiyun 782*4882a593Smuzhiyun``meta/recipes-extended/`` 783*4882a593Smuzhiyun-------------------------- 784*4882a593Smuzhiyun 785*4882a593SmuzhiyunThis directory contains non-essential applications that add features 786*4882a593Smuzhiyuncompared to the alternatives in core. You might need this directory for 787*4882a593Smuzhiyunfull tool functionality. 788*4882a593Smuzhiyun 789*4882a593Smuzhiyun.. _structure-meta-recipes-gnome: 790*4882a593Smuzhiyun 791*4882a593Smuzhiyun``meta/recipes-gnome/`` 792*4882a593Smuzhiyun----------------------- 793*4882a593Smuzhiyun 794*4882a593SmuzhiyunThis directory contains all things related to the GTK+ application 795*4882a593Smuzhiyunframework. 796*4882a593Smuzhiyun 797*4882a593Smuzhiyun.. _structure-meta-recipes-graphics: 798*4882a593Smuzhiyun 799*4882a593Smuzhiyun``meta/recipes-graphics/`` 800*4882a593Smuzhiyun-------------------------- 801*4882a593Smuzhiyun 802*4882a593SmuzhiyunThis directory contains X and other graphically related system 803*4882a593Smuzhiyunlibraries. 804*4882a593Smuzhiyun 805*4882a593Smuzhiyun.. _structure-meta-recipes-kernel: 806*4882a593Smuzhiyun 807*4882a593Smuzhiyun``meta/recipes-kernel/`` 808*4882a593Smuzhiyun------------------------ 809*4882a593Smuzhiyun 810*4882a593SmuzhiyunThis directory contains the kernel and generic applications and 811*4882a593Smuzhiyunlibraries that have strong kernel dependencies. 812*4882a593Smuzhiyun 813*4882a593Smuzhiyun.. _structure-meta-recipes-multimedia: 814*4882a593Smuzhiyun 815*4882a593Smuzhiyun``meta/recipes-multimedia/`` 816*4882a593Smuzhiyun---------------------------- 817*4882a593Smuzhiyun 818*4882a593SmuzhiyunThis directory contains codecs and support utilities for audio, images 819*4882a593Smuzhiyunand video. 820*4882a593Smuzhiyun 821*4882a593Smuzhiyun.. _structure-meta-recipes-rt: 822*4882a593Smuzhiyun 823*4882a593Smuzhiyun``meta/recipes-rt/`` 824*4882a593Smuzhiyun-------------------- 825*4882a593Smuzhiyun 826*4882a593SmuzhiyunThis directory contains package and image recipes for using and testing 827*4882a593Smuzhiyunthe ``PREEMPT_RT`` kernel. 828*4882a593Smuzhiyun 829*4882a593Smuzhiyun.. _structure-meta-recipes-sato: 830*4882a593Smuzhiyun 831*4882a593Smuzhiyun``meta/recipes-sato/`` 832*4882a593Smuzhiyun---------------------- 833*4882a593Smuzhiyun 834*4882a593SmuzhiyunThis directory contains the Sato demo/reference UI/UX and its associated 835*4882a593Smuzhiyunapplications and configuration data. 836*4882a593Smuzhiyun 837*4882a593Smuzhiyun.. _structure-meta-recipes-support: 838*4882a593Smuzhiyun 839*4882a593Smuzhiyun``meta/recipes-support/`` 840*4882a593Smuzhiyun------------------------- 841*4882a593Smuzhiyun 842*4882a593SmuzhiyunThis directory contains recipes used by other recipes, but that are not 843*4882a593Smuzhiyundirectly included in images (i.e. dependencies of other recipes). 844*4882a593Smuzhiyun 845*4882a593Smuzhiyun.. _structure-meta-site: 846*4882a593Smuzhiyun 847*4882a593Smuzhiyun``meta/site/`` 848*4882a593Smuzhiyun-------------- 849*4882a593Smuzhiyun 850*4882a593SmuzhiyunThis directory contains a list of cached results for various 851*4882a593Smuzhiyunarchitectures. Because certain "autoconf" test results cannot be 852*4882a593Smuzhiyundetermined when cross-compiling due to the tests not able to run on a 853*4882a593Smuzhiyunlive system, the information in this directory is passed to "autoconf" 854*4882a593Smuzhiyunfor the various architectures. 855*4882a593Smuzhiyun 856*4882a593Smuzhiyun.. _structure-meta-recipes-txt: 857*4882a593Smuzhiyun 858*4882a593Smuzhiyun``meta/recipes.txt`` 859*4882a593Smuzhiyun-------------------- 860*4882a593Smuzhiyun 861*4882a593SmuzhiyunThis file is a description of the contents of ``recipes-*``. 862