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