summaryrefslogtreecommitdiffstats
path: root/documentation/ref-manual/terms.rst
diff options
context:
space:
mode:
Diffstat (limited to 'documentation/ref-manual/terms.rst')
-rw-r--r--documentation/ref-manual/terms.rst350
1 files changed, 294 insertions, 56 deletions
diff --git a/documentation/ref-manual/terms.rst b/documentation/ref-manual/terms.rst
index bf46148876..e25c714d9b 100644
--- a/documentation/ref-manual/terms.rst
+++ b/documentation/ref-manual/terms.rst
@@ -4,7 +4,7 @@
4Yocto Project Terms 4Yocto Project Terms
5******************* 5*******************
6 6
7Following is a list of terms and definitions users new to the Yocto Project 7Here is a list of terms and definitions users new to the Yocto Project
8development environment might find helpful. While some of these terms are 8development environment might find helpful. While some of these terms are
9universal, the list includes them just in case: 9universal, the list includes them just in case:
10 10
@@ -21,18 +21,17 @@ universal, the list includes them just in case:
21 21
22 Information in append files extends or overrides the information in the 22 Information in append files extends or overrides the information in the
23 similarly-named recipe file. For an example of an append file in use, see 23 similarly-named recipe file. For an example of an append file in use, see
24 the ":ref:`dev-manual/common-tasks:Using .bbappend Files in 24 the ":ref:`dev-manual/layers:appending other layers metadata with your layer`"
25 Your Layer`" section in the Yocto Project Development Tasks Manual. 25 section in the Yocto Project Development Tasks Manual.
26 26
27 When you name an append file, you can use the "``%``" wildcard character 27 When you name an append file, you can use the "``%``" wildcard character
28 to allow for matching recipe names. For example, suppose you have an 28 to allow for matching recipe names. For example, suppose you have an
29 append file named as follows: 29 append file named as follows::
30 :: 30
31
32 busybox_1.21.%.bbappend 31 busybox_1.21.%.bbappend
33 32
34 That append file 33 That append file
35 would match any ``busybox_1.21.``\ x\ ``.bb`` version of the recipe. So, 34 would match any ``busybox_1.21.x.bb`` version of the recipe. So,
36 the append file would match any of the following recipe names: 35 the append file would match any of the following recipe names:
37 36
38 .. code-block:: shell 37 .. code-block:: shell
@@ -64,55 +63,121 @@ universal, the list includes them just in case:
64 This term refers to the area used by the OpenEmbedded build system for 63 This term refers to the area used by the OpenEmbedded build system for
65 builds. The area is created when you ``source`` the setup environment 64 builds. The area is created when you ``source`` the setup environment
66 script that is found in the Source Directory 65 script that is found in the Source Directory
67 (i.e. :ref:`ref-manual/structure:\`\`oe-init-build-env\`\``). The 66 (i.e. :ref:`ref-manual/structure:``oe-init-build-env```). The
68 :term:`TOPDIR` variable points to the Build Directory. 67 :term:`TOPDIR` variable points to the :term:`Build Directory`.
69 68
70 You have a lot of flexibility when creating the Build Directory. 69 You have a lot of flexibility when creating the :term:`Build Directory`.
71 Following are some examples that show how to create the directory. The 70 Here are some examples that show how to create the directory. The
72 examples assume your :term:`Source Directory` is named ``poky``: 71 examples assume your :term:`Source Directory` is named ``poky``:
73 72
74 - Create the Build Directory inside your Source Directory and let 73 - Create the :term:`Build Directory` inside your Source Directory and let
75 the name of the Build Directory default to ``build``: 74 the name of the :term:`Build Directory` default to ``build``:
76 75
77 .. code-block:: shell 76 .. code-block:: shell
78 77
79 $ cd $HOME/poky 78 $ cd poky
80 $ source oe-init-build-env 79 $ source oe-init-build-env
81 80
82 - Create the Build Directory inside your home directory and 81 - Create the :term:`Build Directory` inside your home directory and
83 specifically name it ``test-builds``: 82 specifically name it ``test-builds``:
84 83
85 .. code-block:: shell 84 .. code-block:: shell
86 85
87 $ cd $HOME
88 $ source poky/oe-init-build-env test-builds 86 $ source poky/oe-init-build-env test-builds
89 87
90 - Provide a directory path and specifically name the Build 88 - Provide a directory path and specifically name the
91 Directory. Any intermediate folders in the pathname must exist. 89 :term:`Build Directory`. Any intermediate folders in the pathname
92 This next example creates a Build Directory named 90 must exist. This next example creates a :term:`Build Directory`
93 ``YP-&POKYVERSION;`` in your home directory within the existing 91 named ``YP-&DISTRO;`` within the existing directory ``mybuilds``:
94 directory ``mybuilds``:
95 92
96 .. code-block:: shell 93 .. code-block:: shell
97 94
98 $ cd $HOME 95 $ source poky/oe-init-build-env mybuilds/YP-&DISTRO;
99 $ source $HOME/poky/oe-init-build-env $HOME/mybuilds/YP-&POKYVERSION;
100 96
101 .. note:: 97 .. note::
102 98
103 By default, the Build Directory contains :term:`TMPDIR`, which is a 99 By default, the :term:`Build Directory` contains :term:`TMPDIR`, which is a
104 temporary directory the build system uses for its work. ``TMPDIR`` cannot 100 temporary directory the build system uses for its work. :term:`TMPDIR` cannot
105 be under NFS. Thus, by default, the Build Directory cannot be under 101 be under NFS. Thus, by default, the :term:`Build Directory` cannot be under
106 NFS. However, if you need the Build Directory to be under NFS, you can 102 NFS. However, if you need the :term:`Build Directory` to be under NFS, you can
107 set this up by setting ``TMPDIR`` in your ``local.conf`` file to use a local 103 set this up by setting :term:`TMPDIR` in your ``local.conf`` file to use a local
108 drive. Doing so effectively separates ``TMPDIR`` from :term:`TOPDIR`, which is the 104 drive. Doing so effectively separates :term:`TMPDIR` from :term:`TOPDIR`, which is the
109 Build Directory. 105 :term:`Build Directory`.
110 106
111 :term:`Build Host` 107 :term:`Build Host`
112 The system used to build images in a Yocto Project Development 108 The system used to build images in a Yocto Project Development
113 environment. The build system is sometimes referred to as the development 109 environment. The build system is sometimes referred to as the development
114 host. 110 host.
115 111
112 :term:`buildtools`
113 Build tools in binary form, providing required versions of development
114 tools (such as Git, GCC, Python and make), to run the OpenEmbedded build
115 system on a development host without such minimum versions.
116
117 See the ":ref:`system-requirements-buildtools`" paragraph in the
118 Reference Manual for details about downloading or building an archive
119 of such tools.
120
121 :term:`buildtools-extended`
122 A set of :term:`buildtools` binaries extended with additional development
123 tools, such as a required version of the GCC compiler to run the
124 OpenEmbedded build system.
125
126 See the ":ref:`system-requirements-buildtools`" paragraph in the
127 Reference Manual for details about downloading or building an archive
128 of such tools.
129
130 :term:`buildtools-make`
131 A variant of :term:`buildtools`, just providing the required
132 version of ``make`` to run the OpenEmbedded build system.
133
134 :term:`Built-in Fragment`
135 A built-in fragment is a specific kind of :term:`Configuration Fragment`
136 that affects the value of a single variable globally. :term:`Built-in
137 Fragments <Built-in Fragment>` do not require a separate configuration
138 file, but like a standard :term:`Configuration Fragment`, Built-in
139 Fragments can be enabled or disabled using the :oe_git:`bitbake-config-build
140 </bitbake/tree/bin/bitbake-config-build>` command-line utility.
141
142 When declared, a built-in fragment follows the following naming
143 convention::
144
145 <fragment>:<variable name>
146
147 Where:
148
149 - ``<fragment>`` is the name of the built-in fragment.
150 - ``<variable name>`` is the name of the variable to be modified by this
151 fragment.
152
153 For example::
154
155 machine:MACHINE
156
157 Will setup the ``machine`` Built-in Fragment for modifying the value of
158 the :term:`MACHINE` variable.
159
160 Setting the :term:`MACHINE` variable through this fragment must follow
161 this syntax::
162
163 machine/qemux86-64
164
165 This sets the value of :term:`MACHINE` to ``qemux86-64``.
166
167 In :term:`OpenEmbedded-Core (OE-Core)`, the list of available
168 :term:`Built-in Fragments <Built-in Fragment>` can be obtained from the
169 :term:`OE_FRAGMENTS_BUILTIN` variable.
170
171 For more details on fragments, see:
172
173 - The :doc:`/ref-manual/fragments` section of the Yocto Project Reference
174 Manual for a list of fragments the :term:`OpenEmbedded Build System`
175 supports, and a quick reference guide on how to manage fragments.
176
177 - The :doc:`/dev-manual/creating-fragments` section of the Yocto Project
178 Development Tasks Manual for details on how to create new fragments
179 in your build.
180
116 :term:`Classes` 181 :term:`Classes`
117 Files that provide for logic encapsulation and inheritance so that 182 Files that provide for logic encapsulation and inheritance so that
118 commonly used patterns can be defined once and then easily used in 183 commonly used patterns can be defined once and then easily used in
@@ -136,12 +201,72 @@ universal, the list includes them just in case:
136 only used when building for that target (e.g. the 201 only used when building for that target (e.g. the
137 :file:`machine/beaglebone.conf` configuration file defines variables for 202 :file:`machine/beaglebone.conf` configuration file defines variables for
138 the Texas Instruments ARM Cortex-A8 development board). 203 the Texas Instruments ARM Cortex-A8 development board).
204 :term:`Configuration Fragments <Configuration Fragment>` such as
205 :ref:`ref-fragments-core-yocto-sstate-mirror-cdn` define snippets of
206 configuration that can be enabled from the command-line.
207
208 :term:`Configuration Fragment`
209 A :term:`Configuration Fragment` (also called Standard :term:`Configuration
210 Fragment`) is a :term:`configuration file` that contains configuration
211 statements such as variable assignments, affecting the build at a
212 global-level when the fragment is enabled. By default, configuration
213 fragments are located in the :file:`conf/fragments/` directory of a
214 :term:`Layer`.
215
216 .. note::
217
218 Another form of fragment not to be confounded with Standard
219 :term:`Configuration Fragments <Configuration Fragment>` are
220 :term:`Built-in Fragments <Built-in Fragment>` which are used to assign
221 a single variable value globally.
222
223 A fragment :term:`configuration file` must contain a summary
224 (:term:`BB_CONF_FRAGMENT_SUMMARY`) and a description
225 (:term:`BB_CONF_FRAGMENT_DESCRIPTION`) explaining the purpose of the
226 fragment.
227
228 In :term:`OpenEmbedded-Core (OE-Core)`, the location of fragments and what
229 variables are required in a fragment is specified in :oe_git:`bitbake.conf
230 </openembedded-core/tree/meta/conf/bitbake.conf>` thanks to the
231 :ref:`addfragments <bitbake-user-manual/bitbake-user-manual-metadata:\`\`addfragments\`\`
232 directive>` directive and the :term:`OE_FRAGMENTS`,
233 :term:`OE_FRAGMENTS_METADATA_VARS` and :term:`OE_FRAGMENTS_BUILTIN`
234 variables.
235
236 Fragments can be listed, enabled and disabled with the
237 :oe_git:`bitbake-config-build </bitbake/tree/bin/bitbake-config-build>`
238 command-line utility.
239
240 For more details on fragments, see:
241
242 - The :doc:`/ref-manual/fragments` section of the Yocto Project Reference
243 Manual for a list of fragments the :term:`OpenEmbedded Build System`
244 supports, and a quick reference guide on how to manage fragments.
245
246 - The :doc:`/dev-manual/creating-fragments` section of the Yocto Project
247 Development Tasks Manual for details on how to create new fragments
248 in your build.
139 249
140 :term:`Container Layer` 250 :term:`Container Layer`
141 Layers that hold other layers. An example of a container layer is 251 A flexible definition that typically refers to a single Git checkout
142 OpenEmbedded's `meta-openembedded 252 which contains multiple (and typically related) sub-layers which can
143 <https://github.com/openembedded/meta-openembedded>`_ layer. The 253 be included independently in your project's ``bblayers.conf`` file.
144 ``meta-openembedded`` layer contains many ``meta-*`` layers. 254
255 In some cases, such as with OpenEmbedded's :oe_git:`meta-openembedded </meta-openembedded>`
256 layer, the top level ``meta-openembedded/`` directory is not itself an actual layer,
257 so you would never explicitly include it in a ``bblayers.conf`` file;
258 rather, you would include any number of its layer subdirectories, such as
259 :oe_git:`meta-oe </meta-openembedded/tree/meta-oe>`, :oe_git:`meta-python
260 </meta-openembedded/tree/meta-python>` and so on.
261
262 On the other hand, some container layers (such as
263 :yocto_git:`meta-security </meta-security>`)
264 have a top-level directory that is itself an actual layer, as well as
265 a variety of sub-layers, both of which could be included in your
266 ``bblayers.conf`` file.
267
268 In either case, the phrase "container layer" is simply used to describe
269 a directory structure which contains multiple valid OpenEmbedded layers.
145 270
146 :term:`Cross-Development Toolchain` 271 :term:`Cross-Development Toolchain`
147 In general, a cross-development toolchain is a collection of software 272 In general, a cross-development toolchain is a collection of software
@@ -179,6 +304,48 @@ universal, the list includes them just in case:
179 of the supported image types that the Yocto Project provides, see the 304 of the supported image types that the Yocto Project provides, see the
180 ":ref:`ref-manual/images:Images`" chapter. 305 ":ref:`ref-manual/images:Images`" chapter.
181 306
307 :term:`Initramfs`
308 An Initial RAM Filesystem (:term:`Initramfs`) is an optionally compressed
309 :wikipedia:`cpio <Cpio>` archive which is extracted
310 by the Linux kernel into RAM in a special :wikipedia:`tmpfs <Tmpfs>`
311 instance, used as the initial root filesystem.
312
313 This is a replacement for the legacy init RAM disk ("initrd")
314 technique, booting on an emulated block device in RAM, but being less
315 efficient because of the overhead of going through a filesystem and
316 having to duplicate accessed file contents in the file cache in RAM,
317 as for any block device.
318
319 .. note::
320
321 As far as bootloaders are concerned, :term:`Initramfs` and "initrd"
322 images are still copied to RAM in the same way. That's why most
323 most bootloaders refer to :term:`Initramfs` images as "initrd"
324 or "init RAM disk".
325
326 This kind of mechanism is typically used for two reasons:
327
328 - For booting the same kernel binary on multiple systems requiring
329 different device drivers. The :term:`Initramfs` image is then customized
330 for each type of system, to include the specific kernel modules
331 necessary to access the final root filesystem. This technique
332 is used on all GNU / Linux distributions for desktops and servers.
333
334 - For booting faster. As the root filesystem is extracted into RAM,
335 accessing the first user-space applications is very fast, compared
336 to having to initialize a block device, to access multiple blocks
337 from it, and to go through a filesystem having its own overhead.
338 For example, this allows to display a splashscreen very early,
339 and to later take care of mounting the final root filesystem and
340 loading less time-critical kernel drivers.
341
342 This cpio archive can either be loaded to RAM by the bootloader,
343 or be included in the kernel binary.
344
345 For information on creating and using an :term:`Initramfs`, see the
346 ":ref:`dev-manual/building:building an initial ram filesystem (Initramfs) image`"
347 section in the Yocto Project Development Tasks Manual.
348
182 :term:`Layer` 349 :term:`Layer`
183 A collection of related recipes. Layers allow you to consolidate related 350 A collection of related recipes. Layers allow you to consolidate related
184 metadata to customize your build. Layers also isolate information used 351 metadata to customize your build. Layers also isolate information used
@@ -192,12 +359,18 @@ universal, the list includes them just in case:
192 ":ref:`overview-manual/yp-intro:The Yocto Project Layer 359 ":ref:`overview-manual/yp-intro:The Yocto Project Layer
193 Model`" section in the Yocto Project Overview and Concepts Manual. For 360 Model`" section in the Yocto Project Overview and Concepts Manual. For
194 more detailed information on layers, see the 361 more detailed information on layers, see the
195 ":ref:`dev-manual/common-tasks:Understanding and Creating 362 ":ref:`dev-manual/layers:Understanding and Creating
196 Layers`" section in the Yocto Project Development Tasks Manual. For a 363 Layers`" section in the Yocto Project Development Tasks Manual. For a
197 discussion specifically on BSP Layers, see the ":ref:`bsp-guide/bsp:BSP 364 discussion specifically on BSP Layers, see the ":ref:`bsp-guide/bsp:BSP
198 Layers`" section in the Yocto Project Board Support Packages (BSP) 365 Layers`" section in the Yocto Project Board Support Packages (BSP)
199 Developer's Guide. 366 Developer's Guide.
200 367
368 :term:`LTS`
369 This term means "Long Term Support", and in the context of the Yocto
370 Project, it corresponds to selected stable releases for which bug and
371 security fixes are provided for at least four years. See
372 the :ref:`ref-long-term-support-releases` section for details.
373
201 :term:`Metadata` 374 :term:`Metadata`
202 A key element of the Yocto Project is the Metadata that 375 A key element of the Yocto Project is the Metadata that
203 is used to construct a Linux distribution and is contained in the 376 is used to construct a Linux distribution and is contained in the
@@ -217,18 +390,11 @@ universal, the list includes them just in case:
217 :yocto_git:`yocto-kernel-cache </yocto-kernel-cache>` 390 :yocto_git:`yocto-kernel-cache </yocto-kernel-cache>`
218 Git repository. 391 Git repository.
219 392
220 :term:`OpenEmbedded-Core (OE-Core)` 393 :term:`Mixin`
221 OE-Core is metadata comprised of 394 A :term:`Mixin` layer is a layer which can be created by the community to
222 foundational recipes, classes, and associated files that are meant to 395 add a specific feature or support a new version of some package for an
223 be common among many different OpenEmbedded-derived systems, 396 :term:`LTS` release. See the :ref:`ref-long-term-support-releases`
224 including the Yocto Project. OE-Core is a curated subset of an 397 section for details.
225 original repository developed by the OpenEmbedded community that has
226 been pared down into a smaller, core set of continuously validated
227 recipes. The result is a tightly controlled and an quality-assured
228 core set of recipes.
229
230 You can see the Metadata in the ``meta`` directory of the Yocto
231 Project :yocto_git:`Source Repositories </poky>`.
232 398
233 :term:`OpenEmbedded Build System` 399 :term:`OpenEmbedded Build System`
234 The build system specific to the Yocto 400 The build system specific to the Yocto
@@ -244,6 +410,19 @@ universal, the list includes them just in case:
244 410
245 For some historical information about Poky, see the :term:`Poky` term. 411 For some historical information about Poky, see the :term:`Poky` term.
246 412
413 :term:`OpenEmbedded-Core (OE-Core)`
414 OE-Core is metadata comprised of
415 foundational recipes, classes, and associated files that are meant to
416 be common among many different OpenEmbedded-derived systems,
417 including the Yocto Project. OE-Core is a curated subset of an
418 original repository developed by the OpenEmbedded community that has
419 been pared down into a smaller, core set of continuously validated
420 recipes. The result is a tightly controlled and an quality-assured
421 core set of recipes.
422
423 You can see the Metadata in the ``meta`` directory of the Yocto
424 Project :yocto_git:`Source Repositories </poky>`.
425
247 :term:`Package` 426 :term:`Package`
248 In the context of the Yocto Project, this term refers to a 427 In the context of the Yocto Project, this term refers to a
249 recipe's packaged output produced by BitBake (i.e. a "baked recipe"). 428 recipe's packaged output produced by BitBake (i.e. a "baked recipe").
@@ -257,7 +436,7 @@ universal, the list includes them just in case:
257 your Linux distribution. 436 your Linux distribution.
258 437
259 Another point worth noting is that historically within the Yocto 438 Another point worth noting is that historically within the Yocto
260 Project, recipes were referred to as packages - thus, the existence 439 Project, recipes were referred to as packages --- thus, the existence
261 of several BitBake variables that are seemingly mis-named, (e.g. 440 of several BitBake variables that are seemingly mis-named, (e.g.
262 :term:`PR`, :term:`PV`, and 441 :term:`PR`, :term:`PV`, and
263 :term:`PE`). 442 :term:`PE`).
@@ -310,6 +489,23 @@ universal, the list includes them just in case:
310 :term:`build host<Build Host>` and other components, that can 489 :term:`build host<Build Host>` and other components, that can
311 work on specific hardware. 490 work on specific hardware.
312 491
492 :term:`SBOM`
493 This term means *Software Bill of Materials*. When you distribute
494 software, it offers a description of all the components you used,
495 their corresponding licenses, their dependencies, the changes that were
496 applied and the known vulnerabilities that were fixed.
497
498 This can be used by the recipients of the software to assess
499 their exposure to license compliance and security vulnerability issues.
500
501 See the :wikipedia:`Software Supply Chain <Software_supply_chain>`
502 article on Wikipedia for more details.
503
504 The OpenEmbedded Build System can generate such documentation for your
505 project, in :term:`SPDX` format, based on all the metadata it used to
506 build the software images. See the ":ref:`dev-manual/sbom:creating
507 a software bill of materials`" section of the Development Tasks manual.
508
313 :term:`Source Directory` 509 :term:`Source Directory`
314 This term refers to the directory structure 510 This term refers to the directory structure
315 created as a result of creating a local copy of the ``poky`` Git 511 created as a result of creating a local copy of the ``poky`` Git
@@ -344,19 +540,19 @@ universal, the list includes them just in case:
344 repository results in a local Git repository whose top-level folder 540 repository results in a local Git repository whose top-level folder
345 is also named "poky". 541 is also named "poky".
346 542
347 While it is not recommended that you use tarball expansion to set up 543 While it is not recommended that you use tarball extraction to set up
348 the Source Directory, if you do, the top-level directory name of the 544 the Source Directory, if you do, the top-level directory name of the
349 Source Directory is derived from the Yocto Project release tarball. 545 Source Directory is derived from the Yocto Project release tarball.
350 For example, downloading and unpacking 546 For example, downloading and unpacking poky tarballs from
351 :yocto_dl:`/releases/yocto/&DISTRO_REL_TAG;/&YOCTO_POKY;.tar.bz2` 547 :yocto_dl:`/releases/yocto/&DISTRO_REL_LATEST_TAG;/`
352 results in a Source Directory whose root folder is named 548 results in a Source Directory whose root folder is named poky.
353 ``&YOCTO_POKY;``. 549
354 550
355 It is important to understand the differences between the Source 551 It is important to understand the differences between the Source
356 Directory created by unpacking a released tarball as compared to 552 Directory created by unpacking a released tarball as compared to
357 cloning ``git://git.yoctoproject.org/poky``. When you unpack a 553 cloning ``git://git.yoctoproject.org/poky``. When you unpack a
358 tarball, you have an exact copy of the files based on the time of 554 tarball, you have an exact copy of the files based on the time of
359 release - a fixed release point. Any changes you make to your local 555 release --- a fixed release point. Any changes you make to your local
360 files in the Source Directory are on top of the release and will 556 files in the Source Directory are on top of the release and will
361 remain local only. On the other hand, when you clone the ``poky`` Git 557 remain local only. On the other hand, when you clone the ``poky`` Git
362 repository, you have an active development repository with access to 558 repository, you have an active development repository with access to
@@ -370,11 +566,53 @@ universal, the list includes them just in case:
370 ":ref:`overview-manual/development-environment:repositories, tags, and branches`" 566 ":ref:`overview-manual/development-environment:repositories, tags, and branches`"
371 section in the Yocto Project Overview and Concepts Manual. 567 section in the Yocto Project Overview and Concepts Manual.
372 568
569 :term:`SPDX`
570 This term means *Software Package Data Exchange*, and is used as an open
571 standard for providing a *Software Bill of Materials* (:term:`SBOM`).
572 This standard is developed through a `Linux Foundation project
573 <https://spdx.dev/>`__ and is used by the OpenEmbedded Build System to
574 provide an :term:`SBOM` associated to each software image.
575
576 For details, see Wikipedia's :wikipedia:`SPDX page <Software_Package_Data_Exchange>`
577 and the ":ref:`dev-manual/sbom:creating a software bill of materials`"
578 section of the Development Tasks manual.
579
580 :term:`Sysroot`
581 When cross-compiling, the target file system may be differently laid
582 out and contain different things compared to the host system. The concept
583 of a *sysroot* is directory which looks like the target filesystem and
584 can be used to cross-compile against.
585
586 In the context of cross-compiling toolchains, a *sysroot*
587 typically contains C library and kernel headers, plus the
588 compiled binaries for the C library. A *multilib toolchain*
589 can contain multiple variants of the C library binaries,
590 each compiled for a target instruction set (such as ``armv5``,
591 ``armv7`` and ``armv8``), and possibly optimized for a specific CPU core.
592
593 In the more specific context of the OpenEmbedded build System and
594 of the Yocto Project, each recipe has two sysroots:
595
596 - A *target sysroot* contains all the **target** libraries and headers
597 needed to build the recipe.
598
599 - A *native sysroot* contains all the **host** files and executables
600 needed to build the recipe.
601
602 See the :term:`SYSROOT_* <SYSROOT_DESTDIR>` variables controlling
603 how sysroots are created and stored.
604
373 :term:`Task` 605 :term:`Task`
374 A unit of execution for BitBake (e.g. 606 A per-recipe unit of execution for BitBake (e.g.
375 :ref:`ref-tasks-compile`, 607 :ref:`ref-tasks-compile`,
376 :ref:`ref-tasks-fetch`, 608 :ref:`ref-tasks-fetch`,
377 :ref:`ref-tasks-patch`, and so forth). 609 :ref:`ref-tasks-patch`, and so forth).
610 One of the major benefits of the build system is that, since each
611 recipe will typically spawn the execution of numerous tasks,
612 it is entirely possible that many tasks can execute in parallel,
613 either tasks from separate recipes or independent tasks within
614 the same recipe, potentially up to the parallelism of your
615 build system.
378 616
379 :term:`Toaster` 617 :term:`Toaster`
380 A web interface to the Yocto Project's :term:`OpenEmbedded Build System`. 618 A web interface to the Yocto Project's :term:`OpenEmbedded Build System`.
@@ -385,7 +623,7 @@ universal, the list includes them just in case:
385 623
386 :term:`Upstream` 624 :term:`Upstream`
387 A reference to source code or repositories that are not 625 A reference to source code or repositories that are not
388 local to the development system but located in a master area that is 626 local to the development system but located in a remote area that is
389 controlled by the maintainer of the source code. For example, in 627 controlled by the maintainer of the source code. For example, in
390 order for a developer to work on a particular piece of code, they 628 order for a developer to work on a particular piece of code, they
391 need to first get a copy of it from an "upstream" source. 629 need to first get a copy of it from an "upstream" source.