summaryrefslogtreecommitdiffstats
path: root/documentation/overview-manual
diff options
context:
space:
mode:
Diffstat (limited to 'documentation/overview-manual')
-rw-r--r--documentation/overview-manual/concepts.rst1029
-rw-r--r--documentation/overview-manual/development-environment.rst187
-rw-r--r--documentation/overview-manual/figures/git-workflow.pngbin26586 -> 0 bytes
-rwxr-xr-xdocumentation/overview-manual/figures/index-downloads.pngbin18142 -> 0 bytes
-rw-r--r--documentation/overview-manual/figures/source-repos.pngbin298757 -> 775796 bytes
-rw-r--r--documentation/overview-manual/figures/yp-download.pngbin82939 -> 518257 bytes
-rw-r--r--documentation/overview-manual/history.rst28
-rw-r--r--documentation/overview-manual/index.rst1
-rw-r--r--documentation/overview-manual/intro.rst17
-rw-r--r--documentation/overview-manual/svg/bitbake_tasks_map.svg4
-rw-r--r--documentation/overview-manual/svg/git-workflow.svg1205
-rw-r--r--documentation/overview-manual/yp-intro.rst296
12 files changed, 2068 insertions, 699 deletions
diff --git a/documentation/overview-manual/concepts.rst b/documentation/overview-manual/concepts.rst
index 257de44ec8..62f2327a7e 100644
--- a/documentation/overview-manual/concepts.rst
+++ b/documentation/overview-manual/concepts.rst
@@ -34,10 +34,10 @@ itself is of various types:
34 34
35BitBake knows how to combine multiple data sources together and refers 35BitBake knows how to combine multiple data sources together and refers
36to each data source as a layer. For information on layers, see the 36to each data source as a layer. For information on layers, see the
37":ref:`dev-manual/common-tasks:understanding and creating layers`" 37":ref:`dev-manual/layers:understanding and creating layers`"
38section of the Yocto Project Development Tasks Manual. 38section of the Yocto Project Development Tasks Manual.
39 39
40Following are some brief details on these core components. For 40Here are some brief details on these core components. For
41additional information on how these components interact during a build, 41additional information on how these components interact during a build,
42see the 42see the
43":ref:`overview-manual/concepts:openembedded build system concepts`" 43":ref:`overview-manual/concepts:openembedded build system concepts`"
@@ -55,8 +55,7 @@ This section briefly introduces BitBake. If you want more information on
55BitBake, see the :doc:`BitBake User Manual <bitbake:index>`. 55BitBake, see the :doc:`BitBake User Manual <bitbake:index>`.
56 56
57To see a list of the options BitBake supports, use either of the 57To see a list of the options BitBake supports, use either of the
58following commands: 58following commands::
59::
60 59
61 $ bitbake -h 60 $ bitbake -h
62 $ bitbake --help 61 $ bitbake --help
@@ -66,17 +65,14 @@ The most common usage for BitBake is ``bitbake recipename``, where
66to as the "target"). The target often equates to the first part of a 65to as the "target"). The target often equates to the first part of a
67recipe's filename (e.g. "foo" for a recipe named ``foo_1.3.0-r0.bb``). 66recipe's filename (e.g. "foo" for a recipe named ``foo_1.3.0-r0.bb``).
68So, to process the ``matchbox-desktop_1.2.3.bb`` recipe file, you might 67So, to process the ``matchbox-desktop_1.2.3.bb`` recipe file, you might
69type the following: 68type the following::
70::
71 69
72 $ bitbake matchbox-desktop 70 $ bitbake matchbox-desktop
73 71
74Several different 72Several different versions of ``matchbox-desktop`` might exist. BitBake chooses
75versions of ``matchbox-desktop`` might exist. BitBake chooses the one 73the one selected by the distribution configuration. You can get more details
76selected by the distribution configuration. You can get more details 74about how BitBake chooses between different target versions and providers in the
77about how BitBake chooses between different target versions and 75":ref:`bitbake-user-manual/bitbake-user-manual-execution:preferences`" section
78providers in the
79":ref:`Preferences <bitbake:bitbake-user-manual/bitbake-user-manual-execution:preferences>`" section
80of the BitBake User Manual. 76of the BitBake User Manual.
81 77
82BitBake also tries to execute any dependent tasks first. So for example, 78BitBake also tries to execute any dependent tasks first. So for example,
@@ -109,12 +105,11 @@ Classes
109------- 105-------
110 106
111Class files (``.bbclass``) contain information that is useful to share 107Class files (``.bbclass``) contain information that is useful to share
112between recipes files. An example is the 108between recipes files. An example is the :ref:`ref-classes-autotools` class,
113:ref:`autotools <ref-classes-autotools>` class, 109which contains common settings for any application that is built with
114which contains common settings for any application that Autotools uses. 110the :wikipedia:`GNU Autotools <GNU_Autotools>`.
115The ":ref:`ref-manual/classes:Classes`" chapter in the 111The ":ref:`ref-manual/classes:Classes`" chapter in the Yocto Project
116Yocto Project Reference Manual provides details about classes and how to 112Reference Manual provides details about classes and how to use them.
117use them.
118 113
119Configurations 114Configurations
120-------------- 115--------------
@@ -132,7 +127,7 @@ Layers
132 127
133Layers are repositories that contain related metadata (i.e. sets of 128Layers are repositories that contain related metadata (i.e. sets of
134instructions) that tell the OpenEmbedded build system how to build a 129instructions) that tell the OpenEmbedded build system how to build a
135target. Yocto Project's `layer model <#the-yocto-project-layer-model>`__ 130target. :ref:`overview-manual/yp-intro:the yocto project layer model`
136facilitates collaboration, sharing, customization, and reuse within the 131facilitates collaboration, sharing, customization, and reuse within the
137Yocto Project development environment. Layers logically separate 132Yocto Project development environment. Layers logically separate
138information for your project. For example, you can use a layer to hold 133information for your project. For example, you can use a layer to hold
@@ -141,8 +136,8 @@ hardware-specific configurations allows you to share other metadata by
141using a different layer where that metadata might be common across 136using a different layer where that metadata might be common across
142several pieces of hardware. 137several pieces of hardware.
143 138
144Many layers exist that work in the Yocto Project development environment. The 139There are many layers working in the Yocto Project development environment. The
145:yocto_home:`Yocto Project Curated Layer Index </software-overview/layers/>` 140:yocto_home:`Yocto Project Compatible Layer Index </software-overview/layers/>`
146and :oe_layerindex:`OpenEmbedded Layer Index <>` both contain layers from 141and :oe_layerindex:`OpenEmbedded Layer Index <>` both contain layers from
147which you can use or leverage. 142which you can use or leverage.
148 143
@@ -151,7 +146,7 @@ Conforming to a known structure allows BitBake to make assumptions
151during builds on where to find types of metadata. You can find 146during builds on where to find types of metadata. You can find
152procedures and learn about tools (i.e. ``bitbake-layers``) for creating 147procedures and learn about tools (i.e. ``bitbake-layers``) for creating
153layers suitable for the Yocto Project in the 148layers suitable for the Yocto Project in the
154":ref:`dev-manual/common-tasks:understanding and creating layers`" 149":ref:`dev-manual/layers:understanding and creating layers`"
155section of the Yocto Project Development Tasks Manual. 150section of the Yocto Project Development Tasks Manual.
156 151
157OpenEmbedded Build System Concepts 152OpenEmbedded Build System Concepts
@@ -168,7 +163,7 @@ remainder of this section expands on the fundamental input, output,
168process, and metadata logical blocks that make up the workflow. 163process, and metadata logical blocks that make up the workflow.
169 164
170.. image:: figures/YP-flow-diagram.png 165.. image:: figures/YP-flow-diagram.png
171 :align: center 166 :width: 100%
172 167
173In general, the build's workflow consists of several functional areas: 168In general, the build's workflow consists of several functional areas:
174 169
@@ -207,11 +202,11 @@ you can tell BitBake the target architecture for which you are building
207the image, where to store downloaded source, and other build properties. 202the image, where to store downloaded source, and other build properties.
208 203
209The following figure shows an expanded representation of the "User 204The following figure shows an expanded representation of the "User
210Configuration" box of the `general workflow 205Configuration" box of the :ref:`general workflow
211figure <#general-workflow-figure>`__: 206figure <overview-manual/concepts:openembedded build system concepts>`:
212 207
213.. image:: figures/user-configuration.png 208.. image:: figures/user-configuration.png
214 :align: center 209 :width: 100%
215 210
216BitBake needs some basic configuration files in order to complete a 211BitBake needs some basic configuration files in order to complete a
217build. These files are ``*.conf`` files. The minimally necessary ones 212build. These files are ``*.conf`` files. The minimally necessary ones
@@ -235,13 +230,12 @@ for creating actual configuration files when you source
235:ref:`structure-core-script`, which is the 230:ref:`structure-core-script`, which is the
236build environment script. 231build environment script.
237 232
238Sourcing the build environment script creates a 233Sourcing the build environment script creates a :term:`Build Directory`
239:term:`Build Directory` if one does not 234if one does not already exist. BitBake uses the :term:`Build Directory`
240already exist. BitBake uses the Build Directory for all its work during 235for all its work during builds. The Build Directory has a ``conf`` directory
241builds. The Build Directory has a ``conf`` directory that contains 236that contains default versions of your ``local.conf`` and ``bblayers.conf``
242default versions of your ``local.conf`` and ``bblayers.conf``
243configuration files. These default configuration files are created only 237configuration files. These default configuration files are created only
244if versions do not already exist in the Build Directory at the time you 238if versions do not already exist in the :term:`Build Directory` at the time you
245source the build environment setup script. 239source the build environment setup script.
246 240
247Because the Poky repository is fundamentally an aggregation of existing 241Because the Poky repository is fundamentally an aggregation of existing
@@ -253,9 +247,9 @@ assumes the script is executed from within a cloned or unpacked version
253of Poky. 247of Poky.
254 248
255Depending on where the script is sourced, different sub-scripts are 249Depending on where the script is sourced, different sub-scripts are
256called to set up the Build Directory (Yocto or OpenEmbedded). 250called to set up the :term:`Build Directory` (Yocto or OpenEmbedded).
257Specifically, the script ``scripts/oe-setup-builddir`` inside the poky 251Specifically, the script ``scripts/oe-setup-builddir`` inside the poky
258directory sets up the Build Directory and seeds the directory (if 252directory sets up the :term:`Build Directory` and seeds the directory (if
259necessary) with configuration files appropriate for the Yocto Project 253necessary) with configuration files appropriate for the Yocto Project
260development environment. 254development environment.
261 255
@@ -271,7 +265,7 @@ The ``local.conf`` file provides many basic variables that define a
271build environment. Here is a list of a few. To see the default 265build environment. Here is a list of a few. To see the default
272configurations in a ``local.conf`` file created by the build environment 266configurations in a ``local.conf`` file created by the build environment
273script, see the 267script, see the
274:yocto_git:`local.conf.sample </poky/tree/meta-poky/conf/local.conf.sample>` 268:yocto_git:`local.conf.sample </poky/tree/meta-poky/conf/templates/default/local.conf.sample>`
275in the ``meta-poky`` layer: 269in the ``meta-poky`` layer:
276 270
277- *Target Machine Selection:* Controlled by the 271- *Target Machine Selection:* Controlled by the
@@ -302,25 +296,20 @@ in the ``meta-poky`` layer:
302 296
303.. note:: 297.. note::
304 298
305 Configurations set in the 299 Configurations set in the ``conf/local.conf`` file can also be set
306 conf/local.conf 300 in the ``conf/site.conf`` and ``conf/auto.conf`` configuration files.
307 file can also be set in the
308 conf/site.conf
309 and
310 conf/auto.conf
311 configuration files.
312 301
313The ``bblayers.conf`` file tells BitBake what layers you want considered 302The ``bblayers.conf`` file tells BitBake what layers you want considered
314during the build. By default, the layers listed in this file include 303during the build. By default, the layers listed in this file include
315layers minimally needed by the build system. However, you must manually 304layers minimally needed by the build system. However, you must manually
316add any custom layers you have created. You can find more information on 305add any custom layers you have created. You can find more information on
317working with the ``bblayers.conf`` file in the 306working with the ``bblayers.conf`` file in the
318":ref:`dev-manual/common-tasks:enabling your layer`" 307":ref:`dev-manual/layers:enabling your layer`"
319section in the Yocto Project Development Tasks Manual. 308section in the Yocto Project Development Tasks Manual.
320 309
321The files ``site.conf`` and ``auto.conf`` are not created by the 310The files ``site.conf`` and ``auto.conf`` are not created by the
322environment initialization script. If you want the ``site.conf`` file, 311environment initialization script. If you want the ``site.conf`` file,
323you need to create that yourself. The ``auto.conf`` file is typically 312you need to create it yourself. The ``auto.conf`` file is typically
324created by an autobuilder: 313created by an autobuilder:
325 314
326- *site.conf:* You can use the ``conf/site.conf`` configuration 315- *site.conf:* You can use the ``conf/site.conf`` configuration
@@ -328,17 +317,7 @@ created by an autobuilder:
328 you had several build environments and they shared some common 317 you had several build environments and they shared some common
329 features. You can set these default build properties here. A good 318 features. You can set these default build properties here. A good
330 example is perhaps the packaging format to use through the 319 example is perhaps the packaging format to use through the
331 :term:`PACKAGE_CLASSES` 320 :term:`PACKAGE_CLASSES` variable.
332 variable.
333
334 One useful scenario for using the ``conf/site.conf`` file is to
335 extend your :term:`BBPATH` variable
336 to include the path to a ``conf/site.conf``. Then, when BitBake looks
337 for Metadata using ``BBPATH``, it finds the ``conf/site.conf`` file
338 and applies your common configurations found in the file. To override
339 configurations in a particular build directory, alter the similar
340 configurations within that build directory's ``conf/local.conf``
341 file.
342 321
343- *auto.conf:* The file is usually created and written to by an 322- *auto.conf:* The file is usually created and written to by an
344 autobuilder. The settings put into the file are typically the same as 323 autobuilder. The settings put into the file are typically the same as
@@ -372,9 +351,9 @@ BitBake's global behavior. This section takes a closer look at the
372layers the build system uses to further control the build. These layers 351layers the build system uses to further control the build. These layers
373provide Metadata for the software, machine, and policies. 352provide Metadata for the software, machine, and policies.
374 353
375In general, three types of layer input exists. You can see them below 354In general, there are three types of layer input. You can see them below
376the "User Configuration" box in the `general workflow 355the "User Configuration" box in the `general workflow
377figure <#general-workflow-figure>`__: 356figure <overview-manual/concepts:openembedded build system concepts>`:
378 357
379- *Metadata (.bb + Patches):* Software layers containing 358- *Metadata (.bb + Patches):* Software layers containing
380 user-supplied recipe files, patches, and append files. A good example 359 user-supplied recipe files, patches, and append files. A good example
@@ -387,8 +366,8 @@ figure <#general-workflow-figure>`__:
387- *Machine BSP Configuration:* Board Support Package (BSP) layers (i.e. 366- *Machine BSP Configuration:* Board Support Package (BSP) layers (i.e.
388 "BSP Layer" in the following figure) providing machine-specific 367 "BSP Layer" in the following figure) providing machine-specific
389 configurations. This type of information is specific to a particular 368 configurations. This type of information is specific to a particular
390 target architecture. A good example of a BSP layer from the `Poky 369 target architecture. A good example of a BSP layer from the
391 Reference Distribution <#gs-reference-distribution-poky>`__ is the 370 :ref:`overview-manual/yp-intro:reference distribution (poky)` is the
392 :yocto_git:`meta-yocto-bsp </poky/tree/meta-yocto-bsp>` 371 :yocto_git:`meta-yocto-bsp </poky/tree/meta-yocto-bsp>`
393 layer. 372 layer.
394 373
@@ -403,10 +382,12 @@ figure <#general-workflow-figure>`__:
403 that contain many policy configurations for the Poky distribution. 382 that contain many policy configurations for the Poky distribution.
404 383
405The following figure shows an expanded representation of these three 384The following figure shows an expanded representation of these three
406layers from the `general workflow figure <#general-workflow-figure>`__: 385layers from the :ref:`general workflow figure
386<overview-manual/concepts:openembedded build system concepts>`:
407 387
408.. image:: figures/layer-input.png 388.. image:: figures/layer-input.png
409 :align: center 389 :align: center
390 :width: 70%
410 391
411In general, all layers have a similar structure. They all contain a 392In general, all layers have a similar structure. They all contain a
412licensing file (e.g. ``COPYING.MIT``) if the layer is to be distributed, 393licensing file (e.g. ``COPYING.MIT``) if the layer is to be distributed,
@@ -414,13 +395,13 @@ a ``README`` file as good practice and especially if the layer is to be
414distributed, a configuration directory, and recipe directories. You can 395distributed, a configuration directory, and recipe directories. You can
415learn about the general structure for layers used with the Yocto Project 396learn about the general structure for layers used with the Yocto Project
416in the 397in the
417":ref:`dev-manual/common-tasks:creating your own layer`" 398":ref:`dev-manual/layers:creating your own layer`"
418section in the 399section in the
419Yocto Project Development Tasks Manual. For a general discussion on 400Yocto Project Development Tasks Manual. For a general discussion on
420layers and the many layers from which you can draw, see the 401layers and the many layers from which you can draw, see the
421"`Layers <#overview-layers>`__" and "`The Yocto Project Layer 402":ref:`overview-manual/concepts:layers`" and
422Model <#the-yocto-project-layer-model>`__" sections both earlier in this 403":ref:`overview-manual/yp-intro:the yocto project layer model`" sections both
423manual. 404earlier in this manual.
424 405
425If you explored the previous links, you discovered some areas where many 406If you explored the previous links, you discovered some areas where many
426layers that work with the Yocto Project exist. The :yocto_git:`Source 407layers that work with the Yocto Project exist. The :yocto_git:`Source
@@ -428,8 +409,8 @@ Repositories <>` also shows layers categorized under "Yocto Metadata Layers."
428 409
429.. note:: 410.. note::
430 411
431 Layers exist in the Yocto Project Source Repositories that cannot be 412 There are layers in the Yocto Project Source Repositories that cannot be
432 found in the OpenEmbedded Layer Index. These layers are either 413 found in the OpenEmbedded Layer Index. Such layers are either
433 deprecated or experimental in nature. 414 deprecated or experimental in nature.
434 415
435BitBake uses the ``conf/bblayers.conf`` file, which is part of the user 416BitBake uses the ``conf/bblayers.conf`` file, which is part of the user
@@ -443,7 +424,7 @@ The distribution layer provides policy configurations for your
443distribution. Best practices dictate that you isolate these types of 424distribution. Best practices dictate that you isolate these types of
444configurations into their own layer. Settings you provide in 425configurations into their own layer. Settings you provide in
445``conf/distro/distro.conf`` override similar settings that BitBake finds 426``conf/distro/distro.conf`` override similar settings that BitBake finds
446in your ``conf/local.conf`` file in the Build Directory. 427in your ``conf/local.conf`` file in the :term:`Build Directory`.
447 428
448The following list provides some explanation and references for what you 429The following list provides some explanation and references for what you
449typically find in the distribution layer: 430typically find in the distribution layer:
@@ -490,7 +471,7 @@ the machine (``conf/machine/machine.conf``) and, of course, the layer
490 471
491The remainder of the layer is dedicated to specific recipes by function: 472The remainder of the layer is dedicated to specific recipes by function:
492``recipes-bsp``, ``recipes-core``, ``recipes-graphics``, 473``recipes-bsp``, ``recipes-core``, ``recipes-graphics``,
493``recipes-kernel``, and so forth. Metadata can exist for multiple 474``recipes-kernel``, and so forth. There can be metadata for multiple
494formfactors, graphics support systems, and so forth. 475formfactors, graphics support systems, and so forth.
495 476
496.. note:: 477.. note::
@@ -514,11 +495,12 @@ Sources
514------- 495-------
515 496
516In order for the OpenEmbedded build system to create an image or any 497In order for the OpenEmbedded build system to create an image or any
517target, it must be able to access source files. The `general workflow 498target, it must be able to access source files. The :ref:`general workflow
518figure <#general-workflow-figure>`__ represents source files using the 499figure <overview-manual/concepts:openembedded build system concepts>`
519"Upstream Project Releases", "Local Projects", and "SCMs (optional)" 500represents source files using the "Upstream Project Releases", "Local
520boxes. The figure represents mirrors, which also play a role in locating 501Projects", and "SCMs (optional)" boxes. The figure represents mirrors,
521source files, with the "Source Materials" box. 502which also play a role in locating source files, with the "Source
503Materials" box.
522 504
523The method by which source files are ultimately organized is a function 505The method by which source files are ultimately organized is a function
524of the project. For example, for released software, projects tend to use 506of the project. For example, for released software, projects tend to use
@@ -528,13 +510,11 @@ project that is more dynamic or experimental in nature, a project might
528keep source files in a repository controlled by a Source Control Manager 510keep source files in a repository controlled by a Source Control Manager
529(SCM) such as Git. Pulling source from a repository allows you to 511(SCM) such as Git. Pulling source from a repository allows you to
530control the point in the repository (the revision) from which you want 512control the point in the repository (the revision) from which you want
531to build software. Finally, a combination of the two might exist, which 513to build software. A combination of the two is also possible.
532would give the consumer a choice when deciding where to get source
533files.
534 514
535BitBake uses the :term:`SRC_URI` 515BitBake uses the :term:`SRC_URI`
536variable to point to source files regardless of their location. Each 516variable to point to source files regardless of their location. Each
537recipe must have a ``SRC_URI`` variable that points to the source. 517recipe must have a :term:`SRC_URI` variable that points to the source.
538 518
539Another area that plays a significant role in where source files come 519Another area that plays a significant role in where source files come
540from is pointed to by the 520from is pointed to by the
@@ -542,22 +522,24 @@ from is pointed to by the
542a cache that can hold previously downloaded source. You can also 522a cache that can hold previously downloaded source. You can also
543instruct the OpenEmbedded build system to create tarballs from Git 523instruct the OpenEmbedded build system to create tarballs from Git
544repositories, which is not the default behavior, and store them in the 524repositories, which is not the default behavior, and store them in the
545``DL_DIR`` by using the 525:term:`DL_DIR` by using the
546:term:`BB_GENERATE_MIRROR_TARBALLS` 526:term:`BB_GENERATE_MIRROR_TARBALLS`
547variable. 527variable.
548 528
549Judicious use of a ``DL_DIR`` directory can save the build system a trip 529Judicious use of a :term:`DL_DIR` directory can save the build system a trip
550across the Internet when looking for files. A good method for using a 530across the Internet when looking for files. A good method for using a download
551download directory is to have ``DL_DIR`` point to an area outside of 531directory is to have :term:`DL_DIR` point to an area outside of your
552your Build Directory. Doing so allows you to safely delete the Build 532:term:`Build Directory`. Doing so allows you to safely delete the
553Directory if needed without fear of removing any downloaded source file. 533:term:`Build Directory` if needed without fear of removing any downloaded
534source file.
554 535
555The remainder of this section provides a deeper look into the source 536The remainder of this section provides a deeper look into the source
556files and the mirrors. Here is a more detailed look at the source file 537files and the mirrors. Here is a more detailed look at the source file
557area of the `general workflow figure <#general-workflow-figure>`__: 538area of the :ref:`general workflow figure <overview-manual/concepts:openembedded build system concepts>`:
558 539
559.. image:: figures/source-input.png 540.. image:: figures/source-input.png
560 :align: center 541 :align: center
542 :width: 70%
561 543
562Upstream Project Releases 544Upstream Project Releases
563~~~~~~~~~~~~~~~~~~~~~~~~~ 545~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -572,33 +554,30 @@ Local Projects
572~~~~~~~~~~~~~~ 554~~~~~~~~~~~~~~
573 555
574Local projects are custom bits of software the user provides. These bits 556Local projects are custom bits of software the user provides. These bits
575reside somewhere local to a project - perhaps a directory into which the 557reside somewhere local to a project --- perhaps a directory into which the
576user checks in items (e.g. a local directory containing a development 558user checks in items (e.g. a local directory containing a development
577source tree used by the group). 559source tree used by the group).
578 560
579The canonical method through which to include a local project is to use 561The canonical method through which to include a local project is to use the
580the :ref:`externalsrc <ref-classes-externalsrc>` 562:ref:`ref-classes-externalsrc` class to include that local project. You use
581class to include that local project. You use either the ``local.conf`` 563either the ``local.conf`` or a recipe's append file to override or set the
582or a recipe's append file to override or set the recipe to point to the 564recipe to point to the local directory on your disk to pull in the whole
583local directory on your disk to pull in the whole source tree. 565source tree.
584 566
585Source Control Managers (Optional) 567Source Control Managers (Optional)
586~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 568~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
587 569
588Another place from which the build system can get source files is with 570Another place from which the build system can get source files is with
589:ref:`fetchers <bitbake:bitbake-user-manual/bitbake-user-manual-fetching:fetchers>` employing various Source 571:ref:`bitbake-user-manual/bitbake-user-manual-fetching:fetchers` employing
590Control Managers (SCMs) such as Git or Subversion. In such cases, a 572various Source Control Managers (SCMs) such as Git or Subversion. In such
591repository is cloned or checked out. The 573cases, a repository is cloned or checked out. The :ref:`ref-tasks-fetch` task
592:ref:`ref-tasks-fetch` task inside 574inside BitBake uses the :term:`SRC_URI` variable and the argument's prefix to
593BitBake uses the :term:`SRC_URI` 575determine the correct fetcher module.
594variable and the argument's prefix to determine the correct fetcher
595module.
596 576
597.. note:: 577.. note::
598 578
599 For information on how to have the OpenEmbedded build system generate 579 For information on how to have the OpenEmbedded build system generate
600 tarballs for Git repositories and place them in the 580 tarballs for Git repositories and place them in the :term:`DL_DIR`
601 DL_DIR
602 directory, see the :term:`BB_GENERATE_MIRROR_TARBALLS` 581 directory, see the :term:`BB_GENERATE_MIRROR_TARBALLS`
603 variable in the Yocto Project Reference Manual. 582 variable in the Yocto Project Reference Manual.
604 583
@@ -609,7 +588,7 @@ the specific revision from which to build.
609Source Mirror(s) 588Source Mirror(s)
610~~~~~~~~~~~~~~~~ 589~~~~~~~~~~~~~~~~
611 590
612Two kinds of mirrors exist: pre-mirrors and regular mirrors. The 591There are two kinds of mirrors: pre-mirrors and regular mirrors. The
613:term:`PREMIRRORS` and 592:term:`PREMIRRORS` and
614:term:`MIRRORS` variables point to 593:term:`MIRRORS` variables point to
615these, respectively. BitBake checks pre-mirrors before looking upstream 594these, respectively. BitBake checks pre-mirrors before looking upstream
@@ -628,15 +607,15 @@ Package Feeds
628 607
629When the OpenEmbedded build system generates an image or an SDK, it gets 608When the OpenEmbedded build system generates an image or an SDK, it gets
630the packages from a package feed area located in the 609the packages from a package feed area located in the
631:term:`Build Directory`. The `general 610:term:`Build Directory`. The :ref:`general workflow figure
632workflow figure <#general-workflow-figure>`__ shows this package feeds 611<overview-manual/concepts:openembedded build system concepts>`
633area in the upper-right corner. 612shows this package feeds area in the upper-right corner.
634 613
635This section looks a little closer into the package feeds area used by 614This section looks a little closer into the package feeds area used by
636the build system. Here is a more detailed look at the area: 615the build system. Here is a more detailed look at the area:
637 616
638.. image:: figures/package-feeds.png 617.. image:: figures/package-feeds.png
639 :align: center 618 :width: 100%
640 619
641Package feeds are an intermediary step in the build process. The 620Package feeds are an intermediary step in the build process. The
642OpenEmbedded build system provides classes to generate different package 621OpenEmbedded build system provides classes to generate different package
@@ -644,31 +623,28 @@ types, and you specify which classes to enable through the
644:term:`PACKAGE_CLASSES` 623:term:`PACKAGE_CLASSES`
645variable. Before placing the packages into package feeds, the build 624variable. Before placing the packages into package feeds, the build
646process validates them with generated output quality assurance checks 625process validates them with generated output quality assurance checks
647through the :ref:`insane <ref-classes-insane>` 626through the :ref:`ref-classes-insane` class.
648class.
649 627
650The package feed area resides in the Build Directory. The directory the 628The package feed area resides in the :term:`Build Directory`. The directory the
651build system uses to temporarily store packages is determined by a 629build system uses to temporarily store packages is determined by a
652combination of variables and the particular package manager in use. See 630combination of variables and the particular package manager in use. See
653the "Package Feeds" box in the illustration and note the information to 631the "Package Feeds" box in the illustration and note the information to
654the right of that area. In particular, the following defines where 632the right of that area. In particular, the following defines where
655package files are kept: 633package files are kept:
656 634
657- :term:`DEPLOY_DIR`: Defined as 635- :term:`DEPLOY_DIR`: Defined as ``tmp/deploy`` in the :term:`Build Directory`.
658 ``tmp/deploy`` in the Build Directory.
659 636
660- ``DEPLOY_DIR_*``: Depending on the package manager used, the package 637- ``DEPLOY_DIR_*``: Depending on the package manager used, the package
661 type sub-folder. Given RPM, IPK, or DEB packaging and tarball 638 type sub-folder. Given RPM, IPK, or DEB packaging and tarball
662 creation, the 639 creation, the
663 :term:`DEPLOY_DIR_RPM`, 640 :term:`DEPLOY_DIR_RPM`,
664 :term:`DEPLOY_DIR_IPK`, 641 :term:`DEPLOY_DIR_IPK`, or
665 :term:`DEPLOY_DIR_DEB`, or 642 :term:`DEPLOY_DIR_DEB`
666 :term:`DEPLOY_DIR_TAR`,
667 variables are used, respectively. 643 variables are used, respectively.
668 644
669- :term:`PACKAGE_ARCH`: Defines 645- :term:`PACKAGE_ARCH`: Defines
670 architecture-specific sub-folders. For example, packages could exist 646 architecture-specific sub-folders. For example, packages could be
671 for the i586 or qemux86 architectures. 647 available for the i586 or qemux86 architectures.
672 648
673BitBake uses the 649BitBake uses the
674:ref:`do_package_write_* <ref-tasks-package_write_deb>` 650:ref:`do_package_write_* <ref-tasks-package_write_deb>`
@@ -676,13 +652,12 @@ tasks to generate packages and place them into the package holding area
676(e.g. ``do_package_write_ipk`` for IPK packages). See the 652(e.g. ``do_package_write_ipk`` for IPK packages). See the
677":ref:`ref-tasks-package_write_deb`", 653":ref:`ref-tasks-package_write_deb`",
678":ref:`ref-tasks-package_write_ipk`", 654":ref:`ref-tasks-package_write_ipk`",
679":ref:`ref-tasks-package_write_rpm`",
680and 655and
681":ref:`ref-tasks-package_write_tar`" 656":ref:`ref-tasks-package_write_rpm`"
682sections in the Yocto Project Reference Manual for additional 657sections in the Yocto Project Reference Manual for additional
683information. As an example, consider a scenario where an IPK packaging 658information. As an example, consider a scenario where an IPK packaging
684manager is being used and package architecture support for both i586 and 659manager is being used and there is package architecture support for both
685qemux86 exist. Packages for the i586 architecture are placed in 660i586 and qemux86. Packages for the i586 architecture are placed in
686``build/tmp/deploy/ipk/i586``, while packages for the qemux86 661``build/tmp/deploy/ipk/i586``, while packages for the qemux86
687architecture are placed in ``build/tmp/deploy/ipk/qemux86``. 662architecture are placed in ``build/tmp/deploy/ipk/qemux86``.
688 663
@@ -691,15 +666,15 @@ BitBake Tool
691 666
692The OpenEmbedded build system uses 667The OpenEmbedded build system uses
693:term:`BitBake` to produce images and 668:term:`BitBake` to produce images and
694Software Development Kits (SDKs). You can see from the `general workflow 669Software Development Kits (SDKs). You can see from the :ref:`general workflow
695figure <#general-workflow-figure>`__, the BitBake area consists of 670figure <overview-manual/concepts:openembedded build system concepts>`,
696several functional areas. This section takes a closer look at each of 671the BitBake area consists of several functional areas. This section takes a
697those areas. 672closer look at each of those areas.
698 673
699.. note:: 674.. note::
700 675
701 Separate documentation exists for the BitBake tool. See the 676 Documentation for the BitBake tool is available separately. See the
702 BitBake User Manual 677 :doc:`BitBake User Manual <bitbake:index>`
703 for reference material on BitBake. 678 for reference material on BitBake.
704 679
705Source Fetching 680Source Fetching
@@ -709,37 +684,30 @@ The first stages of building a recipe are to fetch and unpack the source
709code: 684code:
710 685
711.. image:: figures/source-fetching.png 686.. image:: figures/source-fetching.png
712 :align: center 687 :width: 100%
713 688
714The :ref:`ref-tasks-fetch` and 689The :ref:`ref-tasks-fetch` and :ref:`ref-tasks-unpack` tasks fetch
715:ref:`ref-tasks-unpack` tasks fetch 690the source files and unpack them into the :term:`Build Directory`.
716the source files and unpack them into the
717:term:`Build Directory`.
718 691
719.. note:: 692.. note::
720 693
721 For every local file (e.g. 694 For every local file (e.g. ``file://``) that is part of a recipe's
722 file:// 695 :term:`SRC_URI` statement, the OpenEmbedded build system takes a
723 ) that is part of a recipe's 696 checksum of the file for the recipe and inserts the checksum into
724 SRC_URI 697 the signature for the :ref:`ref-tasks-fetch` task. If any local
725 statement, the OpenEmbedded build system takes a checksum of the file 698 file has been modified, the :ref:`ref-tasks-fetch` task and all
726 for the recipe and inserts the checksum into the signature for the 699 tasks that depend on it are re-executed.
727 do_fetch 700
728 task. If any local file has been modified, the 701By default, everything is accomplished in the :term:`Build Directory`, which has
729 do_fetch 702a defined structure. For additional general information on the
730 task and all tasks that depend on it are re-executed. 703:term:`Build Directory`, see the ":ref:`structure-core-build`" section in
731
732By default, everything is accomplished in the Build Directory, which has
733a defined structure. For additional general information on the Build
734Directory, see the ":ref:`structure-core-build`" section in
735the Yocto Project Reference Manual. 704the Yocto Project Reference Manual.
736 705
737Each recipe has an area in the Build Directory where the unpacked source 706Each recipe has an area in the :term:`Build Directory` where the unpacked
738code resides. The :term:`S` variable points 707source code resides. The :term:`S` variable points to this area for a recipe's
739to this area for a recipe's unpacked source code. The name of that 708unpacked source code. The name of that directory for any given recipe is
740directory for any given recipe is defined from several different 709defined from several different variables. The preceding figure and the
741variables. The preceding figure and the following list describe the 710following list describe the :term:`Build Directory`'s hierarchy:
742Build Directory's hierarchy:
743 711
744- :term:`TMPDIR`: The base directory 712- :term:`TMPDIR`: The base directory
745 where the OpenEmbedded build system performs all its work during the 713 where the OpenEmbedded build system performs all its work during the
@@ -749,7 +717,7 @@ Build Directory's hierarchy:
749 architecture of the built package or packages. Depending on the 717 architecture of the built package or packages. Depending on the
750 eventual destination of the package or packages (i.e. machine 718 eventual destination of the package or packages (i.e. machine
751 architecture, :term:`Build Host`, SDK, or 719 architecture, :term:`Build Host`, SDK, or
752 specific machine), ``PACKAGE_ARCH`` varies. See the variable's 720 specific machine), :term:`PACKAGE_ARCH` varies. See the variable's
753 description for details. 721 description for details.
754 722
755- :term:`TARGET_OS`: The operating 723- :term:`TARGET_OS`: The operating
@@ -758,7 +726,7 @@ Build Directory's hierarchy:
758 726
759- :term:`PN`: The name of the recipe used 727- :term:`PN`: The name of the recipe used
760 to build the package. This variable can have multiple meanings. 728 to build the package. This variable can have multiple meanings.
761 However, when used in the context of input files, ``PN`` represents 729 However, when used in the context of input files, :term:`PN` represents
762 the name of the recipe. 730 the name of the recipe.
763 731
764- :term:`WORKDIR`: The location 732- :term:`WORKDIR`: The location
@@ -775,20 +743,18 @@ Build Directory's hierarchy:
775 files for a given recipe. 743 files for a given recipe.
776 744
777 - :term:`BPN`: The name of the recipe 745 - :term:`BPN`: The name of the recipe
778 used to build the package. The ``BPN`` variable is a version of 746 used to build the package. The :term:`BPN` variable is a version of
779 the ``PN`` variable but with common prefixes and suffixes removed. 747 the :term:`PN` variable but with common prefixes and suffixes removed.
780 748
781 - :term:`PV`: The version of the 749 - :term:`PV`: The version of the
782 recipe used to build the package. 750 recipe used to build the package.
783 751
784.. note:: 752.. note::
785 753
786 In the previous figure, notice that two sample hierarchies exist: one 754 In the previous figure, notice that there are two sample hierarchies:
787 based on package architecture (i.e. 755 one based on package architecture (i.e. :term:`PACKAGE_ARCH`)
788 PACKAGE_ARCH 756 and one based on a machine (i.e. :term:`MACHINE`).
789 ) and one based on a machine (i.e. 757 The underlying structures are identical. The differentiator being
790 MACHINE
791 ). The underlying structures are identical. The differentiator being
792 what the OpenEmbedded build system is using as a build target (e.g. 758 what the OpenEmbedded build system is using as a build target (e.g.
793 general architecture, a build host, an SDK, or a specific machine). 759 general architecture, a build host, an SDK, or a specific machine).
794 760
@@ -799,7 +765,7 @@ Once source code is fetched and unpacked, BitBake locates patch files
799and applies them to the source files: 765and applies them to the source files:
800 766
801.. image:: figures/patching.png 767.. image:: figures/patching.png
802 :align: center 768 :width: 100%
803 769
804The :ref:`ref-tasks-patch` task uses a 770The :ref:`ref-tasks-patch` task uses a
805recipe's :term:`SRC_URI` statements 771recipe's :term:`SRC_URI` statements
@@ -807,23 +773,23 @@ and the :term:`FILESPATH` variable
807to locate applicable patch files. 773to locate applicable patch files.
808 774
809Default processing for patch files assumes the files have either 775Default processing for patch files assumes the files have either
810``*.patch`` or ``*.diff`` file types. You can use ``SRC_URI`` parameters 776``*.patch`` or ``*.diff`` file types. You can use :term:`SRC_URI` parameters
811to change the way the build system recognizes patch files. See the 777to change the way the build system recognizes patch files. See the
812:ref:`ref-tasks-patch` task for more 778:ref:`ref-tasks-patch` task for more
813information. 779information.
814 780
815BitBake finds and applies multiple patches for a single recipe in the 781BitBake finds and applies multiple patches for a single recipe in the
816order in which it locates the patches. The ``FILESPATH`` variable 782order in which it locates the patches. The :term:`FILESPATH` variable
817defines the default set of directories that the build system uses to 783defines the default set of directories that the build system uses to
818search for patch files. Once found, patches are applied to the recipe's 784search for patch files. Once found, patches are applied to the recipe's
819source files, which are located in the 785source files, which are located in the
820:term:`S` directory. 786:term:`S` directory.
821 787
822For more information on how the source directories are created, see the 788For more information on how the source directories are created, see the
823"`Source Fetching <#source-fetching-dev-environment>`__" section. For 789":ref:`overview-manual/concepts:source fetching`" section. For
824more information on how to create patches and how the build system 790more information on how to create patches and how the build system
825processes patches, see the 791processes patches, see the
826":ref:`dev-manual/common-tasks:patching code`" 792":ref:`dev-manual/new-recipe:patching code`"
827section in the 793section in the
828Yocto Project Development Tasks Manual. You can also see the 794Yocto Project Development Tasks Manual. You can also see the
829":ref:`sdk-manual/extensible:use \`\`devtool modify\`\` to modify the source of an existing component`" 795":ref:`sdk-manual/extensible:use \`\`devtool modify\`\` to modify the source of an existing component`"
@@ -840,7 +806,7 @@ compile the source code. Once compilation occurs, the files are copied
840to a holding area (staged) in preparation for packaging: 806to a holding area (staged) in preparation for packaging:
841 807
842.. image:: figures/configuration-compile-autoreconf.png 808.. image:: figures/configuration-compile-autoreconf.png
843 :align: center 809 :width: 100%
844 810
845This step in the build process consists of the following tasks: 811This step in the build process consists of the following tasks:
846 812
@@ -866,27 +832,25 @@ This step in the build process consists of the following tasks:
866 are specific to configurations for the source code being built by the 832 are specific to configurations for the source code being built by the
867 recipe. 833 recipe.
868 834
869 If you are using the 835 If you are using the :ref:`ref-classes-autotools` class,
870 :ref:`autotools <ref-classes-autotools>` class,
871 you can add additional configuration options by using the 836 you can add additional configuration options by using the
872 :term:`EXTRA_OECONF` or 837 :term:`EXTRA_OECONF` or
873 :term:`PACKAGECONFIG_CONFARGS` 838 :term:`PACKAGECONFIG_CONFARGS`
874 variables. For information on how this variable works within that 839 variables. For information on how this variable works within that
875 class, see the 840 class, see the :ref:`ref-classes-autotools` class
876 :ref:`autotools <ref-classes-autotools>` class 841 :yocto_git:`here </poky/tree/meta/classes-recipe/autotools.bbclass>`.
877 :yocto_git:`here </poky/tree/meta/classes/autotools.bbclass>`.
878 842
879- *do_compile*: Once a configuration task has been satisfied, 843- *do_compile*: Once a configuration task has been satisfied,
880 BitBake compiles the source using the 844 BitBake compiles the source using the
881 :ref:`ref-tasks-compile` task. 845 :ref:`ref-tasks-compile` task.
882 Compilation occurs in the directory pointed to by the 846 Compilation occurs in the directory pointed to by the
883 :term:`B` variable. Realize that the 847 :term:`B` variable. Realize that the
884 ``B`` directory is, by default, the same as the 848 :term:`B` directory is, by default, the same as the
885 :term:`S` directory. 849 :term:`S` directory.
886 850
887- *do_install*: After compilation completes, BitBake executes the 851- *do_install*: After compilation completes, BitBake executes the
888 :ref:`ref-tasks-install` task. 852 :ref:`ref-tasks-install` task.
889 This task copies files from the ``B`` directory and places them in a 853 This task copies files from the :term:`B` directory and places them in a
890 holding area pointed to by the :term:`D` 854 holding area pointed to by the :term:`D`
891 variable. Packaging occurs later using files from this holding 855 variable. Packaging occurs later using files from this holding
892 directory. 856 directory.
@@ -898,7 +862,7 @@ After source code is configured, compiled, and staged, the build system
898analyzes the results and splits the output into packages: 862analyzes the results and splits the output into packages:
899 863
900.. image:: figures/analysis-for-package-splitting.png 864.. image:: figures/analysis-for-package-splitting.png
901 :align: center 865 :width: 100%
902 866
903The :ref:`ref-tasks-package` and 867The :ref:`ref-tasks-package` and
904:ref:`ref-tasks-packagedata` 868:ref:`ref-tasks-packagedata`
@@ -909,7 +873,7 @@ following as well as other items: splitting out debugging symbols,
909looking at shared library dependencies between packages, and looking at 873looking at shared library dependencies between packages, and looking at
910package relationships. 874package relationships.
911 875
912The ``do_packagedata`` task creates package metadata based on the 876The :ref:`ref-tasks-packagedata` task creates package metadata based on the
913analysis such that the build system can generate the final packages. The 877analysis such that the build system can generate the final packages. The
914:ref:`ref-tasks-populate_sysroot` 878:ref:`ref-tasks-populate_sysroot`
915task stages (copies) a subset of the files installed by the 879task stages (copies) a subset of the files installed by the
@@ -922,7 +886,7 @@ the analysis and package splitting process use several areas:
922 individual packages. 886 individual packages.
923 887
924- :term:`PKGDESTWORK`: A 888- :term:`PKGDESTWORK`: A
925 temporary work area (i.e. ``pkgdata``) used by the ``do_package`` 889 temporary work area (i.e. ``pkgdata``) used by the :ref:`ref-tasks-package`
926 task to save package metadata. 890 task to save package metadata.
927 891
928- :term:`PKGDEST`: The parent 892- :term:`PKGDEST`: The parent
@@ -932,7 +896,7 @@ the analysis and package splitting process use several areas:
932- :term:`PKGDATA_DIR`: A shared, 896- :term:`PKGDATA_DIR`: A shared,
933 global-state directory that holds packaging metadata generated during 897 global-state directory that holds packaging metadata generated during
934 the packaging process. The packaging process copies metadata from 898 the packaging process. The packaging process copies metadata from
935 ``PKGDESTWORK`` to the ``PKGDATA_DIR`` area where it becomes globally 899 :term:`PKGDESTWORK` to the :term:`PKGDATA_DIR` area where it becomes globally
936 available. 900 available.
937 901
938- :term:`STAGING_DIR_HOST`: 902- :term:`STAGING_DIR_HOST`:
@@ -946,25 +910,24 @@ the analysis and package splitting process use several areas:
946- :term:`STAGING_DIR_TARGET`: 910- :term:`STAGING_DIR_TARGET`:
947 The path for the sysroot used when a component that is built to 911 The path for the sysroot used when a component that is built to
948 execute on a system and it generates code for yet another machine 912 execute on a system and it generates code for yet another machine
949 (e.g. cross-canadian recipes). 913 (e.g. :ref:`ref-classes-cross-canadian` recipes).
950 914
951The :term:`FILES` variable defines the 915The :term:`FILES` variable defines the
952files that go into each package in 916files that go into each package in
953:term:`PACKAGES`. If you want 917:term:`PACKAGES`. If you want
954details on how this is accomplished, you can look at 918details on how this is accomplished, you can look at
955:yocto_git:`package.bbclass </poky/tree/meta/classes/package.bbclass>`. 919:yocto_git:`package.bbclass </poky/tree/meta/classes-global/package.bbclass>`.
956 920
957Depending on the type of packages being created (RPM, DEB, or IPK), the 921Depending on the type of packages being created (RPM, DEB, or IPK), the
958:ref:`do_package_write_* <ref-tasks-package_write_deb>` 922:ref:`do_package_write_* <ref-tasks-package_write_deb>`
959task creates the actual packages and places them in the Package Feed 923task creates the actual packages and places them in the Package Feed
960area, which is ``${TMPDIR}/deploy``. You can see the "`Package 924area, which is ``${TMPDIR}/deploy``. You can see the
961Feeds <#package-feeds-dev-environment>`__" section for more detail on 925":ref:`overview-manual/concepts:package feeds`" section for more detail on
962that part of the build process. 926that part of the build process.
963 927
964.. note:: 928.. note::
965 929
966 Support for creating feeds directly from the 930 Support for creating feeds directly from the ``deploy/*``
967 deploy/\*
968 directories does not exist. Creating such feeds usually requires some 931 directories does not exist. Creating such feeds usually requires some
969 kind of feed maintenance mechanism that would upload the new packages 932 kind of feed maintenance mechanism that would upload the new packages
970 into an official package feed (e.g. the Ångström distribution). This 933 into an official package feed (e.g. the Ångström distribution). This
@@ -978,7 +941,7 @@ Once packages are split and stored in the Package Feeds area, the build
978system uses BitBake to generate the root filesystem image: 941system uses BitBake to generate the root filesystem image:
979 942
980.. image:: figures/image-generation.png 943.. image:: figures/image-generation.png
981 :align: center 944 :width: 100%
982 945
983The image generation process consists of several stages and depends on 946The image generation process consists of several stages and depends on
984several tasks and variables. The 947several tasks and variables. The
@@ -1013,7 +976,7 @@ actually install:
1013 976
1014With :term:`IMAGE_ROOTFS` 977With :term:`IMAGE_ROOTFS`
1015pointing to the location of the filesystem under construction and the 978pointing to the location of the filesystem under construction and the
1016``PACKAGE_INSTALL`` variable providing the final list of packages to 979:term:`PACKAGE_INSTALL` variable providing the final list of packages to
1017install, the root file system is created. 980install, the root file system is created.
1018 981
1019Package installation is under control of the package manager (e.g. 982Package installation is under control of the package manager (e.g.
@@ -1024,29 +987,25 @@ data files are deleted from the root filesystem. As part of the final
1024stage of package installation, post installation scripts that are part 987stage of package installation, post installation scripts that are part
1025of the packages are run. Any scripts that fail to run on the build host 988of the packages are run. Any scripts that fail to run on the build host
1026are run on the target when the target system is first booted. If you are 989are run on the target when the target system is first booted. If you are
1027using a 990using a
1028:ref:`read-only root filesystem <dev-manual/common-tasks:creating a read-only root filesystem>`, 991:ref:`read-only root filesystem <dev-manual/read-only-rootfs:creating a read-only root filesystem>`,
1029all the post installation scripts must succeed on the build host during 992all the post installation scripts must succeed on the build host during
1030the package installation phase since the root filesystem on the target 993the package installation phase since the root filesystem on the target
1031is read-only. 994is read-only.
1032 995
1033The final stages of the ``do_rootfs`` task handle post processing. Post 996The final stages of the :ref:`ref-tasks-rootfs` task handle post processing. Post
1034processing includes creation of a manifest file and optimizations. 997processing includes creation of a manifest file and optimizations.
1035 998
1036The manifest file (``.manifest``) resides in the same directory as the 999The manifest file (``.manifest``) resides in the same directory as the root
1037root filesystem image. This file lists out, line-by-line, the installed 1000filesystem image. This file lists out, line-by-line, the installed packages.
1038packages. The manifest file is useful for the 1001The manifest file is useful for the :ref:`ref-classes-testimage` class,
1039:ref:`testimage <ref-classes-testimage*>` class,
1040for example, to determine whether or not to run specific tests. See the 1002for example, to determine whether or not to run specific tests. See the
1041:term:`IMAGE_MANIFEST` 1003:term:`IMAGE_MANIFEST` variable for additional information.
1042variable for additional information.
1043 1004
1044Optimizing processes that are run across the image include ``mklibs``, 1005Optimizing processes that are run across the image include ``mklibs``
1045``prelink``, and any other post-processing commands as defined by the 1006and any other post-processing commands as defined by the
1046:term:`ROOTFS_POSTPROCESS_COMMAND` 1007:term:`ROOTFS_POSTPROCESS_COMMAND`
1047variable. The ``mklibs`` process optimizes the size of the libraries, 1008variable. The ``mklibs`` process optimizes the size of the libraries.
1048while the ``prelink`` process optimizes the dynamic linking of shared
1049libraries to reduce start up time of executables.
1050 1009
1051After the root filesystem is built, processing begins on the image 1010After the root filesystem is built, processing begins on the image
1052through the :ref:`ref-tasks-image` 1011through the :ref:`ref-tasks-image`
@@ -1056,25 +1015,23 @@ the
1056variable. This variable specifies a list of functions to call before the 1015variable. This variable specifies a list of functions to call before the
1057build system creates the final image output files. 1016build system creates the final image output files.
1058 1017
1059The build system dynamically creates ``do_image_*`` tasks as needed, 1018The build system dynamically creates :ref:`do_image_* <ref-tasks-image>` tasks as needed,
1060based on the image types specified in the 1019based on the image types specified in the
1061:term:`IMAGE_FSTYPES` variable. 1020:term:`IMAGE_FSTYPES` variable.
1062The process turns everything into an image file or a set of image files 1021The process turns everything into an image file or a set of image files
1063and can compress the root filesystem image to reduce the overall size of 1022and can compress the root filesystem image to reduce the overall size of
1064the image. The formats used for the root filesystem depend on the 1023the image. The formats used for the root filesystem depend on the
1065``IMAGE_FSTYPES`` variable. Compression depends on whether the formats 1024:term:`IMAGE_FSTYPES` variable. Compression depends on whether the formats
1066support compression. 1025support compression.
1067 1026
1068As an example, a dynamically created task when creating a particular 1027As an example, a dynamically created task when creating a particular
1069image type would take the following form: 1028image type would take the following form::
1070::
1071 1029
1072 do_image_type 1030 do_image_type
1073 1031
1074So, if the type 1032So, if the type
1075as specified by the ``IMAGE_FSTYPES`` were ``ext4``, the dynamically 1033as specified by the :term:`IMAGE_FSTYPES` were ``ext4``, the dynamically
1076generated task would be as follows: 1034generated task would be as follows::
1077::
1078 1035
1079 do_image_ext4 1036 do_image_ext4
1080 1037
@@ -1100,14 +1057,14 @@ Development Kit (SDK) installer scripts for both the standard SDK and
1100the extensible SDK (eSDK): 1057the extensible SDK (eSDK):
1101 1058
1102.. image:: figures/sdk-generation.png 1059.. image:: figures/sdk-generation.png
1103 :align: center 1060 :width: 100%
1104 1061
1105.. note:: 1062.. note::
1106 1063
1107 For more information on the cross-development toolchain generation, 1064 For more information on the cross-development toolchain generation,
1108 see the ":ref:`overview-manual/concepts:cross-development toolchain generation`" 1065 see the ":ref:`overview-manual/concepts:cross-development toolchain generation`"
1109 section. For information on advantages gained when building a 1066 section. For information on advantages gained when building a
1110 cross-development toolchain using the do_populate_sdk task, see the 1067 cross-development toolchain using the :ref:`ref-tasks-populate_sdk` task, see the
1111 ":ref:`sdk-manual/appendix-obtain:building an sdk installer`" section in 1068 ":ref:`sdk-manual/appendix-obtain:building an sdk installer`" section in
1112 the Yocto Project Application Development and the Extensible Software 1069 the Yocto Project Application Development and the Extensible Software
1113 Development Kit (eSDK) manual. 1070 Development Kit (eSDK) manual.
@@ -1119,16 +1076,16 @@ and
1119:ref:`ref-tasks-populate_sdk_ext` 1076:ref:`ref-tasks-populate_sdk_ext`
1120tasks use these key variables to help create the list of packages to 1077tasks use these key variables to help create the list of packages to
1121actually install. For information on the variables listed in the figure, 1078actually install. For information on the variables listed in the figure,
1122see the "`Application Development SDK <#sdk-dev-environment>`__" 1079see the ":ref:`overview-manual/concepts:application development sdk`"
1123section. 1080section.
1124 1081
1125The ``do_populate_sdk`` task helps create the standard SDK and handles 1082The :ref:`ref-tasks-populate_sdk` task helps create the standard SDK and handles
1126two parts: a target part and a host part. The target part is the part 1083two parts: a target part and a host part. The target part is the part
1127built for the target hardware and includes libraries and headers. The 1084built for the target hardware and includes libraries and headers. The
1128host part is the part of the SDK that runs on the 1085host part is the part of the SDK that runs on the
1129:term:`SDKMACHINE`. 1086:term:`SDKMACHINE`.
1130 1087
1131The ``do_populate_sdk_ext`` task helps create the extensible SDK and 1088The :ref:`ref-tasks-populate_sdk_ext` task helps create the extensible SDK and
1132handles host and target parts differently than its counter part does for 1089handles host and target parts differently than its counter part does for
1133the standard SDK. For the extensible SDK, the task encapsulates the 1090the standard SDK. For the extensible SDK, the task encapsulates the
1134build system, which includes everything needed (host and target) for the 1091build system, which includes everything needed (host and target) for the
@@ -1147,28 +1104,27 @@ For each task that completes successfully, BitBake writes a stamp file
1147into the :term:`STAMPS_DIR` 1104into the :term:`STAMPS_DIR`
1148directory. The beginning of the stamp file's filename is determined by 1105directory. The beginning of the stamp file's filename is determined by
1149the :term:`STAMP` variable, and the end 1106the :term:`STAMP` variable, and the end
1150of the name consists of the task's name and current `input 1107of the name consists of the task's name and current :ref:`input
1151checksum <#overview-checksums>`__. 1108checksum <overview-manual/concepts:checksums (signatures)>`.
1152 1109
1153.. note:: 1110.. note::
1154 1111
1155 This naming scheme assumes that 1112 This naming scheme assumes that :term:`BB_SIGNATURE_HANDLER`
1156 BB_SIGNATURE_HANDLER
1157 is "OEBasicHash", which is almost always the case in current 1113 is "OEBasicHash", which is almost always the case in current
1158 OpenEmbedded. 1114 OpenEmbedded.
1159 1115
1160To determine if a task needs to be rerun, BitBake checks if a stamp file 1116To determine if a task needs to be rerun, BitBake checks if a stamp file
1161with a matching input checksum exists for the task. If such a stamp file 1117with a matching input checksum exists for the task. In this case,
1162exists, the task's output is assumed to exist and still be valid. If the 1118the task's output is assumed to exist and still be valid. Otherwise,
1163file does not exist, the task is rerun. 1119the task is rerun.
1164 1120
1165.. note:: 1121.. note::
1166 1122
1167 The stamp mechanism is more general than the shared state (sstate) 1123 The stamp mechanism is more general than the shared state (sstate)
1168 cache mechanism described in the "`Setscene Tasks and Shared 1124 cache mechanism described in the
1169 State <#setscene-tasks-and-shared-state>`__" section. BitBake avoids 1125 ":ref:`overview-manual/concepts:setscene tasks and shared state`" section.
1170 rerunning any task that has a valid stamp file, not just tasks that 1126 BitBake avoids rerunning any task that has a valid stamp file, not just
1171 can be accelerated through the sstate cache. 1127 tasks that can be accelerated through the sstate cache.
1172 1128
1173 However, you should realize that stamp files only serve as a marker 1129 However, you should realize that stamp files only serve as a marker
1174 that some work has been done and that these files do not record task 1130 that some work has been done and that these files do not record task
@@ -1178,17 +1134,17 @@ file does not exist, the task is rerun.
1178 the sstate cache mechanism adds is a way to cache task output that 1134 the sstate cache mechanism adds is a way to cache task output that
1179 can then be shared between build machines. 1135 can then be shared between build machines.
1180 1136
1181Since ``STAMPS_DIR`` is usually a subdirectory of ``TMPDIR``, removing 1137Since :term:`STAMPS_DIR` is usually a subdirectory of :term:`TMPDIR`, removing
1182``TMPDIR`` will also remove ``STAMPS_DIR``, which means tasks will 1138:term:`TMPDIR` will also remove :term:`STAMPS_DIR`, which means tasks will
1183properly be rerun to repopulate ``TMPDIR``. 1139properly be rerun to repopulate :term:`TMPDIR`.
1184 1140
1185If you want some task to always be considered "out of date", you can 1141If you want some task to always be considered "out of date", you can
1186mark it with the :ref:`nostamp <bitbake:bitbake-user-manual/bitbake-user-manual-metadata:variable flags>` 1142mark it with the :ref:`nostamp <bitbake-user-manual/bitbake-user-manual-metadata:variable flags>`
1187varflag. If some other task depends on such a task, then that task will 1143varflag. If some other task depends on such a task, then that task will
1188also always be considered out of date, which might not be what you want. 1144also always be considered out of date, which might not be what you want.
1189 1145
1190For details on how to view information about a task's signature, see the 1146For details on how to view information about a task's signature, see the
1191":ref:`dev-manual/common-tasks:viewing task variable dependencies`" 1147":ref:`dev-manual/debugging:viewing task variable dependencies`"
1192section in the Yocto Project Development Tasks Manual. 1148section in the Yocto Project Development Tasks Manual.
1193 1149
1194Setscene Tasks and Shared State 1150Setscene Tasks and Shared State
@@ -1207,7 +1163,7 @@ usually made available in the form of a shared state (sstate) cache.
1207 :term:`SSTATE_MIRRORS` 1163 :term:`SSTATE_MIRRORS`
1208 variables. 1164 variables.
1209 1165
1210The idea of a setscene task (i.e ``do_``\ taskname\ ``_setscene``) is a 1166The idea of a setscene task (i.e ``do_taskname_setscene``) is a
1211version of the task where instead of building something, BitBake can 1167version of the task where instead of building something, BitBake can
1212skip to the end result and simply place a set of files into specific 1168skip to the end result and simply place a set of files into specific
1213locations as needed. In some cases, it makes sense to have a setscene 1169locations as needed. In some cases, it makes sense to have a setscene
@@ -1220,7 +1176,7 @@ the work involved would be equal to or greater than the underlying task.
1220 1176
1221In the build system, the common tasks that have setscene variants are 1177In the build system, the common tasks that have setscene variants are
1222:ref:`ref-tasks-package`, 1178:ref:`ref-tasks-package`,
1223``do_package_write_*``, 1179:ref:`do_package_write_* <ref-tasks-package_write_deb>`,
1224:ref:`ref-tasks-deploy`, 1180:ref:`ref-tasks-deploy`,
1225:ref:`ref-tasks-packagedata`, and 1181:ref:`ref-tasks-packagedata`, and
1226:ref:`ref-tasks-populate_sysroot`. 1182:ref:`ref-tasks-populate_sysroot`.
@@ -1230,20 +1186,20 @@ end result.
1230The build system has knowledge of the relationship between these tasks 1186The build system has knowledge of the relationship between these tasks
1231and other preceding tasks. For example, if BitBake runs 1187and other preceding tasks. For example, if BitBake runs
1232``do_populate_sysroot_setscene`` for something, it does not make sense 1188``do_populate_sysroot_setscene`` for something, it does not make sense
1233to run any of the ``do_fetch``, ``do_unpack``, ``do_patch``, 1189to run any of the :ref:`ref-tasks-fetch`, :ref:`ref-tasks-unpack`, :ref:`ref-tasks-patch`,
1234``do_configure``, ``do_compile``, and ``do_install`` tasks. However, if 1190:ref:`ref-tasks-configure`, :ref:`ref-tasks-compile`, and :ref:`ref-tasks-install` tasks. However, if
1235``do_package`` needs to be run, BitBake needs to run those other tasks. 1191:ref:`ref-tasks-package` needs to be run, BitBake needs to run those other tasks.
1236 1192
1237It becomes more complicated if everything can come from an sstate cache 1193It becomes more complicated if everything can come from an sstate cache
1238because some objects are simply not required at all. For example, you do 1194because some objects are simply not required at all. For example, you do
1239not need a compiler or native tools, such as quilt, if nothing exists to 1195not need a compiler or native tools, such as quilt, if there isn't anything
1240compile or patch. If the ``do_package_write_*`` packages are available 1196to compile or patch. If the :ref:`do_package_write_* <ref-tasks-package_write_deb>` packages are available
1241from sstate, BitBake does not need the ``do_package`` task data. 1197from sstate, BitBake does not need the :ref:`ref-tasks-package` task data.
1242 1198
1243To handle all these complexities, BitBake runs in two phases. The first 1199To handle all these complexities, BitBake runs in two phases. The first
1244is the "setscene" stage. During this stage, BitBake first checks the 1200is the "setscene" stage. During this stage, BitBake first checks the
1245sstate cache for any targets it is planning to build. BitBake does a 1201sstate cache for any targets it is planning to build. BitBake does a
1246fast check to see if the object exists rather than a complete download. 1202fast check to see if the object exists rather than doing a complete download.
1247If nothing exists, the second phase, which is the setscene stage, 1203If nothing exists, the second phase, which is the setscene stage,
1248completes and the main build proceeds. 1204completes and the main build proceeds.
1249 1205
@@ -1257,11 +1213,9 @@ download or setscene task fails, the build system then tries to install
1257dependencies, such as the compiler, from the cache. 1213dependencies, such as the compiler, from the cache.
1258 1214
1259The availability of objects in the sstate cache is handled by the 1215The availability of objects in the sstate cache is handled by the
1260function specified by the 1216function specified by the :term:`BB_HASHCHECK_FUNCTION`
1261:term:`bitbake:BB_HASHCHECK_FUNCTION`
1262variable and returns a list of available objects. The function specified 1217variable and returns a list of available objects. The function specified
1263by the 1218by the :term:`BB_SETSCENE_DEPVALID`
1264:term:`bitbake:BB_SETSCENE_DEPVALID`
1265variable is the function that determines whether a given dependency 1219variable is the function that determines whether a given dependency
1266needs to be followed, and whether for any given relationship the 1220needs to be followed, and whether for any given relationship the
1267function needs to be passed. The function returns a True or False value. 1221function needs to be passed. The function returns a True or False value.
@@ -1271,12 +1225,14 @@ Images
1271 1225
1272The images produced by the build system are compressed forms of the root 1226The images produced by the build system are compressed forms of the root
1273filesystem and are ready to boot on a target device. You can see from 1227filesystem and are ready to boot on a target device. You can see from
1274the `general workflow figure <#general-workflow-figure>`__ that BitBake 1228the :ref:`general workflow figure
1229<overview-manual/concepts:openembedded build system concepts>` that BitBake
1275output, in part, consists of images. This section takes a closer look at 1230output, in part, consists of images. This section takes a closer look at
1276this output: 1231this output:
1277 1232
1278.. image:: figures/images.png 1233.. image:: figures/images.png
1279 :align: center 1234 :align: center
1235 :width: 75%
1280 1236
1281.. note:: 1237.. note::
1282 1238
@@ -1284,15 +1240,12 @@ this output:
1284 ":doc:`/ref-manual/images`" chapter in the Yocto Project Reference 1240 ":doc:`/ref-manual/images`" chapter in the Yocto Project Reference
1285 Manual. 1241 Manual.
1286 1242
1287The build process writes images out to the :term:`Build Directory` 1243The build process writes images out to the :term:`Build Directory` inside
1288inside the 1244the ``tmp/deploy/images/machine/`` folder as shown in the figure. This
1289``tmp/deploy/images/machine/`` folder as shown in the figure. This
1290folder contains any files expected to be loaded on the target device. 1245folder contains any files expected to be loaded on the target device.
1291The :term:`DEPLOY_DIR` variable 1246The :term:`DEPLOY_DIR` variable points to the ``deploy`` directory, while the
1292points to the ``deploy`` directory, while the 1247:term:`DEPLOY_DIR_IMAGE` variable points to the appropriate directory
1293:term:`DEPLOY_DIR_IMAGE` 1248containing images for the current configuration.
1294variable points to the appropriate directory containing images for the
1295current configuration.
1296 1249
1297- kernel-image: A kernel binary file. The 1250- kernel-image: A kernel binary file. The
1298 :term:`KERNEL_IMAGETYPE` 1251 :term:`KERNEL_IMAGETYPE`
@@ -1327,7 +1280,8 @@ current configuration.
1327Application Development SDK 1280Application Development SDK
1328--------------------------- 1281---------------------------
1329 1282
1330In the `general workflow figure <#general-workflow-figure>`__, the 1283In the :ref:`general workflow figure
1284<overview-manual/concepts:openembedded build system concepts>`, the
1331output labeled "Application Development SDK" represents an SDK. The SDK 1285output labeled "Application Development SDK" represents an SDK. The SDK
1332generation process differs depending on whether you build an extensible 1286generation process differs depending on whether you build an extensible
1333SDK (e.g. ``bitbake -c populate_sdk_ext`` imagename) or a standard SDK 1287SDK (e.g. ``bitbake -c populate_sdk_ext`` imagename) or a standard SDK
@@ -1335,7 +1289,7 @@ SDK (e.g. ``bitbake -c populate_sdk_ext`` imagename) or a standard SDK
1335closer look at this output: 1289closer look at this output:
1336 1290
1337.. image:: figures/sdk.png 1291.. image:: figures/sdk.png
1338 :align: center 1292 :width: 100%
1339 1293
1340The specific form of this output is a set of files that includes a 1294The specific form of this output is a set of files that includes a
1341self-extracting SDK installer (``*.sh``), host and target manifest 1295self-extracting SDK installer (``*.sh``), host and target manifest
@@ -1357,18 +1311,17 @@ can initialize the environment before using the tools.
1357 your own SDK installer. 1311 your own SDK installer.
1358 1312
1359 - For background information on cross-development toolchains in the 1313 - For background information on cross-development toolchains in the
1360 Yocto Project development environment, see the "`Cross-Development 1314 Yocto Project development environment, see the
1361 Toolchain Generation <#cross-development-toolchain-generation>`__" 1315 ":ref:`overview-manual/concepts:cross-development toolchain generation`"
1362 section. 1316 section.
1363 1317
1364 - For information on setting up a cross-development environment, see 1318 - For information on setting up a cross-development environment, see
1365 the :doc:`/sdk-manual/index` manual. 1319 the :doc:`/sdk-manual/index` manual.
1366 1320
1367All the output files for an SDK are written to the ``deploy/sdk`` folder 1321All the output files for an SDK are written to the ``deploy/sdk`` folder
1368inside the :term:`Build Directory` as 1322inside the :term:`Build Directory` as shown in the previous figure. Depending
1369shown in the previous figure. Depending on the type of SDK, several 1323on the type of SDK, there are several variables to configure these files.
1370variables exist that help configure these files. The following list 1324The variables associated with an extensible SDK are:
1371shows the variables associated with an extensible SDK:
1372 1325
1373- :term:`DEPLOY_DIR`: Points to 1326- :term:`DEPLOY_DIR`: Points to
1374 the ``deploy`` directory. 1327 the ``deploy`` directory.
@@ -1386,15 +1339,15 @@ shows the variables associated with an extensible SDK:
1386 Specifies whether or not the toolchain is included when building the 1339 Specifies whether or not the toolchain is included when building the
1387 extensible SDK. 1340 extensible SDK.
1388 1341
1389- :term:`SDK_LOCAL_CONF_WHITELIST`: 1342- :term:`ESDK_LOCALCONF_ALLOW`:
1390 A list of variables allowed through from the build system 1343 A list of variables allowed through from the build system
1391 configuration into the extensible SDK configuration. 1344 configuration into the extensible SDK configuration.
1392 1345
1393- :term:`SDK_LOCAL_CONF_BLACKLIST`: 1346- :term:`ESDK_LOCALCONF_REMOVE`:
1394 A list of variables not allowed through from the build system 1347 A list of variables not allowed through from the build system
1395 configuration into the extensible SDK configuration. 1348 configuration into the extensible SDK configuration.
1396 1349
1397- :term:`SDK_INHERIT_BLACKLIST`: 1350- :term:`ESDK_CLASS_INHERIT_DISABLE`:
1398 A list of classes to remove from the 1351 A list of classes to remove from the
1399 :term:`INHERIT` value globally 1352 :term:`INHERIT` value globally
1400 within the extensible SDK configuration. 1353 within the extensible SDK configuration.
@@ -1413,7 +1366,7 @@ This next list, shows the variables associated with a standard SDK:
1413 1366
1414- :term:`TOOLCHAIN_HOST_TASK`: 1367- :term:`TOOLCHAIN_HOST_TASK`:
1415 Lists packages that make up the host part of the SDK (i.e. the part 1368 Lists packages that make up the host part of the SDK (i.e. the part
1416 that runs on the ``SDKMACHINE``). When you use 1369 that runs on the :term:`SDKMACHINE`). When you use
1417 ``bitbake -c populate_sdk imagename`` to create the SDK, a set of 1370 ``bitbake -c populate_sdk imagename`` to create the SDK, a set of
1418 default packages apply. This variable allows you to add more 1371 default packages apply. This variable allows you to add more
1419 packages. 1372 packages.
@@ -1422,7 +1375,7 @@ This next list, shows the variables associated with a standard SDK:
1422 Lists packages that make up the target part of the SDK (i.e. the part 1375 Lists packages that make up the target part of the SDK (i.e. the part
1423 built for the target hardware). 1376 built for the target hardware).
1424 1377
1425- :term:`SDKPATH`: Defines the 1378- :term:`SDKPATHINSTALL`: Defines the
1426 default SDK installation path offered by the installation script. 1379 default SDK installation path offered by the installation script.
1427 1380
1428- :term:`SDK_HOST_MANIFEST`: 1381- :term:`SDK_HOST_MANIFEST`:
@@ -1453,10 +1406,10 @@ The following figure shows a high-level build environment regarding
1453toolchain construction and use. 1406toolchain construction and use.
1454 1407
1455.. image:: figures/cross-development-toolchains.png 1408.. image:: figures/cross-development-toolchains.png
1456 :align: center 1409 :width: 100%
1457 1410
1458Most of the work occurs on the Build Host. This is the machine used to 1411Most of the work occurs on the Build Host. This is the machine used to
1459build images and generally work within the the Yocto Project 1412build images and generally work within the Yocto Project
1460environment. When you run 1413environment. When you run
1461:term:`BitBake` to create an image, the 1414:term:`BitBake` to create an image, the
1462OpenEmbedded build system uses the host ``gcc`` compiler to bootstrap a 1415OpenEmbedded build system uses the host ``gcc`` compiler to bootstrap a
@@ -1467,15 +1420,11 @@ cross-compiler that is used internally within BitBake only.
1467 1420
1468.. note:: 1421.. note::
1469 1422
1470 The extensible SDK does not use 1423 The extensible SDK does not use ``gcc-cross-canadian``
1471 gcc-cross-canadian
1472 since this SDK ships a copy of the OpenEmbedded build system and the 1424 since this SDK ships a copy of the OpenEmbedded build system and the
1473 sysroot within it contains 1425 sysroot within it contains ``gcc-cross``.
1474 gcc-cross
1475 .
1476 1426
1477The chain of events that occurs when the standard toolchain is bootstrapped: 1427The chain of events that occurs when the standard toolchain is bootstrapped::
1478::
1479 1428
1480 binutils-cross -> linux-libc-headers -> gcc-cross -> libgcc-initial -> glibc -> libgcc -> gcc-runtime 1429 binutils-cross -> linux-libc-headers -> gcc-cross -> libgcc-initial -> glibc -> libgcc -> gcc-runtime
1481 1430
@@ -1511,12 +1460,11 @@ relocatable SDK used to develop applications. When you run the
1511installer, it installs the toolchain, which contains the development 1460installer, it installs the toolchain, which contains the development
1512tools (e.g., ``gcc-cross-canadian``, ``binutils-cross-canadian``, and 1461tools (e.g., ``gcc-cross-canadian``, ``binutils-cross-canadian``, and
1513other ``nativesdk-*`` tools), which are tools native to the SDK (i.e. 1462other ``nativesdk-*`` tools), which are tools native to the SDK (i.e.
1514native to :term:`SDK_ARCH`), you 1463native to :term:`SDK_ARCH`), you need to cross-compile and test your
1515need to cross-compile and test your software. The figure shows the 1464software. The figure shows the commands you use to easily build out
1516commands you use to easily build out this toolchain. This 1465this toolchain. This cross-development toolchain is built to execute on the
1517cross-development toolchain is built to execute on the 1466:term:`SDKMACHINE`, which might or might not be the same machine as
1518:term:`SDKMACHINE`, which might or 1467the Build Host.
1519might not be the same machine as the Build Host.
1520 1468
1521.. note:: 1469.. note::
1522 1470
@@ -1524,8 +1472,7 @@ might not be the same machine as the Build Host.
1524 can take advantage of pre-built images that ship with the Yocto 1472 can take advantage of pre-built images that ship with the Yocto
1525 Project and already contain cross-development toolchain installers. 1473 Project and already contain cross-development toolchain installers.
1526 1474
1527Here is the bootstrap process for the relocatable toolchain: 1475Here is the bootstrap process for the relocatable toolchain::
1528::
1529 1476
1530 gcc -> binutils-crosssdk -> gcc-crosssdk-initial -> linux-libc-headers -> glibc-initial -> nativesdk-glibc -> gcc-crosssdk -> gcc-cross-canadian 1477 gcc -> binutils-crosssdk -> gcc-crosssdk-initial -> linux-libc-headers -> glibc-initial -> nativesdk-glibc -> gcc-crosssdk -> gcc-cross-canadian
1531 1478
@@ -1579,10 +1526,10 @@ Shared State Cache
1579By design, the OpenEmbedded build system builds everything from scratch 1526By design, the OpenEmbedded build system builds everything from scratch
1580unless :term:`BitBake` can determine 1527unless :term:`BitBake` can determine
1581that parts do not need to be rebuilt. Fundamentally, building from 1528that parts do not need to be rebuilt. Fundamentally, building from
1582scratch is attractive as it means all parts are built fresh and no 1529scratch is attractive as it means all parts are built fresh and there is
1583possibility of stale data exists that can cause problems. When 1530no possibility of stale data that can cause problems. When
1584developers hit problems, they typically default back to building from 1531developers hit problems, they typically default back to building from
1585scratch so they have a know state from the start. 1532scratch so they have a known state from the start.
1586 1533
1587Building an image from scratch is both an advantage and a disadvantage 1534Building an image from scratch is both an advantage and a disadvantage
1588to the process. As mentioned in the previous paragraph, building from 1535to the process. As mentioned in the previous paragraph, building from
@@ -1619,18 +1566,18 @@ them if they are deemed to be valid.
1619 1566
1620 - The build system does not maintain 1567 - The build system does not maintain
1621 :term:`PR` information as part of 1568 :term:`PR` information as part of
1622 the shared state packages. Consequently, considerations exist that 1569 the shared state packages. Consequently, there are considerations that
1623 affect maintaining shared state feeds. For information on how the 1570 affect maintaining shared state feeds. For information on how the
1624 build system works with packages and can track incrementing ``PR`` 1571 build system works with packages and can track incrementing :term:`PR`
1625 information, see the ":ref:`dev-manual/common-tasks:automatically incrementing a package version number`" 1572 information, see the ":ref:`dev-manual/packages:automatically incrementing a package version number`"
1626 section in the Yocto Project Development Tasks Manual. 1573 section in the Yocto Project Development Tasks Manual.
1627 1574
1628 - The code in the build system that supports incremental builds is 1575 - The code in the build system that supports incremental builds is
1629 not simple code. For techniques that help you work around issues 1576 complex. For techniques that help you work around issues
1630 related to shared state code, see the 1577 related to shared state code, see the
1631 ":ref:`dev-manual/common-tasks:viewing metadata used to create the input signature of a shared state task`" 1578 ":ref:`dev-manual/debugging:viewing metadata used to create the input signature of a shared state task`"
1632 and 1579 and
1633 ":ref:`dev-manual/common-tasks:invalidating shared state to force a task to run`" 1580 ":ref:`dev-manual/debugging:invalidating shared state to force a task to run`"
1634 sections both in the Yocto Project Development Tasks Manual. 1581 sections both in the Yocto Project Development Tasks Manual.
1635 1582
1636The rest of this section goes into detail about the overall incremental 1583The rest of this section goes into detail about the overall incremental
@@ -1667,7 +1614,7 @@ you a good idea of when the task's data changes.
1667 1614
1668To complicate the problem, there are things that should not be included 1615To complicate the problem, there are things that should not be included
1669in the checksum. First, there is the actual specific build path of a 1616in the checksum. First, there is the actual specific build path of a
1670given task - the :term:`WORKDIR`. It 1617given task --- the :term:`WORKDIR`. It
1671does not matter if the work directory changes because it should not 1618does not matter if the work directory changes because it should not
1672affect the output for target packages. Also, the build process has the 1619affect the output for target packages. Also, the build process has the
1673objective of making native or cross packages relocatable. 1620objective of making native or cross packages relocatable.
@@ -1678,8 +1625,8 @@ objective of making native or cross packages relocatable.
1678 build host. However, cross packages generate output for the target 1625 build host. However, cross packages generate output for the target
1679 architecture. 1626 architecture.
1680 1627
1681The checksum therefore needs to exclude ``WORKDIR``. The simplistic 1628The checksum therefore needs to exclude :term:`WORKDIR`. The simplistic
1682approach for excluding the work directory is to set ``WORKDIR`` to some 1629approach for excluding the work directory is to set :term:`WORKDIR` to some
1683fixed value and create the checksum for the "run" script. 1630fixed value and create the checksum for the "run" script.
1684 1631
1685Another problem results from the "run" scripts containing functions that 1632Another problem results from the "run" scripts containing functions that
@@ -1689,7 +1636,7 @@ used to prune the "run" scripts down to the minimum set, thereby
1689alleviating this problem and making the "run" scripts much more readable 1636alleviating this problem and making the "run" scripts much more readable
1690as a bonus. 1637as a bonus.
1691 1638
1692So far, solutions for shell scripts exist. What about Python tasks? The 1639So far, there are solutions for shell scripts. What about Python tasks? The
1693same approach applies even though these tasks are more difficult. The 1640same approach applies even though these tasks are more difficult. The
1694process needs to figure out what variables a Python function accesses 1641process needs to figure out what variables a Python function accesses
1695and what functions it calls. Again, the incremental build solution 1642and what functions it calls. Again, the incremental build solution
@@ -1697,10 +1644,9 @@ contains code that first figures out the variable and function
1697dependencies, and then creates a checksum for the data used as the input 1644dependencies, and then creates a checksum for the data used as the input
1698to the task. 1645to the task.
1699 1646
1700Like the ``WORKDIR`` case, situations exist where dependencies should be 1647Like the :term:`WORKDIR` case, there can be situations where dependencies should be
1701ignored. For these situations, you can instruct the build process to 1648ignored. For these situations, you can instruct the build process to
1702ignore a dependency by using a line like the following: 1649ignore a dependency by using a line like the following::
1703::
1704 1650
1705 PACKAGE_ARCHS[vardepsexclude] = "MACHINE" 1651 PACKAGE_ARCHS[vardepsexclude] = "MACHINE"
1706 1652
@@ -1710,13 +1656,12 @@ reference it.
1710 1656
1711Equally, there are cases where you need to add dependencies BitBake is 1657Equally, there are cases where you need to add dependencies BitBake is
1712not able to find. You can accomplish this by using a line like the 1658not able to find. You can accomplish this by using a line like the
1713following: 1659following::
1714::
1715 1660
1716 PACKAGE_ARCHS[vardeps] = "MACHINE" 1661 PACKAGE_ARCHS[vardeps] = "MACHINE"
1717 1662
1718This example explicitly 1663This example explicitly
1719adds the ``MACHINE`` variable as a dependency for ``PACKAGE_ARCHS``. 1664adds the :term:`MACHINE` variable as a dependency for :term:`PACKAGE_ARCHS`.
1720 1665
1721As an example, consider a case with in-line Python where BitBake is not 1666As an example, consider a case with in-line Python where BitBake is not
1722able to figure out dependencies. When running in debug mode (i.e. using 1667able to figure out dependencies. When running in debug mode (i.e. using
@@ -1728,34 +1673,29 @@ need to fix this situation.
1728Thus far, this section has limited discussion to the direct inputs into 1673Thus far, this section has limited discussion to the direct inputs into
1729a task. Information based on direct inputs is referred to as the 1674a task. Information based on direct inputs is referred to as the
1730"basehash" in the code. However, the question of a task's indirect 1675"basehash" in the code. However, the question of a task's indirect
1731inputs still exits - items already built and present in the 1676inputs still exits --- items already built and present in the
1732:term:`Build Directory`. The checksum (or 1677:term:`Build Directory`. The checksum (or
1733signature) for a particular task needs to add the hashes of all the 1678signature) for a particular task needs to add the hashes of all the
1734tasks on which the particular task depends. Choosing which dependencies 1679tasks on which the particular task depends. Choosing which dependencies
1735to add is a policy decision. However, the effect is to generate a master 1680to add is a policy decision. However, the effect is to generate a
1736checksum that combines the basehash and the hashes of the task's 1681checksum that combines the basehash and the hashes of the task's
1737dependencies. 1682dependencies.
1738 1683
1739At the code level, a variety of ways exist by which both the basehash 1684At the code level, there are multiple ways by which both the basehash
1740and the dependent task hashes can be influenced. Within the BitBake 1685and the dependent task hashes can be influenced. Within the BitBake
1741configuration file, you can give BitBake some extra information to help 1686configuration file, you can give BitBake some extra information to help
1742it construct the basehash. The following statement effectively results 1687it construct the basehash. The following statement effectively results
1743in a list of global variable dependency excludes (i.e. variables never 1688in a list of global variable dependency excludes (i.e. variables never
1744included in any checksum): 1689included in any checksum)::
1745::
1746 1690
1747 BB_HASHBASE_WHITELIST ?= "TMPDIR FILE PATH PWD BB_TASKHASH BBPATH DL_DIR \\ 1691 BB_BASEHASH_IGNORE_VARS ?= "TMPDIR FILE PATH PWD BB_TASKHASH BBPATH DL_DIR \\
1748 SSTATE_DIR THISDIR FILESEXTRAPATHS FILE_DIRNAME HOME LOGNAME SHELL TERM \\ 1692 SSTATE_DIR THISDIR FILESEXTRAPATHS FILE_DIRNAME HOME LOGNAME SHELL TERM \\
1749 USER FILESPATH STAGING_DIR_HOST STAGING_DIR_TARGET COREBASE PRSERV_HOST \\ 1693 USER FILESPATH STAGING_DIR_HOST STAGING_DIR_TARGET COREBASE PRSERV_HOST \\
1750 PRSERV_DUMPDIR PRSERV_DUMPFILE PRSERV_LOCKDOWN PARALLEL_MAKE \\ 1694 PRSERV_DUMPDIR PRSERV_DUMPFILE PRSERV_LOCKDOWN PARALLEL_MAKE \\
1751 CCACHE_DIR EXTERNAL_TOOLCHAIN CCACHE CCACHE_DISABLE LICENSE_PATH SDKPKGSUFFIX" 1695 CCACHE_DIR EXTERNAL_TOOLCHAIN CCACHE CCACHE_DISABLE LICENSE_PATH SDKPKGSUFFIX"
1752 1696
1753The 1697The previous example does not include :term:`WORKDIR` since that variable is
1754previous example excludes 1698actually constructed as a path within :term:`TMPDIR`, which is included above.
1755:term:`WORKDIR` since that variable
1756is actually constructed as a path within
1757:term:`TMPDIR`, which is on the
1758whitelist.
1759 1699
1760The rules for deciding which hashes of dependent tasks to include 1700The rules for deciding which hashes of dependent tasks to include
1761through dependency chains are more complex and are generally 1701through dependency chains are more complex and are generally
@@ -1767,16 +1707,15 @@ desired. This file defines the two basic signature generators
1767"OEBasicHash". By default, a dummy "noop" signature handler is enabled 1707"OEBasicHash". By default, a dummy "noop" signature handler is enabled
1768in BitBake. This means that behavior is unchanged from previous 1708in BitBake. This means that behavior is unchanged from previous
1769versions. OE-Core uses the "OEBasicHash" signature handler by default 1709versions. OE-Core uses the "OEBasicHash" signature handler by default
1770through this setting in the ``bitbake.conf`` file: 1710through this setting in the ``bitbake.conf`` file::
1771::
1772 1711
1773 BB_SIGNATURE_HANDLER ?= "OEBasicHash" 1712 BB_SIGNATURE_HANDLER ?= "OEBasicHash"
1774 1713
1775The "OEBasicHash" ``BB_SIGNATURE_HANDLER`` is the same 1714The "OEBasicHash" :term:`BB_SIGNATURE_HANDLER` is the same
1776as the "OEBasic" version but adds the task hash to the `stamp 1715as the "OEBasic" version but adds the task hash to the :ref:`stamp
1777files <#stamp-files-and-the-rerunning-of-tasks>`__. This results in any 1716files <overview-manual/concepts:stamp files and the rerunning of tasks>`. This
1778metadata change that changes the task hash, automatically causing the 1717results in any metadata change that changes the task hash, automatically causing
1779task to be run again. This removes the need to bump 1718the task to be run again. This removes the need to bump
1780:term:`PR` values, and changes to metadata 1719:term:`PR` values, and changes to metadata
1781automatically ripple across the build. 1720automatically ripple across the build.
1782 1721
@@ -1784,16 +1723,13 @@ It is also worth noting that the end result of these signature
1784generators is to make some dependency and hash information available to 1723generators is to make some dependency and hash information available to
1785the build. This information includes: 1724the build. This information includes:
1786 1725
1787- ``BB_BASEHASH_task-``\ taskname: The base hashes for each task in the 1726- ``BB_BASEHASH:task-``\ taskname: The base hashes for each task in the
1788 recipe. 1727 recipe.
1789 1728
1790- ``BB_BASEHASH_``\ filename\ ``:``\ taskname: The base hashes for each 1729- ``BB_BASEHASH_``\ filename\ ``:``\ taskname: The base hashes for each
1791 dependent task. 1730 dependent task.
1792 1731
1793- ``BBHASHDEPS_``\ filename\ ``:``\ taskname: The task dependencies for 1732- :term:`BB_TASKHASH`: The hash of the currently running task.
1794 each task.
1795
1796- ``BB_TASKHASH``: The hash of the currently running task.
1797 1733
1798Shared State 1734Shared State
1799------------ 1735------------
@@ -1803,12 +1739,11 @@ half the problem of supporting a shared state. The other half of the
1803problem is being able to use checksum information during the build and 1739problem is being able to use checksum information during the build and
1804being able to reuse or rebuild specific components. 1740being able to reuse or rebuild specific components.
1805 1741
1806The :ref:`sstate <ref-classes-sstate>` class is a 1742The :ref:`ref-classes-sstate` class is a relatively generic implementation of
1807relatively generic implementation of how to "capture" a snapshot of a 1743how to "capture" a snapshot of a given task. The idea is that the build process
1808given task. The idea is that the build process does not care about the 1744does not care about the source of a task's output. Output could be freshly
1809source of a task's output. Output could be freshly built or it could be 1745built or it could be downloaded and unpacked from somewhere. In other words,
1810downloaded and unpacked from somewhere. In other words, the build 1746the build process does not need to worry about its origin.
1811process does not need to worry about its origin.
1812 1747
1813Two types of output exist. One type is just about creating a directory 1748Two types of output exist. One type is just about creating a directory
1814in :term:`WORKDIR`. A good example is 1749in :term:`WORKDIR`. A good example is
@@ -1819,11 +1754,9 @@ type of output occurs when a set of data is merged into a shared
1819directory tree such as the sysroot. 1754directory tree such as the sysroot.
1820 1755
1821The Yocto Project team has tried to keep the details of the 1756The Yocto Project team has tried to keep the details of the
1822implementation hidden in ``sstate`` class. From a user's perspective, 1757implementation hidden in the :ref:`ref-classes-sstate` class. From a user's perspective,
1823adding shared state wrapping to a task is as simple as this 1758adding shared state wrapping to a task is as simple as this
1824:ref:`ref-tasks-deploy` example taken 1759:ref:`ref-tasks-deploy` example taken from the :ref:`ref-classes-deploy` class::
1825from the :ref:`deploy <ref-classes-deploy>` class:
1826::
1827 1760
1828 DEPLOYDIR = "${WORKDIR}/deploy-${PN}" 1761 DEPLOYDIR = "${WORKDIR}/deploy-${PN}"
1829 SSTATETASKS += "do_deploy" 1762 SSTATETASKS += "do_deploy"
@@ -1839,14 +1772,12 @@ from the :ref:`deploy <ref-classes-deploy>` class:
1839 1772
1840The following list explains the previous example: 1773The following list explains the previous example:
1841 1774
1842- Adding "do_deploy" to ``SSTATETASKS`` adds some required 1775- Adding ``do_deploy`` to ``SSTATETASKS`` adds some required sstate-related
1843 sstate-related processing, which is implemented in the 1776 processing, which is implemented in the :ref:`ref-classes-sstate` class, to
1844 :ref:`sstate <ref-classes-sstate>` class, to 1777 before and after the :ref:`ref-tasks-deploy` task.
1845 before and after the
1846 :ref:`ref-tasks-deploy` task.
1847 1778
1848- The ``do_deploy[sstate-inputdirs] = "${DEPLOYDIR}"`` declares that 1779- The ``do_deploy[sstate-inputdirs] = "${DEPLOYDIR}"`` declares that
1849 ``do_deploy`` places its output in ``${DEPLOYDIR}`` when run normally 1780 :ref:`ref-tasks-deploy` places its output in ``${DEPLOYDIR}`` when run normally
1850 (i.e. when not using the sstate cache). This output becomes the input 1781 (i.e. when not using the sstate cache). This output becomes the input
1851 to the shared state cache. 1782 to the shared state cache.
1852 1783
@@ -1856,92 +1787,85 @@ The following list explains the previous example:
1856 1787
1857 .. note:: 1788 .. note::
1858 1789
1859 If ``do_deploy`` is not already in the shared state cache or if its input 1790 If :ref:`ref-tasks-deploy` is not already in the shared state cache or if its input
1860 checksum (signature) has changed from when the output was cached, the task 1791 checksum (signature) has changed from when the output was cached, the task
1861 runs to populate the shared state cache, after which the contents of the 1792 runs to populate the shared state cache, after which the contents of the
1862 shared state cache is copied to ${:term:`DEPLOY_DIR_IMAGE`}. If 1793 shared state cache is copied to ${:term:`DEPLOY_DIR_IMAGE`}. If
1863 ``do_deploy`` is in the shared state cache and its signature indicates 1794 :ref:`ref-tasks-deploy` is in the shared state cache and its signature indicates
1864 that the cached output is still valid (i.e. if no relevant task inputs 1795 that the cached output is still valid (i.e. if no relevant task inputs
1865 have changed), then the contents of the shared state cache copies 1796 have changed), then the contents of the shared state cache copies
1866 directly to ${``DEPLOY_DIR_IMAGE``} by the ``do_deploy_setscene`` task 1797 directly to ${:term:`DEPLOY_DIR_IMAGE`} by the ``do_deploy_setscene`` task
1867 instead, skipping the ``do_deploy`` task. 1798 instead, skipping the :ref:`ref-tasks-deploy` task.
1868 1799
1869- The following task definition is glue logic needed to make the 1800- The following task definition is glue logic needed to make the
1870 previous settings effective: 1801 previous settings effective::
1871 ::
1872 1802
1873 python do_deploy_setscene () { 1803 python do_deploy_setscene () {
1874 sstate_setscene(d) 1804 sstate_setscene(d)
1875 } 1805 }
1876 addtask do_deploy_setscene 1806 addtask do_deploy_setscene
1877 1807
1878 ``sstate_setscene()`` takes the flags above as input and accelerates the ``do_deploy`` task 1808 ``sstate_setscene()`` takes the flags above as input and accelerates the
1879 through the shared state cache if possible. If the task was 1809 :ref:`ref-tasks-deploy` task through the shared state cache if possible. If
1880 accelerated, ``sstate_setscene()`` returns True. Otherwise, it 1810 the task was accelerated, ``sstate_setscene()`` returns True. Otherwise, it
1881 returns False, and the normal ``do_deploy`` task runs. For more 1811 returns False, and the normal :ref:`ref-tasks-deploy` task runs. For more
1882 information, see the ":ref:`setscene <bitbake:bitbake-user-manual/bitbake-user-manual-execution:setscene>`" 1812 information, see the ":ref:`bitbake-user-manual/bitbake-user-manual-execution:setscene`"
1883 section in the BitBake User Manual. 1813 section in the BitBake User Manual.
1884 1814
1885- The ``do_deploy[dirs] = "${DEPLOYDIR} ${B}"`` line creates 1815- The ``do_deploy[dirs] = "${DEPLOYDIR} ${B}"`` line creates ``${DEPLOYDIR}``
1886 ``${DEPLOYDIR}`` and ``${B}`` before the ``do_deploy`` task runs, and 1816 and ``${B}`` before the :ref:`ref-tasks-deploy` task runs, and also sets the
1887 also sets the current working directory of ``do_deploy`` to ``${B}``. 1817 current working directory of :ref:`ref-tasks-deploy` to ``${B}``. For more
1888 For more information, see the ":ref:`bitbake:bitbake-user-manual/bitbake-user-manual-metadata:variable flags`" 1818 information, see the ":ref:`bitbake-user-manual/bitbake-user-manual-metadata:variable flags`"
1889 section in the BitBake 1819 section in the BitBake User Manual.
1890 User Manual.
1891 1820
1892 .. note:: 1821 .. note::
1893 1822
1894 In cases where ``sstate-inputdirs`` and ``sstate-outputdirs`` would be 1823 In cases where ``sstate-inputdirs`` and ``sstate-outputdirs`` would be
1895 the same, you can use ``sstate-plaindirs``. For example, to preserve the 1824 the same, you can use ``sstate-plaindirs``. For example, to preserve the
1896 ${:term:`PKGD`} and ${:term:`PKGDEST`} output from the ``do_package`` 1825 ${:term:`PKGD`} and ${:term:`PKGDEST`} output from the :ref:`ref-tasks-package`
1897 task, use the following: 1826 task, use the following::
1898 ::
1899 1827
1900 do_package[sstate-plaindirs] = "${PKGD} ${PKGDEST}" 1828 do_package[sstate-plaindirs] = "${PKGD} ${PKGDEST}"
1901 1829
1902 1830
1903- The ``do_deploy[stamp-extra-info] = "${MACHINE_ARCH}"`` line appends 1831- The ``do_deploy[stamp-extra-info] = "${MACHINE_ARCH}"`` line appends extra
1904 extra metadata to the `stamp 1832 metadata to the :ref:`stamp file <overview-manual/concepts:stamp files and the rerunning of tasks>`.
1905 file <#stamp-files-and-the-rerunning-of-tasks>`__. In this case, the 1833 In this case, the metadata makes the task specific to a machine's architecture.
1906 metadata makes the task specific to a machine's architecture. See 1834 See the ":ref:`bitbake-user-manual/bitbake-user-manual-execution:the task list`"
1907 ":ref:`bitbake:bitbake-user-manual/bitbake-user-manual-execution:the task list`"
1908 section in the BitBake User Manual for more information on the 1835 section in the BitBake User Manual for more information on the
1909 ``stamp-extra-info`` flag. 1836 ``stamp-extra-info`` flag.
1910 1837
1911- ``sstate-inputdirs`` and ``sstate-outputdirs`` can also be used with 1838- ``sstate-inputdirs`` and ``sstate-outputdirs`` can also be used with
1912 multiple directories. For example, the following declares 1839 multiple directories. For example, the following declares
1913 ``PKGDESTWORK`` and ``SHLIBWORK`` as shared state input directories, 1840 :term:`PKGDESTWORK` and ``SHLIBWORK`` as shared state input directories,
1914 which populates the shared state cache, and ``PKGDATA_DIR`` and 1841 which populates the shared state cache, and :term:`PKGDATA_DIR` and
1915 ``SHLIBSDIR`` as the corresponding shared state output directories: 1842 ``SHLIBSDIR`` as the corresponding shared state output directories::
1916 ::
1917 1843
1918 do_package[sstate-inputdirs] = "${PKGDESTWORK} ${SHLIBSWORKDIR}" 1844 do_package[sstate-inputdirs] = "${PKGDESTWORK} ${SHLIBSWORKDIR}"
1919 do_package[sstate-outputdirs] = "${PKGDATA_DIR} ${SHLIBSDIR}" 1845 do_package[sstate-outputdirs] = "${PKGDATA_DIR} ${SHLIBSDIR}"
1920 1846
1921- These methods also include the ability to take a lockfile when 1847- These methods also include the ability to take a lockfile when
1922 manipulating shared state directory structures, for cases where file 1848 manipulating shared state directory structures, for cases where file
1923 additions or removals are sensitive: 1849 additions or removals are sensitive::
1924 ::
1925 1850
1926 do_package[sstate-lockfile] = "${PACKAGELOCK}" 1851 do_package[sstate-lockfile] = "${PACKAGELOCK}"
1927 1852
1928Behind the scenes, the shared state code works by looking in 1853Behind the scenes, the shared state code works by looking in
1929:term:`SSTATE_DIR` and 1854:term:`SSTATE_DIR` and
1930:term:`SSTATE_MIRRORS` for 1855:term:`SSTATE_MIRRORS` for
1931shared state files. Here is an example: 1856shared state files. Here is an example::
1932::
1933 1857
1934 SSTATE_MIRRORS ?= "\ 1858 SSTATE_MIRRORS ?= "\
1935 file://.\* http://someserver.tld/share/sstate/PATH;downloadfilename=PATH \n \ 1859 file://.* https://someserver.tld/share/sstate/PATH;downloadfilename=PATH \
1936 file://.\* file:///some/local/dir/sstate/PATH" 1860 file://.* file:///some/local/dir/sstate/PATH"
1937 1861
1938.. note:: 1862.. note::
1939 1863
1940 The shared state directory (``SSTATE_DIR``) is organized into two-character 1864 The shared state directory (:term:`SSTATE_DIR`) is organized into two-character
1941 subdirectories, where the subdirectory names are based on the first two 1865 subdirectories, where the subdirectory names are based on the first two
1942 characters of the hash. 1866 characters of the hash.
1943 If the shared state directory structure for a mirror has the same structure 1867 If the shared state directory structure for a mirror has the same structure
1944 as ``SSTATE_DIR``, you must specify "PATH" as part of the URI to enable the build 1868 as :term:`SSTATE_DIR`, you must specify "PATH" as part of the URI to enable the build
1945 system to map to the appropriate subdirectory. 1869 system to map to the appropriate subdirectory.
1946 1870
1947The shared state package validity can be detected just by looking at the 1871The shared state package validity can be detected just by looking at the
@@ -1966,14 +1890,155 @@ another reason why a task-based approach is preferred over a
1966recipe-based approach, which would have to install the output from every 1890recipe-based approach, which would have to install the output from every
1967task. 1891task.
1968 1892
1893Hash Equivalence
1894----------------
1895
1896The above section explained how BitBake skips the execution of tasks
1897whose output can already be found in the Shared State cache.
1898
1899During a build, it may often be the case that the output / result of a task might
1900be unchanged despite changes in the task's input values. An example might be
1901whitespace changes in some input C code. In project terms, this is what we define
1902as "equivalence".
1903
1904To keep track of such equivalence, BitBake has to manage three hashes
1905for each task:
1906
1907- The *task hash* explained earlier: computed from the recipe metadata,
1908 the task code and the task hash values from its dependencies.
1909 When changes are made, these task hashes are therefore modified,
1910 causing the task to re-execute. The task hashes of tasks depending on this
1911 task are therefore modified too, causing the whole dependency
1912 chain to re-execute.
1913
1914- The *output hash*, a new hash computed from the output of Shared State tasks,
1915 tasks that save their resulting output to a Shared State tarball.
1916 The mapping between the task hash and its output hash is reported
1917 to a new *Hash Equivalence* server. This mapping is stored in a database
1918 by the server for future reference.
1919
1920- The *unihash*, a new hash, initially set to the task hash for the task.
1921 This is used to track the *unicity* of task output, and we will explain
1922 how its value is maintained.
1923
1924When Hash Equivalence is enabled, BitBake computes the task hash
1925for each task by using the unihash of its dependencies, instead
1926of their task hash.
1927
1928Now, imagine that a Shared State task is modified because of a change in
1929its code or metadata, or because of a change in its dependencies.
1930Since this modifies its task hash, this task will need re-executing.
1931Its output hash will therefore be computed again.
1932
1933Then, the new mapping between the new task hash and its output hash
1934will be reported to the Hash Equivalence server. The server will
1935let BitBake know whether this output hash is the same as a previously
1936reported output hash, for a different task hash.
1937
1938If the output hash is already known, BitBake will update the task's
1939unihash to match the original task hash that generated that output.
1940Thanks to this, the depending tasks will keep a previously recorded
1941task hash, and BitBake will be able to retrieve their output from
1942the Shared State cache, instead of re-executing them. Similarly, the
1943output of further downstream tasks can also be retrieved from Shared
1944State.
1945
1946If the output hash is unknown, a new entry will be created on the Hash
1947Equivalence server, matching the task hash to that output.
1948The depending tasks, still having a new task hash because of the
1949change, will need to re-execute as expected. The change propagates
1950to the depending tasks.
1951
1952To summarize, when Hash Equivalence is enabled, a change in one of the
1953tasks in BitBake's run queue doesn't have to propagate to all the
1954downstream tasks that depend on the output of this task, causing a
1955full rebuild of such tasks, and so on with the next depending tasks.
1956Instead, when the output of this task remains identical to previously
1957recorded output, BitBake can safely retrieve all the downstream
1958task output from the Shared State cache.
1959
1960.. note::
1961
1962 Having :doc:`/test-manual/reproducible-builds` is a key ingredient for
1963 the stability of the task's output hash. Therefore, the effectiveness
1964 of Hash Equivalence strongly depends on it.
1965
1966 Recipes that are not reproducible may have undesired behavior if hash
1967 equivalence is enabled, since the non-reproducible diverging output maybe be
1968 remapped to an older sstate object in the cache by the server. If a recipe
1969 is non-reproducible in trivial ways, such as different timestamps, this is
1970 likely not a problem. However recipes that have more dramatic changes (such
1971 as completely different file names) will likely outright fail since the
1972 downstream sstate objects are not actually equivalent to what was just
1973 built.
1974
1975This applies to multiple scenarios:
1976
1977- A "trivial" change to a recipe that doesn't impact its generated output,
1978 such as whitespace changes, modifications to unused code paths or
1979 in the ordering of variables.
1980
1981- Shared library updates, for example to fix a security vulnerability.
1982 For sure, the programs using such a library should be rebuilt, but
1983 their new binaries should remain identical. The corresponding tasks should
1984 have a different output hash because of the change in the hash of their
1985 library dependency, but thanks to their output being identical, Hash
1986 Equivalence will stop the propagation down the dependency chain.
1987
1988- Native tool updates. Though the depending tasks should be rebuilt,
1989 it's likely that they will generate the same output and be marked
1990 as equivalent.
1991
1992This mechanism is enabled by default in Poky, and is controlled by three
1993variables:
1994
1995- :term:`bitbake:BB_HASHSERVE`, specifying a local or remote Hash
1996 Equivalence server to use.
1997
1998- :term:`BB_HASHSERVE_UPSTREAM`, when ``BB_HASHSERVE = "auto"``,
1999 allowing to connect the local server to an upstream one.
2000
2001- :term:`bitbake:BB_SIGNATURE_HANDLER`, which must be set to ``OEEquivHash``.
2002
2003Therefore, the default configuration in Poky corresponds to the
2004below settings::
2005
2006 BB_HASHSERVE = "auto"
2007 BB_SIGNATURE_HANDLER = "OEEquivHash"
2008
2009Rather than starting a local server, another possibility is to rely
2010on a Hash Equivalence server on a network, by setting::
2011
2012 BB_HASHSERVE = "<HOSTNAME>:<PORT>"
2013
2014.. note::
2015
2016 The shared Hash Equivalence server needs to be maintained together with the
2017 Shared State cache. Otherwise, the server could report Shared State hashes
2018 that only exist on specific clients.
2019
2020 We therefore recommend that one Hash Equivalence server be set up to
2021 correspond with a given Shared State cache, and to start this server
2022 in *read-only mode*, so that it doesn't store equivalences for
2023 Shared State caches that are local to clients.
2024
2025 See the :term:`BB_HASHSERVE` reference for details about starting
2026 a Hash Equivalence server.
2027
2028See the `video <https://www.youtube.com/watch?v=zXEdqGS62Wc>`__
2029of Joshua Watt's `Hash Equivalence and Reproducible Builds
2030<https://elinux.org/images/3/37/Hash_Equivalence_and_Reproducible_Builds.pdf>`__
2031presentation at ELC 2020 for a very synthetic introduction to the
2032Hash Equivalence implementation in the Yocto Project.
2033
1969Automatically Added Runtime Dependencies 2034Automatically Added Runtime Dependencies
1970======================================== 2035========================================
1971 2036
1972The OpenEmbedded build system automatically adds common types of runtime 2037The OpenEmbedded build system automatically adds common types of runtime
1973dependencies between packages, which means that you do not need to 2038dependencies between packages, which means that you do not need to
1974explicitly declare the packages using 2039explicitly declare the packages using
1975:term:`RDEPENDS`. Three automatic 2040:term:`RDEPENDS`. There are three automatic
1976mechanisms exist (``shlibdeps``, ``pcdeps``, and ``depchains``) that 2041mechanisms (``shlibdeps``, ``pcdeps``, and ``depchains``) that
1977handle shared libraries, package configuration (pkg-config) modules, and 2042handle shared libraries, package configuration (pkg-config) modules, and
1978``-dev`` and ``-dbg`` packages, respectively. For other types of runtime 2043``-dev`` and ``-dbg`` packages, respectively. For other types of runtime
1979dependencies, you must manually declare the dependencies. 2044dependencies, you must manually declare the dependencies.
@@ -1984,7 +2049,7 @@ dependencies, you must manually declare the dependencies.
1984 located. For each shared library, the package that contains the 2049 located. For each shared library, the package that contains the
1985 shared library is registered as providing the shared library. More 2050 shared library is registered as providing the shared library. More
1986 specifically, the package is registered as providing the 2051 specifically, the package is registered as providing the
1987 `soname <https://en.wikipedia.org/wiki/Soname>`__ of the library. The 2052 :wikipedia:`soname <Soname>` of the library. The
1988 resulting shared-library-to-package mapping is saved globally in 2053 resulting shared-library-to-package mapping is saved globally in
1989 :term:`PKGDATA_DIR` by the 2054 :term:`PKGDATA_DIR` by the
1990 :ref:`ref-tasks-packagedata` 2055 :ref:`ref-tasks-packagedata`
@@ -1992,7 +2057,7 @@ dependencies, you must manually declare the dependencies.
1992 2057
1993 Simultaneously, all executables and shared libraries installed by the 2058 Simultaneously, all executables and shared libraries installed by the
1994 recipe are inspected to see what shared libraries they link against. 2059 recipe are inspected to see what shared libraries they link against.
1995 For each shared library dependency that is found, ``PKGDATA_DIR`` is 2060 For each shared library dependency that is found, :term:`PKGDATA_DIR` is
1996 queried to see if some package (likely from a different recipe) 2061 queried to see if some package (likely from a different recipe)
1997 contains the shared library. If such a package is found, a runtime 2062 contains the shared library. If such a package is found, a runtime
1998 dependency is added from the package that depends on the shared 2063 dependency is added from the package that depends on the shared
@@ -2001,7 +2066,7 @@ dependencies, you must manually declare the dependencies.
2001 The automatically added runtime dependency also includes a version 2066 The automatically added runtime dependency also includes a version
2002 restriction. This version restriction specifies that at least the 2067 restriction. This version restriction specifies that at least the
2003 current version of the package that provides the shared library must 2068 current version of the package that provides the shared library must
2004 be used, as if "package (>= version)" had been added to ``RDEPENDS``. 2069 be used, as if "package (>= version)" had been added to :term:`RDEPENDS`.
2005 This forces an upgrade of the package containing the shared library 2070 This forces an upgrade of the package containing the shared library
2006 when installing the package that depends on the library, if needed. 2071 when installing the package that depends on the library, if needed.
2007 2072
@@ -2011,18 +2076,18 @@ dependencies, you must manually declare the dependencies.
2011 :term:`PRIVATE_LIBS` inside 2076 :term:`PRIVATE_LIBS` inside
2012 the package's recipe. 2077 the package's recipe.
2013 2078
2014- ``pcdeps``: During the ``do_package`` task of each recipe, all 2079- ``pcdeps``: During the :ref:`ref-tasks-package` task of each recipe, all
2015 pkg-config modules (``*.pc`` files) installed by the recipe are 2080 pkg-config modules (``*.pc`` files) installed by the recipe are
2016 located. For each module, the package that contains the module is 2081 located. For each module, the package that contains the module is
2017 registered as providing the module. The resulting module-to-package 2082 registered as providing the module. The resulting module-to-package
2018 mapping is saved globally in ``PKGDATA_DIR`` by the 2083 mapping is saved globally in :term:`PKGDATA_DIR` by the
2019 ``do_packagedata`` task. 2084 :ref:`ref-tasks-packagedata` task.
2020 2085
2021 Simultaneously, all pkg-config modules installed by the recipe are 2086 Simultaneously, all pkg-config modules installed by the recipe are
2022 inspected to see what other pkg-config modules they depend on. A 2087 inspected to see what other pkg-config modules they depend on. A
2023 module is seen as depending on another module if it contains a 2088 module is seen as depending on another module if it contains a
2024 "Requires:" line that specifies the other module. For each module 2089 "Requires:" line that specifies the other module. For each module
2025 dependency, ``PKGDATA_DIR`` is queried to see if some package 2090 dependency, :term:`PKGDATA_DIR` is queried to see if some package
2026 contains the module. If such a package is found, a runtime dependency 2091 contains the module. If such a package is found, a runtime dependency
2027 is added from the package that depends on the module to the package 2092 is added from the package that depends on the module to the package
2028 that contains the module. 2093 that contains the module.
@@ -2047,9 +2112,9 @@ dependencies, you must manually declare the dependencies.
2047 2112
2048 .. note:: 2113 .. note::
2049 2114
2050 By default, ``foo-dev`` also has an ``RDEPENDS``-style dependency on 2115 By default, ``foo-dev`` also has an :term:`RDEPENDS`-style dependency on
2051 ``foo``, because the default value of ``RDEPENDS_${PN}-dev`` (set in 2116 ``foo``, because the default value of ``RDEPENDS:${PN}-dev`` (set in
2052 bitbake.conf) includes "${PN}". 2117 ``bitbake.conf``) includes "${PN}".
2053 2118
2054 To ensure that the dependency chain is never broken, ``-dev`` and 2119 To ensure that the dependency chain is never broken, ``-dev`` and
2055 ``-dbg`` packages are always generated by default, even if the 2120 ``-dbg`` packages are always generated by default, even if the
@@ -2057,12 +2122,12 @@ dependencies, you must manually declare the dependencies.
2057 :term:`ALLOW_EMPTY` variable 2122 :term:`ALLOW_EMPTY` variable
2058 for more information. 2123 for more information.
2059 2124
2060The ``do_package`` task depends on the ``do_packagedata`` task of each 2125The :ref:`ref-tasks-package` task depends on the :ref:`ref-tasks-packagedata`
2061recipe in :term:`DEPENDS` through use 2126task of each recipe in :term:`DEPENDS` through use of a
2062of a ``[``\ :ref:`deptask <bitbake:bitbake-user-manual/bitbake-user-manual-metadata:variable flags>`\ ``]`` 2127``[``\ :ref:`deptask <bitbake-user-manual/bitbake-user-manual-metadata:variable flags>`\ ``]``
2063declaration, which guarantees that the required 2128declaration, which guarantees that the required shared-library /
2064shared-library/module-to-package mapping information will be available 2129module-to-package mapping information will be available when needed as long as
2065when needed as long as ``DEPENDS`` has been correctly set. 2130:term:`DEPENDS` has been correctly set.
2066 2131
2067Fakeroot and Pseudo 2132Fakeroot and Pseudo
2068=================== 2133===================
@@ -2072,8 +2137,8 @@ operations that are normally reserved for the root user (e.g.
2072:ref:`ref-tasks-install`, 2137:ref:`ref-tasks-install`,
2073:ref:`do_package_write* <ref-tasks-package_write_deb>`, 2138:ref:`do_package_write* <ref-tasks-package_write_deb>`,
2074:ref:`ref-tasks-rootfs`, and 2139:ref:`ref-tasks-rootfs`, and
2075:ref:`do_image* <ref-tasks-image>`). For example, 2140:ref:`do_image_* <ref-tasks-image>`). For example,
2076the ``do_install`` task benefits from being able to set the UID and GID 2141the :ref:`ref-tasks-install` task benefits from being able to set the UID and GID
2077of installed files to arbitrary values. 2142of installed files to arbitrary values.
2078 2143
2079One approach to allowing tasks to perform root-only operations would be 2144One approach to allowing tasks to perform root-only operations would be
@@ -2111,9 +2176,7 @@ accomplished using fakeroot.
2111 under fakeroot. Otherwise, the task cannot run root-only operations, 2176 under fakeroot. Otherwise, the task cannot run root-only operations,
2112 and cannot see the fake file ownership and permissions set by the 2177 and cannot see the fake file ownership and permissions set by the
2113 other task. You need to also add a dependency on 2178 other task. You need to also add a dependency on
2114 virtual/fakeroot-native:do_populate_sysroot 2179 ``virtual/fakeroot-native:do_populate_sysroot``, giving the following::
2115 , giving the following:
2116 ::
2117 2180
2118 fakeroot do_mytask () { 2181 fakeroot do_mytask () {
2119 ... 2182 ...
@@ -2126,3 +2189,173 @@ For more information, see the
2126BitBake User Manual. You can also reference the "`Why Not 2189BitBake User Manual. You can also reference the "`Why Not
2127Fakeroot? <https://github.com/wrpseudo/pseudo/wiki/WhyNotFakeroot>`__" 2190Fakeroot? <https://github.com/wrpseudo/pseudo/wiki/WhyNotFakeroot>`__"
2128article for background information on Fakeroot and Pseudo. 2191article for background information on Fakeroot and Pseudo.
2192
2193BitBake Tasks Map
2194=================
2195
2196To understand how BitBake operates in the build directory and environment
2197we can consider the following recipes and diagram, to have full picture
2198about the tasks that BitBake runs to generate the final package file
2199for the recipe.
2200
2201We will have two recipes as an example:
2202
2203- ``libhello``: A recipe that provides a shared library
2204- ``sayhello``: A recipe that uses ``libhello`` library to do its job
2205
2206.. note::
2207
2208 ``sayhello`` depends on ``libhello`` at compile time as it needs the shared
2209 library to do the dynamic linking process. It also depends on it at runtime
2210 as the shared library loader needs to find the library.
2211 For more details about dependencies check :ref:`ref-varlocality-recipe-dependencies`.
2212
2213``libhello`` sources are as follows:
2214
2215- ``LICENSE``: This is the license associated with this library
2216- ``Makefile``: The file used by ``make`` to build the library
2217- ``hellolib.c``: The implementation of the library
2218- ``hellolib.h``: The C header of the library
2219
2220``sayhello`` sources are as follows:
2221
2222- ``LICENSE``: This is the license associated with this project
2223- ``Makefile``: The file used by ``make`` to build the project
2224- ``sayhello.c``: The source file of the project
2225
2226Before presenting the contents of each file, here are the steps
2227that we need to follow to accomplish what we want in the first place,
2228which is integrating ``sayhello`` in our root file system:
2229
2230#. Create a Git repository for each project with the corresponding files
2231
2232#. Create a recipe for each project
2233
2234#. Make sure that ``sayhello`` recipe :term:`DEPENDS` on ``libhello``
2235
2236#. Make sure that ``sayhello`` recipe :term:`RDEPENDS` on ``libhello``
2237
2238#. Add ``sayhello`` to :term:`IMAGE_INSTALL` to integrate it into
2239 the root file system
2240
2241The contents of ``libhello/Makefile`` are::
2242
2243 LIB=libhello.so
2244
2245 all: $(LIB)
2246
2247 $(LIB): hellolib.o
2248 $(CC) $< -Wl,-soname,$(LIB).1 -fPIC $(LDFLAGS) -shared -o $(LIB).1.0
2249
2250 %.o: %.c
2251 $(CC) -c $<
2252
2253 clean:
2254 rm -rf *.o *.so*
2255
2256.. note::
2257
2258 When creating shared libraries, it is strongly recommended to follow the Linux
2259 conventions and guidelines (see `this article
2260 <https://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html>`__
2261 for some background).
2262
2263.. note::
2264
2265 When creating ``Makefile`` files, it is strongly recommended to use ``CC``, ``LDFLAGS``
2266 and ``CFLAGS`` as BitBake will set them as environment variables according
2267 to your build configuration.
2268
2269The contents of ``libhello/hellolib.h`` are::
2270
2271 #ifndef HELLOLIB_H
2272 #define HELLOLIB_H
2273
2274 void Hello();
2275
2276 #endif
2277
2278The contents of ``libhello/hellolib.c`` are::
2279
2280 #include <stdio.h>
2281
2282 void Hello(){
2283 puts("Hello from a Yocto demo \n");
2284 }
2285
2286The contents of ``sayhello/Makefile`` are::
2287
2288 EXEC=sayhello
2289 LDFLAGS += -lhello
2290
2291 all: $(EXEC)
2292
2293 $(EXEC): sayhello.c
2294 $(CC) $< $(LDFLAGS) $(CFLAGS) -o $(EXEC)
2295
2296 clean:
2297 rm -rf $(EXEC) *.o
2298
2299The contents of ``sayhello/sayhello.c`` are::
2300
2301 #include <hellolib.h>
2302
2303 int main(){
2304 Hello();
2305 return 0;
2306 }
2307
2308The contents of ``libhello_0.1.bb`` are::
2309
2310 SUMMARY = "Hello demo library"
2311 DESCRIPTION = "Hello shared library used in Yocto demo"
2312
2313 # NOTE: Set the License according to the LICENSE file of your project
2314 # and then add LIC_FILES_CHKSUM accordingly
2315 LICENSE = "CLOSED"
2316
2317 # Assuming the branch is main
2318 # Change <username> accordingly
2319 SRC_URI = "git://github.com/<username>/libhello;branch=main;protocol=https"
2320
2321 S = "${WORKDIR}/git"
2322
2323 do_install(){
2324 install -d ${D}${includedir}
2325 install -d ${D}${libdir}
2326
2327 install hellolib.h ${D}${includedir}
2328 oe_soinstall ${PN}.so.${PV} ${D}${libdir}
2329 }
2330
2331The contents of ``sayhello_0.1.bb`` are::
2332
2333 SUMMARY = "SayHello demo"
2334 DESCRIPTION = "SayHello project used in Yocto demo"
2335
2336 # NOTE: Set the License according to the LICENSE file of your project
2337 # and then add LIC_FILES_CHKSUM accordingly
2338 LICENSE = "CLOSED"
2339
2340 # Assuming the branch is main
2341 # Change <username> accordingly
2342 SRC_URI = "git://github.com/<username>/sayhello;branch=main;protocol=https"
2343
2344 DEPENDS += "libhello"
2345 RDEPENDS:${PN} += "libhello"
2346
2347 S = "${WORKDIR}/git"
2348
2349 do_install(){
2350 install -d ${D}/usr/bin
2351 install -m 0700 sayhello ${D}/usr/bin
2352 }
2353
2354After placing the recipes in a custom layer we can run ``bitbake sayhello``
2355to build the recipe.
2356
2357The following diagram shows the sequences of tasks that BitBake
2358executes to accomplish that.
2359
2360.. image:: svg/bitbake_tasks_map.*
2361 :width: 100%
diff --git a/documentation/overview-manual/development-environment.rst b/documentation/overview-manual/development-environment.rst
index 011a479578..d79173ff55 100644
--- a/documentation/overview-manual/development-environment.rst
+++ b/documentation/overview-manual/development-environment.rst
@@ -39,10 +39,9 @@ Linus Torvalds in 1991. Conversely, a good example of a non-open source
39project is the Windows family of operating systems developed by 39project is the Windows family of operating systems developed by
40Microsoft Corporation. 40Microsoft Corporation.
41 41
42Wikipedia has a good historical description of the Open Source 42Wikipedia has a good :wikipedia:`historical description of the Open Source
43Philosophy `here <https://en.wikipedia.org/wiki/Open_source>`__. You can 43Philosophy <Open_source>`. You can also find helpful information on how
44also find helpful information on how to participate in the Linux 44to participate in the Linux Community
45Community
46`here <https://www.kernel.org/doc/html/latest/process/index.html>`__. 45`here <https://www.kernel.org/doc/html/latest/process/index.html>`__.
47 46
48The Development Host 47The Development Host
@@ -52,7 +51,7 @@ A development host or :term:`Build Host` is key to
52using the Yocto Project. Because the goal of the Yocto Project is to 51using the Yocto Project. Because the goal of the Yocto Project is to
53develop images or applications that run on embedded hardware, 52develop images or applications that run on embedded hardware,
54development of those images and applications generally takes place on a 53development of those images and applications generally takes place on a
55system not intended to run the software - the development host. 54system not intended to run the software --- the development host.
56 55
57You need to set up a development host in order to use it with the Yocto 56You need to set up a development host in order to use it with the Yocto
58Project. Most find that it is best to have a native Linux machine 57Project. Most find that it is best to have a native Linux machine
@@ -71,7 +70,7 @@ section in
71the Yocto Project Development Tasks Manual. 70the Yocto Project Development Tasks Manual.
72 71
73If your development host is going to be a system that runs a Linux 72If your development host is going to be a system that runs a Linux
74distribution, steps still exist that you must take to prepare the system 73distribution, you must still take steps to prepare the system
75for use with the Yocto Project. You need to be sure that the Linux 74for use with the Yocto Project. You need to be sure that the Linux
76distribution on the system is one that supports the Yocto Project. You 75distribution on the system is one that supports the Yocto Project. You
77also need to be sure that the correct set of host packages are installed 76also need to be sure that the correct set of host packages are installed
@@ -80,8 +79,8 @@ set up a development host that runs Linux, see the
80":ref:`dev-manual/start:setting up a native linux host`" 79":ref:`dev-manual/start:setting up a native linux host`"
81section in the Yocto Project Development Tasks Manual. 80section in the Yocto Project Development Tasks Manual.
82 81
83Once your development host is set up to use the Yocto Project, several 82Once your development host is set up to use the Yocto Project, there
84methods exist for you to do work in the Yocto Project environment: 83are several ways of working in the Yocto Project environment:
85 84
86- *Command Lines, BitBake, and Shells:* Traditional development in the 85- *Command Lines, BitBake, and Shells:* Traditional development in the
87 Yocto Project involves using the :term:`OpenEmbedded Build System`, 86 Yocto Project involves using the :term:`OpenEmbedded Build System`,
@@ -94,7 +93,7 @@ methods exist for you to do work in the Yocto Project environment:
94 through your Linux distribution and the Yocto Project. 93 through your Linux distribution and the Yocto Project.
95 94
96 For a general flow of the build procedures, see the 95 For a general flow of the build procedures, see the
97 ":ref:`dev-manual/common-tasks:building a simple image`" 96 ":ref:`dev-manual/building:building a simple image`"
98 section in the Yocto Project Development Tasks Manual. 97 section in the Yocto Project Development Tasks Manual.
99 98
100- *Board Support Package (BSP) Development:* Development of BSPs 99- *Board Support Package (BSP) Development:* Development of BSPs
@@ -132,6 +131,14 @@ methods exist for you to do work in the Yocto Project environment:
132 Toaster and on how to use Toaster in general, see the 131 Toaster and on how to use Toaster in general, see the
133 :doc:`/toaster-manual/index`. 132 :doc:`/toaster-manual/index`.
134 133
134- *Using the VSCode Extension:* You can use the `Yocto Project BitBake
135 <https://marketplace.visualstudio.com/items?itemName=yocto-project.yocto-bitbake>`__
136 extension for Visual Studio Code to start your BitBake builds through a
137 graphical user interface.
138
139 Learn more about the VSCode Extension on the `extension's marketplace page
140 <https://marketplace.visualstudio.com/items?itemName=yocto-project.yocto-bitbake>`__.
141
135Yocto Project Source Repositories 142Yocto Project Source Repositories
136================================= 143=================================
137 144
@@ -157,54 +164,44 @@ these tarballs gives you a snapshot of the released files.
157 164
158 - The recommended method for setting up the Yocto Project 165 - The recommended method for setting up the Yocto Project
159 :term:`Source Directory` and the files 166 :term:`Source Directory` and the files
160 for supported BSPs (e.g., ``meta-intel``) is to use `Git <#git>`__ 167 for supported BSPs (e.g., ``meta-intel``) is to use
168 :ref:`overview-manual/development-environment:git`
161 to create a local copy of the upstream repositories. 169 to create a local copy of the upstream repositories.
162 170
163 - Be sure to always work in matching branches for both the selected 171 - Be sure to always work in matching branches for both the selected
164 BSP repository and the Source Directory (i.e. ``poky``) 172 BSP repository and the Source Directory (i.e. ``poky``)
165 repository. For example, if you have checked out the "master" 173 repository. For example, if you have checked out the "&DISTRO_NAME_NO_CAP;"
166 branch of ``poky`` and you are going to use ``meta-intel``, be 174 branch of ``poky`` and you are going to use ``meta-intel``, be
167 sure to checkout the "master" branch of ``meta-intel``. 175 sure to checkout the "&DISTRO_NAME_NO_CAP;" branch of ``meta-intel``.
168 176
169In summary, here is where you can get the project files needed for 177In summary, here is where you can get the project files needed for
170development: 178development:
171 179
172- :yocto_git:`Source Repositories: <>` This area contains IDE 180- :yocto_git:`Source Repositories: <>` This area contains Poky, Yocto
173 Plugins, Matchbox, Poky, Poky Support, Tools, Yocto Linux Kernel, and 181 documentation, metadata layers, and Linux kernel. You can create local
174 Yocto Metadata Layers. You can create local copies of Git 182 copies of Git repositories for each of these areas.
175 repositories for each of these areas.
176 183
177 .. image:: figures/source-repos.png 184 .. image:: figures/source-repos.png
178 :align: center 185 :width: 100%
179 186
180 For steps on how to view and access these upstream Git repositories, 187 For steps on how to view and access these upstream Git repositories,
181 see the ":ref:`dev-manual/start:accessing source repositories`" 188 see the ":ref:`dev-manual/start:accessing source repositories`"
182 Section in the Yocto Project Development Tasks Manual. 189 Section in the Yocto Project Development Tasks Manual.
183 190
184- :yocto_dl:`Index of /releases: </releases>` This is an index 191- :yocto_dl:`Yocto release archives: </releases/yocto>` This is where you can
185 of releases such as Poky, Pseudo, installers for cross-development 192 download tarballs corresponding to each Yocto Project release. Downloading
186 toolchains, miscellaneous support and all released versions of Yocto 193 and extracting these files does not produce a local copy of a Git repository
187 Project in the form of images or tarballs. Downloading and extracting 194 but rather a snapshot corresponding to a particular release.
188 these files does not produce a local copy of the Git repository but
189 rather a snapshot of a particular release or image.
190
191 .. image:: figures/index-downloads.png
192 :align: center
193
194 For steps on how to view and access these files, see the
195 ":ref:`dev-manual/start:accessing index of releases`"
196 section in the Yocto Project Development Tasks Manual.
197
198- *"DOWNLOADS" page for the* :yocto_home:`Yocto Project Website <>` *:*
199 195
200 The Yocto Project website includes a "DOWNLOADS" page accessible 196- :yocto_home:`DOWNLOADS page </software-overview/downloads/>`:
197 The :yocto_home:`Yocto Project website <>` includes a "DOWNLOADS" page accessible
201 through the "SOFTWARE" menu that allows you to download any Yocto 198 through the "SOFTWARE" menu that allows you to download any Yocto
202 Project release, tool, and Board Support Package (BSP) in tarball 199 Project release, tool, and Board Support Package (BSP) in tarball
203 form. The tarballs are similar to those found in the 200 form. The hyperlinks point to the tarballs under
204 :yocto_dl:`Index of /releases: </releases>` area. 201 :yocto_dl:`/releases/yocto/`.
205 202
206 .. image:: figures/yp-download.png 203 .. image:: figures/yp-download.png
207 :align: center 204 :width: 100%
208 205
209 For steps on how to use the "DOWNLOADS" page, see the 206 For steps on how to use the "DOWNLOADS" page, see the
210 ":ref:`dev-manual/start:using the downloads page`" 207 ":ref:`dev-manual/start:using the downloads page`"
@@ -214,7 +211,8 @@ Git Workflows and the Yocto Project
214=================================== 211===================================
215 212
216Developing using the Yocto Project likely requires the use of 213Developing using the Yocto Project likely requires the use of
217`Git <#git>`__. Git is a free, open source distributed version control 214:ref:`overview-manual/development-environment:git`.
215Git is a free, open source distributed version control
218system used as part of many collaborative design environments. This 216system used as part of many collaborative design environments. This
219section provides workflow concepts using the Yocto Project and Git. In 217section provides workflow concepts using the Yocto Project and Git. In
220particular, the information covers basic practices that describe roles 218particular, the information covers basic practices that describe roles
@@ -231,8 +229,8 @@ all diverging functionality. Although there is no need to use Git, many
231open source projects do so. 229open source projects do so.
232 230
233For the Yocto Project, a key individual called the "maintainer" is 231For the Yocto Project, a key individual called the "maintainer" is
234responsible for the integrity of the "master" branch of a given Git 232responsible for the integrity of the development branch of a given Git
235repository. The "master" branch is the "upstream" repository from which 233repository. The development branch is the "upstream" repository from which
236final or most recent builds of a project occur. The maintainer is 234final or most recent builds of a project occur. The maintainer is
237responsible for accepting changes from other developers and for 235responsible for accepting changes from other developers and for
238organizing the underlying branch structure to reflect release strategies 236organizing the underlying branch structure to reflect release strategies
@@ -242,8 +240,8 @@ and so forth.
242 240
243 For information on finding out who is responsible for (maintains) a 241 For information on finding out who is responsible for (maintains) a
244 particular area of code in the Yocto Project, see the 242 particular area of code in the Yocto Project, see the
245 ":ref:`dev-manual/common-tasks:submitting a change to the yocto project`" 243 ":doc:`../contributor-guide/identify-component`"
246 section of the Yocto Project Development Tasks Manual. 244 section of the Yocto Project and OpenEmbedded Contributor Guide.
247 245
248The Yocto Project ``poky`` Git repository also has an upstream 246The Yocto Project ``poky`` Git repository also has an upstream
249contribution Git repository named ``poky-contrib``. You can see all the 247contribution Git repository named ``poky-contrib``. You can see all the
@@ -269,23 +267,23 @@ files that are being worked on simultaneously by more than one person.
269All this work is done locally on the development host before anything is 267All this work is done locally on the development host before anything is
270pushed to a "contrib" area and examined at the maintainer's level. 268pushed to a "contrib" area and examined at the maintainer's level.
271 269
272A somewhat formal method exists by which developers commit changes and 270There is a somewhat formal method by which developers commit changes and
273push them into the "contrib" area and subsequently request that the 271push them into the "contrib" area and subsequently request that the
274maintainer include them into an upstream branch. This process is called 272maintainer include them into an upstream branch. This process is called
275"submitting a patch" or "submitting a change." For information on 273"submitting a patch" or "submitting a change." For information on
276submitting patches and changes, see the 274submitting patches and changes, see the
277":ref:`dev-manual/common-tasks:submitting a change to the yocto project`" 275":doc:`../contributor-guide/submit-changes`" section in the Yocto Project
278section in the Yocto Project Development Tasks Manual. 276and OpenEmbedded Contributor Guide.
279 277
280In summary, a single point of entry exists for changes into a "master" 278In summary, there is a single point of entry for changes into the
281or development branch of the Git repository, which is controlled by the 279development branch of the Git repository, which is controlled by the
282project's maintainer. And, a set of developers exist who independently 280project's maintainer. A set of developers independently
283develop, test, and submit changes to "contrib" areas for the maintainer 281develop, test, and submit changes to "contrib" areas for the maintainer
284to examine. The maintainer then chooses which changes are going to 282to examine. The maintainer then chooses which changes are going to
285become a permanent part of the project. 283become a permanent part of the project.
286 284
287.. image:: figures/git-workflow.png 285.. image:: svg/git-workflow.*
288 :align: center 286 :width: 100%
289 287
290While each development environment is unique, there are some best 288While each development environment is unique, there are some best
291practices or methods that help development run smoothly. The following 289practices or methods that help development run smoothly. The following
@@ -309,7 +307,7 @@ Book <https://book.git-scm.com>`__.
309 host. You can name these branches anything you like. It is helpful to 307 host. You can name these branches anything you like. It is helpful to
310 give them names associated with the particular feature or change on 308 give them names associated with the particular feature or change on
311 which you are working. Once you are done with a feature or change and 309 which you are working. Once you are done with a feature or change and
312 have merged it into your local master branch, simply discard the 310 have merged it into your local development branch, simply discard the
313 temporary branch. 311 temporary branch.
314 312
315- *Merge Changes:* The ``git merge`` command allows you to take the 313- *Merge Changes:* The ``git merge`` command allows you to take the
@@ -338,20 +336,19 @@ Book <https://book.git-scm.com>`__.
338 software on which to develop. The Yocto Project has two scripts named 336 software on which to develop. The Yocto Project has two scripts named
339 ``create-pull-request`` and ``send-pull-request`` that ship with the 337 ``create-pull-request`` and ``send-pull-request`` that ship with the
340 release to facilitate this workflow. You can find these scripts in 338 release to facilitate this workflow. You can find these scripts in
341 the ``scripts`` folder of the 339 the ``scripts`` folder of the :term:`Source Directory`. For information
342 :term:`Source Directory`. For information
343 on how to use these scripts, see the 340 on how to use these scripts, see the
344 ":ref:`dev-manual/common-tasks:using scripts to push a change upstream and request a pull`" 341 ":ref:`contributor-guide/submit-changes:using scripts to push a change upstream and request a pull`"
345 section in the Yocto Project Development Tasks Manual. 342 section in the Yocto Project and OpenEmbedded Contributor Guide.
346 343
347- *Patch Workflow:* This workflow allows you to notify the maintainer 344- *Patch Workflow:* This workflow allows you to notify the maintainer
348 through an email that you have a change (or patch) you would like 345 through an email that you have a change (or patch) you would like
349 considered for the "master" branch of the Git repository. To send 346 considered for the development branch of the Git repository. To send
350 this type of change, you format the patch and then send the email 347 this type of change, you format the patch and then send the email
351 using the Git commands ``git format-patch`` and ``git send-email``. 348 using the Git commands ``git format-patch`` and ``git send-email``.
352 For information on how to use these scripts, see the 349 For information on how to use these scripts, see the
353 ":ref:`dev-manual/common-tasks:submitting a change to the yocto project`" 350 ":doc:`../contributor-guide/submit-changes`" section in the Yocto Project
354 section in the Yocto Project Development Tasks Manual. 351 and OpenEmbedded Contributor Guide.
355 352
356Git 353Git
357=== 354===
@@ -382,11 +379,10 @@ commands.
382Repositories, Tags, and Branches 379Repositories, Tags, and Branches
383-------------------------------- 380--------------------------------
384 381
385As mentioned briefly in the previous section and also in the "`Git 382As mentioned briefly in the previous section and also in the
386Workflows and the Yocto 383":ref:`overview-manual/development-environment:git workflows and the yocto project`"
387Project <#gs-git-workflows-and-the-yocto-project>`__" section, the Yocto 384section, the Yocto Project maintains source repositories at :yocto_git:`/`.
388Project maintains source repositories at :yocto_git:`/`. If you 385If you look at this web-interface of the repositories, each item is a separate
389look at this web-interface of the repositories, each item is a separate
390Git repository. 386Git repository.
391 387
392Git repositories use branching techniques that track content change (not 388Git repositories use branching techniques that track content change (not
@@ -426,24 +422,18 @@ other branches represent offshoots of the "master" branch.
426When you create a local copy of a Git repository, the copy has the same 422When you create a local copy of a Git repository, the copy has the same
427set of branches as the original. This means you can use Git to create a 423set of branches as the original. This means you can use Git to create a
428local working area (also called a branch) that tracks a specific 424local working area (also called a branch) that tracks a specific
429development branch from the upstream source Git repository. in other 425development branch from the upstream source Git repository. In other
430words, you can define your local Git environment to work on any 426words, you can define your local Git environment to work on any
431development branch in the repository. To help illustrate, consider the 427development branch in the repository. To help illustrate, consider the
432following example Git commands: 428following example Git commands::
433::
434 429
435 $ cd ~ 430 $ cd ~
436 $ git clone git://git.yoctoproject.org/poky 431 $ git clone git://git.yoctoproject.org/poky -b &DISTRO_NAME_NO_CAP;
437 $ cd poky
438 $ git checkout -b &DISTRO_NAME_NO_CAP; origin/&DISTRO_NAME_NO_CAP;
439 432
440In the previous example 433In the previous example
441after moving to the home directory, the ``git clone`` command creates a 434after moving to the home directory, the ``git clone`` command creates a
442local copy of the upstream ``poky`` Git repository. By default, Git 435local copy of the upstream ``poky`` Git repository and checks out a
443checks out the "master" branch for your work. After changing the working 436local branch named "&DISTRO_NAME_NO_CAP;", which tracks the upstream
444directory to the new local repository (i.e. ``poky``), the
445``git checkout`` command creates and checks out a local branch named
446"&DISTRO_NAME_NO_CAP;", which tracks the upstream
447"origin/&DISTRO_NAME_NO_CAP;" branch. Changes you make while in this 437"origin/&DISTRO_NAME_NO_CAP;" branch. Changes you make while in this
448branch would ultimately affect the upstream "&DISTRO_NAME_NO_CAP;" branch 438branch would ultimately affect the upstream "&DISTRO_NAME_NO_CAP;" branch
449of the ``poky`` repository. 439of the ``poky`` repository.
@@ -466,7 +456,7 @@ and clicking on the ``[...]`` link beneath the "Tag" heading.
466 456
467Some key tags for the ``poky`` repository are ``jethro-14.0.3``, 457Some key tags for the ``poky`` repository are ``jethro-14.0.3``,
468``morty-16.0.1``, ``pyro-17.0.0``, and 458``morty-16.0.1``, ``pyro-17.0.0``, and
469``&DISTRO_NAME_NO_CAP;-&POKYVERSION;``. These tags represent Yocto Project 459``&DISTRO_NAME_NO_CAP;-&DISTRO;``. These tags represent Yocto Project
470releases. 460releases.
471 461
472When you create a local copy of the Git repository, you also have access 462When you create a local copy of the Git repository, you also have access
@@ -475,8 +465,7 @@ create and checkout a local working Git branch based on a tag name. When
475you do this, you get a snapshot of the Git repository that reflects the 465you do this, you get a snapshot of the Git repository that reflects the
476state of the files when the change was made associated with that tag. 466state of the files when the change was made associated with that tag.
477The most common use is to checkout a working branch that matches a 467The most common use is to checkout a working branch that matches a
478specific Yocto Project release. Here is an example: 468specific Yocto Project release. Here is an example::
479::
480 469
481 $ cd ~ 470 $ cd ~
482 $ git clone git://git.yoctoproject.org/poky 471 $ git clone git://git.yoctoproject.org/poky
@@ -541,7 +530,7 @@ descriptions and strategies on how to use these commands:
541 in this form assumes the local branch already exists. This command is 530 in this form assumes the local branch already exists. This command is
542 analogous to "cd". 531 analogous to "cd".
543 532
544- *git checkout –b working-branch upstream-branch:* Creates and 533- *git checkout -b working-branch upstream-branch:* Creates and
545 checks out a working branch on your local machine. The local branch 534 checks out a working branch on your local machine. The local branch
546 tracks the upstream branch. You can use your local branch to isolate 535 tracks the upstream branch. You can use your local branch to isolate
547 your work. It is a good idea to use local branches when adding 536 your work. It is a good idea to use local branches when adding
@@ -556,12 +545,12 @@ descriptions and strategies on how to use these commands:
556 You need to be in a local branch other than the one you are deleting 545 You need to be in a local branch other than the one you are deleting
557 in order to delete branch-name. 546 in order to delete branch-name.
558 547
559- *git pull --rebase:* Retrieves information from an upstream Git 548- *git pull \-\-rebase*: Retrieves information from an upstream Git
560 repository and places it in your local Git repository. You use this 549 repository and places it in your local Git repository. You use this
561 command to make sure you are synchronized with the repository from 550 command to make sure you are synchronized with the repository from
562 which you are basing changes (.e.g. the "master" branch). The 551 which you are basing changes (e.g. the "&DISTRO_NAME_NO_CAP;"
563 "--rebase" option ensures that any local commits you have in your 552 branch). The ``--rebase`` option ensures that any local commits you
564 branch are preserved at the top of your local branch. 553 have in your branch are preserved at the top of your local branch.
565 554
566- *git push repo-name local-branch:upstream-branch:* Sends 555- *git push repo-name local-branch:upstream-branch:* Sends
567 all your committed local changes to the upstream Git repository that 556 all your committed local changes to the upstream Git repository that
@@ -572,13 +561,13 @@ descriptions and strategies on how to use these commands:
572 561
573- *git merge:* Combines or adds changes from one local branch of 562- *git merge:* Combines or adds changes from one local branch of
574 your repository with another branch. When you create a local Git 563 your repository with another branch. When you create a local Git
575 repository, the default branch is named "master". A typical workflow 564 repository, the default branch may be named "main". A typical
576 is to create a temporary branch that is based off "master" that you 565 workflow is to create a temporary branch that is based off "main"
577 would use for isolated work. You would make your changes in that 566 that you would use for isolated work. You would make your changes in
578 isolated branch, stage and commit them locally, switch to the 567 that isolated branch, stage and commit them locally, switch to the
579 "master" branch, and then use the ``git merge`` command to apply the 568 "main" branch, and then use the ``git merge`` command to apply the
580 changes from your isolated branch into the currently checked out 569 changes from your isolated branch into the currently checked out
581 branch (e.g. "master"). After the merge is complete and if you are 570 branch (e.g. "main"). After the merge is complete and if you are
582 done with working in that isolated branch, you can safely delete the 571 done with working in that isolated branch, you can safely delete the
583 isolated branch. 572 isolated branch.
584 573
@@ -613,30 +602,22 @@ licensing structures in place. License evolution for both Open Source
613and Free Software has an interesting history. If you are interested in 602and Free Software has an interesting history. If you are interested in
614this history, you can find basic information here: 603this history, you can find basic information here:
615 604
616- `Open source license 605- :wikipedia:`Open source license history <Open-source_license>`
617 history <https://en.wikipedia.org/wiki/Open-source_license>`__
618 606
619- `Free software license 607- :wikipedia:`Free software license history <Free_software_license>`
620 history <https://en.wikipedia.org/wiki/Free_software_license>`__
621 608
622In general, the Yocto Project is broadly licensed under the 609In general, the Yocto Project is broadly licensed under the
623Massachusetts Institute of Technology (MIT) License. MIT licensing 610Massachusetts Institute of Technology (MIT) License. MIT licensing
624permits the reuse of software within proprietary software as long as the 611permits the reuse of software within proprietary software as long as the
625license is distributed with that software. MIT is also compatible with 612license is distributed with that software. Patches to the Yocto Project
626the GNU General Public License (GPL). Patches to the Yocto Project
627follow the upstream licensing scheme. You can find information on the 613follow the upstream licensing scheme. You can find information on the
628MIT license 614MIT license :wikipedia:`here <MIT_License>`.
629`here <https://www.opensource.org/licenses/mit-license.php>`__. You can
630find information on the GNU GPL
631`here <https://www.opensource.org/licenses/LGPL-3.0>`__.
632 615
633When you build an image using the Yocto Project, the build process uses 616When you build an image using the Yocto Project, the build process uses
634a known list of licenses to ensure compliance. You can find this list in 617a known list of licenses to ensure compliance. You can find this list in
635the :term:`Source Directory` at 618the :term:`Source Directory` at ``meta/files/common-licenses``. Once the
636``meta/files/common-licenses``. Once the build completes, the list of 619build completes, the list of all licenses found and used during that build
637all licenses found and used during that build are kept in the 620are kept in the :term:`Build Directory` at ``tmp/deploy/licenses``.
638:term:`Build Directory` at
639``tmp/deploy/licenses``.
640 621
641If a module requires a license that is not in the base list, the build 622If a module requires a license that is not in the base list, the build
642process generates a warning during the build. These tools make it easier 623process generates a warning during the build. These tools make it easier
@@ -661,5 +642,5 @@ Project uses in the ``meta/files/common-licenses`` directory in your
661For information that can help you maintain compliance with various open 642For information that can help you maintain compliance with various open
662source licensing during the lifecycle of a product created using the 643source licensing during the lifecycle of a product created using the
663Yocto Project, see the 644Yocto Project, see the
664":ref:`dev-manual/common-tasks:maintaining open source license compliance during your product's lifecycle`" 645":ref:`dev-manual/licenses:maintaining open source license compliance during your product's lifecycle`"
665section in the Yocto Project Development Tasks Manual. 646section in the Yocto Project Development Tasks Manual.
diff --git a/documentation/overview-manual/figures/git-workflow.png b/documentation/overview-manual/figures/git-workflow.png
deleted file mode 100644
index e401330a12..0000000000
--- a/documentation/overview-manual/figures/git-workflow.png
+++ /dev/null
Binary files differ
diff --git a/documentation/overview-manual/figures/index-downloads.png b/documentation/overview-manual/figures/index-downloads.png
deleted file mode 100755
index d8d4475cee..0000000000
--- a/documentation/overview-manual/figures/index-downloads.png
+++ /dev/null
Binary files differ
diff --git a/documentation/overview-manual/figures/source-repos.png b/documentation/overview-manual/figures/source-repos.png
index 603300b6d2..56023d585d 100644
--- a/documentation/overview-manual/figures/source-repos.png
+++ b/documentation/overview-manual/figures/source-repos.png
Binary files differ
diff --git a/documentation/overview-manual/figures/yp-download.png b/documentation/overview-manual/figures/yp-download.png
index bfd12b678a..c8b50ec8a7 100644
--- a/documentation/overview-manual/figures/yp-download.png
+++ b/documentation/overview-manual/figures/yp-download.png
Binary files differ
diff --git a/documentation/overview-manual/history.rst b/documentation/overview-manual/history.rst
deleted file mode 100644
index 6fc700a013..0000000000
--- a/documentation/overview-manual/history.rst
+++ /dev/null
@@ -1,28 +0,0 @@
1.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
2
3***********************
4Manual Revision History
5***********************
6
7.. list-table::
8 :widths: 10 15 40
9 :header-rows: 1
10
11 * - Revision
12 - Date
13 - Note
14 * - 2.5
15 - May 2018
16 - The initial document released with the Yocto Project 2.5 Release
17 * - 2.6
18 - November 2018
19 - Released with the Yocto Project 2.6 Release.
20 * - 2.7
21 - May 2019
22 - Released with the Yocto Project 2.7 Release.
23 * - 3.0
24 - October 2019
25 - Released with the Yocto Project 3.0 Release.
26 * - 3.1
27 - April 2020
28 - Released with the Yocto Project 3.1 Release.
diff --git a/documentation/overview-manual/index.rst b/documentation/overview-manual/index.rst
index 123aed9b8b..04061f8f4e 100644
--- a/documentation/overview-manual/index.rst
+++ b/documentation/overview-manual/index.rst
@@ -14,6 +14,5 @@ Yocto Project Overview and Concepts Manual
14 yp-intro 14 yp-intro
15 development-environment 15 development-environment
16 concepts 16 concepts
17 history
18 17
19.. include:: /boilerplate.rst 18.. include:: /boilerplate.rst
diff --git a/documentation/overview-manual/intro.rst b/documentation/overview-manual/intro.rst
index bd247dd45c..80446b3810 100644
--- a/documentation/overview-manual/intro.rst
+++ b/documentation/overview-manual/intro.rst
@@ -12,19 +12,18 @@ introduces the Yocto Project by providing concepts, software overviews,
12best-known-methods (BKMs), and any other high-level introductory 12best-known-methods (BKMs), and any other high-level introductory
13information suitable for a new Yocto Project user. 13information suitable for a new Yocto Project user.
14 14
15The following list describes what you can get from this manual: 15Here is what you can get from this manual:
16 16
17- `Introducing the Yocto Project <#overview-yp>`__\ *:* This chapter 17- :ref:`overview-manual/yp-intro:introducing the yocto project`\ *:*
18 provides an introduction to the Yocto Project. You will learn about 18 This chapter provides an introduction to the Yocto Project. You will learn
19 features and challenges of the Yocto Project, the layer model, 19 about features and challenges of the Yocto Project, the layer model,
20 components and tools, development methods, the 20 components and tools, development methods, the
21 :term:`Poky` reference distribution, the 21 :term:`Poky` reference distribution, the
22 OpenEmbedded build system workflow, and some basic Yocto terms. 22 OpenEmbedded build system workflow, and some basic Yocto terms.
23 23
24- `The Yocto Project Development 24- :ref:`overview-manual/development-environment:the yocto project development environment`\ *:*
25 Environment <#overview-development-environment>`__\ *:* This chapter 25 This chapter helps you get started understanding the Yocto Project
26 helps you get started understanding the Yocto Project development 26 development environment. You will learn about open source, development hosts,
27 environment. You will learn about open source, development hosts,
28 Yocto Project source repositories, workflows using Git and the Yocto 27 Yocto Project source repositories, workflows using Git and the Yocto
29 Project, a Git primer, and information about licensing. 28 Project, a Git primer, and information about licensing.
30 29
@@ -39,7 +38,7 @@ This manual does not give you the following:
39 procedures reside in other manuals within the Yocto Project 38 procedures reside in other manuals within the Yocto Project
40 documentation set. For example, the :doc:`/dev-manual/index` 39 documentation set. For example, the :doc:`/dev-manual/index`
41 provides examples on how to perform 40 provides examples on how to perform
42 various development tasks. As another example, the 41 various development tasks. As another example, the
43 :doc:`/sdk-manual/index` manual contains detailed 42 :doc:`/sdk-manual/index` manual contains detailed
44 instructions on how to install an SDK, which is used to develop 43 instructions on how to install an SDK, which is used to develop
45 applications for target hardware. 44 applications for target hardware.
diff --git a/documentation/overview-manual/svg/bitbake_tasks_map.svg b/documentation/overview-manual/svg/bitbake_tasks_map.svg
new file mode 100644
index 0000000000..09ef36faae
--- /dev/null
+++ b/documentation/overview-manual/svg/bitbake_tasks_map.svg
@@ -0,0 +1,4 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<!-- Do not edit this file with editors other than draw.io -->
3<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="12270px" height="3804px" viewBox="-0.5 -0.5 12270 3804" content="&lt;mxfile host=&quot;app.diagrams.net&quot; modified=&quot;2023-11-01T08:31:56.536Z&quot; agent=&quot;Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36&quot; etag=&quot;p-CQVME_iMteI52En1Eq&quot; version=&quot;22.0.8&quot; type=&quot;device&quot;&gt;&lt;diagram name=&quot;Page-1&quot; id=&quot;c7558073-3199-34d8-9f00-42111426c3f3&quot;&gt;7V1bc6M6tv41rprzYAohro9JnO7O2X1JJZk9Z89LCtvEZtox3oA7nfn1R1yEQcjmLmRHPVV7YowxRp++dV9rAm9ef3/27d36m7d0NhNFXv6ewNlEUaCl6uj/oiPvyRFFM2FyZOW7y+QYOBx4dP/rpAfl9OjeXTpB4cTQ8zahuyseXHjbrbMIC8ds3/feiqe9eJvit+7slVM68LiwN+Wj/3KX4To5air64fgXx12t8TcD3UremduLnyvf22/T79t6Wyd559XGl0l/Y7C2l95b7hC8ncAb3/PC5K/X3zfOJnqu+Ikln/t05N3sln1nG9b5gPOn9ja72cPZi/UlfHp//N+7+WoKLTO5zi97s08fRnq74Tt+OvHvc6LLgAm8flu7ofO4sxfRu28IEOjYOnzdpG+/uJvNjbfxfPQ6fhrwemkH6+zjL942/GS/upsIK1/duePboett0Tc+2tsgPeHR2/vx9ddhiCCgaPAK/Qf9tOg/0QmBtPK81caxd24gLbzX+I1FEJ/66SW5PPqz8AWacp1+RfnRpU/zl+OHzu/cofRRfna8Vyf00TVl/K6lpuuaYt7Er98OAFLM9Ng6Dx4tPWinoF1lFz+sHvojXcAmi4l3XW7tnCUCevrS88O1t/K29ub2cPT6cPSr5+3SVfqPE4bv6T6196FXXGP02Pz3/0MvZMnQ8Ou/8m/OosckZ6/es1fLq2i7opeLjR0E7uJp7W6TNz65G3z9AmAWe//XeaAnwN97fIHSpQ9tf+WEJ89Mt2G0fifx6DsbdIe/ikRGg1b8UfT07ffcCTvPRY8jd+X76EAO5oZqFGBu6QTLVH1AT6nyAOzkHg4wz35Me+SrssEI+b/dMA989PKv3FsH2Ecv3vN7IPlUo91SQH4Q+t7PTDpBgmknClzKC8dRsjNz78jxv4+0e7BUG3v3mFZRSABACmniE4psnv7EMPsne7RCDWioBphytRqAl7CgBijqUGoAwoxYzDaLCWuspWIwXUugKsOv5SpSxVKZc4nrip6ijiRvfmmhVXNpARhsaXUGS3uJy5nR6SnKVdluUxmUlq5a/ywubidttLsyelA/K023FFsHm+38dUusMFaqlpbVt2bZzeSHJiPDpyVsihj/ICABUObC/jBBUephAjxmfUyx5kg/fyDbQ1UFhLmDMFThWUIYyOrJDwzlfyqrbgLDY2NYxVrZuWFYHZiH9+EP7fr+38Gnuf63/Cd0vb9n0ykQEOYQwup5ahLoE+xZmBrL1Ddhigb0ztIO7Wn09zTwF/EZ+t/7KAB7nSAkwgdCxxFsxMjIcAFnV/4iMsgX0YO7RkhHhqbjHy6J/lpF/x++7vBtpJfG75Q2XGNzH+/OdJvlPTlZvJl766y+6W+Q3nGzbPrTvDgDGv5tWLO74X/ZxrhV186Se2fHTmjAN84ZAb15/s9hGIgDmDVhwQEYKKOb8RhIZ6S3tXI2nuapS9LpMjKqQVsaV7QFNG0UISa81yNAr3e3Tl3o0Y1Ozn1/GUZzCD3glY7RQtpOIQBXM/3to4BRhSpfPIjvnDP9Dd/D/HBAnRjX3/759enu29XNl+enq4fPt0/PPx4nxiyn6M3JCwjlr6PyB4vKn0qLPLPV/nB6ghDd58qWsLbo7j2psSNbQi7ZcuPO1+j2PUF6/ZAeVHQJOzZS3tOUsY1eHCBh7XYTFHbCnK1BYXxlz2R3zhmFBfa7oLAeKcwyinrb+PyF6wfPjr8u2W6tnd6l633TWKugLMQZxLjUyjwdlDVPnj5MTDYzhwTSzxHp2nkiHRB1V4ygfl6k3sKG/zC4NziL0Fht6lvPys3zcaDFR1JiU0rV9REoVTHalDcI7YEPqCt67/EdJlCfamNoDzKf2YuyBKa+LDwRfTlTie4Y8sieCCifldLKA2S6UGftzEZD4YI6gSwXE7+ruNPST54/UAnZeYUDPgqIFU6KFxqDGEB1BA0AtqrAESgeHMW9B60YoVjDgGKKYv2sHL4fBcVQ46QlVmMU68YoKD4rx8OHQTEnkbfmKDbHcJ9BU6CYRxSbxnmiuNSdkJFnjM+yOuEZGzRHx0yxOVqODq5OONWfTdT6dmVNnFJfo6kSZ6VLbRynPUrTyl7bafAWh2tF6VI7MNIXv3cJ3pGr+KxcQhJiu/HsZSCkZD9SclrqZDp+ATruFHYOuSmXLUprlxLhrsLc0BefpUQrN1QEcw3FXBCOzFzoFsZR6FOFLnuRU81OKHR9TIBooxTyANYurKjXZUVOkp0VIv1INSq8MsT5BoteawCWS6cQXa7382hxJUST9mtEejF37gPH39qvTnY0plDpUOZ0CVya225O/I+2EaEOLbjsiVGBQlKqSkknUiBLToVwnEzlzEgWnMqCU+tWfA6VAkIJExLuQ5lAePKj0k8dQN7YZ15iZ6Ui8jMSPeud6flQSC/ouSd61samZ4BTshvRc8EtKKpK2PGsVlt3xSnuvFj0Wpl/OLHohUHfD78BItPXoBTVa0y5TSvHib/ZPx30XJzLWN2cpHrRov+lX52XYPE/mmzT4389rT1WL9K1z7Jb8o2wcG+/wgimoRZfhWfly2kzCJcHFHaQZXrdQK8KOZNlejm49vXu5vb74+3F0Qob1bhEH5RpfGzpQwFtWuAydFR0bkRak3HEmGGgg9pKNx8zkohmFxasKNEiTtdZ+CPwQ81x6Iv7W9rZ4WJ9cSzKl3JmURRz1uzKPFeqJbtKsqwXGNa0YAOORe/cO76LnprjT/rzMPMA8S6EWjcvQcGoHHvaEcmQ5klCJYfSyBCwYNRyzkTsrt24c2khKHVYSqU4ctlSataDjjMHW+gMNe2KE0wy9LBpxV4RozvYlJGajYuuu6f6SFVLVd667hplW4AH6greA9/zwunSCcKl6wsW64fFshY3J2gMKCx5DMoj56iIrmLHG95U05k1Wh3Q6TvnjM58Z+HunGnKaoLN+mEzC9RgM8A07InbOgs244jNao9EMDirJDP4HIngvtorR5BYPyQGoSzhrkYneAx7mBjR2LgBfEFjJ8ipmsawD5QXGjNZDZYcZxLaKcwVQhIfB4C9t9XuKEcNLuXoPhCOjb6kqCpLSjEHkpYHp0KcBc5Ijo7T84k/HuQBkh2oz6ybLwf6byfVEYF8NqNwt4vNfimMiN6MCE0iGoxalHm4GpQMpvxnnZU7hAfgdCGp2rlyFmf6mclnEGrjzgVB9UNQqmZl1HOCoJjrZ2XDIMvbEamQ/ebtQKUooIAMygAwKd56rNcPsPzlIiVcaCsFnlQeZCAQ0IkEFDI5DxhSubMkNQA9XPKWVdaQCyCQyok2Agb9wkBVasNgMC6waDpIp3XPPfM056lQQmb7i1SD5V73bLC2AFaTPMB9SfIrq2cY6D9XztRbmCEM24P2kZdeSn5P7sP4KANFs8y6MZJWjuSiQ4Losi5rFY1QymVChG8TAPJKya/u3FJFJwqSAGbhujOmyA8Mk3CfLXaOrW8RS72Ha3e7ij4dwRYbb/Njgev5wZ6TX7zNMjIC5XBtR7/PDSIg+k7gxD+XfsHHvx4ffvx4ep7dPTweue6bG/+cOfpeeeHtXLRHI+LzHak/8ZIvFuWuTHnQ6lUyodGkGJV0RWK4zOxW1e+d3PwNSL6tiCqIF1FHpYC6zrYBMr5bMbsmE5pZFbOTQ4YZMXurwWsddTUVFtzEkmVZFdshfkWWF7aJuxUTBBrvIspOPOt9lfVOqlGf2LsTu9W+Ak01JlU1RtlXfLZ1XnrP7jYI7egX1HO1I80gLG5le+OutujvBYJbtBmvI/3BXdibq/SNV3e5TEJLTuD+155vsNWdLi66rnY90WbRtRBRBAlnANrOy5SXY/oX1/uvvmKlGCSsKe1MLYpiRRomPVa8lWfAXLqjjlULGLO41kf8stSiWmM4tw3gM20LUdbC2764q72fGZNz/8BXgsY4oDEcZDRoOGZLW2YJxSLGyKo3gElxB7Btt6LQ4gpckFja70cQGJcEhqPm9H5SVTHz4ehMoU3i4wLP+y0iyp8C0HwDWpHJTty06ZJsLQulss4uXbkD7kAegvIiW6/DQfgS/yucN8rWyEUtcnDHZyV3E/889OUy0Ha/k88QV9Hp8Y16WwstgrsLnGqNxg526PegFy/u70gLIpJBib1BuMFy72i6BowL2jXAqLNraO3rB9w1lV2PxK4xxK4Z0/qjaEuM90ilC0PsEVPskREly5S0MCgeE8Z7ppzbwYmFgT6+iwcYCBODZ0iX8ktlmjubsYlR9gIKQUBcxRKCYExBAGptG7ayAFZ6T8W2AbLYN2NKG7VGpJzxruGzb1QUc/B2+40dOs8NW+EJxYkFlDVAJnNToJyN4GGEZeFlqpYAQEiAMYuezBrbhqkEgBrzEUrN0sk7p8qKFHQFZ23VGPzce1OadqmysKQqVeTKAo3oasIoWRbSrHViP/VaDMo1FBuEqci0UWo9jkqhwkyrGECDsFpwoRizPBKrYXBUsxrepJx0scnunDOrS4xZ7m/MMgSczVlW1LKDTMxZHia3VMFdkU80mGScXKoqpdW/1Gm4vC3+6GNys2YC3A9yzKk8jcbkinJIRVVr23gaHzbesYzloyZe6QOGysDCU8tpzIH9nhSTiYmNA5MnB1Nw1XKIBK//xa0+oyrC0irX1o+GqyGEeG6GaMZxwZ5Qte5kAohHn48tJbXGnlAdT2pk6wlVaQmswhNazYaqBiTLKtoMHDQnUseZSCCmC5xak9qd6/oP5HREE5+pumJAWZ9OT9Xkb0JZ5mUVPMYPj2lKXR7TVL54DN85ZzwmBkT1yGIWjxOi0PMZhcfEhKi+ua+2oxbPxBm6+3A5dybrxV3RNLg341ErO1l5oNV51MxX0GpPymE0eco6/CtAztIo8XHGQ6gUnU8U4t51U1kCAo79wHEKiH7Q1JHwMtMMDX3k4QNV8rnofSu6juf2wlxS40OZ65iuSmTaA1WVKLqslfQm7u0QbZRtfCeKHB0tzjT4EHqEUVuPMBjpEWhPEUlPMhGtqTvFAOgVF+ppiEH5jtOCqGM3VvqArlV54+Gp8wfyxevVzSQqS0jUUgnJONLvEX1x/F1y/j11Ylz/68fDH7O7h4mB3vyUJC8ePluvoAXtiK/23NlMBqsY20SXRyy9dHxMikvnxd7H9xcgkexuV08xcSuHA1+dl5BrljotwEpiOKqt2m7RUqePapLG64+LZ2SCG2Qf+uRVR5LSiU94Ly+BM4xRgzPcOVMn8ba5ZE2yurosjSg2UTuJlJi0MjD9Tek1QA+6KTQhOQKT1sOL5kYfbOqZgoPKnIF5JmDMLYxBCcY0I0vRaX7UAYHMpwf/UQCZVyADrdpVwBzFfA7pqK15CxQzR7ECJQ7ZmE+Xq2BjbnE8zRLheIIxn310ngSMeYWxCrhUjit76IwVAVu6vgAzt2AmRttZBiWay3JIu2LwORHK3S42e4RNAWZ+wQx1naRmGp5pw1QGxDOf+dMPtzd397fP6XRrgWleMW2ZUDKL00QNSsYNALoEWLqVoQZK6OCq/Vgh56FmYkGxNJ0D+B4FUHWWgZmeWV0wh+HES6a2yWfAQngWuCVJAEuzcwy1HHdjbZOZfAYshKuXYyCTEQseYMxnxGImYMwtjDVYjiDzgGQ+YxYir4d3PMtEAyONMkGJbVaPyaebLOr/7zvRw372nYW7E1MAuGxdYahEhiatnblCK6IYbgoALpoT7Zp6a9ek6kXPEeKxekOyBmzXpFg0dbLT+n6MdjMmIYNorWayzGVGrWYstbR0XBU+fUC/n5UGgmtUKXPWXNtiNdCCv8r4DwlAKHPmeLb4zKEQLUJ6Kx42DS47hFhGC+YTHUL4o76643qg3HuTyo4IrJxdO2bWjaC/nuhPjzp5FOjPolgRzNt34JYiotMbN1yWKWc1uIyvTm/ZnXPGZRt3LnisHx6zTKuU6EfhMcZqXCbUc8CL3Zdo5aX1ZSwyNwMHTK0oxw6dz8bK9IRy2YGNG0BJgSeV8+UEAjqRAJEqgRBAG2ZP7749HAeUvdsFEEjlprYCBv3CQFVqw2A4LqBlGgwZ5LD9RaroypygpI+1JcOUNJIH0CivrK4MN29ErrSV24z5HqnOcO0G0UPaBN4k7vUT2u42OuKF6+h8OZoyGL1+8aNvwYd1+zXC53Ye7Ca5Ced+lgbg7JAx5GwXrhNI6GOztHES+pW5d6Iv9pMnQl5gbgdRiD8CmJy9S32y5d+Ez9/jA6vFIqd578nzJoWB6jd9fCNakh16cD6i/qD+V8v2dtnt22udj26qwfM427SNlCWLLFukyUsME2takTN12qB6WszfGEwnAnwa5Gnt0/Ps9vFJpN9xnH6nk6mktAKoQ8oKGw2PotAxjNngv2N/ZRTSqhe0meTdnJXTPcXYMYhn2VV6QQHOrOLFC6qMOnWgiE9D4HN8fOp84RNU5uIvsuU6SG74soj+Vxbmn91wvb9sB3u1DEfvKFBVtZ7yR6cqIMvqoFV2reAyt7zczfKJBwAOn1k6S+/5xQkX67Ite8Y21AWmvkf1bGQOkCpTUM0y+R2C6r7fydodgAcK3iM6WSYa+eheptMejWrfWHKV/AiNxg4KtAjuLnCq2d4Oduj3oBcv7u9IQhA6UW0i1nQNGJe0b6KusDX2DWS6bxQhDIQw6FkYaGMLA0UIg0phoAlhwJswoOwbtsIA8tk4BgmDhbd9cVd73xECgW9gA6AW0wkshZJLANjCWhHioNI2UIQ8GHXbgOptw1gY8Nm1JhYGcXKAEAW8Y1onMK3R8gtpofQBUV3pNReyIOqDKWTBiPsG1tk3bKWBymcKCpIG+y1C2E8hDPgGtULoNzTPJ1tJoFYau0ISCKNgVEFgVu8ZxlKgTZ0pw8rSC2oDAnHqfnX9qMpXZooKTYESDlHSe35d/NGmg8eBrBIZMcrpOeIWME6dPxlkjrgKBdPxh2G1/xw8NhgGwDj5gWFAnD1Yzoy2KJhz0YmGDCv5DxV9KbIUysAeWlPDPqr49+EP7fr+38Gnuf63/Cd0vb9n0ynOKGHHnHnerJpqkvVsmuTzq0+nVxe4ts1YFB5w2YWftTI/05eeDxXDJPzO+AccY2fyfLxfjmokOKBIP38oMi8P2tx4C3sjJXR6CbzJvMEvpZ0dpHX4Vcv82UcHBPom4rwlbIENaxLg+dSJ1mBDSntO+kIqfbNhR+dNOdVzPt/Y744fCA7ptZcSjUOoOS/DtVHRKuM17b3COd/ykfL9/Kivqpr9ZdLaIGpmsHK2aFWTpgVh1E+h+psmiC6NbACIMYvNlejQ9f139HKavLj/M36rWcn+IZR0t6Xdy8oNj/ykZHJD9IsWa3uLdj9arbDTbyp+Vy8dBxrtbu4IvNiHoA9DStFK+1ijzaWGB5WhULClDbeXFS7N+GhUiX0yR9/FB/7x3YvXB53tBP+TQ6h7fNOJ+C1XsSgyr9OkZCtTZdxw7QK1SveWiOCKVB6u0jppzdLZhnA1kQBXuWlUsWnGnK2F53DjpnW02VqMNw23VZLuNgjt6BcI9YlnTAMIVNK6ADIlVMM2B04ThZLV2dBCGoy6c5ClUb1t2IoDXSmvsxi3MK5bXqs9Okbna3RMduecKRdRVr29EqNj+vIv6oQDxaA4F2kjkAf0n1hcAu/+j8+zi0bdWfcSBboFJZzjg6FMGU0Pdcmghc0H6ydqsoqbZ1PfjO5j36rSlQrBdtGuMZPd1VIe106MnSqq48lwmTejKleUTEciPzFQfhF+tDlpcBVbeLvo93qRPUdvWl8MW85ykVaqNyI73/kdzaZzt6vjp+eu/Sl4D3zPC6feNgIXzSLrJBuO+B+4C3wOO/BcB4akF91vtDHZyAajTrgbUFnRK/3W4wVBC4qycMFx6kjQDKS4qAS1UlzLbF1wejmtU7jgSBecaFY27s5RoYRLP/kJypjlgXDCCze2fl57dn3/+nlHHuYzxJcqF8E02G0KOYCX5xZh6Ywz5WpnHHXi3YAKbmUsbjRv3O3j00Uj77wdchaRY0TzxukUKA/nijOMUSRz5phr4pf7EFLZqiuVDciZVOYzRBHY7/FE2otmRabyWDGJQSkmZUYZ2/CYIaL83DEZ5qcaTMbZODF855wx2T7wBYn1RWLQJKuJLcq8ZRXSBi0OyGNtAqMjaWOC+6oZrbLwGAwT+qwRqZShQY4NT+42/SQB5T7Clkal/3wUXp0j/Ale7YtXoQSUIq8atJa4GqRGJYejVjy5jwK+YGdvOwU9PnmbpePHRcS+Y4cIINGv8qNiYjv+7853AidGuEutT8YHsmrh+6ubP64+3zYpzv5l+24cXYzHul+74bX9M/run1vvLbq1t7Ud3UAyd/0tvb24zHm3jyueEQ+vohP3QRzoRwecWvf66e5rhxt1ftuvu036hOt+WXRyXCz+vVGxuIy2Q1zr/ebGiFl5k4aV3g2/sJiG8RLDJH76blSLK7vBkIjIjiX4FrXltRhMkzUJFtsY0mrLoQKoBAZUMzs+AInxKUFFZsXZxIcNtSSgOcisMCsjeiKzIpoFLDIrRtw5AJKCgYPMCrxPheeTH+vfNMrW/5Ezrb7N/448zGdge+nsNt779KiSnLWm2f1c5Qix1LGmDXEKk79iWoiscJefYbXpaytIcVhSrB3YtjgLB+E754wUKWwYeygSP8Hz1cPNl6KvQlDf0NRHbbTFmPqqG221tkAQLcU+zthbOq/nHPR3r0F9l9VNrWsunXmDa8qeX+uq7u5n7atKZT/H09oJ8g5f75e7jB3B8/fyydV3k/pTntHz6/vx4Uujx9jgKSZ+4/pXR4+zwdVjwRe7Zn0nNkARrUdb/Sb2R9eDGma+m69Xj4+NPNIvMUTC1EGeoeCwXgu0QxL/fVRcN+i9pK7peHvZu50TM3Dphmo6re++f7l9uHuq//VtvXfCi0zEwYgOAjQXskprwTio/1gF2iiKcZpfgP+uM8ihbRW2KLzO9OfqGT24e9vIhdeHqSc4ZJw2cTtWd136gCZXFGqrhM+b+MBkmDptqxyuwemoU1kCU1+WqEp7pl5UOzYuQWVn3gceWKpO5LBalNJpBdd5FFy5Cpk206PyXt3jravyHtrBz+jeN0GkQSydSMGIjnuNotDN9ZqbNkpwC/9eo4B8U0tmAENmEDumseo7nD3S3vLp8HD2x3fKW7qVo70y9zZL6l6ptmEKMMqbLHTLcIIHJiS5QVmwvDBGYWu/xu8m+TfRHbbZMS2yVOqBNb30w3CXPuq5qmWbVrY8GZ5cWBhPeYGZlrpxZ08dF969W1qKQkxepvVAgbSpesAYygmnyqOkcfOw8u3NFlWu2y9KlUerfKMPj2rT3KC3KYo5+/ikSYx3YzrDZ/LhZyVSAUdfYL76H2Q3zllAKonSDyP0OEAa61R6aJA2Kst5sUccRuPUJ7UMrPOAmi78VLeAcgA/XkeCOh6EnBd1/tnt/dcffz3P7h6ea+vjx4LagmAaEoyqS7g9Op6GSKnkBorFtlRHlfnssn3Icn9+89H59RErkuJHINgm7mCtKGipeb3Z1EAmib2qXJl1JFLigXHKESNS4gffN0T+E9N8eHo9NXNbvFl4uo2ZXbDTeYBOm3h+LT347kH7z+rd/e/1p6vdf7b6dbiWnWntNiI4esaLFgxoWjDV0S0014aaqwYI01jFzTxGy7xUQXUNW4cCc/8QNgqSsErYIhvz7v6PvmM3D/ff2obpjl90dtsg7CL/o6SIL9bO4mf8xJ1d9FzzekJ2Un64sUhua1IiTXTOgaopYbIr5LfRrEYg4SKjAbYgn+VLByfHRTtHz7s1J5IgZHknpGizJkWmDNadUwV8ekKevt0LMHMMZhMW7TKFAmSmbWZVwGcN1eyrYGUugXyCgXVF0k2W2FWUFj6FHoNek0bR/nbJ9rUcEdyptrWcCp2Da3rfboVjOeqmLKmWnP0jQjOmIammZiBFJfkvoUUnP3mw5n0qHsfDGYOLoMyFBmWQ0lK0Mg2D4uJhG5PBMkbEZE7EZEwRkxlz2wCiNIq2bZiGZMwW2lO3iIzx8UIyHTQhpW63IlXpvVtRu3JBiJU3DPF0LPvRckHyA3qqWw1a/Zc92IK0ECZlQ5OyF04kWxTRhmAz9YcorFiRPgE7swCraq+bUWkbO/I8qZQaqVZrEmnWpIWXSLVS6Z1j2zTm/o/P/3q4e7qd3T00Ci/Wi1jmrt4szlgzeJm7fqN46+C1mEP1hiEN6YY/o1nBarE/DJOSO+78Xv2HdC2rKCGhCSRKSoUKdMmkOF+N0iyJ/sgJKkfJqXPj/q/uwtnG7YXijIGk7/06brvToDV75IPydntE1c7zxl00ALP9ElviNb/DDqOu8Scgf/LrkgZOcwexTNz5P+12hH97sH/Ff5a/I3kkWaOApqW2X+9unuPG/c83X/54/GeThBH3ZZJOIiDvaZOtXSxgtl5Y60HefP3xeDtrT265sz5MX31KzXEPpDNViJk0hkWbFAKVw6imQv2uPFwnDhUe93Z3Jp1UIzqMwUgAvA/i6v+4s1fgoCeL6CSWdwt351B6ks3t5AMxMtAOcf1M95TQX+m3rO0g+xlJ97LWTQXIrMXo4NPVw+fbp+c/b7/PfkSdAaaFwz8em03LEFttoK2m6hrZ9Z/akQyqdPE+lG+QmRnc2qJtEU09bt5+jLpqSBksT199zhK2YTmDd+FtX6ZItXACKfwdXpz7jlG7LdL/BiEllEfrhqgMRTygTYfwEbI4moxk/Oj9HHBqf/XQxdEajNNvh70QbCUD5Ul9GSiwWBeLnMlAfOOcpfkEQYjMoenCXhxcAReZrsmyjKpWgxEgQwk3nGFTSKUed/iNCcHHx6erp1uRL8xlvjCO9KpQskz5aA4lraCDDu8+Qr8nJz5TegJfHIAYmRcmUCXLKqw0kCltAGkzDZVeIhf0lYbM9TqgWnnNbipLsgyr1Lvo1b3ju+hXR8mrTSL5x9U8HtDYXn+DuAVNZSxfGS+Wf9K2GdBxnY0xjqZi2O42Ce/Hilkaws581vJ8725iJ/U+jKdM5wqX807vaEbKYWR1dNIh7pNebVKIUy3d6GNJzGextrdxM103eoXHXafxreQS+OsT7/r+EDVK3g7sV4fSuFf4n/vyP2d9pU4IYuo4DGswB9DxUuHO+2RQbTW/iMkSUvZpMopo6aKtE3q+6xAZOEg38+N9Zy8WvhdkGzXAOySwfyUXiJvFBzGY8QggvKVDJDCOasJiKw0WNdUP4VCs7Jg1d5M6lKqjVHoNOksdDOb3ouDxEIP7eYYvgj7YRykT8UynOq3zX5P2Gv3mVAXLJvlNdedspekPDe5W5Er1Y26Q7S8UnZa2cCxVarg9WOk26a75uXG6Qm772fF9ldC6sd8dPziC8FQzy9Q9JI68fSxS0IUDN9Et39ZOhJON56VZWYlmiR6VHcnT09rah4HzMCIGyERijkqL11F76g9WRVSj9K4ruuP/RFk1CRJf3NU+W+Ai8hNEOkGAnrFrbxKTws8+1ljufLu6+XL3/XYAKTG7e3x6+CFkxPibysJ5rJnSRpEZKk1pG2xLDTptyonZOgiSOTeJVbH23iYnkl5TtwxS5pwp2mThNDY1ps72lwArYwkAcFA603Eo49FUkLX96huw1Poa2tiDo0srVy8t5dkVx0dGJ+VjGkceI+VhH49QQLIWjWK8UWvRhnqqNLXx7J4qWfUcDfij1C/QOkIO9mBp7T/P7sHKxIMFQKY8Vkp69mCPlZaZfX6Plai3MSCFX1mClaZen9tTBWpprCfUqXVMPT1a9NL3Ir0ne+8zehDrb97Sic74fw==&lt;/diagram&gt;&lt;/mxfile&gt;" style="background-color: rgb(255, 255, 255);"><defs><style type="text/css">@import url(https://fonts.googleapis.com/css?family=Liberation+Sans);&#xa;</style></defs><g><rect x="9428" y="2640" width="1120" height="600" rx="90" ry="90" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><path d="M 8868 3120.57 Q 8656.57 3120.57 8656.57 1980.33" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" stroke-dasharray="12 12" pointer-events="stroke"/><path d="M 8656.57 1959.33 L 8665.9 1987.33 L 8656.57 1980.33 L 8647.24 1987.33 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><path d="M 9228 3600 Q 9228 3760.57 9608 3760.57 Q 9988 3760.57 9988 3280.42" fill="none" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 9988 3253.42 L 10006 3289.42 L 9988 3280.42 L 9970 3289.42 Z" fill="#000000" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="all"/><rect x="8868" y="2640" width="480" height="960" rx="72" ry="72" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><rect x="2868" y="2640" width="1080" height="960" rx="144" ry="144" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><rect x="1082" y="840" width="1080" height="440" rx="66" ry="66" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><rect x="2148" y="2640" width="560" height="960" rx="84" ry="84" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><path d="M 4928 160 L 4928 360" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 4928.57 160 L 4928.57 200.57 Q 4928.57 240.57 4888.57 240.57 L 1662.29 240.57 Q 1622.29 240.57 1622.19 280.57 L 1622.06 334.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1622.01 355.53 L 1608.08 327.49 L 1622.06 334.53 L 1636.08 327.56 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><path d="M 4928.57 160 L 4928.57 200.57 Q 4928.57 240.57 4968.57 240.57 L 5808.57 240.57 Q 5848.57 240.57 5848.38 280.57 L 5848.12 334.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 5848.02 355.53 L 5834.16 327.46 L 5848.12 334.53 L 5862.16 327.6 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><path d="M 4928.57 160 L 4928.57 200.57 Q 4928.57 240.57 4968.57 240.57 L 7273.71 240.57 Q 7313.71 240.57 7313.81 280.57 L 7313.94 334.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 7313.99 355.53 L 7299.92 327.56 L 7313.94 334.53 L 7327.92 327.49 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><path d="M 4928.57 160 L 4928.57 200.57 Q 4928.57 240.57 4888.57 240.57 L 2620 240.57 Q 2580 240.57 2580.01 280.57 L 2580.02 334.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 2580.02 355.53 L 2566.01 327.53 L 2580.02 334.53 L 2594.01 327.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="4788" y="0" width="280" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 68px; height: 1px; padding-top: 20px; margin-left: 1198px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">tmp</font></div></div></div></foreignObject><text x="1232" y="24" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">tmp</text></switch></g><path d="M 4928 520 L 4928 1040" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><rect x="4788" y="360" width="280" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 68px; height: 1px; padding-top: 110px; margin-left: 1198px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">work</font></div></div></div></foreignObject><text x="1232" y="114" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">work</text></switch></g><path d="M 4928 1200 L 4928.29 1240.57 Q 4928.57 1280.57 4968.57 1280.57 L 5648.57 1280.57 Q 5688.57 1280.57 5688.57 1320.29 L 5688.57 1360" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 4928 1200 L 4928.29 1240.57 Q 4928.57 1280.57 4888.57 1280.57 L 3156 1280.57 Q 3116 1280.57 3115.98 1320.29 L 3115.96 1360" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 4588 1120 Q 4398.29 1120.57 4398.24 1334.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" stroke-dasharray="12 12" pointer-events="stroke"/><path d="M 4398.24 1355.53 L 4388.91 1327.53 L 4398.24 1334.53 L 4407.58 1327.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="4588" y="1040" width="680" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 168px; height: 1px; padding-top: 280px; margin-left: 1148px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter"><b>${MULTIMACH_TARGET_OS}</b></font></div></div></div></foreignObject><text x="1232" y="284" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">${MULTIMACH_TARGET_OS}</text></switch></g><path d="M 3115.96 1520 L 3116 1680" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><rect x="2975.96" y="1360" width="280" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 68px; height: 1px; padding-top: 360px; margin-left: 745px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">libhello</font></div></div></div></foreignObject><text x="779" y="364" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">libhello</text></switch></g><path d="M 5688.57 1520 L 5688.57 1560.57 Q 5688.57 1600.57 5688.57 1570.29 L 5688.57 1555.14 Q 5688.57 1540 5688.29 1580 L 5688 1620" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><rect x="5548" y="1360" width="280" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 68px; height: 1px; padding-top: 360px; margin-left: 1388px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">sayhello</font></div></div></div></foreignObject><text x="1422" y="364" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">sayhello</text></switch></g><path d="M 3116 1840 L 3116 1960.57 Q 3116 2000.57 3076 2000.57 L 2036 2000.57 Q 1996 2000.57 1996 2040.57 L 1996 2134.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1996 2155.53 L 1986.67 2127.53 L 1996 2134.53 L 2005.33 2127.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><path d="M 3116 1840 L 3116 1960.57 Q 3116 2000.57 3076 2000.57 L 2468 2000.57 Q 2428 2000.57 2428 2040.57 L 2428 2134.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 2428 2155.53 L 2418.67 2127.53 L 2428 2134.53 L 2437.33 2127.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><path d="M 3116 1840 L 3115.96 2134.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 3115.96 2155.53 L 3101.96 2127.53 L 3115.96 2134.53 L 3129.96 2127.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><path d="M 3116 1840 L 3116 1960.57 Q 3116 2000.57 3156 2000.57 L 4268 2000.57 Q 4308 2000.57 4308 2040.57 L 4308 2134.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 4308 2155.53 L 4294 2127.53 L 4308 2134.53 L 4322 2127.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><path d="M 3116 1840 L 3116 1960.57 Q 3116 2000.57 3076 2000.57 L 1508 2000.57 Q 1468 2000.57 1468 2040.57 L 1468 2134.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1468 2155.53 L 1458.67 2127.53 L 1468 2134.53 L 1477.33 2127.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="2976" y="1680" width="280" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 68px; height: 1px; padding-top: 440px; margin-left: 745px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">0.1-r0</font></div></div></div></foreignObject><text x="779" y="444" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">0.1-r0</text></switch></g><path d="M 5688.57 1780 L 5688.57 1960.57 Q 5688.57 2000.57 5648.57 2000.57 L 5568.57 2000.57 Q 5528.57 2000.57 5528.43 2040.57 L 5528.09 2134.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 5528.02 2155.53 L 5514.12 2127.48 L 5528.09 2134.53 L 5542.12 2127.58 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><path d="M 5688.57 1780 L 5688.57 1960.57 Q 5688.57 2000.57 5728.57 2000.57 L 6988 2000.57 Q 7028 2000.57 7028 2040.57 L 7028 2134.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 7028 2155.53 L 7014 2127.53 L 7028 2134.53 L 7042 2127.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><path d="M 5688.57 1780 L 5688.57 1960.57 Q 5688.57 2000.57 5728.57 2000.57 L 7676 2000.57 Q 7716 2000.57 7715.99 2040.57 L 7715.97 2134.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 7715.96 2155.53 L 7701.97 2127.52 L 7715.97 2134.53 L 7729.97 2127.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><path d="M 5688.57 1780 L 5688.57 1960.57 Q 5688.57 2000.57 5728.57 2000.57 L 8313.71 2000.57 Q 8353.71 2000.57 8353.79 2040.57 L 8353.95 2134.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 8353.99 2155.53 L 8339.94 2127.55 L 8353.95 2134.53 L 8367.94 2127.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><path d="M 5688.57 1780 L 5688.57 1960.57 Q 5688.57 2000.57 5728.57 2000.57 L 9068 2000.57 Q 9108 2000.57 9108 2040.57 L 9108 2134.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 9108 2155.53 L 9094 2127.53 L 9108 2134.53 L 9122 2127.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><path d="M 5688.57 1780 L 5688.57 1960.57 Q 5688.57 2000.57 5728.57 2000.57 L 9948 2000.57 Q 9988 2000.57 9988 2040.57 L 9988 2134.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 9988 2155.53 L 9974 2127.53 L 9988 2134.53 L 10002 2127.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="5548" y="1620" width="280" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 68px; height: 1px; padding-top: 425px; margin-left: 1388px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">0.1-r0</font></div></div></div></foreignObject><text x="1422" y="429" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">0.1-r0</text></switch></g><path d="M 1622.29 520 L 1622.29 560.57 Q 1622.29 600.57 1622.29 560.57 L 1622.29 540.57 Q 1622.29 520.57 1622.29 560.29 L 1622.29 600" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1762 440 Q 2215.43 440.57 2215.04 205.47" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" stroke-dasharray="12 12" pointer-events="stroke"/><path d="M 2215.01 184.47 L 2224.39 212.46 L 2215.04 205.47 L 2205.72 212.49 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="1482" y="360" width="280" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 68px; height: 1px; padding-top: 110px; margin-left: 371px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">downloads</font></div></div></div></foreignObject><text x="405" y="114" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">downloads</text></switch></g><path d="M 1622 760 L 1622.14 800.57 Q 1622.29 840.57 1622.29 800.57 L 1622.29 780.57 Q 1622.29 760.57 1622.29 800.29 L 1622.29 840" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><rect x="1482" y="600" width="280" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 68px; height: 1px; padding-top: 170px; margin-left: 371px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">git2</font></div></div></div></foreignObject><text x="405" y="174" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">git2</text></switch></g><path d="M 2082 1160 L 2628 1160.53 Q 2668 1160.57 2668 1200.57 L 2668 2200.57 Q 2668 2240.57 2628 2240.41 L 2568.42 2240.16" fill="none" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 2541.42 2240.05 L 2577.49 2222.2 L 2568.42 2240.16 L 2577.34 2258.2 Z" fill="#000000" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="all"/><rect x="1162" y="880" width="920" height="160" rx="24" ry="24" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 228px; height: 1px; padding-top: 240px; margin-left: 291px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">github.com.&lt;username&gt;.sayhello</div></div></div></foreignObject><text x="405" y="244" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">github.com.&lt;username&gt;.sayhello</text></switch></g><path d="M 2082 960 L 6628 960.57 Q 6668 960.57 6668 1000.57 L 6668 2200.57 Q 6668 2240.57 6708 2240.48 L 6887.58 2240.09" fill="none" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 6914.58 2240.03 L 6878.62 2258.11 L 6887.58 2240.09 L 6878.54 2222.11 Z" fill="#000000" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="all"/><rect x="1162" y="1080" width="920" height="160" rx="24" ry="24" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 228px; height: 1px; padding-top: 290px; margin-left: 291px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">github.com.&lt;username&gt;.libhello</div></div></div></foreignObject><text x="405" y="294" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">github.com.&lt;username&gt;.libhello</text></switch></g><path d="M 2428 2320 Q 2428 2320 2428 2614.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 2428 2635.53 L 2414 2607.53 L 2428 2614.53 L 2442 2607.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="2328" y="2160" width="200" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 48px; height: 1px; padding-top: 560px; margin-left: 583px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">git</font></div></div></div></foreignObject><text x="607" y="564" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">git</text></switch></g><rect x="2212" y="2720" width="456" height="80" rx="12" ry="12" fill="#f5f5f5" stroke="#666666" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 112px; height: 1px; padding-top: 690px; margin-left: 554px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Makefile</div></div></div></foreignObject><text x="610" y="694" fill="#333333" font-family="Liberation Sans" font-size="12px" text-anchor="middle">Makefile</text></switch></g><path d="M 2212 2880.57 L 2117.14 2880.57 Q 2077.14 2880.57 2077.14 2840.57 L 2077.14 2714.86 Q 2077.14 2674.86 2037.14 2674.9 L 1966.47 2674.97" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" stroke-dasharray="12 12" pointer-events="stroke"/><path d="M 1945.47 2675 L 1973.46 2665.63 L 1966.47 2674.97 L 1973.48 2684.3 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="2212" y="2840" width="456" height="80" rx="12" ry="12" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 112px; height: 1px; padding-top: 720px; margin-left: 554px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">LICENSE</div></div></div></foreignObject><text x="610" y="724" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">LICENSE</text></switch></g><path d="M 2212 3000 Q 2028 3000.57 2028 3060.57 Q 2028 3120.57 2171.58 3120.13" fill="none" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 2198.58 3120.04 L 2162.62 3132.15 L 2171.58 3120.13 L 2162.55 3108.15 Z" fill="#000000" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="all"/><rect x="2212" y="2960" width="456" height="80" rx="12" ry="12" fill="#f5f5f5" stroke="#666666" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 112px; height: 1px; padding-top: 750px; margin-left: 554px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">fix.patch</div></div></div></foreignObject><text x="610" y="754" fill="#333333" font-family="Liberation Sans" font-size="12px" text-anchor="middle">fix.patch</text></switch></g><path d="M 2214.74 3151.44 Q 1988 3151.43 1988 3278.29 Q 1988 3405.14 2179.58 3405.02" fill="none" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 2206.58 3405.01 L 2170.6 3423.03 L 2179.58 3405.02 L 2170.57 3387.03 Z" fill="#000000" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="all"/><rect x="2212" y="3080" width="456" height="80" rx="12" ry="12" fill="#f5f5f5" stroke="#666666" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 112px; height: 1px; padding-top: 780px; margin-left: 554px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">hellolib.c</div></div></div></foreignObject><text x="610" y="784" fill="#333333" font-family="Liberation Sans" font-size="12px" text-anchor="middle">hellolib.c</text></switch></g><rect x="1896" y="2160" width="200" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 48px; height: 1px; padding-top: 560px; margin-left: 475px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">temp</font></div></div></div></foreignObject><text x="499" y="564" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">temp</text></switch></g><path d="M 4308 2320 L 4308 2640" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><rect x="4068" y="2160" width="480" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 560px; margin-left: 1018px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">sysroot-destdir</font></div></div></div></foreignObject><text x="1077" y="564" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">sysroot-destdir</text></switch></g><path d="M 5528 2320 L 5528 2614.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 5528 2635.53 L 5518.67 2607.53 L 5528 2614.53 L 5537.33 2607.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="5308" y="2160" width="440" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 108px; height: 1px; padding-top: 560px; margin-left: 1328px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">recipe-sysroot</font></div></div></div></foreignObject><text x="1382" y="564" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">recipe-sysroot</text></switch></g><path d="M 3116 2320 L 3116 2694.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 3116 2715.53 L 3106.67 2687.53 L 3116 2694.53 L 3125.33 2687.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="2989.96" y="2160" width="252" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 61px; height: 1px; padding-top: 560px; margin-left: 748px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">image</font></div></div></div></foreignObject><text x="779" y="564" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">image</text></switch></g><path d="M 3116 2880 L 3116 2920.57 Q 3116 2960.57 3115.99 2987.55 L 3115.99 3014.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 3115.98 3035.53 L 3106.65 3007.53 L 3115.99 3014.53 L 3125.32 3007.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><path d="M 3116 2880 Q 3116 2960.57 3354.86 2960.57 Q 3593.71 2960.57 3593.91 3014.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 3593.98 3035.53 L 3584.55 3007.56 L 3593.91 3014.53 L 3603.22 3007.49 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="3029" y="2720" width="174" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 42px; height: 1px; padding-top: 700px; margin-left: 758px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">usr</font></div></div></div></foreignObject><text x="779" y="704" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">usr</text></switch></g><path d="M 3115.98 3200 L 3116 3294.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 3116 3315.53 L 3106.66 3287.53 L 3116 3294.53 L 3125.33 3287.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="3008.48" y="3040" width="215" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 52px; height: 1px; padding-top: 780px; margin-left: 753px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">include</font></div></div></div></foreignObject><text x="779" y="784" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">include</text></switch></g><path d="M 3593.71 3200 L 3593.71 3240.57 Q 3593.71 3280.57 3593.76 3287.55 L 3593.82 3294.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 3593.97 3315.53 L 3579.77 3287.63 L 3593.82 3294.53 L 3607.76 3287.43 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="3507" y="3040" width="174" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 42px; height: 1px; padding-top: 780px; margin-left: 878px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">lib</font></div></div></div></foreignObject><text x="899" y="784" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">lib</text></switch></g><rect x="2956" y="3320" width="320" height="100" rx="15" ry="15" fill="#f5f5f5" stroke="#666666" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 843px; margin-left: 740px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">hellolib.h</div></div></div></foreignObject><text x="779" y="846" fill="#333333" font-family="Liberation Sans" font-size="12px" text-anchor="middle">hellolib.h</text></switch></g><rect x="3348" y="3350" width="480" height="80" rx="12" ry="12" fill="#f5f5f5" stroke="#666666" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 848px; margin-left: 838px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">libhello.so.1</div></div></div></foreignObject><text x="897" y="851" fill="#333333" font-family="Liberation Sans" font-size="12px" text-anchor="middle">libhello.so.1</text></switch></g><rect x="3348" y="3450" width="480" height="100" rx="15" ry="15" fill="#f5f5f5" stroke="#666666" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 875px; margin-left: 838px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">libhello.so.1.0</div></div></div></foreignObject><text x="897" y="879" fill="#333333" font-family="Liberation Sans" font-size="12px" text-anchor="middle">libhello.so.1.0</text></switch></g><rect x="3320" y="3320" width="548" height="250" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><path d="M 4428 3600 Q 4428 3760.57 4978.29 3760.57 Q 5528.57 3760.57 5528.14 3640.42" fill="none" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 5528.05 3613.42 L 5546.18 3649.35 L 5528.14 3640.42 L 5510.18 3649.48 Z" fill="#000000" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="all"/><rect x="4068" y="2640" width="480" height="960" rx="72" ry="72" fill="#eeeeee" stroke="#36393d" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 780px; margin-left: 1018px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Everything in <b>image</b> folder that is present in <b>SYSROOT_DIRS</b> will be copied here.</div></div></div></foreignObject><text x="1077" y="784" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">Everything in image...</text></switch></g><path d="M 3678 3600 Q 3678.29 3760.57 3993.14 3760.57 Q 4308 3760.57 4308 3640.42" fill="none" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 4308 3613.42 L 4326 3649.42 L 4308 3640.42 L 4290 3649.42 Z" fill="#000000" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="all"/><path d="M 2428 3600 Q 2428 3760.57 2941.14 3760.57 Q 3454.29 3760.57 3454.4 3639.46" fill="none" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 3454.43 3612.46 L 3472.39 3648.47 L 3454.4 3639.46 L 3436.39 3648.44 Z" fill="#000000" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="all"/><rect x="2748" y="3680" width="360" height="120" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 935px; margin-left: 732px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_install</font></div></div></div></foreignObject><text x="732" y="939" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">do_install</text></switch></g><rect x="2220" y="3350" width="456" height="110" rx="16.5" ry="16.5" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 112px; height: 1px; padding-top: 851px; margin-left: 556px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">libhello.so.1.0</div></div></div></foreignObject><text x="612" y="855" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">libhello.so.1.0</text></switch></g><rect x="1668" y="3180" width="440" height="120" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 810px; margin-left: 472px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_configure<br /></font></div></div></div></foreignObject><text x="472" y="814" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">do_configure&#xa;</text></switch></g><rect x="2212" y="3200" width="456" height="80" rx="12" ry="12" fill="#f5f5f5" stroke="#666666" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 112px; height: 1px; padding-top: 810px; margin-left: 554px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">hellolib.h</div></div></div></foreignObject><text x="610" y="814" fill="#333333" font-family="Liberation Sans" font-size="12px" text-anchor="middle">hellolib.h</text></switch></g><rect x="1788" y="3000" width="320" height="120" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 765px; margin-left: 487px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_patch<br /></font></div></div></div></foreignObject><text x="487" y="769" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">do_patch&#xa;</text></switch></g><rect x="2494" y="1620" width="360" height="120" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 420px; margin-left: 669px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_unpack<br /></font></div></div></div></foreignObject><text x="669" y="424" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">do_unpack&#xa;</text></switch></g><ellipse cx="2434" cy="1680" rx="60.00000000000001" ry="60.00000000000001" fill="#000000" stroke="#56517e" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 420px; margin-left: 595px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1"><b style="font-size: 15px;">6</b></font></div></div></div></foreignObject><text x="609" y="424" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">6</text></switch></g><ellipse cx="1728" cy="3060" rx="60.00000000000001" ry="60.00000000000001" fill="#000000" stroke="#56517e" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 765px; margin-left: 418px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1"><b style="font-size: 15px;">7</b></font></div></div></div></foreignObject><text x="432" y="769" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">7</text></switch></g><ellipse cx="1608" cy="3240" rx="60.00000000000001" ry="60.00000000000001" fill="#000000" stroke="#56517e" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 810px; margin-left: 388px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1"><b style="font-size: 15px;">8</b></font></div></div></div></foreignObject><text x="402" y="814" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">8</text></switch></g><rect x="1748" y="3310" width="360" height="120" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 843px; margin-left: 482px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_compile<br /></font></div></div></div></foreignObject><text x="482" y="846" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">do_compile&#xa;</text></switch></g><ellipse cx="1688" cy="3370" rx="60.00000000000001" ry="60.00000000000001" fill="#000000" stroke="#56517e" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 843px; margin-left: 408px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1"><b style="font-size: 15px;">9</b></font></div></div></div></foreignObject><text x="422" y="846" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">9</text></switch></g><ellipse cx="2688" cy="3740" rx="60.00000000000001" ry="60.00000000000001" fill="#000000" stroke="#56517e" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 935px; margin-left: 658px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1"><b style="font-size: 15px;">10</b></font></div></div></div></foreignObject><text x="672" y="939" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">10</text></switch></g><rect x="3728" y="3680" width="640" height="120" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 935px; margin-left: 1012px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_populate_sysroot</font></div></div></div></foreignObject><text x="1012" y="939" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">do_populate_sysroot</text></switch></g><ellipse cx="3668" cy="3740" rx="60.00000000000001" ry="60.00000000000001" fill="#000000" stroke="#56517e" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 935px; margin-left: 903px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1"><b style="font-size: 15px;">11</b></font></div></div></div></foreignObject><text x="917" y="939" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">11</text></switch></g><path d="M 7028 3280 Q 7028 3760.57 7372 3760.57 Q 7716 3760.57 7715.97 3640.42" fill="none" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 7715.96 3613.42 L 7733.97 3649.41 L 7715.97 3640.42 L 7697.97 3649.42 Z" fill="#000000" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="all"/><rect x="6748" y="2640" width="560" height="640" rx="84" ry="84" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><path d="M 7028 2320 Q 7028 2320 7028 2614.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 7028 2635.53 L 7014 2607.53 L 7028 2614.53 L 7042 2607.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="6928" y="2160" width="200" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 48px; height: 1px; padding-top: 560px; margin-left: 1733px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">git</font></div></div></div></foreignObject><text x="1757" y="564" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">git</text></switch></g><rect x="6800" y="2720" width="456" height="80" rx="12" ry="12" fill="#f5f5f5" stroke="#666666" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 112px; height: 1px; padding-top: 690px; margin-left: 1701px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Makefile</div></div></div></foreignObject><text x="1757" y="694" fill="#333333" font-family="Liberation Sans" font-size="12px" text-anchor="middle">Makefile</text></switch></g><rect x="6800" y="2840" width="456" height="80" rx="12" ry="12" fill="#f5f5f5" stroke="#666666" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 112px; height: 1px; padding-top: 720px; margin-left: 1701px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">LICENSE</div></div></div></foreignObject><text x="1757" y="724" fill="#333333" font-family="Liberation Sans" font-size="12px" text-anchor="middle">LICENSE</text></switch></g><path d="M 6800 3000 Q 6588 3000.57 6588 3088 Q 6588 3175.43 6759.58 3175.08" fill="none" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 6786.58 3175.03 L 6750.62 3193.1 L 6759.58 3175.08 L 6750.55 3157.1 Z" fill="#000000" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="all"/><rect x="6800" y="2960" width="456" height="80" rx="12" ry="12" fill="#f5f5f5" stroke="#666666" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 112px; height: 1px; padding-top: 750px; margin-left: 1701px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">sayhello.c</div></div></div></foreignObject><text x="1757" y="754" fill="#333333" font-family="Liberation Sans" font-size="12px" text-anchor="middle">sayhello.c</text></switch></g><rect x="6800" y="3120" width="456" height="110" rx="16.5" ry="16.5" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 112px; height: 1px; padding-top: 794px; margin-left: 1701px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">sayhello</div></div></div></foreignObject><text x="1757" y="797" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">sayhello</text></switch></g><path d="M 7835.96 3600 Q 7828 3760.57 8090.86 3760.57 Q 8353.71 3760.57 8353.94 3640.42" fill="none" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 8353.99 3613.42 L 8371.93 3649.45 L 8353.94 3640.42 L 8335.93 3649.38 Z" fill="#000000" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="all"/><rect x="7475.96" y="2640" width="480" height="960" rx="72" ry="72" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><path d="M 7715.96 2320 L 7715.96 2614.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 7715.96 2635.53 L 7706.63 2607.53 L 7715.96 2614.53 L 7725.29 2607.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="7589.96" y="2160" width="252" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 61px; height: 1px; padding-top: 560px; margin-left: 1898px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">image</font></div></div></div></foreignObject><text x="1929" y="564" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">image</text></switch></g><path d="M 7716 2880 L 7716 2940 Q 7716 2980 7716.01 3017.26 L 7716.01 3054.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 7716.02 3075.53 L 7706.68 3047.53 L 7716.01 3054.53 L 7725.35 3047.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="7629" y="2720" width="174" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 42px; height: 1px; padding-top: 700px; margin-left: 1908px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">usr</font></div></div></div></foreignObject><text x="1929" y="704" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">usr</text></switch></g><path d="M 7716.02 3240 L 7716 3394.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 7716 3415.53 L 7706.67 3387.53 L 7716 3394.53 L 7725.34 3387.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="7608.52" y="3080" width="215" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 52px; height: 1px; padding-top: 790px; margin-left: 1903px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">bin</font></div></div></div></foreignObject><text x="1929" y="794" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">bin</text></switch></g><rect x="1268" y="2160" width="400" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 560px; margin-left: 318px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">libhello-0.1</font></div></div></div></foreignObject><text x="367" y="564" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">libhello-0.1</text></switch></g><path d="M 1241 2160 Q 1241.71 2220 1245.14 2050.29 Q 1248.57 1880.57 1785.14 1880.57 Q 2321.71 1880.57 2321.08 2127.06" fill="none" stroke="#000000" stroke-width="8" stroke-miterlimit="10" stroke-dasharray="8 16" pointer-events="stroke"/><path d="M 2321.02 2151.06 L 2310.44 2119.03 L 2321.08 2127.06 L 2331.77 2119.08 Z" fill="#000000" stroke="#000000" stroke-width="8" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 472px; margin-left: 435px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); border-color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); border: 1px solid rgb(0, 0, 0); white-space: nowrap;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" style="font-size: 14px;">S = "${WORKDIR}/git"</font></div></div></div></foreignObject><text x="435" y="475" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="11px" text-anchor="middle">S = "${WORKDIR}/git"</text></switch></g><rect x="3203" y="1620" width="252" height="100" rx="15" ry="15" fill="#000000" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 61px; height: 1px; padding-top: 418px; margin-left: 802px;"><div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">WORKDIR</font></div></div></div></foreignObject><text x="832" y="421" fill="#ffffff" font-family="Liberation Sans" font-size="12px" text-anchor="middle" font-weight="bold">WORKDIR</text></switch></g><rect x="2923" y="2160" width="106" height="100" rx="15" ry="15" fill="#000000" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 24px; height: 1px; padding-top: 553px; margin-left: 732px;"><div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">D</font></div></div></div></foreignObject><text x="744" y="556" fill="#ffffff" font-family="Liberation Sans" font-size="12px" text-anchor="middle" font-weight="bold">D</text></switch></g><rect x="2268" y="2160" width="106" height="100" rx="15" ry="15" fill="#000000" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 24px; height: 1px; padding-top: 553px; margin-left: 568px;"><div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">S</font></div></div></div></foreignObject><text x="580" y="556" fill="#ffffff" font-family="Liberation Sans" font-size="12px" text-anchor="middle" font-weight="bold">S</text></switch></g><rect x="2162" y="2160" width="106" height="100" rx="15" ry="15" fill="#000000" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 24px; height: 1px; padding-top: 553px; margin-left: 542px;"><div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">B</font></div></div></div></foreignObject><text x="554" y="556" fill="#ffffff" font-family="Liberation Sans" font-size="12px" text-anchor="middle" font-weight="bold">B</text></switch></g><rect x="1188" y="2160" width="106" height="100" rx="15" ry="15" fill="#000000" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 24px; height: 1px; padding-top: 553px; margin-left: 298px;"><div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">S</font></div></div></div></foreignObject><text x="310" y="556" fill="#ffffff" font-family="Liberation Sans" font-size="12px" text-anchor="middle" font-weight="bold">S</text></switch></g><rect x="1835" y="2160" width="106" height="100" rx="15" ry="15" fill="#000000" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 24px; height: 1px; padding-top: 553px; margin-left: 460px;"><div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">T</font></div></div></div></foreignObject><text x="472" y="556" fill="#ffffff" font-family="Liberation Sans" font-size="12px" text-anchor="middle" font-weight="bold">T</text></switch></g><rect x="3628" y="3160" width="200" height="100" rx="15" ry="15" fill="#000000" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 48px; height: 1px; padding-top: 803px; margin-left: 908px;"><div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">libdir</font></div></div></div></foreignObject><text x="932" y="806" fill="#ffffff" font-family="Liberation Sans" font-size="12px" text-anchor="middle" font-weight="bold">libdir</text></switch></g><rect x="3135" y="3160" width="320" height="100" rx="15" ry="15" fill="#000000" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 803px; margin-left: 785px;"><div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">includedir</font></div></div></div></foreignObject><text x="824" y="806" fill="#ffffff" font-family="Liberation Sans" font-size="12px" text-anchor="middle" font-weight="bold">includedir</text></switch></g><rect x="5603.48" y="2280" width="464.52" height="100" rx="15" ry="15" fill="#000000" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 114px; height: 1px; padding-top: 583px; margin-left: 1402px;"><div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">RECIPE_SYSROOT</font></div></div></div></foreignObject><text x="1459" y="586" fill="#ffffff" font-family="Liberation Sans" font-size="12px" text-anchor="middle" font-weight="bold">RECIPE_SYSROOT</text></switch></g><path d="M 7226.86 2260 Q 7226.86 2110.29 7197.14 2110.29 Q 7167.43 2110.29 7167.49 1985.47" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" stroke-dasharray="12 12" pointer-events="stroke"/><path d="M 7167.5 1964.47 L 7176.82 1992.48 L 7167.49 1985.47 L 7158.15 1992.47 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="7174" y="2260" width="106" height="100" rx="15" ry="15" fill="#000000" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 24px; height: 1px; padding-top: 578px; margin-left: 1795px;"><div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">S</font></div></div></div></foreignObject><text x="1807" y="581" fill="#ffffff" font-family="Liberation Sans" font-size="12px" text-anchor="middle" font-weight="bold">S</text></switch></g><rect x="7068" y="2260" width="106" height="100" rx="15" ry="15" fill="#000000" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 24px; height: 1px; padding-top: 578px; margin-left: 1768px;"><div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">B</font></div></div></div></foreignObject><text x="1780" y="581" fill="#ffffff" font-family="Liberation Sans" font-size="12px" text-anchor="middle" font-weight="bold">B</text></switch></g><rect x="7803" y="2260" width="106" height="100" rx="15" ry="15" fill="#000000" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 24px; height: 1px; padding-top: 578px; margin-left: 1952px;"><div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">D</font></div></div></div></foreignObject><text x="1964" y="581" fill="#ffffff" font-family="Liberation Sans" font-size="12px" text-anchor="middle" font-weight="bold">D</text></switch></g><rect x="5788" y="1580" width="252" height="100" rx="15" ry="15" fill="#000000" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 61px; height: 1px; padding-top: 408px; margin-left: 1448px;"><div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">WORKDIR</font></div></div></div></foreignObject><text x="1479" y="411" fill="#ffffff" font-family="Liberation Sans" font-size="12px" text-anchor="middle" font-weight="bold">WORKDIR</text></switch></g><rect x="4640" y="3680" width="800" height="120" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 935px; margin-left: 1260px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_prepare_recipe_sysroot</font></div></div></div></foreignObject><text x="1260" y="939" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">do_prepare_recipe_sysroot</text></switch></g><rect x="7536" y="3420" width="360" height="110" rx="16.5" ry="16.5" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 88px; height: 1px; padding-top: 869px; margin-left: 1885px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">sayhello</div></div></div></foreignObject><text x="1929" y="872" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">sayhello</text></switch></g><rect x="4988" y="2640" width="1080" height="960" rx="144" ry="144" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><path d="M 5236 2880 Q 5236 2960.57 5235.99 3014.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 5235.98 3035.53 L 5226.65 3007.53 L 5235.99 3014.53 L 5245.32 3007.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><path d="M 5236 2880 Q 5236 2960.57 5474.86 2960.57 Q 5713.71 2960.57 5713.91 3014.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 5713.98 3035.53 L 5704.55 3007.56 L 5713.91 3014.53 L 5723.22 3007.49 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="5149" y="2720" width="174" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 42px; height: 1px; padding-top: 700px; margin-left: 1288px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">usr</font></div></div></div></foreignObject><text x="1309" y="704" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">usr</text></switch></g><path d="M 5235.98 3200 L 5236 3294.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 5236 3315.53 L 5226.66 3287.53 L 5236 3294.53 L 5245.33 3287.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="5128.48" y="3040" width="215" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 52px; height: 1px; padding-top: 780px; margin-left: 1283px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">include</font></div></div></div></foreignObject><text x="1309" y="784" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">include</text></switch></g><path d="M 5713.71 3200 L 5713.71 3240.57 Q 5713.71 3280.57 5713.76 3287.55 L 5713.82 3294.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 5713.97 3315.53 L 5704.43 3287.6 L 5713.82 3294.53 L 5723.1 3287.46 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="5627" y="3040" width="174" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 42px; height: 1px; padding-top: 780px; margin-left: 1408px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">lib</font></div></div></div></foreignObject><text x="1429" y="784" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">lib</text></switch></g><rect x="5076" y="3320" width="320" height="100" rx="15" ry="15" fill="#f5f5f5" stroke="#666666" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 843px; margin-left: 1270px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">hellolib.h</div></div></div></foreignObject><text x="1309" y="846" fill="#333333" font-family="Liberation Sans" font-size="12px" text-anchor="middle">hellolib.h</text></switch></g><rect x="5468" y="3350" width="480" height="80" rx="12" ry="12" fill="#f5f5f5" stroke="#666666" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 848px; margin-left: 1368px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">libhello.so.1</div></div></div></foreignObject><text x="1427" y="851" fill="#333333" font-family="Liberation Sans" font-size="12px" text-anchor="middle">libhello.so.1</text></switch></g><rect x="5468" y="3450" width="480" height="100" rx="15" ry="15" fill="#f5f5f5" stroke="#666666" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 875px; margin-left: 1368px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">libhello.so.1.0</div></div></div></foreignObject><text x="1427" y="879" fill="#333333" font-family="Liberation Sans" font-size="12px" text-anchor="middle">libhello.so.1.0</text></switch></g><rect x="5440" y="3320" width="548" height="250" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><rect x="3880" y="1680" width="1560" height="280" fill="none" stroke="#36393d" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 455px; margin-left: 1165px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" style="font-size: 15px;">This also contains other files from other <br />dependencies. Default dependencies are:<br />basically <b style=""><u>gcc</u></b>, <b style=""><u>compilerlibs</u></b> and <b style=""><u style="">libc</u></b></font></div></div></div></foreignObject><text x="1165" y="459" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">This also contains other files from other...</text></switch></g><rect x="4368" y="2280" width="510" height="100" rx="15" ry="15" fill="#000000" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 126px; height: 1px; padding-top: 583px; margin-left: 1093px;"><div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">SYSROOT_DESTDIR</font></div></div></div></foreignObject><text x="1156" y="586" fill="#ffffff" font-family="Liberation Sans" font-size="12px" text-anchor="middle" font-weight="bold">SYSROOT_DESTDIR</text></switch></g><path d="M 330 960 L 1121.58 960" fill="none" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1148.58 960 L 1112.58 978 L 1121.58 960 L 1112.58 942 Z" fill="#000000" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="all"/><path d="M 330 1160 L 1121.58 1160" fill="none" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1148.58 1160 L 1112.58 1178 L 1121.58 1160 L 1112.58 1142 Z" fill="#000000" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="all"/><rect x="2" y="860" width="328" height="400" rx="49.2" ry="49.2" fill="#000000" stroke="#23445d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 80px; height: 1px; padding-top: 265px; margin-left: 1px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font color="#fcfcfc">Github</font></div></div></div></foreignObject><text x="41" y="269" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">Github</text></switch></g><rect x="535" y="900" width="320" height="120" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 240px; margin-left: 174px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_fetch<br /></font></div></div></div></foreignObject><text x="174" y="244" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">do_fetch&#xa;</text></switch></g><ellipse cx="475" cy="960" rx="60.00000000000001" ry="60.00000000000001" fill="#000000" stroke="#56517e" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 240px; margin-left: 105px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1"><b style="font-size: 15px;">1</b></font></div></div></div></foreignObject><text x="119" y="244" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">1</text></switch></g><rect x="535" y="1100" width="320" height="120" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 290px; margin-left: 174px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_fetch<br /></font></div></div></div></foreignObject><text x="174" y="294" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">do_fetch&#xa;</text></switch></g><ellipse cx="475" cy="1160" rx="60.00000000000001" ry="60.00000000000001" fill="#000000" stroke="#56517e" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 290px; margin-left: 105px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1"><b style="font-size: 15px;">5</b></font></div></div></div></foreignObject><text x="119" y="294" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">5</text></switch></g><rect x="6228" y="2980" width="440" height="120" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 760px; margin-left: 1612px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_configure<br /></font></div></div></div></foreignObject><text x="1612" y="764" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">do_configure&#xa;</text></switch></g><ellipse cx="6168" cy="3040" rx="60.00000000000001" ry="60.00000000000001" fill="#000000" stroke="#56517e" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 760px; margin-left: 1528px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1"><b style="font-size: 15px;">12</b></font></div></div></div></foreignObject><text x="1542" y="764" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">12</text></switch></g><rect x="6308" y="3110" width="360" height="120" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 793px; margin-left: 1622px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_compile<br /></font></div></div></div></foreignObject><text x="1622" y="796" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">do_compile&#xa;</text></switch></g><ellipse cx="6248" cy="3170" rx="60.00000000000001" ry="60.00000000000001" fill="#000000" stroke="#56517e" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 793px; margin-left: 1548px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1"><b style="font-size: 15px;">13</b></font></div></div></div></foreignObject><text x="1562" y="796" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">13</text></switch></g><rect x="2508" y="900" width="360" height="120" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 240px; margin-left: 672px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_unpack<br /></font></div></div></div></foreignObject><text x="672" y="244" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">do_unpack&#xa;</text></switch></g><ellipse cx="2448" cy="960" rx="60.00000000000001" ry="60.00000000000001" fill="#000000" stroke="#56517e" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 240px; margin-left: 598px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1"><b style="font-size: 15px;">2</b></font></div></div></div></foreignObject><text x="612" y="244" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">2</text></switch></g><path d="M 5848.57 520 Q 5848.57 600.57 5849.05 594.61" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 5847.36 615.54 L 5835.66 586.51 L 5849.05 594.61 L 5863.57 588.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><path d="M 5848.57 520 Q 5848.57 560.57 5593.14 560.57 Q 5337.71 560.57 5337.31 594.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 5337.05 615.53 L 5323.39 587.36 L 5337.31 594.53 L 5351.39 587.7 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><path d="M 5848.57 520 Q 5848.57 560.57 6108.57 560.57 Q 6368.57 560.57 6368.24 594.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 6368.04 615.53 L 6354.31 587.39 L 6368.24 594.53 L 6382.31 587.66 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="5708" y="360" width="280" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 68px; height: 1px; padding-top: 110px; margin-left: 1428px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">conf</font></div></div></div></foreignObject><text x="1462" y="114" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">conf</text></switch></g><path d="M 5149 660 Q 5108 660 5108 510.29 Q 5108 360.57 5252 360.57 Q 5396 360.57 5396 205.47" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" stroke-dasharray="12 12" pointer-events="stroke"/><path d="M 5396 184.47 L 5405.33 212.47 L 5396 205.47 L 5386.67 212.47 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="5149" y="620" width="376" height="80" rx="12" ry="12" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 92px; height: 1px; padding-top: 165px; margin-left: 1288px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">local.conf</div></div></div></foreignObject><text x="1334" y="169" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">local.conf</text></switch></g><path d="M 5847.43 700 Q 5847.43 860 6048 860 Q 6248.57 860 6248.09 994.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" stroke-dasharray="12 12" pointer-events="stroke"/><path d="M 6248.02 1015.53 L 6238.78 987.49 L 6248.09 994.53 L 6257.45 987.56 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="5627" y="620" width="440" height="80" rx="12" ry="12" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 108px; height: 1px; padding-top: 165px; margin-left: 1408px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">bblayers.conf</div></div></div></foreignObject><text x="1462" y="169" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">bblayers.conf</text></switch></g><rect x="6707" y="1360" width="921" height="600" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 228px; height: 1px; padding-top: 415px; margin-left: 1678px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 15px;"><b><u>S</u></b> defaults generally to <b><u>${WORKDIR}/${BPN}-${PV}</u></b><br />In <b>git</b> recipes change it to <b><u>${WORKDIR}/git</u></b></font></div></div></div></foreignObject><text x="1792" y="419" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">S defaults generally to ${WORKDIR}/${B...</text></switch></g><rect x="6228" y="2700" width="440" height="160" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 695px; margin-left: 1612px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_patch<br /><i>(No patches)</i><br /></font></div></div></div></foreignObject><text x="1612" y="699" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">do_patch...</text></switch></g><ellipse cx="6168" cy="2780" rx="60.00000000000001" ry="60.00000000000001" fill="#000000" stroke="#56517e" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 695px; margin-left: 1528px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1"><b style="font-size: 15px;">3</b></font></div></div></div></foreignObject><text x="1542" y="699" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">3</text></switch></g><ellipse cx="4580" cy="3740" rx="60.00000000000001" ry="60.00000000000001" fill="#000000" stroke="#56517e" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 935px; margin-left: 1131px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1"><b style="font-size: 15px;">4</b></font></div></div></div></foreignObject><text x="1145" y="939" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">4</text></switch></g><rect x="6927" y="3560" width="360" height="120" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 905px; margin-left: 1777px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_install<br /></font></div></div></div></foreignObject><text x="1777" y="909" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">do_install&#xa;</text></switch></g><ellipse cx="6868" cy="3620" rx="60.00000000000001" ry="60.00000000000001" fill="#000000" stroke="#56517e" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 905px; margin-left: 1703px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1"><b style="font-size: 15px;">14</b></font></div></div></div></foreignObject><text x="1717" y="909" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">14</text></switch></g><path d="M 8354.02 2320 L 8354.02 2614.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 8354.02 2635.53 L 8344.69 2607.53 L 8354.02 2614.53 L 8363.35 2607.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="8228" y="2160" width="252" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 61px; height: 1px; padding-top: 560px; margin-left: 2058px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">package</font></div></div></div></foreignObject><text x="2089" y="564" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">package</text></switch></g><rect x="8441.04" y="2260" width="146.96" height="100" rx="15" ry="15" fill="#000000" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 35px; height: 1px; padding-top: 578px; margin-left: 2111px;"><div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">PKGD</font></div></div></div></foreignObject><text x="2129" y="581" fill="#ffffff" font-family="Liberation Sans" font-size="12px" text-anchor="middle" font-weight="bold">PKGD</text></switch></g><path d="M 8461.77 3600 Q 8461.14 3760.57 8784.57 3760.57 Q 9108 3760.57 9108 3640.42" fill="none" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 9108 3613.42 L 9126 3649.42 L 9108 3640.42 L 9090 3649.42 Z" fill="#000000" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="all"/><rect x="8138.52" y="2640" width="431" height="960" rx="64.65" ry="64.65" fill="#eeeeee" stroke="#36393d" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 106px; height: 1px; padding-top: 780px; margin-left: 2036px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">A copy of <b>${D}<br /></b>excluding<br /><b>/sysroot-only</b></div></div></div></foreignObject><text x="2089" y="784" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">A copy of ${D}...</text></switch></g><rect x="7960.96" y="3680" width="360" height="120" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 935px; margin-left: 2035px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_package<br /></font></div></div></div></foreignObject><text x="2035" y="939" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">do_package&#xa;</text></switch></g><ellipse cx="7901.96" cy="3740" rx="60.00000000000001" ry="60.00000000000001" fill="#000000" stroke="#56517e" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 935px; margin-left: 1961px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1"><b style="font-size: 15px;">15</b></font></div></div></div></foreignObject><text x="1975" y="939" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">15</text></switch></g><path d="M 9108 2320 L 9108 2614.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 9108 2635.53 L 9098.67 2607.53 L 9108 2614.53 L 9117.33 2607.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="8868" y="2160" width="480" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 560px; margin-left: 2218px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">packages-split</font></div></div></div></foreignObject><text x="2277" y="564" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">packages-split</text></switch></g><rect x="9308" y="2260" width="240" height="100" rx="15" ry="15" fill="#000000" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 578px; margin-left: 2328px;"><div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">PKGDEST</font></div></div></div></foreignObject><text x="2357" y="581" fill="#ffffff" font-family="Liberation Sans" font-size="12px" text-anchor="middle" font-weight="bold">PKGDEST</text></switch></g><path d="M 9108 2840 L 9108 2895.1" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 9108 2916.1 L 9098.67 2888.1 L 9108 2895.1 L 9117.33 2888.1 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="8982" y="2680" width="252" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 61px; height: 1px; padding-top: 690px; margin-left: 2247px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">sayhello</font></div></div></div></foreignObject><text x="2277" y="694" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">sayhello</text></switch></g><path d="M 9108 3080 L 9108 3120.57 Q 9108 3160.57 9108 3162.55 L 9108 3164.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 9107.98 3185.53 L 9098.67 3157.52 L 9108 3164.53 L 9117.34 3157.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="9021" y="2920" width="174" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 42px; height: 1px; padding-top: 750px; margin-left: 2256px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">usr</font></div></div></div></foreignObject><text x="2277" y="754" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">usr</text></switch></g><path d="M 9107.98 3350 L 9107.97 3414.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 9107.96 3435.53 L 9098.63 3407.53 L 9107.97 3414.53 L 9117.3 3407.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="9000.48" y="3190" width="215" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 52px; height: 1px; padding-top: 818px; margin-left: 2251px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">bin</font></div></div></div></foreignObject><text x="2277" y="821" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">bin</text></switch></g><rect x="7689.48" y="1360" width="1287" height="595" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 320px; height: 1px; padding-top: 414px; margin-left: 1923px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><span style="font-size: 15px;">Folders created here are present in <b><u>PACKAGES</u></b> variable, BitBake knows what and where to put things using the <b><u>FILES</u></b> variable, example: <b><u>FILES:${PN}</u></b> files will go to <b><u>${PN}</u></b> folder which is in <b><u>PACKAGES</u></b></span></div></div></div></foreignObject><text x="2083" y="418" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">Folders created here are present in PACKAGES variable...</text></switch></g><rect x="8640.48" y="3680" width="360" height="120" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 935px; margin-left: 2205px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_package<br /></font></div></div></div></foreignObject><text x="2205" y="939" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">do_package&#xa;</text></switch></g><ellipse cx="8581.48" cy="3740" rx="60.00000000000001" ry="60.00000000000001" fill="#000000" stroke="#56517e" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 935px; margin-left: 2131px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1"><b style="font-size: 15px;">16</b></font></div></div></div></foreignObject><text x="2145" y="939" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">16</text></switch></g><path d="M 9988 2320 L 9988 2674.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 9988 2695.53 L 9978.67 2667.53 L 9988 2674.53 L 9997.33 2667.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="9748" y="2160" width="480" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 560px; margin-left: 2438px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">deploy-<b><i>pkg</i></b></font></div></div></div></foreignObject><text x="2497" y="564" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">deploy-pkg</text></switch></g><path d="M 9988 2860 L 9988 3014.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 9988 3035.53 L 9978.67 3007.53 L 9988 3014.53 L 9997.33 3007.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="9748" y="2700" width="480" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 695px; margin-left: 2438px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter"><b>${PACKAGE_ARCH}</b></font></div></div></div></foreignObject><text x="2497" y="699" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">${PACKAGE_ARCH}</text></switch></g><rect x="9028" y="1360" width="1640" height="595" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 408px; height: 1px; padding-top: 414px; margin-left: 2258px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 15px;">This can be <b><u>rpms</u></b>, <b><u>debs</u></b> or <b><u>ipks</u></b>.<br />These are provided by<br /><b><u>package_rpm</u></b>, <b><u>package_deb</u></b> and <b><u>package_ipk</u></b> classes respectively, use <b><u>PACKAGE_CLASSES</u></b> for that as<br />content of <b><u>PACKAGE_CLASSES</u></b> will be appended<br />to <b><u>INHERIT</u></b><br /></font></div></div></div></foreignObject><text x="2462" y="418" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">This can be rpms, debs or ipks....</text></switch></g><path d="M 10522 3105 L 10708 3105.59 Q 10748 3105.71 10748 3065.71 L 10748 1320.57 Q 10748 1280.57 10708 1280.57 L 7353.71 1280.57 Q 7313.71 1280.57 7313.8 1240.57 L 7313.92 1180.42" fill="none" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 7313.97 1153.42 L 7331.9 1189.45 L 7313.92 1180.42 L 7295.9 1189.38 Z" fill="#000000" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="all"/><rect x="9454" y="3040" width="1068" height="130" rx="19.5" ry="19.5" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 265px; height: 1px; padding-top: 776px; margin-left: 2365px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">sayhello-0.1-r0.${PACKAGE_ARCH}.<i>pkg</i></div></div></div></foreignObject><text x="2497" y="780" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">sayhello-0.1-r0.${PACKAGE_ARCH}.pkg</text></switch></g><rect x="10788" y="2640" width="1480" height="680" fill="none" stroke="#36393d" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 368px; height: 1px; padding-top: 745px; margin-left: 2698px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 15px;">This task also depends on <b><u>PACKAGE_CLASSES</u></b>,<br /><b><u><i>pkg</i></u></b> can be <b><u>rpm</u></b>, <b><u>deb</u></b> or <b><u>ipk</u></b> for <b><u>package_rpm</u></b>,<br /><b><u>package_deb</u></b> or <u style="font-weight: bold;">package_ipk</u> respectively.<br />The generated package generally named using:<br /><b><u>${PN}</u></b>, <b><u>${PR}</u></b>, <b><u>${PACKAGE_ARCH}</u></b> and <b><u><i>pkg</i></u></b><br /></font></div></div></div></foreignObject><text x="2882" y="749" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">This task also depends on PACKAGE_CLASSES,...</text></switch></g><path d="M 7314 520 L 7314 654.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 7314 675.53 L 7300 647.53 L 7314 654.53 L 7328 647.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><path d="M 7454 440 Q 7454 440 7742.53 440" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" stroke-dasharray="12 12" pointer-events="stroke"/><path d="M 7763.53 440 L 7735.53 449.33 L 7742.53 440 L 7735.53 430.67 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="7174" y="360" width="280" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 68px; height: 1px; padding-top: 110px; margin-left: 1795px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">deploy</font></div></div></div></foreignObject><text x="1829" y="114" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">deploy</text></switch></g><path d="M 7313.71 840 L 7313.71 880.57 Q 7313.71 920.57 7313.71 910.29 L 7313.71 905.14 Q 7313.71 900 7313.81 927.26 L 7313.91 954.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 7313.98 975.53 L 7299.88 947.58 L 7313.91 954.53 L 7327.88 947.48 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="7054.48" y="680" width="519" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 190px; margin-left: 1765px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><b>${DEPLOY_DIR_<i>pkg</i>}</b></div></div></div></foreignObject><text x="1828" y="194" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">${DEPLOY_DIR_pkg}</text></switch></g><rect x="9488" y="3680" width="600" height="120" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 935px; margin-left: 2447px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_package_write_<i>pkg</i><br /></font></div></div></div></foreignObject><text x="2447" y="939" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">do_package_write_pkg&#xa;</text></switch></g><ellipse cx="9408" cy="3740" rx="60.00000000000001" ry="60.00000000000001" fill="#000000" stroke="#56517e" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 935px; margin-left: 2338px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1"><b style="font-size: 15px;">17</b></font></div></div></div></foreignObject><text x="2352" y="939" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">17</text></switch></g><path d="M 10048 3740 Q 11528.57 3740 11528.03 3345.47" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" stroke-dasharray="12 12" pointer-events="stroke"/><path d="M 11528.01 3324.47 L 11537.38 3352.46 L 11528.03 3345.47 L 11518.71 3352.48 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="7074" y="980" width="480" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 265px; margin-left: 1770px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">${PACKAGE_ARCH}</div></div></div></foreignObject><text x="1829" y="269" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">${PACKAGE_ARCH}</text></switch></g><rect x="7768" y="672.52" width="1660" height="167.48" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 413px; height: 1px; padding-top: 189px; margin-left: 1943px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 15px;">For packages, this can be <b><u>IPK</u></b>, <b><u>RPM</u></b> or <b><u>DEB</u></b> (<i>check step 17</i>)</font></div></div></div></foreignObject><text x="2150" y="193" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">For packages, this can be IPK, RPM or DEB (check step 17)</text></switch></g><rect x="7369.48" y="480" width="320" height="100" rx="15" ry="15" fill="#000000" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 133px; margin-left: 1843px;"><div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">DEPLOY_DIR</font></div></div></div></foreignObject><text x="1882" y="136" fill="#ffffff" font-family="Liberation Sans" font-size="12px" text-anchor="middle" font-weight="bold">DEPLOY_DIR</text></switch></g><rect x="4988" y="80" width="240" height="100" rx="15" ry="15" fill="#000000" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 33px; margin-left: 1248px;"><div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">TMPDIR</font></div></div></div></foreignObject><text x="1277" y="36" fill="#ffffff" font-family="Liberation Sans" font-size="12px" text-anchor="middle" font-weight="bold">TMPDIR</text></switch></g><rect x="1668" y="480" width="250.72" height="100" rx="15" ry="15" fill="#000000" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 61px; height: 1px; padding-top: 133px; margin-left: 418px;"><div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">DL_DIR</font></div></div></div></foreignObject><text x="448" y="136" fill="#ffffff" font-family="Liberation Sans" font-size="12px" text-anchor="middle" font-weight="bold">DL_DIR</text></switch></g><path d="M 7573.48 760 L 7630.29 760.34 Q 7670.29 760.57 7706.42 758.98 L 7742.55 757.38" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" stroke-dasharray="12 12" pointer-events="stroke"/><path d="M 7763.53 756.46 L 7735.97 767.02 L 7742.55 757.38 L 7735.15 748.37 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="10488" y="2380" width="600" height="120" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 610px; margin-left: 2697px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_package_write_<i>pkg</i><br /></font></div></div></div></foreignObject><text x="2697" y="614" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">do_package_write_pkg&#xa;</text></switch></g><ellipse cx="10408" cy="2440" rx="60.00000000000001" ry="60.00000000000001" fill="#000000" stroke="#56517e" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 610px; margin-left: 2588px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1"><b style="font-size: 15px;">18</b></font></div></div></div></foreignObject><text x="2602" y="614" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">18</text></switch></g><path d="M 10268 2310.29 Q 10879.43 2310.29 10879.43 1999.43 Q 10879.43 1688.57 10878.68 1140.47" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" stroke-dasharray="12 12" pointer-events="stroke"/><path d="M 10878.65 1119.47 L 10888.02 1147.46 L 10878.68 1140.47 L 10869.35 1147.48 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="10148" y="2260" width="120" height="100" rx="15" ry="15" fill="#000000" stroke="none" pointer-events="all"/><path d="M 10088 2200 Q 10088.57 2077.14 10173.14 2077.14 Q 10257.71 2077.14 10257.94 1980.47" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" stroke-dasharray="12 12" pointer-events="stroke"/><path d="M 10257.99 1959.47 L 10267.26 1987.49 L 10257.94 1980.47 L 10248.59 1987.45 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="9628" y="805" width="1667.52" height="310" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 415px; height: 1px; padding-top: 240px; margin-left: 2408px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 15px;">This can be <b><u>PKGWRITEDIRRPM</u></b>, <b><u>PKGWRITEDIRDEB</u></b> or <b><u>PKGWRITEDIRIPK</u></b> for <b><u>package_rpm</u></b>, <b><u>package_deb</u></b><br />or <b><u>package_ipk</u></b> respectively<br /></font></div></div></div></foreignObject><text x="2615" y="244" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">This can be PKGWRITEDIRRPM, PKGWRITEDIRDEB or PKGWRITEDIRIPK for pack...</text></switch></g><rect x="628" y="2470" width="1313" height="410" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 326px; height: 1px; padding-top: 669px; margin-left: 158px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><span style="font-size: 15px;">License checking happens in <b><u>do_populate_lic</u></b> after <b><u>do_patch<br /></u></b>and before that a checksum check<br />happends on <b><u>LIC_FILES_CHKSUM</u></b> if the<br />license is not <b><u>CLOSED</u></b><br /></span></div></div></div></foreignObject><text x="321" y="672" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">License checking happens in do_populate_lic after do_pa...</text></switch></g><rect x="3528.48" y="1360" width="1739.52" height="280" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 433px; height: 1px; padding-top: 375px; margin-left: 883px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><span style="font-size: 15px;">This variable is used to separate recipes<br />based on their target. This has value of<br /><b><u>${PACKAGE_ARCH}${TARGET_VENDOR}-${TARGET_OS}</u></b><br /></span></div></div></div></foreignObject><text x="1100" y="379" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">This variable is used to separate recipes...</text></switch></g><path d="M 6588 660 Q 6863.43 660 6863.4 505.47" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" stroke-dasharray="12 12" pointer-events="stroke"/><path d="M 6863.39 484.47 L 6872.73 512.47 L 6863.4 505.47 L 6854.06 512.47 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="6148" y="620" width="440" height="80" rx="12" ry="12" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 108px; height: 1px; padding-top: 165px; margin-left: 1538px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">conf-notes.txt</div></div></div></foreignObject><text x="1592" y="169" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">conf-notes.txt</text></switch></g><path d="M 2580.02 520 Q 2580 660 3042.53 660" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" stroke-dasharray="12 12" pointer-events="stroke"/><path d="M 3063.53 660 L 3035.53 669.33 L 3042.53 660 L 3035.53 650.67 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><path d="M 2374 440 Q 2215.43 440.57 2215.04 205.47" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" stroke-dasharray="12 12" pointer-events="stroke"/><path d="M 2215.01 184.47 L 2224.39 212.46 L 2215.04 205.47 L 2205.72 212.49 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="2374" y="360" width="412.04" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 101px; height: 1px; padding-top: 110px; margin-left: 595px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">sstate-cache</font></div></div></div></foreignObject><text x="645" y="114" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">sstate-cache</text></switch></g><rect x="2643.92" y="480" width="332.04" height="100" rx="15" ry="15" fill="#000000" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 81px; height: 1px; padding-top: 133px; margin-left: 662px;"><div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">SSTATE_DIR</font></div></div></div></foreignObject><text x="702" y="136" fill="#ffffff" font-family="Liberation Sans" font-size="12px" text-anchor="middle" font-weight="bold">SSTATE_DIR</text></switch></g><rect x="8927.96" y="3440" width="360" height="110" rx="16.5" ry="16.5" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 88px; height: 1px; padding-top: 874px; margin-left: 2233px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">sayhello</div></div></div></foreignObject><text x="2277" y="877" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">sayhello</text></switch></g><path d="M 4660 1960 Q 4660 2300 4904.57 2300 Q 5149.14 2300 5148.94 2611.65" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" stroke-dasharray="12 12" pointer-events="stroke"/><path d="M 5148.92 2632.65 L 5139.61 2604.64 L 5148.94 2611.65 L 5158.27 2604.65 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="3068" y="480" width="1640" height="360" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 408px; height: 1px; padding-top: 165px; margin-left: 768px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><span style="font-size: 15px;">This folder contains cache for recipes build output, this is used by BitBake, if the recipe checksum did not change it knows that the output to use is the same.<br /></span></div></div></div></foreignObject><text x="972" y="169" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">This folder contains cache for recipes build output, this is used by...</text></switch></g><rect x="1395" y="0" width="1640" height="180" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 408px; height: 1px; padding-top: 23px; margin-left: 350px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><span style="font-size: 15px;"><font data-font-src="https://fonts.googleapis.com/css?family=Liberation+Sans">These directories can be shared accross builds to save disk space and build time</font><br /></span></div></div></div></foreignObject><text x="554" y="26" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">These directories can be shared accross builds to save disk space an...</text></switch></g><rect x="7768" y="350" width="1667.52" height="180" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 415px; height: 1px; padding-top: 110px; margin-left: 1943px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 15px;">This directory contains other output directories such as <b><u>images</u></b>, <b><u>sdk</u></b> and <b><u>licenses</u></b><br /></font></div></div></div></foreignObject><text x="2150" y="114" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">This directory contains other output directories such as images, sdk...</text></switch></g><rect x="5908" y="1020" width="680" height="520" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 168px; height: 1px; padding-top: 320px; margin-left: 1478px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 15px;">This file contains all <b>layers</b> that BitBake should consider when looking for metadata.<br /></font></div></div></div></foreignObject><text x="1562" y="324" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">This file contains all layer...</text></switch></g><rect x="5396" y="20" width="1760" height="160" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 438px; height: 1px; padding-top: 25px; margin-left: 1350px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 15px;">This is base configuration file containing essential user config such as <b><u>MACHINE</u></b> and <b><u>DISTRO</u></b><br /></font></div></div></div></foreignObject><text x="1569" y="29" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">This is base configuration file containing essential user config such as...</text></switch></g><rect x="6140" y="320" width="964.52" height="160" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 239px; height: 1px; padding-top: 100px; margin-left: 1536px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: &quot;Liberation Sans&quot;; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 15px;">The message to show after <b>source oe-init-build-env</b><br /></font></div></div></div></foreignObject><text x="1656" y="104" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">The message to show after source oe-init...</text></switch></g><rect x="10948" y="2400" width="120" height="80" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><rect x="10348" y="3065" width="80" height="80" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><rect x="9948" y="3700" width="100" height="80" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><rect x="10028" y="2200" width="80" height="80" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><rect x="7454" y="725" width="80" height="80" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.drawio.com/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg> \ No newline at end of file
diff --git a/documentation/overview-manual/svg/git-workflow.svg b/documentation/overview-manual/svg/git-workflow.svg
new file mode 100644
index 0000000000..7747e35d9c
--- /dev/null
+++ b/documentation/overview-manual/svg/git-workflow.svg
@@ -0,0 +1,1205 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<svg
3 xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
4 xmlns:dc="http://purl.org/dc/elements/1.1/"
5 xmlns:cc="http://creativecommons.org/ns#"
6 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
7 xmlns:svg="http://www.w3.org/2000/svg"
8 xmlns="http://www.w3.org/2000/svg"
9 xmlns:xlink="http://www.w3.org/1999/xlink"
10 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
11 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
12 version="1.1"
13 id="svg2"
14 width="914.0769"
15 height="379.81961"
16 viewBox="0 0 914.0769 379.81961"
17 sodipodi:docname="git-workflow.svg"
18 inkscape:version="1.0.2 (394de47547, 2021-03-26)">
19 <metadata
20 id="metadata8">
21 <rdf:RDF>
22 <cc:Work
23 rdf:about="">
24 <dc:format>image/svg+xml</dc:format>
25 <dc:type
26 rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
27 <dc:title></dc:title>
28 </cc:Work>
29 </rdf:RDF>
30 </metadata>
31 <defs
32 id="defs6">
33 <inkscape:path-effect
34 effect="powerstroke"
35 id="path-effect6121"
36 is_visible="true"
37 lpeversion="1"
38 offset_points="0,0.5"
39 sort_points="true"
40 interpolator_type="CubicBezierJohan"
41 interpolator_beta="0.2"
42 start_linecap_type="zerowidth"
43 linejoin_type="extrp_arc"
44 miter_limit="4"
45 scale_width="1"
46 end_linecap_type="zerowidth" />
47 <marker
48 style="overflow:visible"
49 id="marker5783"
50 refX="0"
51 refY="0"
52 orient="auto"
53 inkscape:stockid="Arrow2Mend"
54 inkscape:isstock="true">
55 <path
56 transform="scale(-0.6)"
57 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
58 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
59 id="path5781" />
60 </marker>
61 <marker
62 style="overflow:visible"
63 id="marker5623"
64 refX="0"
65 refY="0"
66 orient="auto"
67 inkscape:stockid="Arrow2Mend"
68 inkscape:isstock="true">
69 <path
70 transform="scale(-0.6)"
71 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
72 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
73 id="path5621" />
74 </marker>
75 <marker
76 style="overflow:visible"
77 id="marker5487"
78 refX="0"
79 refY="0"
80 orient="auto"
81 inkscape:stockid="Arrow2Mend"
82 inkscape:isstock="true">
83 <path
84 transform="scale(-0.6)"
85 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
86 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
87 id="path5485" />
88 </marker>
89 <marker
90 style="overflow:visible"
91 id="marker5285"
92 refX="0"
93 refY="0"
94 orient="auto"
95 inkscape:stockid="Arrow2Mstart"
96 inkscape:isstock="true">
97 <path
98 transform="scale(0.6)"
99 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
100 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
101 id="path5283" />
102 </marker>
103 <marker
104 style="overflow:visible"
105 id="marker5161"
106 refX="0"
107 refY="0"
108 orient="auto"
109 inkscape:stockid="Arrow2Mend"
110 inkscape:isstock="true">
111 <path
112 transform="scale(-0.6)"
113 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
114 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
115 id="path5159" />
116 </marker>
117 <marker
118 style="overflow:visible"
119 id="marker4978"
120 refX="0"
121 refY="0"
122 orient="auto"
123 inkscape:stockid="Arrow2Mend"
124 inkscape:isstock="true"
125 inkscape:collect="always">
126 <path
127 transform="scale(-0.6)"
128 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
129 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
130 id="path4976" />
131 </marker>
132 <marker
133 style="overflow:visible"
134 id="marker4860"
135 refX="0"
136 refY="0"
137 orient="auto"
138 inkscape:stockid="Arrow2Mend"
139 inkscape:isstock="true">
140 <path
141 transform="scale(-0.6)"
142 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
143 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
144 id="path4858" />
145 </marker>
146 <marker
147 style="overflow:visible"
148 id="marker4712"
149 refX="0"
150 refY="0"
151 orient="auto"
152 inkscape:stockid="Arrow2Mend"
153 inkscape:isstock="true"
154 inkscape:collect="always">
155 <path
156 transform="scale(-0.6)"
157 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
158 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
159 id="path4710" />
160 </marker>
161 <marker
162 style="overflow:visible"
163 id="marker4604"
164 refX="0"
165 refY="0"
166 orient="auto"
167 inkscape:stockid="Arrow2Mend"
168 inkscape:isstock="true"
169 inkscape:collect="always">
170 <path
171 transform="scale(-0.6)"
172 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
173 style="fill:#ffa348;fill-opacity:1;fill-rule:evenodd;stroke:#ffa348;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
174 id="path4602" />
175 </marker>
176 <marker
177 style="overflow:visible"
178 id="marker4504"
179 refX="0"
180 refY="0"
181 orient="auto"
182 inkscape:stockid="Arrow2Mend"
183 inkscape:isstock="true">
184 <path
185 transform="scale(-0.6)"
186 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
187 style="fill:#ffa348;fill-opacity:1;fill-rule:evenodd;stroke:#ffa348;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
188 id="path4502" />
189 </marker>
190 <marker
191 style="overflow:visible"
192 id="marker4414"
193 refX="0"
194 refY="0"
195 orient="auto"
196 inkscape:stockid="Arrow2Mend"
197 inkscape:isstock="true"
198 inkscape:collect="always">
199 <path
200 transform="scale(-0.6)"
201 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
202 style="fill:#62a0ea;fill-opacity:1;fill-rule:evenodd;stroke:#62a0ea;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
203 id="path4412" />
204 </marker>
205 <marker
206 style="overflow:visible"
207 id="marker4286"
208 refX="0"
209 refY="0"
210 orient="auto"
211 inkscape:stockid="Arrow2Mend"
212 inkscape:isstock="true"
213 inkscape:collect="always">
214 <path
215 transform="scale(-0.6)"
216 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
217 style="fill:#62a0ea;fill-opacity:1;fill-rule:evenodd;stroke:#62a0ea;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
218 id="path4284" />
219 </marker>
220 <marker
221 style="overflow:visible"
222 id="Arrow1Mend"
223 refX="0"
224 refY="0"
225 orient="auto"
226 inkscape:stockid="Arrow1Mend"
227 inkscape:isstock="true">
228 <path
229 transform="matrix(-0.4,0,0,-0.4,-4,0)"
230 style="fill:#62a0ea;fill-opacity:1;fill-rule:evenodd;stroke:#62a0ea;stroke-width:1pt;stroke-opacity:1"
231 d="M 0,0 5,-5 -12.5,0 5,5 Z"
232 id="path3318" />
233 </marker>
234 <marker
235 style="overflow:visible"
236 id="marker4174"
237 refX="0"
238 refY="0"
239 orient="auto"
240 inkscape:stockid="Arrow2Mstart"
241 inkscape:isstock="true">
242 <path
243 transform="scale(0.6)"
244 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
245 style="fill:#62a0ea;fill-opacity:1;fill-rule:evenodd;stroke:#62a0ea;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
246 id="path4172" />
247 </marker>
248 <marker
249 style="overflow:visible"
250 id="Arrow2Mend"
251 refX="0"
252 refY="0"
253 orient="auto"
254 inkscape:stockid="Arrow2Mend"
255 inkscape:isstock="true">
256 <path
257 transform="scale(-0.6)"
258 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
259 style="fill:#ffa348;fill-opacity:1;fill-rule:evenodd;stroke:#ffa348;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
260 id="path3336" />
261 </marker>
262 <marker
263 style="overflow:visible"
264 id="Arrow2Mstart"
265 refX="0"
266 refY="0"
267 orient="auto"
268 inkscape:stockid="Arrow2Mstart"
269 inkscape:isstock="true"
270 inkscape:collect="always">
271 <path
272 transform="scale(0.6)"
273 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
274 style="fill:#ffa348;fill-opacity:1;fill-rule:evenodd;stroke:#ffa348;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
275 id="path3333" />
276 </marker>
277 <marker
278 style="overflow:visible"
279 id="Arrow1Mstart"
280 refX="0"
281 refY="0"
282 orient="auto"
283 inkscape:stockid="Arrow1Mstart"
284 inkscape:isstock="true">
285 <path
286 transform="matrix(0.4,0,0,0.4,4,0)"
287 style="fill:#ff7800;fill-opacity:1;fill-rule:evenodd;stroke:#ffa348;stroke-width:1pt;stroke-opacity:1"
288 d="M 0,0 5,-5 -12.5,0 5,5 Z"
289 id="path3315" />
290 </marker>
291 <marker
292 style="overflow:visible"
293 id="Arrow2Lstart"
294 refX="0"
295 refY="0"
296 orient="auto"
297 inkscape:stockid="Arrow2Lstart"
298 inkscape:isstock="true">
299 <path
300 transform="matrix(1.1,0,0,1.1,1.1,0)"
301 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
302 style="fill:#ff7800;fill-opacity:1;fill-rule:evenodd;stroke:#ffa348;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
303 id="path3327" />
304 </marker>
305 <marker
306 style="overflow:visible"
307 id="Arrow1Lstart"
308 refX="0"
309 refY="0"
310 orient="auto"
311 inkscape:stockid="Arrow1Lstart"
312 inkscape:isstock="true">
313 <path
314 transform="matrix(0.8,0,0,0.8,10,0)"
315 style="fill:#ff7800;fill-opacity:1;fill-rule:evenodd;stroke:#ffa348;stroke-width:1pt;stroke-opacity:1"
316 d="M 0,0 5,-5 -12.5,0 5,5 Z"
317 id="path3309" />
318 </marker>
319 <linearGradient
320 id="linearGradient921"
321 osb:paint="solid">
322 <stop
323 style="stop-color:#deddda;stop-opacity:1;"
324 offset="0"
325 id="stop919" />
326 </linearGradient>
327 <linearGradient
328 id="linearGradient6035-4">
329 <stop
330 id="stop6037-2"
331 style="stop-color:#ffffff"
332 offset="0" />
333 <stop
334 id="stop6039-9"
335 style="stop-color:#ffffff;stop-opacity:0"
336 offset="1" />
337 </linearGradient>
338 <linearGradient
339 id="linearGradient11801"
340 y2="511.97"
341 spreadMethod="reflect"
342 gradientUnits="userSpaceOnUse"
343 x2="286.63"
344 gradientTransform="matrix(4.9627,0,0,4.9627,278.63,-3355.4)"
345 y1="511.97"
346 x1="269.97"
347 inkscape:collect="always">
348 <stop
349 id="stop5497-7"
350 style="stop-color:#497bb3"
351 offset="0" />
352 <stop
353 id="stop5501-5"
354 style="stop-color:#a5c4e6"
355 offset=".20485" />
356 <stop
357 id="stop5499-8"
358 style="stop-color:#3b5d8b"
359 offset="1" />
360 </linearGradient>
361 <linearGradient
362 id="linearGradient11803"
363 y2="527.34003"
364 gradientUnits="userSpaceOnUse"
365 x2="286.63"
366 y1="518.56"
367 x1="282.35999"
368 inkscape:collect="always">
369 <stop
370 id="stop5468-4"
371 style="stop-color:#a5c4e6"
372 offset="0" />
373 <stop
374 id="stop5470-8"
375 style="stop-color:#497bb3"
376 offset="1" />
377 </linearGradient>
378 <linearGradient
379 id="linearGradient11805"
380 y2="520.33002"
381 xlink:href="#linearGradient6035-4"
382 spreadMethod="reflect"
383 gradientUnits="userSpaceOnUse"
384 x2="327.78"
385 gradientTransform="matrix(4.1992,0,0,4.1992,407.33,-3062.9)"
386 y1="522.60999"
387 x1="308.5"
388 inkscape:collect="always" />
389 <linearGradient
390 id="linearGradient11807"
391 y2="520.33002"
392 xlink:href="#linearGradient6035-4"
393 spreadMethod="reflect"
394 gradientUnits="userSpaceOnUse"
395 x2="327.78"
396 gradientTransform="matrix(4.1992,0,0,4.1992,407.33,-3015.8)"
397 y1="522.60999"
398 x1="308.5"
399 inkscape:collect="always" />
400 <linearGradient
401 id="linearGradient11809"
402 y2="520.33002"
403 xlink:href="#linearGradient6035-4"
404 spreadMethod="reflect"
405 gradientUnits="userSpaceOnUse"
406 x2="327.78"
407 gradientTransform="matrix(4.1992,0,0,4.1992,407.33,-2971.6)"
408 y1="522.60999"
409 x1="308.5"
410 inkscape:collect="always" />
411 <marker
412 style="overflow:visible"
413 id="Arrow2Mstart-4"
414 refX="0"
415 refY="0"
416 orient="auto"
417 inkscape:stockid="Arrow2Mstart"
418 inkscape:isstock="true">
419 <path
420 transform="scale(0.6)"
421 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
422 style="fill:#ffa348;fill-opacity:1;fill-rule:evenodd;stroke:#ffa348;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
423 id="path3333-2" />
424 </marker>
425 <marker
426 style="overflow:visible"
427 id="Arrow2Mend-2"
428 refX="0"
429 refY="0"
430 orient="auto"
431 inkscape:stockid="Arrow2Mend"
432 inkscape:isstock="true">
433 <path
434 transform="scale(-0.6)"
435 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
436 style="fill:#ffa348;fill-opacity:1;fill-rule:evenodd;stroke:#ffa348;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
437 id="path3336-7" />
438 </marker>
439 <marker
440 style="overflow:visible"
441 id="marker5623-2"
442 refX="0"
443 refY="0"
444 orient="auto"
445 inkscape:stockid="Arrow2Mend"
446 inkscape:isstock="true">
447 <path
448 transform="scale(-0.6)"
449 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
450 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
451 id="path5621-3" />
452 </marker>
453 </defs>
454 <sodipodi:namedview
455 pagecolor="#ffffff"
456 bordercolor="#666666"
457 borderopacity="1"
458 objecttolerance="10"
459 gridtolerance="10"
460 guidetolerance="10"
461 inkscape:pageopacity="0"
462 inkscape:pageshadow="2"
463 inkscape:window-width="1848"
464 inkscape:window-height="983"
465 id="namedview4"
466 showgrid="false"
467 inkscape:zoom="1.0233281"
468 inkscape:cx="782.70306"
469 inkscape:cy="243.82083"
470 inkscape:window-x="1992"
471 inkscape:window-y="27"
472 inkscape:window-maximized="1"
473 inkscape:current-layer="g10"
474 inkscape:document-rotation="0"
475 inkscape:snap-perpendicular="true"
476 fit-margin-top="30"
477 lock-margins="true"
478 fit-margin-left="30"
479 fit-margin-right="30"
480 fit-margin-bottom="30">
481 <inkscape:grid
482 type="xygrid"
483 id="grid1257"
484 originx="52.044543"
485 originy="-399.74243" />
486 </sodipodi:namedview>
487 <g
488 inkscape:groupmode="layer"
489 inkscape:label="Image"
490 id="g10"
491 transform="translate(52.044543,-399.74244)">
492 <g
493 id="g5149"
494 transform="translate(-6.511663,12.941792)">
495 <g
496 id="g3925"
497 transform="matrix(0.4122756,0,0,0.4122756,-131.50883,333.4483)"
498 style="stroke-width:2.42556">
499 <g
500 id="layer1-3-5-2"
501 inkscape:label="Capa 1"
502 transform="matrix(1.1196,0,0,1.1196,-122.82057,267.39056)"
503 style="stroke-width:2.42556">
504 <g
505 id="g10-5-2"
506 transform="matrix(0.0423,0,0,0.0423,319.39,59.128)"
507 class="Graphic"
508 style="stroke-width:2.42556">
509 <g
510 id="g12-4-2"
511 style="stroke-width:2.42556">
512 <g
513 id="g14-64-0"
514 style="fill:#c7c7c7;stroke-width:2.42556">
515 <path
516 id="path16-1-5"
517 inkscape:connector-curvature="0"
518 d="m 5903,2361 c 50,82 34,3995 -31,4149 -51,122 -1703,1495 -1789,1531 -1117,-7 -1870,-414 -1995,-629 -48,-270 -7,-4433 38,-4520 40,-76 2153,-833 2227,-851 67,-15 1493,229 1550,320 z"
519 style="stroke-width:2.42556" />
520 </g>
521 <g
522 id="g18-6-5"
523 style="fill:#000000;stroke-width:2.42556">
524 <path
525 id="path20-8-2"
526 inkscape:connector-curvature="0"
527 d="m 5881,2374 2,-1 -2,2 c 0,-1 -1,-1 -1,-1 v -2 l 7,-3 -2,2 -5,1 5,-1 -2,2 z m 2,-1 2,-2 2,-2 5,-2 -5,4 5,-4 h 1 l -6,3 v 1 -1 z m 10,-6 h -1 1 -1 l 11,-6 -10,5 z m 11,-4 -11,4 v -1 z m 20,-15 c -2,-3 -4,-6 -7,-9 -2,-3 -5,-5 -8,-7 -5,-4 -12,-8 -20,-12 -7,-4 -15,-7 -24,-11 -9,-4 -19,-7 -30,-11 -21,-8 -47,-16 -75,-24 -29,-8 -61,-16 -95,-25 -136,-34 -313,-72 -494,-106 -181,-35 -364,-66 -511,-90 -73,-11 -138,-21 -189,-27 -25,-3 -47,-6 -65,-8 -9,-1 -17,-1 -24,-2 -4,0 -7,0 -10,-1 h -9 c -3,0 -5,0 -7,1 h -4 c -2,0 -3,0 -4,1 -2,0 -4,1 -7,2 -2,0 -5,1 -8,2 -3,1 -7,2 -11,3 -4,2 -8,3 -13,5 -10,3 -22,7 -35,12 -13,4 -28,9 -44,15 -33,11 -71,25 -115,40 -43,15 -91,32 -144,51 -209,75 -481,173 -753,274 -271,101 -542,203 -747,285 -51,21 -98,40 -140,57 -43,18 -80,34 -111,48 -16,7 -30,14 -42,20 -13,6 -24,12 -33,17 -5,2 -9,5 -13,7 -4,3 -8,5 -10,7 -4,3 -7,5 -9,7 -5,4 -7,8 -9,11 -1,2 -2,5 -4,9 0,3 -1,6 -1,9 -1,3 -1,7 -2,11 -1,4 -1,8 -2,13 0,9 -1,20 -3,32 0,13 -1,27 -2,42 -2,31 -4,69 -6,111 -2,43 -4,91 -5,144 -7,213 -14,504 -19,835 -11,662 -19,1482 -19,2144 0,308 2,583 5,791 1,52 2,100 3,143 1,43 3,82 4,115 1,34 3,62 4,85 1,12 2,22 3,30 1,5 1,9 1,13 1,3 2,7 2,10 l 1,4 2,4 c 9,15 20,30 33,46 14,16 30,32 48,49 35,32 80,66 135,101 107,70 249,142 423,207 173,65 377,124 608,167 231,43 489,70 769,72 h 6 l 5,-2 8,-4 c 2,-2 5,-3 8,-6 3,-2 6,-4 10,-6 l 12,-9 c 9,-6 19,-13 30,-22 11,-8 23,-17 37,-28 27,-20 58,-45 93,-73 35,-28 74,-59 116,-93 169,-136 385,-315 600,-497 215,-181 430,-366 593,-512 41,-37 79,-71 113,-103 34,-31 64,-59 89,-84 13,-13 24,-24 34,-35 11,-11 20,-20 28,-29 8,-9 14,-17 19,-23 3,-4 5,-8 7,-10 2,-4 4,-8 6,-11 0,-2 1,-5 2,-8 1,-3 2,-5 3,-9 1,-6 2,-13 3,-22 2,-8 3,-17 4,-28 1,-11 2,-22 3,-35 2,-25 4,-55 7,-89 1,-34 3,-72 5,-113 8,-166 14,-391 19,-648 10,-516 16,-1164 16,-1743 0,-389 -3,-747 -8,-1012 -1,-66 -2,-127 -4,-181 -1,-53 -3,-100 -5,-139 -1,-20 -2,-38 -3,-53 -1,-16 -2,-30 -3,-41 -1,-6 -1,-11 -2,-16 -1,-5 -1,-10 -2,-13 -1,-4 -1,-8 -2,-11 -1,-2 -1,-4 -2,-5 -1,-3 -2,-5 -3,-6 z m -37,21 12,-12 z m -6,9 c 1,3 1,7 2,11 0,4 1,9 1,15 1,11 3,24 4,39 0,15 1,33 2,52 2,39 4,86 6,139 1,53 2,114 4,180 5,264 7,622 7,1011 0,578 -5,1227 -15,1742 -6,257 -12,481 -19,646 -2,42 -4,79 -6,113 -2,33 -4,63 -6,88 -1,12 -2,24 -4,34 0,10 -2,18 -3,26 -1,7 -2,14 -3,18 0,3 -1,4 -1,6 0,1 -1,2 -1,2 0,1 -1,2 -2,4 -1,1 -3,4 -4,6 -5,6 -10,13 -17,21 -7,7 -16,17 -26,27 l -34,34 c -25,24 -54,52 -88,83 -33,31 -71,66 -112,102 -163,146 -377,330 -592,512 -215,181 -431,360 -598,495 -42,34 -81,65 -116,93 -35,28 -66,52 -93,73 -13,10 -26,20 -37,28 -10,8 -20,15 -28,21 -4,3 -8,6 -12,8 -3,2 -6,4 -8,6 -2,1 -4,2 -5,3 -276,-2 -528,-29 -755,-71 -228,-42 -429,-100 -600,-164 -169,-64 -308,-134 -413,-202 -51,-33 -94,-66 -128,-97 -17,-15 -31,-30 -43,-44 -10,-12 -19,-23 -26,-34 v -4 c -1,-3 -1,-7 -1,-11 -1,-8 -2,-18 -3,-28 -2,-23 -3,-51 -5,-84 -1,-33 -2,-71 -3,-115 -1,-42 -2,-90 -3,-142 -3,-208 -5,-482 -5,-790 0,-662 7,-1481 18,-2143 6,-330 12,-622 19,-834 2,-53 4,-101 6,-144 2,-42 3,-79 5,-109 1,-16 2,-30 3,-42 1,-12 2,-22 3,-31 0,-4 1,-8 1,-11 1,-4 1,-6 2,-9 v -2 c 0,-1 1,-1 2,-2 2,-1 4,-3 7,-5 4,-1 7,-4 11,-6 9,-5 19,-10 31,-16 12,-6 26,-12 41,-19 31,-14 67,-29 109,-47 42,-17 89,-37 140,-57 205,-82 475,-184 746,-284 271,-101 543,-200 752,-274 52,-19 101,-36 144,-51 43,-16 82,-29 114,-40 17,-6 31,-11 44,-16 13,-4 25,-8 35,-11 4,-2 9,-3 13,-4 4,-2 7,-3 10,-4 3,-1 5,-1 8,-2 l 3,-1 -2,-8 1,8 h 1 4 7 c 2,0 5,0 8,1 7,0 14,1 23,2 17,1 39,4 64,7 50,6 114,16 187,27 147,23 329,55 509,89 180,35 357,72 492,106 34,9 65,17 92,25 28,8 53,15 73,23 10,3 20,7 28,10 7,3 15,6 20,9 5,3 10,5 13,8 0,0 1,0 1,1 0,1 1,3 1,4 z M 4075,8017 c 1,0 1,-1 2,-1 h 6 v 14 l -8,-13 8,13 v 11 l -10,-23 c 0,0 1,-1 2,-1 z M 2110,7400 c 1,1 1,3 2,4 1,1 1,3 1,4 l -25,4 21,-11 1,-1 -1,1 1,-1 h 2 z m 39,-4498 v 3 c -1,0 -1,1 -2,1 l -5,-6 -17,-4 17,4 -2,-1 4,2 z m -7,-2 2,1 z m -16,-8 14,7 z m 14,7 -10,-11 z m 2217,-841 -2,-17 z m -4,-17 4,17 v 1 z"
528 style="stroke-width:2.42556" />
529 </g>
530 <g
531 id="g22-8-9"
532 style="fill:#ffffff;fill-opacity:0.54118;stroke:#ffffff;stroke-width:2.42556;stroke-opacity:0.54118">
533 <path
534 id="path24-1-0"
535 inkscape:connector-curvature="0"
536 d="m 5822,2442 -52,22 -52,23 -52,23 -53,25 -53,25 -53,26 -53,26 -54,27 -54,27 -54,28 -55,28 -54,29 -55,29 -55,29 -111,60 -112,60 -112,60 -113,61 -114,60 -114,60 -114,59 -57,29 -57,29 -58,28 -57,28 -27,-6 -28,-7 -56,-13 -58,-14 -59,-13 -60,-14 -61,-14 -61,-14 -63,-14 -62,-14 -63,-15 -127,-28 -127,-28 -64,-14 -63,-14 -62,-13 -62,-13 -61,-13 -60,-13 -60,-13 -58,-12 -57,-12 -28,-5 -28,-6 -27,-5 -27,-6 -27,-5 -26,-5 -26,-5 -25,-6 -25,-4 -24,-5 -24,-5 -24,-4 -23,-4 -22,-5 -22,-4 -21,-3 -21,-4 -20,-4 52,16 52,16 53,16 54,15 55,16 55,15 57,16 56,15 57,16 58,15 116,31 117,30 118,31 118,31 117,30 116,31 58,15 57,16 57,15 56,16 55,15 55,16 54,15 53,16 52,16 52,16 1,60 2,61 1,61 1,63 1,64 2,64 1,65 1,66 1,67 1,67 1,68 v 69 l 1,69 1,70 1,70 v 71 l 1,71 v 72 l 1,72 1,73 1,146 1,147 v 149 l 1,149 2,299 1,300 1,149 1,148 1,147 1,146 1,73 v 72 l 1,72 1,71 v 71 l 1,71 1,69 1,70 v 68 l 1,68 1,67 1,67 1,66 1,65 1,65 2,63 1,63 1,62 2,61 1,60 1,-61 1,-61 v -63 l 1,-63 1,-64 1,-65 1,-66 1,-67 1,-67 1,-68 1,-69 2,-69 1,-70 1,-71 1,-71 1,-72 1,-72 2,-73 1,-73 1,-73 3,-148 3,-149 2,-151 3,-151 6,-303 5,-303 3,-151 3,-150 2,-149 3,-149 1,-73 2,-73 1,-73 1,-72 1,-71 1,-72 1,-70 2,-70 1,-70 1,-68 1,-68 1,-68 1,-66 1,-66 1,-65 1,-64 1,-64 v -62 l 1,-62 1,-60 110,-59 109,-59 109,-57 109,-58 108,-57 107,-58 107,-57 107,-58 105,-58 105,-58 104,-60 103,-60 51,-30 50,-31 51,-31 50,-31 50,-31 50,-32 49,-32 z"
537 style="stroke-width:2.42556" />
538 </g>
539 <g
540 id="g28-1-8"
541 style="fill:none;stroke-width:2.42556">
542 <path
543 id="path30-7-3"
544 inkscape:connector-curvature="0"
545 d="m 5822,2442 c -549,232 -1156,606 -1768,901 -580,-138 -1417,-322 -1839,-396 543,169 1257,327 1800,496 32,1271 16,3196 48,4467 16,-1282 59,-3238 75,-4519 586,-317 1161,-601 1684,-949 z"
546 style="stroke-width:2.42556" />
547 </g>
548 <g
549 id="g32-7-8"
550 style="fill:#000000;fill-opacity:0.16078;stroke:#ffffff;stroke-width:2.42556;stroke-opacity:0.16078">
551 <path
552 id="path34-1-0"
553 inkscape:connector-curvature="0"
554 d="m 2420,6628 10,14 10,13 11,13 12,13 12,12 12,12 14,12 13,12 14,12 15,11 15,11 16,11 15,11 17,10 16,10 17,11 18,9 18,10 18,9 18,8 19,9 19,8 19,8 19,8 40,15 40,14 41,12 41,11 42,10 41,9 42,8 41,6 41,6 41,3 21,2 20,1 19,1 h 20 20 19 l 19,-1 19,-1 18,-1 19,-1 17,-2 18,-3 17,-2 17,-3 17,-4 16,-4 15,-4 15,-4 15,-5 15,-5 -2,-1 h -1 l -5,-2 -6,-1 -7,-2 -8,-2 -10,-3 -10,-3 -12,-3 -13,-4 -14,-3 -15,-4 -16,-5 -16,-4 -18,-5 -18,-5 -19,-5 -20,-6 -20,-5 -21,-6 -22,-6 -22,-6 -22,-6 -23,-7 -24,-6 -48,-13 -49,-14 -50,-14 -50,-13 -50,-15 -50,-13 -49,-14 -49,-13 -23,-7 -24,-6 -23,-7 -22,-6 -22,-6 -21,-6 -21,-6 -20,-5 -19,-6 -19,-5 -18,-5 -17,-5 -16,-4 -15,-5 -15,-4 -13,-4 -12,-3 -12,-3 -10,-3 -9,-3 -7,-2 -7,-2 -5,-2 h -2 z"
555 style="stroke-width:2.42556" />
556 </g>
557 <g
558 id="g38-5-0"
559 style="fill:none;stroke-width:2.42556">
560 <path
561 id="path40-7-9"
562 inkscape:connector-curvature="0"
563 d="m 2420,6628 c 201,289 833,431 1133,315 -53,-14 -1066,-293 -1133,-315 z"
564 style="stroke-width:2.42556" />
565 </g>
566 <g
567 id="g42-6-1"
568 style="fill:#ffffff;fill-opacity:0.38824;stroke:#ffffff;stroke-width:2.42556;stroke-opacity:0.38824">
569 <path
570 id="path44-7-9"
571 inkscape:connector-curvature="0"
572 d="m 3454,6093 -936,-361 -9,4 -8,4 -8,4 -6,5 -6,6 -6,6 -5,7 -5,6 -4,7 -4,7 -3,7 -3,8 -3,8 -2,7 -3,15 -2,15 -2,14 v 6 7 5 6 5 4 4 l 1,4 v 2 2 1 1 l 146,51 1,1 1,1 1,1 1,2 2,2 1,3 3,3 2,3 3,4 3,4 3,4 4,5 4,4 4,6 5,4 10,12 10,11 13,12 13,12 14,13 15,12 17,13 17,12 19,12 19,11 21,11 22,10 11,4 11,5 12,4 12,4 13,3 12,3 13,3 13,3 13,2 13,1 14,2 14,1 h 14 15 15 l 15,-1 15,-2 15,-2 16,-2 16,-3 16,-4 16,-4 17,-5 17,-6 h 1 l 2,1 h 3 l 6,1 6,1 7,1 8,1 9,1 10,1 11,1 12,1 12,1 h 12 l 13,1 h 26 l 14,-1 13,-1 14,-1 13,-2 13,-2 12,-3 12,-3 12,-3 10,-5 11,-5 9,-6 8,-6 8,-8 3,-4 3,-4 3,-4 2,-4 2,-5 z"
573 style="stroke-width:2.42556" />
574 </g>
575 <g
576 id="g48-57-2"
577 style="fill:none;stroke-width:2.42556">
578 <path
579 id="path50-0-5"
580 inkscape:connector-curvature="0"
581 d="m 3454,6093 -936,-361 c -97,34 -78,177 -78,177 l 146,51 c 0,0 204,319 566,194 0,0 269,48 302,-61 z"
582 style="stroke-width:2.42556" />
583 </g>
584 <g
585 id="g52-5-4"
586 style="fill:#606060;stroke-width:2.42556">
587 <path
588 id="path54-7-4"
589 inkscape:connector-curvature="0"
590 d="m 3446,5971 c -311,-81 -622,-161 -933,-242 -12,44 -13,107 6,140 47,23 142,41 189,64 136,131 255,142 472,124 84,17 168,31 251,48 26,-51 33,-72 15,-134 z"
591 style="stroke-width:2.42556" />
592 </g>
593 <g
594 id="g56-7-9"
595 style="fill:none;stroke-width:2.42556">
596 <path
597 id="path58-8-9"
598 inkscape:connector-curvature="0"
599 d="m 3446,5971 c -311,-81 -622,-161 -933,-242 -12,44 -13,107 6,140 47,23 142,41 189,64 136,131 255,142 472,124 84,17 168,31 251,48 26,-51 33,-72 15,-134 z"
600 style="stroke-width:2.42556" />
601 </g>
602 <g
603 id="g60-5-3"
604 style="fill:#ffffff;fill-opacity:0.4;stroke:#ffffff;stroke-width:2.42556;stroke-opacity:0.4">
605 <path
606 id="path62-2-6"
607 inkscape:connector-curvature="0"
608 d="m 5856,2414 -1813,1017 7,4549 1775,-1494 z"
609 style="stroke-width:2.42556" />
610 </g>
611 <g
612 id="g66-2-5"
613 style="fill:none;stroke-width:2.42556">
614 <path
615 id="path68-9-0"
616 inkscape:connector-curvature="0"
617 d="m 5856,2414 -1813,1017 7,4549 1775,-1494 z"
618 style="stroke-width:2.42556" />
619 </g>
620 <g
621 id="g70-9-2"
622 style="fill:#000000;fill-opacity:0.16078;stroke:#ffffff;stroke-width:2.42556;stroke-opacity:0.16078">
623 <path
624 id="path72-9-9"
625 inkscape:connector-curvature="0"
626 d="m 2525,6916 10,13 11,12 10,13 11,11 11,12 11,11 12,11 12,10 12,10 12,10 13,10 12,9 13,9 13,8 27,17 28,15 28,14 28,13 29,11 29,11 30,9 30,8 29,8 30,6 30,5 30,4 30,3 30,2 29,2 h 29 l 29,-1 27,-2 28,-2 27,-3 26,-5 25,-5 24,-6 24,-6 22,-8 -2,-1 h -4 l -4,-2 -5,-1 -6,-2 -8,-2 -8,-2 -9,-2 -10,-3 -10,-3 -11,-3 -12,-3 -13,-4 -13,-3 -14,-4 -15,-4 -15,-4 -15,-5 -16,-4 -16,-5 -17,-4 -18,-5 -35,-10 -36,-10 -38,-10 -38,-10 -38,-11 -76,-21 -37,-10 -37,-11 -36,-10 -17,-4 -17,-5 -17,-5 -16,-4 -16,-5 -15,-4 -15,-4 -14,-4 -14,-4 -13,-4 -12,-3 -11,-3 -12,-3 -10,-3 -9,-3 -8,-2 -8,-3 -7,-1 -6,-2 -5,-2 -4,-1 z"
627 style="stroke-width:2.42556" />
628 </g>
629 <g
630 id="g76-2-3"
631 style="fill:none;stroke-width:2.42556">
632 <path
633 id="path78-7-5"
634 inkscape:connector-curvature="0"
635 d="m 2525,6916 c 209,276 627,323 861,239 -39,-10 -810,-222 -861,-239 z"
636 style="stroke-width:2.42556" />
637 </g>
638 <g
639 id="g80-6-1"
640 style="fill:#000000;fill-opacity:0.16078;stroke:#ffffff;stroke-width:2.42556;stroke-opacity:0.16078">
641 <path
642 id="path82-0-7"
643 inkscape:connector-curvature="0"
644 d="m 2680,7199 12,15 12,14 13,14 14,12 14,13 14,11 15,11 16,11 15,9 17,9 16,9 17,7 18,7 17,7 18,5 18,5 18,5 19,3 18,4 19,2 18,2 19,1 h 19 19 l 18,-1 19,-2 18,-2 19,-3 18,-4 18,-4 18,-5 17,-6 h -1 l -2,-1 h -3 l -4,-1 -3,-1 -5,-2 -5,-1 -6,-2 -6,-1 -6,-2 -7,-2 -8,-2 -8,-2 -8,-3 -9,-2 -9,-2 -19,-6 -20,-5 -22,-6 -22,-6 -23,-6 -23,-7 -48,-13 -48,-13 -23,-7 -23,-6 -23,-6 -21,-6 -21,-6 -19,-6 -9,-2 -9,-3 -9,-2 -8,-2 -8,-2 -7,-2 -7,-2 -6,-2 -6,-2 -5,-2 -5,-1 -5,-1 -3,-1 -3,-1 -3,-1 z"
645 style="stroke-width:2.42556" />
646 </g>
647 <g
648 id="g86-0-3"
649 style="fill:none;stroke-width:2.42556">
650 <path
651 id="path88-3-1"
652 inkscape:connector-curvature="0"
653 d="m 2680,7199 c 121,163 355,213 540,149 -25,-6 -507,-139 -540,-149 z"
654 style="stroke-width:2.42556" />
655 </g>
656 <g
657 id="g90-5-4"
658 style="fill:#fcfcfc;fill-opacity:0.43922;stroke:#ffffff;stroke-width:2.42556;stroke-opacity:0.43922">
659 <path
660 id="path92-9-6"
661 inkscape:connector-curvature="0"
662 d="m 2356,3259 -92,13 -17,2173 1425,399 35,-116 -1369,-365 z"
663 style="stroke-width:2.42556" />
664 </g>
665 <g
666 id="g96-7-4"
667 style="fill:none;stroke-width:2.42556">
668 <path
669 id="path98-7-2"
670 inkscape:connector-curvature="0"
671 d="m 2356,3259 -92,13 -17,2173 1425,399 35,-116 -1369,-365 z"
672 style="stroke-width:2.42556" />
673 </g>
674 <g
675 id="g100-1-2"
676 style="fill:#000000;fill-opacity:0.23137;stroke:#ffffff;stroke-width:2.42556;stroke-opacity:0.23137">
677 <path
678 id="path102-64-6"
679 inkscape:connector-curvature="0"
680 d="m 3700,4065 -2,61 -1340,-386 z"
681 style="stroke-width:2.42556" />
682 </g>
683 <g
684 id="g106-1-1"
685 style="fill:#000000;fill-opacity:0.23137;stroke:#ffffff;stroke-width:2.42556;stroke-opacity:0.23137">
686 <path
687 id="path108-3-2"
688 inkscape:connector-curvature="0"
689 d="m 3720,4507 -3,61 -1339,-386 z"
690 style="stroke-width:2.42556" />
691 </g>
692 <g
693 id="g112-9-8"
694 style="fill:#000000;fill-opacity:0.23137;stroke:#ffffff;stroke-width:2.42556;stroke-opacity:0.23137">
695 <path
696 id="path114-09-9"
697 inkscape:connector-curvature="0"
698 d="m 3700,4916 -2,61 -1340,-386 z"
699 style="stroke-width:2.42556" />
700 </g>
701 <g
702 id="g118-8-8"
703 style="fill:#000000;fill-opacity:0.23137;stroke:#ffffff;stroke-width:2.42556;stroke-opacity:0.23137">
704 <path
705 id="path120-3-8"
706 inkscape:connector-curvature="0"
707 d="m 3700,5318 -2,61 -1340,-387 z"
708 style="stroke-width:2.42556" />
709 </g>
710 <g
711 id="g124-5-6"
712 style="fill:#9e9e9e;stroke-width:2.42556">
713 <path
714 id="path126-3-8"
715 inkscape:connector-curvature="0"
716 d="m 2361,3309 1332,333 -11,2197 h 11 11 l 11,-2205 v -9 l -8,-2 -1341,-335 -2,11 z m 1340,335 -8,-2 v -8 h 11 z"
717 style="stroke-width:2.42556" />
718 </g>
719 </g>
720 </g>
721 </g>
722 <g
723 id="g16724-3"
724 transform="matrix(0.52218647,0,0,0.42933357,-400.52138,1028.8214)"
725 style="stroke-width:2.42556">
726 <path
727 id="path5488-8"
728 d="m 1618.4,-890.85 v 126.36 h 0.5249 c -0.3385,1.0131 -0.5249,1.975 -0.5249,3.0182 0,15.228 36.989,27.557 82.672,27.557 45.683,0 82.672,-12.33 82.672,-27.557 0,-1.0447 -0.1856,-2.0037 -0.5249,-3.0182 h 0.5249 v -126.36 h -165.34 z"
729 sodipodi:nodetypes="cccssscccc"
730 style="fill:url(#linearGradient11801);stroke-width:2.42556"
731 inkscape:connector-curvature="0" />
732 <ellipse
733 id="path5460-3"
734 style="fill:url(#linearGradient11803);stroke-width:2.42556"
735 transform="matrix(4.9627,0,0,4.9627,278.63,-3481.3)"
736 cx="286.6308"
737 cy="521.77954"
738 rx="16.667517"
739 ry="5.5558391" />
740 <path
741 id="path6026-3"
742 d="m 1618.3,-800.18 c 0.6187,15.05 37.507,27.164 82.804,27.164 45.168,0 81.851,-12.042 82.672,-27.033 -14.494,12.328 -46.02,20.865 -82.672,20.865 -36.727,0 -68.35,-8.6271 -82.804,-20.996 z"
743 style="fill:#3b5d8b;stroke-width:2.42556"
744 inkscape:connector-curvature="0" />
745 <path
746 id="path6030-3"
747 d="m 1618.3,-891.51 c 0.6187,15.05 37.507,27.164 82.804,27.164 45.168,0 81.851,-12.042 82.672,-27.033 -0.9058,0.77052 -1.8509,1.4911 -2.8869,2.2308 -0.038,0.0491 -0.091,0.0823 -0.131,0.13101 -9.6253,11.663 -41.587,20.209 -79.654,20.209 -38.306,0 -70.487,-8.6955 -79.917,-20.471 -0.1046,-0.0752 -0.1596,-0.18729 -0.2625,-0.26245 -0.9185,-0.67058 -1.8123,-1.2733 -2.6245,-1.9684 z"
748 style="fill:url(#linearGradient11805);stroke-width:2.42556"
749 inkscape:connector-curvature="0" />
750 <path
751 id="path6022-8"
752 style="fill:#3b5d8b;stroke-width:2.42556"
753 inkscape:connector-curvature="0"
754 d="m 1618.3,-844.36 c 0.6187,15.05 37.507,27.164 82.804,27.164 45.168,0 81.851,-12.042 82.672,-27.033 -14.494,12.328 -46.02,20.865 -82.672,20.865 -36.727,0 -68.35,-8.6271 -82.804,-20.996 z" />
755 <path
756 id="path6043-0"
757 d="m 1618.3,-844.36 c 0.6187,15.05 37.507,27.164 82.804,27.164 45.168,0 81.851,-12.042 82.672,-27.033 -0.2087,0.17721 -0.4427,0.3519 -0.6561,0.52491 -5.2161,13.55 -39.937,24.014 -82.016,24.014 -42.466,0 -77.55,-10.545 -82.279,-24.277 -0.1684,-0.13312 -0.3624,-0.2549 -0.5249,-0.39347 z"
758 style="fill:url(#linearGradient11807);stroke-width:2.42556"
759 inkscape:connector-curvature="0" />
760 <path
761 id="path6054-4"
762 style="fill:url(#linearGradient11809);stroke-width:2.42556"
763 inkscape:connector-curvature="0"
764 d="m 1618.3,-800.18 c 0.6187,15.05 37.507,27.164 82.804,27.164 45.168,0 81.851,-12.042 82.672,-27.033 -0.2087,0.17721 -0.4427,0.3519 -0.6561,0.52491 -5.2161,13.55 -39.937,24.014 -82.016,24.014 -42.466,0 -77.55,-10.545 -82.279,-24.277 -0.1684,-0.13312 -0.3624,-0.2549 -0.5249,-0.39347 z" />
765 <path
766 id="path6060-7"
767 d="m 1618.8,-754.64 c 4.7284,13.732 39.813,24.277 82.279,24.277 42.079,0 76.8,-10.464 82.016,-24.014 -14.766,12.043 -45.892,20.34 -82.016,20.34 -36.314,0 -67.608,-8.4562 -82.279,-20.602 z"
768 style="fill:#3b5d8b;stroke-width:2.42556"
769 inkscape:connector-curvature="0" />
770 </g>
771 </g>
772 <text
773 xml:space="preserve"
774 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
775 x="-15.501629"
776 y="651.78131"
777 id="text1185"><tspan
778 sodipodi:role="line"
779 id="tspan1183"
780 x="-15.501629"
781 y="651.78131"
782 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';stroke:none">source repositories </tspan></text>
783 </g>
784 <text
785 xml:space="preserve"
786 style="font-weight:bold;font-size:42.5884px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
787 x="142.22464"
788 y="565.10297"
789 id="text907"><tspan
790 sodipodi:role="line"
791 id="tspan905"
792 x="142.22464"
793 y="565.10297" /></text>
794 <text
795 xml:space="preserve"
796 style="font-weight:bold;font-size:42.5884px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
797 x="98.363503"
798 y="637.8432"
799 id="text911"><tspan
800 sodipodi:role="line"
801 id="tspan909"
802 x="98.363503"
803 y="637.8432" /></text>
804 <text
805 xml:space="preserve"
806 style="font-weight:bold;font-size:42.5884px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
807 x="-59.575905"
808 y="580.05695"
809 id="text915"><tspan
810 sodipodi:role="line"
811 id="tspan913"
812 x="-59.575905"
813 y="580.05695" /></text>
814 <g
815 id="g1153"
816 transform="translate(-10.813715,57.621063)">
817 <rect
818 style="opacity:1;fill:#deddda;fill-opacity:1;fill-rule:evenodd;stroke:#9a9996;stroke-width:2;stroke-opacity:1"
819 id="rect917"
820 width="125.52824"
821 height="69.017166"
822 x="196.65169"
823 y="503.49741"
824 ry="3.4599047" />
825 <text
826 xml:space="preserve"
827 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
828 x="259.14236"
829 y="523.42725"
830 id="text1185-3"><tspan
831 sodipodi:role="line"
832 id="tspan1183-8"
833 x="259.14236"
834 y="523.42725"
835 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;stroke:none">project</tspan><tspan
836 sodipodi:role="line"
837 x="259.14236"
838 y="541.42395"
839 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;stroke:none"
840 id="tspan959">&quot;master&quot;</tspan><tspan
841 sodipodi:role="line"
842 x="260.99133"
843 y="559.42059"
844 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';stroke:none"
845 id="tspan957"><tspan
846 style="text-align:center;text-anchor:middle"
847 id="tspan961">git repository</tspan> </tspan></text>
848 </g>
849 <g
850 id="g1125"
851 transform="matrix(0.22552185,0,0,0.22090333,92.716864,465.68288)"
852 style="stroke:none;stroke-width:4.48028">
853 <rect
854 style="opacity:1;fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:8.96054;stroke-opacity:1"
855 id="rect1061"
856 width="452.00439"
857 height="192.0562"
858 x="11.609296"
859 y="276.44562"
860 ry="4.0176301" />
861 <g
862 id="g1109"
863 transform="translate(-2.7615661,-1.7576335)"
864 style="stroke:none;stroke-width:4.48028">
865 <path
866 id="path14"
867 class="st0"
868 d="m 439.74452,358.11274 c 0,4.22 -3.41,7.64 -7.64,7.64 -4.22,0 -7.63,-3.42 -7.63,-7.64 0,-4.22 3.41,-7.64 7.63,-7.64 4.23,0 7.64,3.42 7.64,7.64 v 0"
869 style="fill:#4a97d2;fill-opacity:1;stroke:none;stroke-width:0.448028;stroke-opacity:1" />
870 <path
871 id="path16"
872 class="st1"
873 d="m 114.56452,324.94274 -11.13,-6.3 -22.409996,45.41 -23.9,-45.41 -11.27,6.3 28.41,53.38 c -0.21,0.51 -0.86,1.9 -1.95,4.22 -1.11,2.21 -2.25,4.41 -3.46,6.62 -2.11,3.81 -4.26,6.91 -6.46,9.32 -2.21,2.51 -4.46,4.51 -6.78,6.02 -2.3,1.51 -4.7,2.65 -7.21,3.46 -2.41,0.8 -4.87,1.45 -7.38,1.95 l 5.12,10.68 c 1.6,-0.21 3.75,-0.71 6.46,-1.51 2.81,-0.7 5.86,-2.06 9.17,-4.06 3.3,-2 6.67,-4.86 10.07,-8.57 3.52,-3.71 6.78,-8.62 9.78,-14.73 l 32.939996,-66.78"
874 style="fill:#ffffff;stroke:none;stroke-width:0.448028;stroke-opacity:1" />
875 <path
876 id="path18"
877 class="st1"
878 d="m 175.39452,358.18274 c 0,3.51 -0.6,6.76 -1.81,9.78 -1.21,3 -2.86,5.62 -4.95,7.81 -2.01,2.11 -4.41,3.81 -7.22,5.12 -2.71,1.19 -5.67,1.8 -8.87,1.8 -3.21,0 -6.22,-0.6 -9.02,-1.8 -2.81,-1.31 -5.27,-3.01 -7.38,-5.12 -2,-2.19 -3.6,-4.81 -4.81,-7.81 -1.21,-3.01 -1.81,-6.27 -1.81,-9.78 0,-3.51 0.6,-6.76 1.81,-9.77 1.21,-3 2.81,-5.61 4.81,-7.82 2.11,-2.21 4.57,-3.92 7.38,-5.11 2.8,-1.32 5.81,-1.97 9.02,-1.97 3.21,0 6.16,0.65 8.87,1.97 2.81,1.19 5.21,2.9 7.22,5.11 2.1,2.21 3.75,4.81 4.95,7.82 1.2,3.01 1.81,6.26 1.81,9.77 m 13.98,0 c 0,-5.21 -0.95,-10.08 -2.86,-14.59 -1.81,-4.51 -4.36,-8.42 -7.67,-11.73 -3.32,-3.3 -7.22,-5.86 -11.73,-7.67 -4.51,-1.9 -9.38,-2.86 -14.59,-2.86 -5.21,0 -10.08,0.95 -14.59,2.86 -4.51,1.81 -8.43,4.36 -11.73,7.67 -3.3,3.31 -5.92,7.22 -7.82,11.73 -1.9,4.51 -2.86,9.38 -2.86,14.59 0,5.21 0.95,10.08 2.86,14.59 1.9,4.41 4.52,8.27 7.82,11.57 3.3,3.32 7.22,5.92 11.73,7.82 4.51,1.81 9.38,2.71 14.59,2.71 5.21,0 10.08,-0.9 14.59,-2.71 4.51,-1.91 8.41,-4.51 11.73,-7.82 3.3,-3.3 5.86,-7.16 7.67,-11.57 1.91,-4.51 2.86,-9.38 2.86,-14.59"
879 style="fill:#ffffff;stroke:none;stroke-width:0.448028;stroke-opacity:1" />
880 <path
881 id="path20"
882 class="st1"
883 d="m 373.22452,358.18274 c 0,3.51 -0.6,6.76 -1.81,9.78 -1.21,3 -2.86,5.62 -4.97,7.81 -2,2.11 -4.4,3.81 -7.21,5.12 -2.71,1.19 -5.67,1.8 -8.87,1.8 -3.21,0 -6.22,-0.6 -9.03,-1.8 -2.8,-1.31 -5.26,-3.01 -7.37,-5.12 -2,-2.19 -3.61,-4.81 -4.81,-7.81 -1.21,-3.01 -1.81,-6.27 -1.81,-9.78 0,-3.51 0.6,-6.76 1.81,-9.77 1.21,-3 2.81,-5.61 4.81,-7.82 2.11,-2.21 4.57,-3.92 7.37,-5.11 2.81,-1.32 5.82,-1.97 9.03,-1.97 3.21,0 6.16,0.65 8.87,1.97 2.81,1.19 5.21,2.9 7.21,5.11 2.11,2.21 3.76,4.81 4.97,7.82 1.21,3.01 1.81,6.26 1.81,9.77 m 13.98,0 c 0,-5.21 -0.95,-10.08 -2.86,-14.59 -1.81,-4.51 -4.36,-8.42 -7.67,-11.73 -3.32,-3.3 -7.22,-5.86 -11.73,-7.67 -4.51,-1.9 -9.38,-2.86 -14.59,-2.86 -5.22,0 -10.08,0.95 -14.59,2.86 -4.51,1.81 -8.43,4.36 -11.73,7.67 -3.3,3.31 -5.92,7.22 -7.82,11.73 -1.9,4.51 -2.86,9.38 -2.86,14.59 0,5.21 0.95,10.08 2.86,14.59 1.9,4.41 4.52,8.27 7.82,11.57 3.3,3.32 7.22,5.92 11.73,7.82 4.51,1.81 9.37,2.71 14.59,2.71 5.21,0 10.08,-0.9 14.59,-2.71 4.51,-1.91 8.41,-4.51 11.73,-7.82 3.3,-3.3 5.86,-7.16 7.67,-11.57 1.91,-4.51 2.86,-9.38 2.86,-14.59"
884 style="fill:#ffffff;stroke:none;stroke-width:0.448028;stroke-opacity:1" />
885 <path
886 id="path22"
887 class="st1"
888 d="m 288.05452,298.59274 -13.39,7.52 v 16.45 h -36.21 c -26.15,0 -41.9,12.74 -41.9,35.95 0,36.04 37.55,42.84 64.25,29.96 l -5.63,-10.92 c -21.13,9.23 -44.53,5.3 -44.53,-19.28 0,-15.86 8.26,-24.54 27.49,-24.54 h 36.54 v 43.82 c 0,19.37 22.19,19.81 35.95,11.86 l -5.29,-10.45 c -8.85,4.48 -17.26,5.06 -17.26,-3.53 v -41.7 h 18.32 v -11.17 h -18.32 l -0.02,-23.97 v 0"
889 style="fill:#ffffff;stroke:none;stroke-width:0.448028;stroke-opacity:1" />
890 <path
891 id="path24"
892 class="st1"
893 d="m 136.79452,428.30274 h 3.35 c 1.69,-0.01 3.34,1.19 3.34,2.9 0,2.87 -3.23,3.3 -3.23,3.3 l -3.46,0.02 z m -4.84,-4.1 v 25.3 h 4.83 l 0.06,-10.67 c 8.62,0.54 11.84,-2.46 11.84,-7.75 0,-4.75 -4.26,-6.88 -8.34,-6.88 h -8.39 v 0"
894 style="fill:#ffffff;stroke:none;stroke-width:0.448028;stroke-opacity:1" />
895 <path
896 id="path26"
897 class="st1"
898 d="m 224.38452,436.87274 c 0,1.23 -0.23,2.39 -0.69,3.46 -0.42,1.04 -1.02,1.95 -1.81,2.74 -0.78,0.78 -1.7,1.4 -2.75,1.86 -1.04,0.42 -2.17,0.64 -3.38,0.64 -1.22,0 -2.35,-0.22 -3.39,-0.64 -1.05,-0.46 -1.96,-1.07 -2.75,-1.86 -0.76,-0.78 -1.36,-1.7 -1.81,-2.74 -0.46,-1.07 -0.69,-2.23 -0.69,-3.46 0,-1.23 0.23,-2.37 0.69,-3.42 0.45,-1.06 1.05,-1.99 1.81,-2.77 0.78,-0.78 1.7,-1.39 2.75,-1.82 1.04,-0.45 2.17,-0.67 3.39,-0.67 1.21,0 2.34,0.23 3.38,0.67 1.05,0.43 1.96,1.04 2.75,1.82 0.78,0.78 1.39,1.71 1.81,2.77 0.46,1.05 0.69,2.19 0.69,3.42 m 4.9,0 c 0,-1.81 -0.35,-3.5 -1.06,-5.06 -0.69,-1.59 -1.65,-2.97 -2.89,-4.12 -1.21,-1.17 -2.64,-2.09 -4.3,-2.75 -1.64,-0.69 -3.41,-1.04 -5.3,-1.04 -1.9,0 -3.69,0.35 -5.35,1.04 -1.64,0.66 -3.06,1.58 -4.27,2.75 -1.22,1.16 -2.17,2.53 -2.89,4.12 -0.69,1.57 -1.03,3.25 -1.03,5.06 0,1.83 0.34,3.53 1.03,5.1 0.72,1.57 1.68,2.94 2.89,4.12 1.21,1.17 2.63,2.09 4.27,2.75 1.66,0.66 3.45,1 5.35,1 1.89,0 3.67,-0.34 5.3,-1 1.66,-0.66 3.1,-1.58 4.3,-2.75 1.24,-1.18 2.21,-2.55 2.89,-4.12 0.71,-1.56 1.06,-3.26 1.06,-5.1"
899 style="fill:#ffffff;stroke:none;stroke-width:0.448028;stroke-opacity:1" />
900 <path
901 id="path28"
902 class="st1"
903 d="m 249.02452,424.25274 v 19.18 c 0,0.77 -0.57,1.63 -1.51,1.65 l -1.51,0.06 0.08,4.7 1.41,0.02 c 4.73,0.07 6.36,-4.37 6.36,-6.45 v -19.13"
904 style="fill:#ffffff;stroke:none;stroke-width:0.448028;stroke-opacity:1" />
905 <path
906 id="path30"
907 class="st1"
908 d="m 290.20452,424.19274 h -16.13 v 25.22 h 16.2 l -0.07,-4.06 h -11.28 v -6.58 h 9.44 v -4.06 h -9.44 v -6.38 h 11.21 l 0.07,-4.14"
909 style="fill:#ffffff;stroke:none;stroke-width:0.448028;stroke-opacity:1" />
910 <path
911 id="path32"
912 class="st1"
913 d="m 327.39452,430.24274 c -8.26,-4.53 -16.39,-1.78 -16.39,6.52 0,6.69 6.43,11.84 17,6.31 l 1.53,4.13 c -10.15,5.58 -23.51,1.6 -23.51,-10.44 0,-10.91 11.85,-16.59 23.36,-10.61 l -1.99,4.09"
914 style="fill:#ffffff;stroke:none;stroke-width:0.448028;stroke-opacity:1" />
915 <path
916 id="path34"
917 class="st1"
918 d="m 366.07452,424.19274 0.01,4.13 h -8.05 v 21.16 h -4.85 v -21.15 h -7.73 l 0.11,-4.13 h 20.51"
919 style="fill:#ffffff;stroke:none;stroke-width:0.448028;stroke-opacity:1" />
920 <path
921 id="path36"
922 class="st1"
923 d="m 172.67452,428.30274 h 3.35 c 1.69,-0.01 3.34,1.19 3.34,2.9 0,2.87 -3.23,3.3 -3.23,3.3 l -3.46,0.02 z m -4.82,-4.1 v 25.3 h 4.82 v -10.89 h 3.2 l 5.59,10.89 h 5.5 l -6.67,-12.2 c 2.64,-1.18 4.01,-3.26 4.01,-6.22 0,-4.94 -4.33,-6.88 -9.09,-6.88 h -7.36 v 0"
924 style="fill:#ffffff;stroke:none;stroke-width:0.448028;stroke-opacity:1" />
925 </g>
926 </g>
927 <g
928 id="g1211"
929 transform="translate(26)">
930 <rect
931 style="fill:#ffbe6f;fill-opacity:1;fill-rule:evenodd;stroke:#ffa348;stroke-width:2;stroke-opacity:1"
932 id="rect917-2"
933 width="125.52824"
934 height="69.017166"
935 x="400.98758"
936 y="502.18555"
937 ry="3.4599047" />
938 <text
939 xml:space="preserve"
940 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
941 x="463.47824"
942 y="522.11536"
943 id="text1185-3-5"><tspan
944 sodipodi:role="line"
945 id="tspan1183-8-4"
946 x="463.47824"
947 y="522.11536"
948 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;stroke:none">project</tspan><tspan
949 sodipodi:role="line"
950 x="463.47824"
951 y="540.11206"
952 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;stroke:none"
953 id="tspan959-9">&quot;contrib&quot;</tspan><tspan
954 sodipodi:role="line"
955 x="465.32721"
956 y="558.1087"
957 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';stroke:none"
958 id="tspan957-6"><tspan
959 style="text-align:center;text-anchor:middle"
960 id="tspan961-2">git repository</tspan> </tspan></text>
961 </g>
962 <g
963 id="g1211-2"
964 transform="translate(301.39294,0.59191294)">
965 <rect
966 style="fill:#ffbe6f;fill-opacity:1;fill-rule:evenodd;stroke:#ffa348;stroke-width:2;stroke-opacity:1"
967 id="rect917-2-7"
968 width="125.52824"
969 height="69.017166"
970 x="400.98758"
971 y="502.18555"
972 ry="3.4599047" />
973 <text
974 xml:space="preserve"
975 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
976 x="463.47824"
977 y="522.11536"
978 id="text1185-3-5-0"><tspan
979 sodipodi:role="line"
980 id="tspan1183-8-4-8"
981 x="463.47824"
982 y="522.11536"
983 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;stroke:none">local</tspan><tspan
984 sodipodi:role="line"
985 x="463.47824"
986 y="540.11206"
987 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;stroke:none"
988 id="tspan959-9-9">development</tspan><tspan
989 sodipodi:role="line"
990 x="465.32721"
991 y="558.1087"
992 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';stroke:none"
993 id="tspan957-6-3"><tspan
994 style="text-align:center;text-anchor:middle"
995 id="tspan961-2-4">git repository</tspan> </tspan></text>
996 </g>
997 <g
998 id="g1315"
999 transform="translate(26,-6.418026)">
1000 <rect
1001 style="fill:#99c1f1;fill-opacity:1;fill-rule:evenodd;stroke:#62a0ea;stroke-width:2;stroke-opacity:1"
1002 id="rect917-2-4"
1003 width="125.52824"
1004 height="69.017166"
1005 x="400.02109"
1006 y="630.14075"
1007 ry="3.4599047" />
1008 <text
1009 xml:space="preserve"
1010 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
1011 x="462.51175"
1012 y="650.07056"
1013 id="text1185-3-5-5"><tspan
1014 sodipodi:role="line"
1015 id="tspan1183-8-4-4"
1016 x="462.51175"
1017 y="650.07056"
1018 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;stroke:none">project</tspan><tspan
1019 sodipodi:role="line"
1020 x="462.51175"
1021 y="668.06726"
1022 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;stroke:none"
1023 id="tspan959-9-97">&quot;contrib&quot;</tspan><tspan
1024 sodipodi:role="line"
1025 x="464.36072"
1026 y="686.0639"
1027 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';stroke:none"
1028 id="tspan957-6-5"><tspan
1029 style="text-align:center;text-anchor:middle"
1030 id="tspan961-2-44">git repository</tspan> </tspan></text>
1031 </g>
1032 <g
1033 id="g1315-2"
1034 transform="translate(305.48304,-6.418026)">
1035 <rect
1036 style="fill:#99c1f1;fill-opacity:1;fill-rule:evenodd;stroke:#62a0ea;stroke-width:2;stroke-opacity:1"
1037 id="rect917-2-4-6"
1038 width="125.52824"
1039 height="69.017166"
1040 x="400.02109"
1041 y="630.14075"
1042 ry="3.4599047" />
1043 <text
1044 xml:space="preserve"
1045 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
1046 x="462.51175"
1047 y="650.07056"
1048 id="text1185-3-5-5-6"><tspan
1049 sodipodi:role="line"
1050 id="tspan1183-8-4-4-9"
1051 x="462.51175"
1052 y="650.07056"
1053 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;stroke:none">project</tspan><tspan
1054 sodipodi:role="line"
1055 x="462.51175"
1056 y="668.06726"
1057 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;stroke:none"
1058 id="tspan959-9-97-7">development</tspan><tspan
1059 sodipodi:role="line"
1060 x="464.36072"
1061 y="686.0639"
1062 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';stroke:none"
1063 id="tspan957-6-5-4"><tspan
1064 style="text-align:center;text-anchor:middle"
1065 id="tspan961-2-44-8">git repository</tspan> </tspan></text>
1066 </g>
1067 <path
1068 style="fill:#ffa348;fill-rule:evenodd;stroke:#ffa348;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#Arrow2Mstart);marker-end:url(#Arrow2Mend)"
1069 d="m 552.51582,536.82903 149.8647,0.32211"
1070 id="path3307"
1071 inkscape:connector-type="polyline"
1072 inkscape:connector-curvature="0"
1073 inkscape:connection-start="#g1211"
1074 inkscape:connection-end="#g1211-2" />
1075 <text
1076 xml:space="preserve"
1077 style="font-weight:bold;font-size:42.5884px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
1078 x="313.46567"
1079 y="412.9321"
1080 id="text3781"><tspan
1081 sodipodi:role="line"
1082 id="tspan3779"
1083 x="313.46567"
1084 y="412.9321" /></text>
1085 <text
1086 xml:space="preserve"
1087 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
1088 x="580.85419"
1089 y="524.23517"
1090 id="text1185-9"><tspan
1091 sodipodi:role="line"
1092 id="tspan1183-1"
1093 x="580.85419"
1094 y="524.23517"
1095 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';stroke:none">git pull and push</tspan></text>
1096 <path
1097 style="fill:#62a0ea;fill-opacity:1;fill-rule:evenodd;stroke:#62a0ea;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker4174);marker-end:url(#marker4286)"
1098 d="M 551.54932,660.2313 H 705.50413"
1099 id="path4056"
1100 inkscape:connector-type="polyline"
1101 inkscape:connector-curvature="0"
1102 inkscape:connection-start="#g1315"
1103 inkscape:connection-end="#g1315-2" />
1104 <text
1105 xml:space="preserve"
1106 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
1107 x="580.85419"
1108 y="647.90686"
1109 id="text1185-9-4"><tspan
1110 sodipodi:role="line"
1111 id="tspan1183-1-6"
1112 x="580.85419"
1113 y="647.90686"
1114 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';stroke:none">git pull and push</tspan></text>
1115 <path
1116 style="fill:#62a0ea;fill-rule:evenodd;stroke:#62a0ea;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker4414)"
1117 d="M 551.54932,632.30915 702.38052,565.2082"
1118 id="path4404"
1119 inkscape:connector-type="polyline"
1120 inkscape:connector-curvature="0"
1121 inkscape:connection-start="#g1315"
1122 inkscape:connection-end="#g1211-2" />
1123 <path
1124 style="fill:#ffa348;fill-opacity:1;fill-rule:evenodd;stroke:#ffa348;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker4604)"
1125 d="m 552.51582,564.53342 152.98831,67.8586"
1126 id="path4494"
1127 inkscape:connector-type="polyline"
1128 inkscape:connector-curvature="0"
1129 inkscape:connection-start="#g1211"
1130 inkscape:connection-end="#g1315-2" />
1131 <path
1132 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker4712)"
1133 d="M 426.98758,552.03263 311.36621,580.28855"
1134 id="path4702"
1135 inkscape:connector-type="polyline"
1136 inkscape:connector-curvature="0"
1137 inkscape:connection-start="#g1211"
1138 inkscape:connection-end="#g1153" />
1139 <text
1140 xml:space="preserve"
1141 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
1142 x="377.95239"
1143 y="595.54547"
1144 id="text1185-9-0"><tspan
1145 sodipodi:role="line"
1146 x="377.95239"
1147 y="595.54547"
1148 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;stroke:none"
1149 id="tspan4840">git pull from the</tspan><tspan
1150 sodipodi:role="line"
1151 x="377.95239"
1152 y="613.54218"
1153 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;stroke:none"
1154 id="tspan4844">maintainer</tspan></text>
1155 <path
1156 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker4978)"
1157 d="M 426.02109,643.34906 311.36621,612.50929"
1158 id="path4850"
1159 inkscape:connector-type="polyline"
1160 inkscape:connector-curvature="0"
1161 inkscape:connection-start="#g1315"
1162 inkscape:connection-end="#g1153" />
1163 <path
1164 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker5285);marker-end:url(#marker5161)"
1165 d="M 75.034463,595.62705 H 185.83797"
1166 id="path5151"
1167 inkscape:connector-type="polyline"
1168 inkscape:connector-curvature="0" />
1169 <text
1170 xml:space="preserve"
1171 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
1172 x="266.03806"
1173 y="439.90387"
1174 id="text1185-9-7"><tspan
1175 sodipodi:role="line"
1176 id="tspan1183-1-2"
1177 x="266.03806"
1178 y="439.90387"
1179 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';stroke:none">git pull</tspan></text>
1180 <path
1181 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.99999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker5623)"
1182 d="M 250.16567,560.37713 V 455.50595 h 515.77219 l -0.12369,46.24529"
1183 id="path6123"
1184 sodipodi:nodetypes="cccc" />
1185 <path
1186 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.99999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker5623-2)"
1187 d="m 250.61744,629.82817 v 107.36644 h 515.77214 v -42.1946"
1188 id="path6123-0"
1189 sodipodi:nodetypes="cccc" />
1190 <text
1191 xml:space="preserve"
1192 style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
1193 x="266.03806"
1194 y="720.30841"
1195 id="text1185-9-7-7"><tspan
1196 sodipodi:role="line"
1197 id="tspan1183-1-2-6"
1198 x="266.03806"
1199 y="720.30841"
1200 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';stroke:none">git pull</tspan></text>
1201 </g>
1202 <style
1203 type="text/css"
1204 id="style1021"> .st0{fill:#4A97D2;} .st1{fill:#333333;} </style>
1205</svg>
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
24platforms as well as software stacks that can be maintained and scaled. 24platforms 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
29For further introductory information on the Yocto Project, you might be 29For further introductory information on the Yocto Project, you might be
30interested in this 30interested in this
@@ -38,12 +38,11 @@ to the Yocto Project.
38Features 38Features
39-------- 39--------
40 40
41The following list describes features and advantages of the Yocto 41Here are features and advantages of the Yocto Project:
42Project:
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
137Challenges 136Challenges
138---------- 137----------
139 138
140The following list presents challenges you might encounter when 139Here are challenges you might encounter when developing using the Yocto Project:
141developing 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
256The :term:`Source Directory` 253The :term:`Source Directory`
257contains both general layers and BSP layers right out of the box. You 254contains 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
269For example, if you were to examine the :yocto_git:`tree view </poky/tree/>` 265For 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
273layer. 269layer.
274 270
275For procedures on how to create layers, see the 271For 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`"
277section in the Yocto Project Development Tasks Manual. 273section in the Yocto Project Development Tasks Manual.
278 274
279Components and Tools 275Components and Tools
@@ -283,8 +279,7 @@ The Yocto Project employs a collection of components and tools used by
283the project itself, by project developers, and by those using the Yocto 279the project itself, by project developers, and by those using the Yocto
284Project. These components and tools are open source projects and 280Project. These components and tools are open source projects and
285metadata that are separate from the reference distribution 281metadata 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
288components and tools are downloaded separately. 283components and tools are downloaded separately.
289 284
290This section provides brief overviews of the components and tools 285This section provides brief overviews of the components and tools
@@ -293,8 +288,8 @@ associated with the Yocto Project.
293Development Tools 288Development Tools
294----------------- 289-----------------
295 290
296The following list consists of tools that help you develop images and 291Here are tools that help you develop images and applications using
297applications using the Yocto Project: 292the 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
348Production Tools 355Production Tools
349---------------- 356----------------
350 357
351The following list consists of tools that help production related 358Here are tools that help with production related activities using the
352activities using the Yocto Project: 359Yocto 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
442Open-Embedded Build System Components 419Open-Embedded Build System Components
443------------------------------------- 420-------------------------------------
444 421
445The following list consists of components associated with the 422Here 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
486Reference Distribution (Poky) 462Reference Distribution (Poky)
487----------------------------- 463-----------------------------
@@ -489,8 +465,8 @@ Reference Distribution (Poky)
489Poky is the Yocto Project reference distribution. It contains the 465Poky 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
492building your own distribution. See the 468building 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?`"
494section for an illustration that shows Poky and its relationship with 470section for an illustration that shows Poky and its relationship with
495other parts of the Yocto Project. 471other 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
505You can read more about Poky in the "`Reference Embedded Distribution 481You can read more about Poky in the
506(Poky) <#reference-embedded-distribution>`__" section. 482":ref:`overview-manual/yp-intro:reference embedded distribution (poky)`"
483section.
507 484
508Packages for Finished Targets 485Packages for Finished Targets
509----------------------------- 486-----------------------------
510 487
511The following lists components associated with packages for finished 488Here are components associated with packages for finished targets:
512targets:
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
553which you could use the Yocto Project on a system that was not native to 529which you could use the Yocto Project on a system that was not native to
554Linux. 530Linux.
555 531
5561. *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
5612. *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
5673. *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
571Development Methods 547Development Methods
572=================== 548===================
573 549
574The Yocto Project development environment usually involves a 550The Yocto Project development environment usually involves a
575:term:`Build Host` and target 551:term:`Build Host` and target
576hardware. You use the Build Host to build images and develop 552hardware. You use the Build Host to build images and develop
577applications, while you use the target hardware to test deployed 553applications, while you use the target hardware to execute deployed
578software. 554software.
579 555
580This section provides an introduction to the choices or development 556This section provides an introduction to the choices or development
581methods you have when setting up your Build Host. Depending on the your 557methods you have when setting up your Build Host. Depending on your
582particular workflow preference and the type of operating system your 558particular workflow preference and the type of operating system your
583Build Host runs, several choices exist that allow you to use the Yocto 559Build Host runs, you have several choices.
584Project.
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
652Reference Embedded Distribution (Poky) 628Reference 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
656Project's reference distribution or Reference OS Kit. Poky contains the 632Project'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
660of :term:`Metadata` to get you started 636words, Poky is a base specification of the functionality needed for a
661building your own distro. In other words, Poky is a base specification 637typical embedded system as well as the components from the Yocto Project
662of the functionality needed for a typical embedded system as well as the 638that allow you to build a distribution into a usable binary image.
663components from the Yocto Project that allow you to build a distribution
664into a usable binary image.
665 639
666Poky is a combined repository of BitBake, OpenEmbedded-Core (which is 640Poky is a combined repository of BitBake, OpenEmbedded-Core (which is
667found in ``meta``), ``meta-poky``, ``meta-yocto-bsp``, and documentation 641found in ``meta``), ``meta-poky``, ``meta-yocto-bsp``, and documentation
@@ -679,7 +653,7 @@ these items that make up the Poky repository in the
679The following figure illustrates what generally comprises Poky: 653The 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
730One of the most powerful properties of Poky is that every aspect of a 704One of the most powerful properties of Poky is that every aspect of a
731build is controlled by the metadata. You can use metadata to augment 705build is controlled by the metadata. You can use metadata to augment
732these base image types by adding metadata 706these 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
708functionality.
734These layers can provide, for example, an additional software stack for 709These layers can provide, for example, an additional software stack for
735an image type, add a board support package (BSP) for additional 710an image type, add a board support package (BSP) for additional
736hardware, or even create a new image type. 711hardware, or even create a new image type.
@@ -745,11 +720,11 @@ other build process, in which case the basic functionality can be
745defined by the classes it inherits from the OE-Core layer's class 720defined by the classes it inherits from the OE-Core layer's class
746definitions in ``./meta/classes``. Within a recipe you can also define 721definitions in ``./meta/classes``. Within a recipe you can also define
747additional tasks as well as task prerequisites. Recipe syntax through 722additional tasks as well as task prerequisites. Recipe syntax through
748BitBake also supports both ``_prepend`` and ``_append`` operators as a 723BitBake also supports both ``:prepend`` and ``:append`` operators as a
749method of extending task functionality. These operators inject code into 724method of extending task functionality. These operators inject code into
750the beginning or end of a task. For information on these BitBake 725the beginning or end of a task. For information on these BitBake
751operators, see the 726operators, 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)`"
753section in the BitBake User's Manual. 728section in the BitBake User's Manual.
754 729
755The OpenEmbedded Build System Workflow 730The OpenEmbedded Build System Workflow
@@ -760,41 +735,41 @@ accomplish image and SDK generation. The following figure overviews that
760workflow: 735workflow:
761 736
762.. image:: figures/YP-flow-diagram.png 737.. image:: figures/YP-flow-diagram.png
763 :align: center 738 :width: 100%
764 739
765Following is a brief summary of the "workflow": 740Here is a brief summary of the "workflow":
766 741
7671. Developers specify architecture, policies, patches and configuration 742#. Developers specify architecture, policies, patches and configuration
768 details. 743 details.
769 744
7702. 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
7743. 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
7784. 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
7825. Different QA and sanity checks run throughout entire build process. 757#. Different QA and sanity checks run throughout entire build process.
783 758
7846. 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
7877. 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
790For a very detailed look at this workflow, see the "`OpenEmbedded Build 765For a very detailed look at this workflow, see the
791System Concepts <#openembedded-build-system-build-concepts>`__" section. 766":ref:`overview-manual/concepts:openembedded build system concepts`" section.
792 767
793Some Basic Terms 768Some Basic Terms
794================ 769================
795 770
796It helps to understand some basic fundamental terms when learning the 771It helps to understand some basic fundamental terms when learning the
797Yocto Project. Although a list of terms exists in the ":doc:`Yocto Project 772Yocto Project. Although there is a list of terms in the ":doc:`Yocto Project
798Terms </ref-manual/terms>`" section of the Yocto Project 773Terms </ref-manual/terms>`" section of the Yocto Project
799Reference Manual, this section provides the definitions of some terms 774Reference Manual, this section provides the definitions of some terms
800helpful for getting started: 775helpful 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