1
0
mirror of https://git.yoctoproject.org/poky synced 2026-06-01 13:09:50 +00:00

overview-manual: simplify style and add missings references

(From yocto-docs rev: 4a07947dbe0dd70fd1d528a207d663dfdca2b7c1)

Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Michael Opdenacker
2021-05-12 11:31:54 +02:00
committed by Richard Purdie
parent 42f6423cc8
commit 31f1d4d331
3 changed files with 46 additions and 53 deletions
+34 -39
View File
@@ -139,7 +139,7 @@ hardware-specific configurations allows you to share other metadata by
using a different layer where that metadata might be common across using a different layer where that metadata might be common across
several pieces of hardware. several pieces of hardware.
Many layers exist that work in the Yocto Project development environment. The There are many layers working in the Yocto Project development environment. The
:yocto_home:`Yocto Project Curated Layer Index </software-overview/layers/>` :yocto_home:`Yocto Project Curated Layer Index </software-overview/layers/>`
and :oe_layerindex:`OpenEmbedded Layer Index <>` both contain layers from and :oe_layerindex:`OpenEmbedded Layer Index <>` both contain layers from
which you can use or leverage. which you can use or leverage.
@@ -370,7 +370,7 @@ BitBake's global behavior. This section takes a closer look at the
layers the build system uses to further control the build. These layers layers the build system uses to further control the build. These layers
provide Metadata for the software, machine, and policies. provide Metadata for the software, machine, and policies.
In general, three types of layer input exists. You can see them below In general, there are three types of layer input. You can see them below
the "User Configuration" box in the `general workflow the "User Configuration" box in the `general workflow
figure <overview-manual/concepts:openembedded build system concepts>`: figure <overview-manual/concepts:openembedded build system concepts>`:
@@ -427,8 +427,8 @@ Repositories <>` also shows layers categorized under "Yocto Metadata Layers."
.. note:: .. note::
Layers exist in the Yocto Project Source Repositories that cannot be There are layers in the Yocto Project Source Repositories that cannot be
found in the OpenEmbedded Layer Index. These layers are either found in the OpenEmbedded Layer Index. Such layers are either
deprecated or experimental in nature. deprecated or experimental in nature.
BitBake uses the ``conf/bblayers.conf`` file, which is part of the user BitBake uses the ``conf/bblayers.conf`` file, which is part of the user
@@ -489,7 +489,7 @@ the machine (``conf/machine/machine.conf``) and, of course, the layer
The remainder of the layer is dedicated to specific recipes by function: The remainder of the layer is dedicated to specific recipes by function:
``recipes-bsp``, ``recipes-core``, ``recipes-graphics``, ``recipes-bsp``, ``recipes-core``, ``recipes-graphics``,
``recipes-kernel``, and so forth. Metadata can exist for multiple ``recipes-kernel``, and so forth. There can be metadata for multiple
formfactors, graphics support systems, and so forth. formfactors, graphics support systems, and so forth.
.. note:: .. note::
@@ -528,9 +528,7 @@ project that is more dynamic or experimental in nature, a project might
keep source files in a repository controlled by a Source Control Manager keep source files in a repository controlled by a Source Control Manager
(SCM) such as Git. Pulling source from a repository allows you to (SCM) such as Git. Pulling source from a repository allows you to
control the point in the repository (the revision) from which you want control the point in the repository (the revision) from which you want
to build software. Finally, a combination of the two might exist, which to build software. A combination of the two is also possible.
would give the consumer a choice when deciding where to get source
files.
BitBake uses the :term:`SRC_URI` BitBake uses the :term:`SRC_URI`
variable to point to source files regardless of their location. Each variable to point to source files regardless of their location. Each
@@ -609,7 +607,7 @@ the specific revision from which to build.
Source Mirror(s) Source Mirror(s)
~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~
Two kinds of mirrors exist: pre-mirrors and regular mirrors. The There are two kinds of mirrors: pre-mirrors and regular mirrors. The
:term:`PREMIRRORS` and :term:`PREMIRRORS` and
:term:`MIRRORS` variables point to :term:`MIRRORS` variables point to
these, respectively. BitBake checks pre-mirrors before looking upstream these, respectively. BitBake checks pre-mirrors before looking upstream
@@ -667,8 +665,8 @@ package files are kept:
variables are used, respectively. variables are used, respectively.
- :term:`PACKAGE_ARCH`: Defines - :term:`PACKAGE_ARCH`: Defines
architecture-specific sub-folders. For example, packages could exist architecture-specific sub-folders. For example, packages could be
for the i586 or qemux86 architectures. available for the i586 or qemux86 architectures.
BitBake uses the BitBake uses the
:ref:`do_package_write_* <ref-tasks-package_write_deb>` :ref:`do_package_write_* <ref-tasks-package_write_deb>`
@@ -681,8 +679,8 @@ and
":ref:`ref-tasks-package_write_tar`" ":ref:`ref-tasks-package_write_tar`"
sections in the Yocto Project Reference Manual for additional sections in the Yocto Project Reference Manual for additional
information. As an example, consider a scenario where an IPK packaging information. As an example, consider a scenario where an IPK packaging
manager is being used and package architecture support for both i586 and manager is being used and there is package architecture support for both
qemux86 exist. Packages for the i586 architecture are placed in i586 and qemux86. Packages for the i586 architecture are placed in
``build/tmp/deploy/ipk/i586``, while packages for the qemux86 ``build/tmp/deploy/ipk/i586``, while packages for the qemux86
architecture are placed in ``build/tmp/deploy/ipk/qemux86``. architecture are placed in ``build/tmp/deploy/ipk/qemux86``.
@@ -698,7 +696,7 @@ closer look at each of those areas.
.. note:: .. note::
Separate documentation exists for the BitBake tool. See the Documentation for the BitBake tool is available separately. See the
BitBake User Manual BitBake User Manual
for reference material on BitBake. for reference material on BitBake.
@@ -783,12 +781,10 @@ Build Directory's hierarchy:
.. note:: .. note::
In the previous figure, notice that two sample hierarchies exist: one In the previous figure, notice that there are two sample hierarchies:
based on package architecture (i.e. one based on package architecture (i.e. :term:`PACKAGE_ARCH`)
PACKAGE_ARCH and one based on a machine (i.e. :term:`MACHINE`).
) and one based on a machine (i.e. The underlying structures are identical. The differentiator being
MACHINE
). The underlying structures are identical. The differentiator being
what the OpenEmbedded build system is using as a build target (e.g. what the OpenEmbedded build system is using as a build target (e.g.
general architecture, a build host, an SDK, or a specific machine). general architecture, a build host, an SDK, or a specific machine).
@@ -963,8 +959,7 @@ that part of the build process.
.. note:: .. note::
Support for creating feeds directly from the Support for creating feeds directly from the ``deploy/*``
deploy/\*
directories does not exist. Creating such feeds usually requires some directories does not exist. Creating such feeds usually requires some
kind of feed maintenance mechanism that would upload the new packages kind of feed maintenance mechanism that would upload the new packages
into an official package feed (e.g. the Ångström distribution). This into an official package feed (e.g. the Ångström distribution). This
@@ -1156,9 +1151,9 @@ checksum <overview-manual/concepts:checksums (signatures)>`.
OpenEmbedded. OpenEmbedded.
To determine if a task needs to be rerun, BitBake checks if a stamp file To determine if a task needs to be rerun, BitBake checks if a stamp file
with a matching input checksum exists for the task. If such a stamp file with a matching input checksum exists for the task. In this case,
exists, the task's output is assumed to exist and still be valid. If the the task's output is assumed to exist and still be valid. Otherwise,
file does not exist, the task is rerun. the task is rerun.
.. note:: .. note::
@@ -1234,14 +1229,14 @@ to run any of the ``do_fetch``, ``do_unpack``, ``do_patch``,
It becomes more complicated if everything can come from an sstate cache It becomes more complicated if everything can come from an sstate cache
because some objects are simply not required at all. For example, you do because some objects are simply not required at all. For example, you do
not need a compiler or native tools, such as quilt, if nothing exists to not need a compiler or native tools, such as quilt, if there isn't anything
compile or patch. If the ``do_package_write_*`` packages are available to compile or patch. If the ``do_package_write_*`` packages are available
from sstate, BitBake does not need the ``do_package`` task data. from sstate, BitBake does not need the ``do_package`` task data.
To handle all these complexities, BitBake runs in two phases. The first To handle all these complexities, BitBake runs in two phases. The first
is the "setscene" stage. During this stage, BitBake first checks the is the "setscene" stage. During this stage, BitBake first checks the
sstate cache for any targets it is planning to build. BitBake does a sstate cache for any targets it is planning to build. BitBake does a
fast check to see if the object exists rather than a complete download. fast check to see if the object exists rather than doing a complete download.
If nothing exists, the second phase, which is the setscene stage, If nothing exists, the second phase, which is the setscene stage,
completes and the main build proceeds. completes and the main build proceeds.
@@ -1366,9 +1361,9 @@ can initialize the environment before using the tools.
All the output files for an SDK are written to the ``deploy/sdk`` folder All the output files for an SDK are written to the ``deploy/sdk`` folder
inside the :term:`Build Directory` as inside the :term:`Build Directory` as
shown in the previous figure. Depending on the type of SDK, several shown in the previous figure. Depending on the type of SDK, there are
variables exist that help configure these files. The following list several variables to configure these files. Here are the variables
shows the variables associated with an extensible SDK: associated with an extensible SDK:
- :term:`DEPLOY_DIR`: Points to - :term:`DEPLOY_DIR`: Points to
the ``deploy`` directory. the ``deploy`` directory.
@@ -1577,8 +1572,8 @@ Shared State Cache
By design, the OpenEmbedded build system builds everything from scratch By design, the OpenEmbedded build system builds everything from scratch
unless :term:`BitBake` can determine unless :term:`BitBake` can determine
that parts do not need to be rebuilt. Fundamentally, building from that parts do not need to be rebuilt. Fundamentally, building from
scratch is attractive as it means all parts are built fresh and no scratch is attractive as it means all parts are built fresh and there is
possibility of stale data exists that can cause problems. When no possibility of stale data that can cause problems. When
developers hit problems, they typically default back to building from developers hit problems, they typically default back to building from
scratch so they have a know state from the start. scratch so they have a know state from the start.
@@ -1617,7 +1612,7 @@ them if they are deemed to be valid.
- The build system does not maintain - The build system does not maintain
:term:`PR` information as part of :term:`PR` information as part of
the shared state packages. Consequently, considerations exist that the shared state packages. Consequently, there are considerations that
affect maintaining shared state feeds. For information on how the affect maintaining shared state feeds. For information on how the
build system works with packages and can track incrementing ``PR`` build system works with packages and can track incrementing ``PR``
information, see the ":ref:`dev-manual/common-tasks:automatically incrementing a package version number`" information, see the ":ref:`dev-manual/common-tasks:automatically incrementing a package version number`"
@@ -1687,7 +1682,7 @@ used to prune the "run" scripts down to the minimum set, thereby
alleviating this problem and making the "run" scripts much more readable alleviating this problem and making the "run" scripts much more readable
as a bonus. as a bonus.
So far, solutions for shell scripts exist. What about Python tasks? The So far, there are solutions for shell scripts. What about Python tasks? The
same approach applies even though these tasks are more difficult. The same approach applies even though these tasks are more difficult. The
process needs to figure out what variables a Python function accesses process needs to figure out what variables a Python function accesses
and what functions it calls. Again, the incremental build solution and what functions it calls. Again, the incremental build solution
@@ -1695,7 +1690,7 @@ contains code that first figures out the variable and function
dependencies, and then creates a checksum for the data used as the input dependencies, and then creates a checksum for the data used as the input
to the task. to the task.
Like the ``WORKDIR`` case, situations exist where dependencies should be Like the ``WORKDIR`` case, there can be situations where dependencies should be
ignored. For these situations, you can instruct the build process to ignored. For these situations, you can instruct the build process to
ignore a dependency by using a line like the following:: ignore a dependency by using a line like the following::
@@ -1732,7 +1727,7 @@ to add is a policy decision. However, the effect is to generate a master
checksum that combines the basehash and the hashes of the task's checksum that combines the basehash and the hashes of the task's
dependencies. dependencies.
At the code level, a variety of ways exist by which both the basehash At the code level, there are multiple ways by which both the basehash
and the dependent task hashes can be influenced. Within the BitBake and the dependent task hashes can be influenced. Within the BitBake
configuration file, you can give BitBake some extra information to help configuration file, you can give BitBake some extra information to help
it construct the basehash. The following statement effectively results it construct the basehash. The following statement effectively results
@@ -1961,8 +1956,8 @@ Automatically Added Runtime Dependencies
The OpenEmbedded build system automatically adds common types of runtime The OpenEmbedded build system automatically adds common types of runtime
dependencies between packages, which means that you do not need to dependencies between packages, which means that you do not need to
explicitly declare the packages using explicitly declare the packages using
:term:`RDEPENDS`. Three automatic :term:`RDEPENDS`. There are three automatic
mechanisms exist (``shlibdeps``, ``pcdeps``, and ``depchains``) that mechanisms (``shlibdeps``, ``pcdeps``, and ``depchains``) that
handle shared libraries, package configuration (pkg-config) modules, and handle shared libraries, package configuration (pkg-config) modules, and
``-dev`` and ``-dbg`` packages, respectively. For other types of runtime ``-dev`` and ``-dbg`` packages, respectively. For other types of runtime
dependencies, you must manually declare the dependencies. dependencies, you must manually declare the dependencies.
@@ -71,7 +71,7 @@ section in
the Yocto Project Development Tasks Manual. the Yocto Project Development Tasks Manual.
If your development host is going to be a system that runs a Linux If your development host is going to be a system that runs a Linux
distribution, steps still exist that you must take to prepare the system distribution, you must still take steps to prepare the system
for use with the Yocto Project. You need to be sure that the Linux for use with the Yocto Project. You need to be sure that the Linux
distribution on the system is one that supports the Yocto Project. You distribution on the system is one that supports the Yocto Project. You
also need to be sure that the correct set of host packages are installed also need to be sure that the correct set of host packages are installed
@@ -80,8 +80,8 @@ set up a development host that runs Linux, see the
":ref:`dev-manual/start:setting up a native linux host`" ":ref:`dev-manual/start:setting up a native linux host`"
section in the Yocto Project Development Tasks Manual. section in the Yocto Project Development Tasks Manual.
Once your development host is set up to use the Yocto Project, several Once your development host is set up to use the Yocto Project, there
methods exist for you to do work in the Yocto Project environment: are several ways of working in the Yocto Project environment:
- *Command Lines, BitBake, and Shells:* Traditional development in the - *Command Lines, BitBake, and Shells:* Traditional development in the
Yocto Project involves using the :term:`OpenEmbedded Build System`, Yocto Project involves using the :term:`OpenEmbedded Build System`,
@@ -271,7 +271,7 @@ files that are being worked on simultaneously by more than one person.
All this work is done locally on the development host before anything is All this work is done locally on the development host before anything is
pushed to a "contrib" area and examined at the maintainer's level. pushed to a "contrib" area and examined at the maintainer's level.
A somewhat formal method exists by which developers commit changes and There is a somewhat formal method by which developers commit changes and
push them into the "contrib" area and subsequently request that the push them into the "contrib" area and subsequently request that the
maintainer include them into an upstream branch. This process is called maintainer include them into an upstream branch. This process is called
"submitting a patch" or "submitting a change." For information on "submitting a patch" or "submitting a change." For information on
@@ -279,9 +279,9 @@ submitting patches and changes, see the
":ref:`dev-manual/common-tasks:submitting a change to the yocto project`" ":ref:`dev-manual/common-tasks:submitting a change to the yocto project`"
section in the Yocto Project Development Tasks Manual. section in the Yocto Project Development Tasks Manual.
In summary, a single point of entry exists for changes into a "master" In summary, there is a single point of entry for changes into a "master"
or development branch of the Git repository, which is controlled by the or development branch of the Git repository, which is controlled by the
project's maintainer. And, a set of developers exist who independently project's maintainer. A set of developers independently
develop, test, and submit changes to "contrib" areas for the maintainer develop, test, and submit changes to "contrib" areas for the maintainer
to examine. The maintainer then chooses which changes are going to to examine. The maintainer then chooses which changes are going to
become a permanent part of the project. become a permanent part of the project.
+6 -8
View File
@@ -140,8 +140,7 @@ Here are challenges you might encounter when developing using the Yocto Project:
- *Steep Learning Curve:* The Yocto Project has a steep learning curve - *Steep Learning Curve:* The Yocto Project has a steep learning curve
and has many different ways to accomplish similar tasks. It can be and has many different ways to accomplish similar tasks. It can be
difficult to choose how to proceed when varying methods exist by difficult to choose between such ways.
which to accomplish a given task.
- *Understanding What Changes You Need to Make For Your Design Requires - *Understanding What Changes You Need to Make For Your Design Requires
Some Research:* Beyond the simple tutorial stage, understanding what Some Research:* Beyond the simple tutorial stage, understanding what
@@ -156,7 +155,7 @@ Here are challenges you might encounter when developing using the Yocto Project:
workflow <overview-manual/development-environment:the yocto project development environment>` workflow <overview-manual/development-environment:the yocto project development environment>`
could be confusing if you are used to traditional desktop and server could be confusing if you are used to traditional desktop and server
software development. software development.
In a desktop development environment, mechanisms exist to easily pull In a desktop development environment, there are mechanisms to easily pull
and install new packages, which are typically pre-compiled binaries and install new packages, which are typically pre-compiled binaries
from servers accessible over the Internet. Using the Yocto Project, from servers accessible over the Internet. Using the Yocto Project,
you must modify your configuration and rebuild to add additional you must modify your configuration and rebuild to add additional
@@ -430,8 +429,8 @@ Yocto Project:
require system administrator privileges. For example, file ownership require system administrator privileges. For example, file ownership
or permissions might need to be defined. Pseudo is a tool that you or permissions might need to be defined. Pseudo is a tool that you
can either use directly or through the environment variable can either use directly or through the environment variable
``LD_PRELOAD``. Either method allows these operations to succeed as ``LD_PRELOAD``. Either method allows these operations to succeed
if system administrator privileges exist even when they do not. even without system administrator privileges.
Thanks to Pseudo, the Yocto Project never needs root privileges to Thanks to Pseudo, the Yocto Project never needs root privileges to
build images for your target system. build images for your target system.
@@ -579,8 +578,7 @@ software.
This section provides an introduction to the choices or development This section provides an introduction to the choices or development
methods you have when setting up your Build Host. Depending on your methods you have when setting up your Build Host. Depending on your
particular workflow preference and the type of operating system your particular workflow preference and the type of operating system your
Build Host runs, several choices exist that allow you to use the Yocto Build Host runs, you have several choices.
Project.
.. note:: .. note::
@@ -790,7 +788,7 @@ Some Basic Terms
================ ================
It helps to understand some basic fundamental terms when learning the It helps to understand some basic fundamental terms when learning the
Yocto Project. Although a list of terms exists in the ":doc:`Yocto Project Yocto Project. Although there is a list of terms in the ":doc:`Yocto Project
Terms </ref-manual/terms>`" section of the Yocto Project Terms </ref-manual/terms>`" section of the Yocto Project
Reference Manual, this section provides the definitions of some terms Reference Manual, this section provides the definitions of some terms
helpful for getting started: helpful for getting started: