diff options
Diffstat (limited to 'documentation/overview-manual/yp-intro.rst')
-rw-r--r-- | documentation/overview-manual/yp-intro.rst | 296 |
1 files changed, 136 insertions, 160 deletions
diff --git a/documentation/overview-manual/yp-intro.rst b/documentation/overview-manual/yp-intro.rst index 0ec7e2b961..4a27e12e01 100644 --- a/documentation/overview-manual/yp-intro.rst +++ b/documentation/overview-manual/yp-intro.rst | |||
@@ -24,7 +24,7 @@ software customizations and build interchange for multiple hardware | |||
24 | platforms as well as software stacks that can be maintained and scaled. | 24 | platforms as well as software stacks that can be maintained and scaled. |
25 | 25 | ||
26 | .. image:: figures/key-dev-elements.png | 26 | .. image:: figures/key-dev-elements.png |
27 | :align: center | 27 | :width: 100% |
28 | 28 | ||
29 | For further introductory information on the Yocto Project, you might be | 29 | For further introductory information on the Yocto Project, you might be |
30 | interested in this | 30 | interested in this |
@@ -38,12 +38,11 @@ to the Yocto Project. | |||
38 | Features | 38 | Features |
39 | -------- | 39 | -------- |
40 | 40 | ||
41 | The following list describes features and advantages of the Yocto | 41 | Here are features and advantages of the Yocto Project: |
42 | Project: | ||
43 | 42 | ||
44 | - *Widely Adopted Across the Industry:* Semiconductor, operating | 43 | - *Widely Adopted Across the Industry:* Many semiconductor, operating |
45 | system, software, and service vendors exist whose products and | 44 | system, software, and service vendors adopt and support the Yocto |
46 | services adopt and support the Yocto Project. For a look at the Yocto | 45 | Project in their products and services. For a look at the Yocto |
47 | Project community and the companies involved with the Yocto Project, | 46 | Project community and the companies involved with the Yocto Project, |
48 | see the "COMMUNITY" and "ECOSYSTEM" tabs on the | 47 | see the "COMMUNITY" and "ECOSYSTEM" tabs on the |
49 | :yocto_home:`Yocto Project <>` home page. | 48 | :yocto_home:`Yocto Project <>` home page. |
@@ -53,8 +52,8 @@ Project: | |||
53 | create and supply BSPs that support their hardware. If you have | 52 | create and supply BSPs that support their hardware. If you have |
54 | custom silicon, you can create a BSP that supports that architecture. | 53 | custom silicon, you can create a BSP that supports that architecture. |
55 | 54 | ||
56 | Aside from lots of architecture support, the Yocto Project fully | 55 | Aside from broad architecture support, the Yocto Project fully |
57 | supports a wide range of device emulation through the Quick EMUlator | 56 | supports a wide range of devices emulated by the Quick EMUlator |
58 | (QEMU). | 57 | (QEMU). |
59 | 58 | ||
60 | - *Images and Code Transfer Easily:* Yocto Project output can easily | 59 | - *Images and Code Transfer Easily:* Yocto Project output can easily |
@@ -78,10 +77,10 @@ Project: | |||
78 | you need for embedded devices. You only add the feature support or | 77 | you need for embedded devices. You only add the feature support or |
79 | packages that you absolutely need for the device. For devices that | 78 | packages that you absolutely need for the device. For devices that |
80 | have display hardware, you can use available system components such | 79 | have display hardware, you can use available system components such |
81 | as X11, GTK+, Qt, Clutter, and SDL (among others) to create a rich | 80 | as X11, Wayland, GTK+, Qt, Clutter, and SDL (among others) to create |
82 | user experience. For devices that do not have a display or where you | 81 | a rich user experience. For devices that do not have a display or |
83 | want to use alternative UI frameworks, you can choose to not install | 82 | where you want to use alternative UI frameworks, you can choose to |
84 | these components. | 83 | not build these components. |
85 | 84 | ||
86 | - *Comprehensive Toolchain Capabilities:* Toolchains for supported | 85 | - *Comprehensive Toolchain Capabilities:* Toolchains for supported |
87 | architectures satisfy most use cases. However, if your hardware | 86 | architectures satisfy most use cases. However, if your hardware |
@@ -96,18 +95,18 @@ Project: | |||
96 | of your design instead of adopting decisions enforced by some system | 95 | of your design instead of adopting decisions enforced by some system |
97 | software provider. | 96 | software provider. |
98 | 97 | ||
99 | - *Uses a Layer Model:* The Yocto Project `layer | 98 | - *Uses a Layer Model:* The Yocto Project :ref:`layer |
100 | infrastructure <#the-yocto-project-layer-model>`__ groups related | 99 | infrastructure <overview-manual/yp-intro:the yocto project layer model>` |
101 | functionality into separate bundles. You can incrementally add these | 100 | groups related functionality into separate bundles. You can incrementally |
102 | grouped functionalities to your project as needed. Using layers to | 101 | add these grouped functionalities to your project as needed. Using layers to |
103 | isolate and group functionality reduces project complexity and | 102 | isolate and group functionality reduces project complexity and |
104 | redundancy, allows you to easily extend the system, make | 103 | redundancy, allows you to easily extend the system, make |
105 | customizations, and keep functionality organized. | 104 | customizations, and keep functionality organized. |
106 | 105 | ||
107 | - *Supports Partial Builds:* You can build and rebuild individual | 106 | - *Supports Partial Builds:* You can build and rebuild individual |
108 | packages as needed. Yocto Project accomplishes this through its | 107 | packages as needed. Yocto Project accomplishes this through its |
109 | `shared-state cache <#shared-state-cache>`__ (sstate) scheme. Being | 108 | :ref:`overview-manual/concepts:shared state cache` (sstate) scheme. |
110 | able to build and debug components individually eases project | 109 | Being able to build and debug components individually eases project |
111 | development. | 110 | development. |
112 | 111 | ||
113 | - *Releases According to a Strict Schedule:* Major releases occur on a | 112 | - *Releases According to a Strict Schedule:* Major releases occur on a |
@@ -130,20 +129,18 @@ Project: | |||
130 | arbitrarily include packages. | 129 | arbitrarily include packages. |
131 | 130 | ||
132 | - *License Manifest:* The Yocto Project provides a :ref:`license | 131 | - *License Manifest:* The Yocto Project provides a :ref:`license |
133 | manifest <dev-manual/common-tasks:maintaining open source license compliance during your product's lifecycle>` | 132 | manifest <dev-manual/licenses:maintaining open source license compliance during your product's lifecycle>` |
134 | for review by people who need to track the use of open source | 133 | for review by people who need to track the use of open source |
135 | licenses (e.g. legal teams). | 134 | licenses (e.g. legal teams). |
136 | 135 | ||
137 | Challenges | 136 | Challenges |
138 | ---------- | 137 | ---------- |
139 | 138 | ||
140 | The following list presents challenges you might encounter when | 139 | Here are challenges you might encounter when developing using the Yocto Project: |
141 | developing using the Yocto Project: | ||
142 | 140 | ||
143 | - *Steep Learning Curve:* The Yocto Project has a steep learning curve | 141 | - *Steep Learning Curve:* The Yocto Project has a steep learning curve |
144 | and has many different ways to accomplish similar tasks. It can be | 142 | and has many different ways to accomplish similar tasks. It can be |
145 | difficult to choose how to proceed when varying methods exist by | 143 | difficult to choose between such ways. |
146 | which to accomplish a given task. | ||
147 | 144 | ||
148 | - *Understanding What Changes You Need to Make For Your Design Requires | 145 | - *Understanding What Changes You Need to Make For Your Design Requires |
149 | Some Research:* Beyond the simple tutorial stage, understanding what | 146 | Some Research:* Beyond the simple tutorial stage, understanding what |
@@ -154,10 +151,11 @@ developing using the Yocto Project: | |||
154 | ":ref:`transitioning-to-a-custom-environment:transitioning to a custom environment for systems development`" | 151 | ":ref:`transitioning-to-a-custom-environment:transitioning to a custom environment for systems development`" |
155 | documents on the Yocto Project website. | 152 | documents on the Yocto Project website. |
156 | 153 | ||
157 | - *Project Workflow Could Be Confusing:* The `Yocto Project | 154 | - *Project Workflow Could Be Confusing:* The :ref:`Yocto Project |
158 | workflow <#overview-development-environment>`__ could be confusing if | 155 | workflow <overview-manual/development-environment:the yocto project development environment>` |
159 | you are used to traditional desktop and server software development. | 156 | could be confusing if you are used to traditional desktop and server |
160 | In a desktop development environment, mechanisms exist to easily pull | 157 | software development. |
158 | In a desktop development environment, there are mechanisms to easily pull | ||
161 | and install new packages, which are typically pre-compiled binaries | 159 | and install new packages, which are typically pre-compiled binaries |
162 | from servers accessible over the Internet. Using the Yocto Project, | 160 | from servers accessible over the Internet. Using the Yocto Project, |
163 | you must modify your configuration and rebuild to add additional | 161 | you must modify your configuration and rebuild to add additional |
@@ -219,15 +217,15 @@ your Metadata, the easier it is to cope with future changes. | |||
219 | - Use Board Support Package (BSP) layers from silicon vendors when | 217 | - Use Board Support Package (BSP) layers from silicon vendors when |
220 | possible. | 218 | possible. |
221 | 219 | ||
222 | - Familiarize yourself with the `Yocto Project curated layer | 220 | - Familiarize yourself with the |
223 | index <https://www.yoctoproject.org/software-overview/layers/>`__ | 221 | :yocto_home:`Yocto Project Compatible Layers </software-overview/layers/>` |
224 | or the :oe_layerindex:`OpenEmbedded layer index <>`. | 222 | or the :oe_layerindex:`OpenEmbedded Layer Index <>`. |
225 | The latter contains more layers but they are less universally | 223 | The latter contains more layers but they are less universally |
226 | validated. | 224 | validated. |
227 | 225 | ||
228 | - Layers support the inclusion of technologies, hardware components, | 226 | - Layers support the inclusion of technologies, hardware components, |
229 | and software components. The :ref:`Yocto Project | 227 | and software components. The :ref:`Yocto Project |
230 | Compatible <dev-manual/common-tasks:making sure your layer is compatible with yocto project>` | 228 | Compatible <dev-manual/layers:making sure your layer is compatible with yocto project>` |
231 | designation provides a minimum level of standardization that | 229 | designation provides a minimum level of standardization that |
232 | contributes to a strong ecosystem. "YP Compatible" is applied to | 230 | contributes to a strong ecosystem. "YP Compatible" is applied to |
233 | appropriate products and software components such as BSPs, other | 231 | appropriate products and software components such as BSPs, other |
@@ -250,8 +248,7 @@ accomplish this through a recipe that is a BitBake append | |||
250 | .. note:: | 248 | .. note:: |
251 | 249 | ||
252 | For general information on BSP layer structure, see the | 250 | For general information on BSP layer structure, see the |
253 | :doc:`/bsp-guide/index` | 251 | :doc:`/bsp-guide/index`. |
254 | . | ||
255 | 252 | ||
256 | The :term:`Source Directory` | 253 | The :term:`Source Directory` |
257 | contains both general layers and BSP layers right out of the box. You | 254 | contains both general layers and BSP layers right out of the box. You |
@@ -262,8 +259,7 @@ with the string ``meta-``. | |||
262 | .. note:: | 259 | .. note:: |
263 | 260 | ||
264 | It is not a requirement that a layer name begin with the prefix | 261 | It is not a requirement that a layer name begin with the prefix |
265 | meta- | 262 | ``meta-``, but it is a commonly accepted standard in the Yocto Project |
266 | , but it is a commonly accepted standard in the Yocto Project | ||
267 | community. | 263 | community. |
268 | 264 | ||
269 | For example, if you were to examine the :yocto_git:`tree view </poky/tree/>` | 265 | For example, if you were to examine the :yocto_git:`tree view </poky/tree/>` |
@@ -272,8 +268,8 @@ of the ``poky`` repository, you will see several layers: ``meta``, | |||
272 | ``meta-yocto-bsp``. Each of these repositories represents a distinct | 268 | ``meta-yocto-bsp``. Each of these repositories represents a distinct |
273 | layer. | 269 | layer. |
274 | 270 | ||
275 | For procedures on how to create layers, see the | 271 | For procedures on how to create layers, see the |
276 | ":ref:`dev-manual/common-tasks:understanding and creating layers`" | 272 | ":ref:`dev-manual/layers:understanding and creating layers`" |
277 | section in the Yocto Project Development Tasks Manual. | 273 | section in the Yocto Project Development Tasks Manual. |
278 | 274 | ||
279 | Components and Tools | 275 | Components and Tools |
@@ -283,8 +279,7 @@ The Yocto Project employs a collection of components and tools used by | |||
283 | the project itself, by project developers, and by those using the Yocto | 279 | the project itself, by project developers, and by those using the Yocto |
284 | Project. These components and tools are open source projects and | 280 | Project. These components and tools are open source projects and |
285 | metadata that are separate from the reference distribution | 281 | metadata that are separate from the reference distribution |
286 | (:term:`Poky`) and the | 282 | (:term:`Poky`) and the :term:`OpenEmbedded Build System`. Most of the |
287 | :term:`OpenEmbedded Build System`. Most of the | ||
288 | components and tools are downloaded separately. | 283 | components and tools are downloaded separately. |
289 | 284 | ||
290 | This section provides brief overviews of the components and tools | 285 | This section provides brief overviews of the components and tools |
@@ -293,8 +288,8 @@ associated with the Yocto Project. | |||
293 | Development Tools | 288 | Development Tools |
294 | ----------------- | 289 | ----------------- |
295 | 290 | ||
296 | The following list consists of tools that help you develop images and | 291 | Here are tools that help you develop images and applications using |
297 | applications using the Yocto Project: | 292 | the Yocto Project: |
298 | 293 | ||
299 | - *CROPS:* `CROPS <https://github.com/crops/poky-container/>`__ is an | 294 | - *CROPS:* `CROPS <https://github.com/crops/poky-container/>`__ is an |
300 | open source, cross-platform development framework that leverages | 295 | open source, cross-platform development framework that leverages |
@@ -325,7 +320,7 @@ applications using the Yocto Project: | |||
325 | 320 | ||
326 | You can read about the ``devtool`` workflow in the Yocto Project | 321 | You can read about the ``devtool`` workflow in the Yocto Project |
327 | Application Development and Extensible Software Development Kit | 322 | Application Development and Extensible Software Development Kit |
328 | (eSDK) Manual in the | 323 | (eSDK) Manual in the |
329 | ":ref:`sdk-manual/extensible:using \`\`devtool\`\` in your sdk workflow`" | 324 | ":ref:`sdk-manual/extensible:using \`\`devtool\`\` in your sdk workflow`" |
330 | section. | 325 | section. |
331 | 326 | ||
@@ -345,18 +340,30 @@ applications using the Yocto Project: | |||
345 | view information about builds. For information on Toaster, see the | 340 | view information about builds. For information on Toaster, see the |
346 | :doc:`/toaster-manual/index`. | 341 | :doc:`/toaster-manual/index`. |
347 | 342 | ||
343 | - *VSCode IDE Extension:* The `Yocto Project BitBake | ||
344 | <https://marketplace.visualstudio.com/items?itemName=yocto-project.yocto-bitbake>`__ | ||
345 | extension for Visual Studio Code provides a rich set of features for working | ||
346 | with BitBake recipes. The extension provides syntax highlighting, | ||
347 | hover tips, and completion for BitBake files as well as embedded Python and | ||
348 | Bash languages. Additional views and commands allow you to efficiently | ||
349 | browse, build and edit recipes. It also provides SDK integration for | ||
350 | cross-compiling and debugging through ``devtool``. | ||
351 | |||
352 | Learn more about the VSCode Extension on the `extension's frontpage | ||
353 | <https://marketplace.visualstudio.com/items?itemName=yocto-project.yocto-bitbake>`__. | ||
354 | |||
348 | Production Tools | 355 | Production Tools |
349 | ---------------- | 356 | ---------------- |
350 | 357 | ||
351 | The following list consists of tools that help production related | 358 | Here are tools that help with production related activities using the |
352 | activities using the Yocto Project: | 359 | Yocto Project: |
353 | 360 | ||
354 | - *Auto Upgrade Helper:* This utility when used in conjunction with the | 361 | - *Auto Upgrade Helper:* This utility when used in conjunction with the |
355 | :term:`OpenEmbedded Build System` | 362 | :term:`OpenEmbedded Build System` |
356 | (BitBake and | 363 | (BitBake and |
357 | OE-Core) automatically generates upgrades for recipes that are based | 364 | OE-Core) automatically generates upgrades for recipes that are based |
358 | on new versions of the recipes published upstream. See | 365 | on new versions of the recipes published upstream. See |
359 | :ref:`dev-manual/common-tasks:using the auto upgrade helper (auh)` | 366 | :ref:`dev-manual/upgrading-recipes:using the auto upgrade helper (auh)` |
360 | for how to set it up. | 367 | for how to set it up. |
361 | 368 | ||
362 | - *Recipe Reporting System:* The Recipe Reporting System tracks recipe | 369 | - *Recipe Reporting System:* The Recipe Reporting System tracks recipe |
@@ -366,7 +373,7 @@ activities using the Yocto Project: | |||
366 | of the :oe_layerindex:`OpenEmbedded Layer Index <>`, which | 373 | of the :oe_layerindex:`OpenEmbedded Layer Index <>`, which |
367 | is a website that indexes OpenEmbedded-Core layers. | 374 | is a website that indexes OpenEmbedded-Core layers. |
368 | 375 | ||
369 | - *Patchwork:* `Patchwork <http://jk.ozlabs.org/projects/patchwork/>`__ | 376 | - *Patchwork:* `Patchwork <https://patchwork.yoctoproject.org/>`__ |
370 | is a fork of a project originally started by | 377 | is a fork of a project originally started by |
371 | `OzLabs <https://ozlabs.org/>`__. The project is a web-based tracking | 378 | `OzLabs <https://ozlabs.org/>`__. The project is a web-based tracking |
372 | system designed to streamline the process of bringing contributions | 379 | system designed to streamline the process of bringing contributions |
@@ -376,7 +383,7 @@ activities using the Yocto Project: | |||
376 | 383 | ||
377 | - *AutoBuilder:* AutoBuilder is a project that automates build tests | 384 | - *AutoBuilder:* AutoBuilder is a project that automates build tests |
378 | and quality assurance (QA). By using the public AutoBuilder, anyone | 385 | and quality assurance (QA). By using the public AutoBuilder, anyone |
379 | can determine the status of the current "master" branch of Poky. | 386 | can determine the status of the current development branch of Poky. |
380 | 387 | ||
381 | .. note:: | 388 | .. note:: |
382 | 389 | ||
@@ -392,58 +399,27 @@ activities using the Yocto Project: | |||
392 | You can learn more about the AutoBuilder used by the Yocto Project | 399 | You can learn more about the AutoBuilder used by the Yocto Project |
393 | Autobuilder :doc:`here </test-manual/understand-autobuilder>`. | 400 | Autobuilder :doc:`here </test-manual/understand-autobuilder>`. |
394 | 401 | ||
395 | - *Cross-Prelink:* Prelinking is the process of pre-computing the load | ||
396 | addresses and link tables generated by the dynamic linker as compared | ||
397 | to doing this at runtime. Doing this ahead of time results in | ||
398 | performance improvements when the application is launched and reduced | ||
399 | memory usage for libraries shared by many applications. | ||
400 | |||
401 | Historically, cross-prelink is a variant of prelink, which was | ||
402 | conceived by `Jakub | ||
403 | JelÃnek <https://people.redhat.com/jakub/prelink.pdf>`__ a number of | ||
404 | years ago. Both prelink and cross-prelink are maintained in the same | ||
405 | repository albeit on separate branches. By providing an emulated | ||
406 | runtime dynamic linker (i.e. ``glibc``-derived ``ld.so`` emulation), | ||
407 | the cross-prelink project extends the prelink software's ability to | ||
408 | prelink a sysroot environment. Additionally, the cross-prelink | ||
409 | software enables the ability to work in sysroot style environments. | ||
410 | |||
411 | The dynamic linker determines standard load address calculations | ||
412 | based on a variety of factors such as mapping addresses, library | ||
413 | usage, and library function conflicts. The prelink tool uses this | ||
414 | information, from the dynamic linker, to determine unique load | ||
415 | addresses for executable and linkable format (ELF) binaries that are | ||
416 | shared libraries and dynamically linked. The prelink tool modifies | ||
417 | these ELF binaries with the pre-computed information. The result is | ||
418 | faster loading and often lower memory consumption because more of the | ||
419 | library code can be re-used from shared Copy-On-Write (COW) pages. | ||
420 | |||
421 | The original upstream prelink project only supports running prelink | ||
422 | on the end target device due to the reliance on the target device's | ||
423 | dynamic linker. This restriction causes issues when developing a | ||
424 | cross-compiled system. The cross-prelink adds a synthesized dynamic | ||
425 | loader that runs on the host, thus permitting cross-prelinking | ||
426 | without ever having to run on a read-write target filesystem. | ||
427 | |||
428 | - *Pseudo:* Pseudo is the Yocto Project implementation of | 402 | - *Pseudo:* Pseudo is the Yocto Project implementation of |
429 | `fakeroot <http://man.he.net/man1/fakeroot>`__, which is used to run | 403 | `fakeroot <http://man.he.net/man1/fakeroot>`__, which is used to run |
430 | commands in an environment that seemingly has root privileges. | 404 | commands in an environment that seemingly has root privileges. |
431 | 405 | ||
432 | During a build, it can be necessary to perform operations that | 406 | During a build, it can be necessary to perform operations that |
433 | require system administrator privileges. For example, file ownership | 407 | require system administrator privileges. For example, file ownership |
434 | or permissions might need definition. Pseudo is a tool that you can | 408 | or permissions might need to be defined. Pseudo is a tool that you |
435 | either use directly or through the environment variable | 409 | can either use directly or through the environment variable |
436 | ``LD_PRELOAD``. Either method allows these operations to succeed as | 410 | ``LD_PRELOAD``. Either method allows these operations to succeed |
437 | if system administrator privileges exist even when they do not. | 411 | even without system administrator privileges. |
438 | 412 | ||
439 | You can read more about Pseudo in the "`Fakeroot and | 413 | Thanks to Pseudo, the Yocto Project never needs root privileges to |
440 | Pseudo <#fakeroot-and-pseudo>`__" section. | 414 | build images for your target system. |
415 | |||
416 | You can read more about Pseudo in the | ||
417 | ":ref:`overview-manual/concepts:fakeroot and pseudo`" section. | ||
441 | 418 | ||
442 | Open-Embedded Build System Components | 419 | Open-Embedded Build System Components |
443 | ------------------------------------- | 420 | ------------------------------------- |
444 | 421 | ||
445 | The following list consists of components associated with the | 422 | Here are components associated with the :term:`OpenEmbedded Build System`: |
446 | :term:`OpenEmbedded Build System`: | ||
447 | 423 | ||
448 | - *BitBake:* BitBake is a core component of the Yocto Project and is | 424 | - *BitBake:* BitBake is a core component of the Yocto Project and is |
449 | used by the OpenEmbedded build system to build images. While BitBake | 425 | used by the OpenEmbedded build system to build images. While BitBake |
@@ -479,9 +455,9 @@ The following list consists of components associated with the | |||
479 | 455 | ||
480 | Sharing a core set of metadata results in Poky as an integration | 456 | Sharing a core set of metadata results in Poky as an integration |
481 | layer on top of OE-Core. You can see that in this | 457 | layer on top of OE-Core. You can see that in this |
482 | `figure <#yp-key-dev-elements>`__. The Yocto Project combines various | 458 | :ref:`figure <overview-manual/yp-intro:what is the yocto project?>`. |
483 | components such as BitBake, OE-Core, script "glue", and documentation | 459 | The Yocto Project combines various components such as BitBake, OE-Core, |
484 | for its build system. | 460 | script "glue", and documentation for its build system. |
485 | 461 | ||
486 | Reference Distribution (Poky) | 462 | Reference Distribution (Poky) |
487 | ----------------------------- | 463 | ----------------------------- |
@@ -489,8 +465,8 @@ Reference Distribution (Poky) | |||
489 | Poky is the Yocto Project reference distribution. It contains the | 465 | Poky is the Yocto Project reference distribution. It contains the |
490 | :term:`OpenEmbedded Build System` | 466 | :term:`OpenEmbedded Build System` |
491 | (BitBake and OE-Core) as well as a set of metadata to get you started | 467 | (BitBake and OE-Core) as well as a set of metadata to get you started |
492 | building your own distribution. See the | 468 | building your own distribution. See the figure in |
493 | `figure <#what-is-the-yocto-project>`__ in "What is the Yocto Project?" | 469 | ":ref:`overview-manual/yp-intro:what is the yocto project?`" |
494 | section for an illustration that shows Poky and its relationship with | 470 | section for an illustration that shows Poky and its relationship with |
495 | other parts of the Yocto Project. | 471 | other parts of the Yocto Project. |
496 | 472 | ||
@@ -502,14 +478,14 @@ To use the Yocto Project tools and components, you can download | |||
502 | Poky does not contain binary files. It is a working example of how to | 478 | Poky does not contain binary files. It is a working example of how to |
503 | build your own custom Linux distribution from source. | 479 | build your own custom Linux distribution from source. |
504 | 480 | ||
505 | You can read more about Poky in the "`Reference Embedded Distribution | 481 | You can read more about Poky in the |
506 | (Poky) <#reference-embedded-distribution>`__" section. | 482 | ":ref:`overview-manual/yp-intro:reference embedded distribution (poky)`" |
483 | section. | ||
507 | 484 | ||
508 | Packages for Finished Targets | 485 | Packages for Finished Targets |
509 | ----------------------------- | 486 | ----------------------------- |
510 | 487 | ||
511 | The following lists components associated with packages for finished | 488 | Here are components associated with packages for finished targets: |
512 | targets: | ||
513 | 489 | ||
514 | - *Matchbox:* Matchbox is an Open Source, base environment for the X | 490 | - *Matchbox:* Matchbox is an Open Source, base environment for the X |
515 | Window System running on non-desktop, embedded platforms such as | 491 | Window System running on non-desktop, embedded platforms such as |
@@ -553,35 +529,34 @@ Historically, the Build Appliance was the second of three methods by | |||
553 | which you could use the Yocto Project on a system that was not native to | 529 | which you could use the Yocto Project on a system that was not native to |
554 | Linux. | 530 | Linux. |
555 | 531 | ||
556 | 1. *Hob:* Hob, which is now deprecated and is no longer available since | 532 | #. *Hob:* Hob, which is now deprecated and is no longer available since |
557 | the 2.1 release of the Yocto Project provided a rudimentary, | 533 | the 2.1 release of the Yocto Project provided a rudimentary, |
558 | GUI-based interface to the Yocto Project. Toaster has fully replaced | 534 | GUI-based interface to the Yocto Project. Toaster has fully replaced |
559 | Hob. | 535 | Hob. |
560 | 536 | ||
561 | 2. *Build Appliance:* Post Hob, the Build Appliance became available. It | 537 | #. *Build Appliance:* Post Hob, the Build Appliance became available. It |
562 | was never recommended that you use the Build Appliance as a | 538 | was never recommended that you use the Build Appliance as a |
563 | day-to-day production development environment with the Yocto Project. | 539 | day-to-day production development environment with the Yocto Project. |
564 | Build Appliance was useful as a way to try out development in the | 540 | Build Appliance was useful as a way to try out development in the |
565 | Yocto Project environment. | 541 | Yocto Project environment. |
566 | 542 | ||
567 | 3. *CROPS:* The final and best solution available now for developing | 543 | #. *CROPS:* The final and best solution available now for developing |
568 | using the Yocto Project on a system not native to Linux is with | 544 | using the Yocto Project on a system not native to Linux is with |
569 | `CROPS <#gs-crops-overview>`__. | 545 | :ref:`CROPS <overview-manual/yp-intro:development tools>`. |
570 | 546 | ||
571 | Development Methods | 547 | Development Methods |
572 | =================== | 548 | =================== |
573 | 549 | ||
574 | The Yocto Project development environment usually involves a | 550 | The Yocto Project development environment usually involves a |
575 | :term:`Build Host` and target | 551 | :term:`Build Host` and target |
576 | hardware. You use the Build Host to build images and develop | 552 | hardware. You use the Build Host to build images and develop |
577 | applications, while you use the target hardware to test deployed | 553 | applications, while you use the target hardware to execute deployed |
578 | software. | 554 | software. |
579 | 555 | ||
580 | This section provides an introduction to the choices or development | 556 | This section provides an introduction to the choices or development |
581 | methods you have when setting up your Build Host. Depending on the your | 557 | methods you have when setting up your Build Host. Depending on your |
582 | particular workflow preference and the type of operating system your | 558 | particular workflow preference and the type of operating system your |
583 | Build Host runs, several choices exist that allow you to use the Yocto | 559 | Build Host runs, you have several choices. |
584 | Project. | ||
585 | 560 | ||
586 | .. note:: | 561 | .. note:: |
587 | 562 | ||
@@ -593,11 +568,11 @@ Project. | |||
593 | system running Linux as its native operating system allows you to | 568 | system running Linux as its native operating system allows you to |
594 | develop software by directly using the | 569 | develop software by directly using the |
595 | :term:`BitBake` tool. You can | 570 | :term:`BitBake` tool. You can |
596 | accomplish all aspects of development from a familiar shell of a | 571 | accomplish all aspects of development from a regular shell in a |
597 | supported Linux distribution. | 572 | supported Linux distribution. |
598 | 573 | ||
599 | For information on how to set up a Build Host on a system running | 574 | For information on how to set up a Build Host on a system running |
600 | Linux as its native operating system, see the | 575 | Linux as its native operating system, see the |
601 | ":ref:`dev-manual/start:setting up a native linux host`" | 576 | ":ref:`dev-manual/start:setting up a native linux host`" |
602 | section in the Yocto Project Development Tasks Manual. | 577 | section in the Yocto Project Development Tasks Manual. |
603 | 578 | ||
@@ -621,47 +596,46 @@ Project. | |||
621 | ":ref:`dev-manual/start:setting up to use cross platforms (crops)`" | 596 | ":ref:`dev-manual/start:setting up to use cross platforms (crops)`" |
622 | section in the Yocto Project Development Tasks Manual. | 597 | section in the Yocto Project Development Tasks Manual. |
623 | 598 | ||
624 | - *Windows Subsystem For Linux (WSLv2):* You may use Windows Subsystem | 599 | - *Windows Subsystem For Linux (WSL 2):* You may use Windows Subsystem |
625 | For Linux v2 to set up a build host using Windows 10. | 600 | For Linux version 2 to set up a Build Host using Windows 10 or later, |
626 | 601 | or Windows Server 2019 or later. | |
627 | .. note:: | ||
628 | |||
629 | The Yocto Project is not compatible with WSLv1, it is compatible | ||
630 | but not officially supported nor validated with WSLv2, if you | ||
631 | still decide to use WSL please upgrade to WSLv2. | ||
632 | 602 | ||
633 | The Windows Subsystem For Linux allows Windows 10 to run a real Linux | 603 | The Windows Subsystem For Linux allows Windows to run a real Linux |
634 | kernel inside of a lightweight utility virtual machine (VM) using | 604 | kernel inside of a lightweight virtual machine (VM). |
635 | virtualization technology. | ||
636 | 605 | ||
637 | For information on how to set up a Build Host with WSLv2, see the | 606 | For information on how to set up a Build Host with WSL 2, see the |
638 | ":ref:`dev-manual/start:setting up to use windows subsystem for linux (wslv2)`" | 607 | ":ref:`dev-manual/start:setting up to use windows subsystem for linux (wsl 2)`" |
639 | section in the Yocto Project Development Tasks Manual. | 608 | section in the Yocto Project Development Tasks Manual. |
640 | 609 | ||
641 | - *Toaster:* Regardless of what your Build Host is running, you can use | 610 | - *Toaster:* Regardless of what your Build Host is running, you can use |
642 | Toaster to develop software using the Yocto Project. Toaster is a web | 611 | Toaster to develop software using the Yocto Project. Toaster is a web |
643 | interface to the Yocto Project's :term:`OpenEmbedded Build System`. | 612 | interface to the Yocto Project's :term:`OpenEmbedded Build System`. |
644 | The interface | 613 | The interface allows you to configure and run your builds. Information |
645 | enables you to configure and run your builds. Information about | 614 | about builds is collected and stored in a database. You can use Toaster |
646 | builds is collected and stored in a database. You can use Toaster to | 615 | to configure and start builds on multiple remote build servers. |
647 | configure and start builds on multiple remote build servers. | ||
648 | 616 | ||
649 | For information about and how to use Toaster, see the | 617 | For information about and how to use Toaster, see the |
650 | :doc:`/toaster-manual/index`. | 618 | :doc:`/toaster-manual/index`. |
651 | 619 | ||
620 | - *Using the VSCode Extension:* You can use the `Yocto Project BitBake | ||
621 | <https://marketplace.visualstudio.com/items?itemName=yocto-project.yocto-bitbake>`__ | ||
622 | extension for Visual Studio Code to start your BitBake builds through a | ||
623 | graphical user interface. | ||
624 | |||
625 | Learn more about the VSCode Extension on the `extension's marketplace page | ||
626 | <https://marketplace.visualstudio.com/items?itemName=yocto-project.yocto-bitbake>`__ | ||
627 | |||
652 | Reference Embedded Distribution (Poky) | 628 | Reference Embedded Distribution (Poky) |
653 | ====================================== | 629 | ====================================== |
654 | 630 | ||
655 | "Poky", which is pronounced *Pock*-ee, is the name of the Yocto | 631 | "Poky", which is pronounced *Pock*-ee, is the name of the Yocto |
656 | Project's reference distribution or Reference OS Kit. Poky contains the | 632 | Project's reference distribution or Reference OS Kit. Poky contains the |
657 | :term:`OpenEmbedded Build System` | 633 | :term:`OpenEmbedded Build System` (:term:`BitBake` and |
658 | (:term:`BitBake` and | 634 | :term:`OpenEmbedded-Core (OE-Core)`) as well as a set of |
659 | :term:`OpenEmbedded-Core (OE-Core)`) as well as a set | 635 | :term:`Metadata` to get you started building your own distro. In other |
660 | of :term:`Metadata` to get you started | 636 | words, Poky is a base specification of the functionality needed for a |
661 | building your own distro. In other words, Poky is a base specification | 637 | typical embedded system as well as the components from the Yocto Project |
662 | of the functionality needed for a typical embedded system as well as the | 638 | that allow you to build a distribution into a usable binary image. |
663 | components from the Yocto Project that allow you to build a distribution | ||
664 | into a usable binary image. | ||
665 | 639 | ||
666 | Poky is a combined repository of BitBake, OpenEmbedded-Core (which is | 640 | Poky is a combined repository of BitBake, OpenEmbedded-Core (which is |
667 | found in ``meta``), ``meta-poky``, ``meta-yocto-bsp``, and documentation | 641 | found in ``meta``), ``meta-poky``, ``meta-yocto-bsp``, and documentation |
@@ -679,7 +653,7 @@ these items that make up the Poky repository in the | |||
679 | The following figure illustrates what generally comprises Poky: | 653 | The following figure illustrates what generally comprises Poky: |
680 | 654 | ||
681 | .. image:: figures/poky-reference-distribution.png | 655 | .. image:: figures/poky-reference-distribution.png |
682 | :align: center | 656 | :width: 100% |
683 | 657 | ||
684 | - BitBake is a task executor and scheduler that is the heart of the | 658 | - BitBake is a task executor and scheduler that is the heart of the |
685 | OpenEmbedded build system. | 659 | OpenEmbedded build system. |
@@ -729,8 +703,9 @@ Sato. | |||
729 | 703 | ||
730 | One of the most powerful properties of Poky is that every aspect of a | 704 | One of the most powerful properties of Poky is that every aspect of a |
731 | build is controlled by the metadata. You can use metadata to augment | 705 | build is controlled by the metadata. You can use metadata to augment |
732 | these base image types by adding metadata | 706 | these base image types by adding metadata :ref:`layers |
733 | `layers <#the-yocto-project-layer-model>`__ that extend functionality. | 707 | <overview-manual/yp-intro:the yocto project layer model>` that extend |
708 | functionality. | ||
734 | These layers can provide, for example, an additional software stack for | 709 | These layers can provide, for example, an additional software stack for |
735 | an image type, add a board support package (BSP) for additional | 710 | an image type, add a board support package (BSP) for additional |
736 | hardware, or even create a new image type. | 711 | hardware, or even create a new image type. |
@@ -745,11 +720,11 @@ other build process, in which case the basic functionality can be | |||
745 | defined by the classes it inherits from the OE-Core layer's class | 720 | defined by the classes it inherits from the OE-Core layer's class |
746 | definitions in ``./meta/classes``. Within a recipe you can also define | 721 | definitions in ``./meta/classes``. Within a recipe you can also define |
747 | additional tasks as well as task prerequisites. Recipe syntax through | 722 | additional tasks as well as task prerequisites. Recipe syntax through |
748 | BitBake also supports both ``_prepend`` and ``_append`` operators as a | 723 | BitBake also supports both ``:prepend`` and ``:append`` operators as a |
749 | method of extending task functionality. These operators inject code into | 724 | method of extending task functionality. These operators inject code into |
750 | the beginning or end of a task. For information on these BitBake | 725 | the beginning or end of a task. For information on these BitBake |
751 | operators, see the | 726 | operators, see the |
752 | ":ref:`bitbake:bitbake-user-manual/bitbake-user-manual-metadata:appending and prepending (override style syntax)`" | 727 | ":ref:`bitbake-user-manual/bitbake-user-manual-metadata:appending and prepending (override style syntax)`" |
753 | section in the BitBake User's Manual. | 728 | section in the BitBake User's Manual. |
754 | 729 | ||
755 | The OpenEmbedded Build System Workflow | 730 | The OpenEmbedded Build System Workflow |
@@ -760,41 +735,41 @@ accomplish image and SDK generation. The following figure overviews that | |||
760 | workflow: | 735 | workflow: |
761 | 736 | ||
762 | .. image:: figures/YP-flow-diagram.png | 737 | .. image:: figures/YP-flow-diagram.png |
763 | :align: center | 738 | :width: 100% |
764 | 739 | ||
765 | Following is a brief summary of the "workflow": | 740 | Here is a brief summary of the "workflow": |
766 | 741 | ||
767 | 1. Developers specify architecture, policies, patches and configuration | 742 | #. Developers specify architecture, policies, patches and configuration |
768 | details. | 743 | details. |
769 | 744 | ||
770 | 2. The build system fetches and downloads the source code from the | 745 | #. The build system fetches and downloads the source code from the |
771 | specified location. The build system supports standard methods such | 746 | specified location. The build system supports standard methods such |
772 | as tarballs or source code repositories systems such as Git. | 747 | as tarballs or source code repositories systems such as Git. |
773 | 748 | ||
774 | 3. Once source code is downloaded, the build system extracts the sources | 749 | #. Once source code is downloaded, the build system extracts the sources |
775 | into a local work area where patches are applied and common steps for | 750 | into a local work area where patches are applied and common steps for |
776 | configuring and compiling the software are run. | 751 | configuring and compiling the software are run. |
777 | 752 | ||
778 | 4. The build system then installs the software into a temporary staging | 753 | #. The build system then installs the software into a temporary staging |
779 | area where the binary package format you select (DEB, RPM, or IPK) is | 754 | area where the binary package format you select (DEB, RPM, or IPK) is |
780 | used to roll up the software. | 755 | used to roll up the software. |
781 | 756 | ||
782 | 5. Different QA and sanity checks run throughout entire build process. | 757 | #. Different QA and sanity checks run throughout entire build process. |
783 | 758 | ||
784 | 6. After the binaries are created, the build system generates a binary | 759 | #. After the binaries are created, the build system generates a binary |
785 | package feed that is used to create the final root file image. | 760 | package feed that is used to create the final root file image. |
786 | 761 | ||
787 | 7. The build system generates the file system image and a customized | 762 | #. The build system generates the file system image and a customized |
788 | Extensible SDK (eSDK) for application development in parallel. | 763 | Extensible SDK (eSDK) for application development in parallel. |
789 | 764 | ||
790 | For a very detailed look at this workflow, see the "`OpenEmbedded Build | 765 | For a very detailed look at this workflow, see the |
791 | System Concepts <#openembedded-build-system-build-concepts>`__" section. | 766 | ":ref:`overview-manual/concepts:openembedded build system concepts`" section. |
792 | 767 | ||
793 | Some Basic Terms | 768 | Some Basic Terms |
794 | ================ | 769 | ================ |
795 | 770 | ||
796 | It helps to understand some basic fundamental terms when learning the | 771 | It helps to understand some basic fundamental terms when learning the |
797 | Yocto Project. Although a list of terms exists in the ":doc:`Yocto Project | 772 | Yocto Project. Although there is a list of terms in the ":doc:`Yocto Project |
798 | Terms </ref-manual/terms>`" section of the Yocto Project | 773 | Terms </ref-manual/terms>`" section of the Yocto Project |
799 | Reference Manual, this section provides the definitions of some terms | 774 | Reference Manual, this section provides the definitions of some terms |
800 | helpful for getting started: | 775 | helpful for getting started: |
@@ -816,14 +791,14 @@ helpful for getting started: | |||
816 | isolate information used when building for multiple architectures. | 791 | isolate information used when building for multiple architectures. |
817 | Layers are hierarchical in their ability to override previous | 792 | Layers are hierarchical in their ability to override previous |
818 | specifications. You can include any number of available layers from | 793 | specifications. You can include any number of available layers from |
819 | the Yocto Project and customize the build by adding your layers after | 794 | the Yocto Project and customize the build by adding your own layers |
820 | them. You can search the Layer Index for layers used within Yocto | 795 | after them. You can search the Layer Index for layers used within |
821 | Project. | 796 | Yocto Project. |
822 | 797 | ||
823 | For more detailed information on layers, see the | 798 | For more detailed information on layers, see the |
824 | ":ref:`dev-manual/common-tasks:understanding and creating layers`" | 799 | ":ref:`dev-manual/layers:understanding and creating layers`" |
825 | section in the Yocto Project Development Tasks Manual. For a | 800 | section in the Yocto Project Development Tasks Manual. For a |
826 | discussion specifically on BSP Layers, see the | 801 | discussion specifically on BSP Layers, see the |
827 | ":ref:`bsp-guide/bsp:bsp layers`" section in the Yocto | 802 | ":ref:`bsp-guide/bsp:bsp layers`" section in the Yocto |
828 | Project Board Support Packages (BSP) Developer's Guide. | 803 | Project Board Support Packages (BSP) Developer's Guide. |
829 | 804 | ||
@@ -851,7 +826,7 @@ helpful for getting started: | |||
851 | BitBake is similar to the ``make`` tool. | 826 | BitBake is similar to the ``make`` tool. |
852 | 827 | ||
853 | During a build process, the build system tracks dependencies and | 828 | During a build process, the build system tracks dependencies and |
854 | performs a native or cross-compilation of the package. As a first | 829 | performs a native or cross-compilation of each package. As a first |
855 | step in a cross-build setup, the framework attempts to create a | 830 | step in a cross-build setup, the framework attempts to create a |
856 | cross-compiler toolchain (i.e. Extensible SDK) suited for the target | 831 | cross-compiler toolchain (i.e. Extensible SDK) suited for the target |
857 | platform. | 832 | platform. |
@@ -878,10 +853,11 @@ helpful for getting started: | |||
878 | subtle meanings. For example, the packages referred to in the | 853 | subtle meanings. For example, the packages referred to in the |
879 | ":ref:`ref-manual/system-requirements:required packages for the build host`" | 854 | ":ref:`ref-manual/system-requirements:required packages for the build host`" |
880 | section in the Yocto Project Reference Manual are compiled binaries | 855 | section in the Yocto Project Reference Manual are compiled binaries |
881 | that, when installed, add functionality to your Linux distribution. | 856 | that, when installed, add functionality to your host Linux |
857 | distribution. | ||
882 | 858 | ||
883 | Another point worth noting is that historically within the Yocto | 859 | Another point worth noting is that historically within the Yocto |
884 | Project, recipes were referred to as packages - thus, the existence | 860 | Project, recipes were referred to as packages --- thus, the existence |
885 | of several BitBake variables that are seemingly mis-named, (e.g. | 861 | of several BitBake variables that are seemingly mis-named, (e.g. |
886 | :term:`PR`, | 862 | :term:`PR`, |
887 | :term:`PV`, and | 863 | :term:`PV`, and |