xref: /OK3568_Linux_fs/yocto/poky/documentation/ref-manual/structure.rst (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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