summaryrefslogtreecommitdiff
path: root/poky/documentation
diff options
context:
space:
mode:
Diffstat (limited to 'poky/documentation')
-rw-r--r--poky/documentation/bsp-guide/bsp.rst4
-rw-r--r--poky/documentation/contributor-guide/recipe-style-guide.rst156
-rw-r--r--poky/documentation/dev-manual/disk-space.rst8
-rw-r--r--poky/documentation/dev-manual/licenses.rst42
-rw-r--r--poky/documentation/dev-manual/new-recipe.rst19
-rw-r--r--poky/documentation/migration-guides/release-notes-4.3.rst5
-rw-r--r--poky/documentation/ref-manual/qa-checks.rst10
-rw-r--r--poky/documentation/ref-manual/variables.rst17
-rw-r--r--poky/documentation/sdk-manual/extensible.rst254
-rw-r--r--poky/documentation/template/template.svg2
10 files changed, 332 insertions, 185 deletions
diff --git a/poky/documentation/bsp-guide/bsp.rst b/poky/documentation/bsp-guide/bsp.rst
index 3be314bcf6..c78fbeb68f 100644
--- a/poky/documentation/bsp-guide/bsp.rst
+++ b/poky/documentation/bsp-guide/bsp.rst
@@ -893,8 +893,8 @@ Yocto Project:
``recipes-*`` subdirectories specific to the recipe's function, or
within a subdirectory containing a set of closely-related recipes.
The recipes themselves should follow the general guidelines for
- recipes used in the Yocto Project found in the ":oe_wiki:`OpenEmbedded
- Style Guide </Styleguide>`".
+ recipes found in the ":doc:`../contributor-guide/recipe-style-guide`"
+ in the Yocto Project and OpenEmbedded Contributor Guide.
- *License File:* You must include a license file in the
``meta-bsp_root_name`` directory. This license covers the BSP
diff --git a/poky/documentation/contributor-guide/recipe-style-guide.rst b/poky/documentation/contributor-guide/recipe-style-guide.rst
index a0d513e8e9..a005aa3247 100644
--- a/poky/documentation/contributor-guide/recipe-style-guide.rst
+++ b/poky/documentation/contributor-guide/recipe-style-guide.rst
@@ -7,17 +7,18 @@ Recipe Naming Conventions
=========================
In general, most recipes should follow the naming convention
-``recipes-category/package/packagename_version.bb``. Recipes for related
-projects may share the same package directory. ``packagename``, ``category``,
-and ``package`` may contain hyphens, but hyphens are not allowed in ``version``.
+``recipes-category/recipename/recipename_version.bb``. Recipes for related
+projects may share the same recipe directory. ``recipename`` and ``category``
+may contain hyphens, but hyphens are not allowed in ``version``.
If the recipe is tracking a Git revision that does not correspond to a released
-version of the software, ``version`` may be ``git`` (e.g. ``packagename_git.bb``)
+version of the software, ``version`` may be ``git`` (e.g. ``recipename_git.bb``)
+and the recipe would set :term:`PV`.
Version Policy
==============
-Our versions follow the form ``<package epoch>:<package version>-<package revision>``
+Our versions follow the form ``<epoch>:<version>-<revision>``
or in BitBake variable terms ${:term:`PE`}:${:term:`PV`}-${:term:`PR`}. We
generally follow the `Debian <https://www.debian.org/doc/debian-policy/ch-controlfields.html#version>`__
version policy which defines these terms.
@@ -26,7 +27,7 @@ In most cases the version :term:`PV` will be set automatically from the recipe
file name. It is recommended to use released versions of software as these are
revisions that upstream are expecting people to use.
-Package versions should always compare and sort correctly so that upgrades work
+Recipe versions should always compare and sort correctly so that upgrades work
as expected. With conventional versions such as ``1.4`` upgrading ``to 1.5``
this happens naturally, but some versions don't sort. For example,
``1.5 Release Candidate 2`` could be written as ``1.5rc2`` but this sorts after
@@ -62,7 +63,7 @@ Version Number Changes
The :term:`PR` variable is used to indicate different revisions of a recipe
that reference the same upstream source version. It can be used to force a
-new version of a package to be installed onto a device from a package feed.
+new version of a recipe to be installed onto a device from a package feed.
These once had to be set manually but in most cases these can now be set and
incremented automatically by a PR Server connected with a package feed.
@@ -255,3 +256,144 @@ Tips and Guidelines for Writing Recipes
- Use :term:`BBCLASSEXTEND` instead of creating separate recipes such as ``-native``
and ``-nativesdk`` ones, whenever possible. This avoids having to maintain multiple
recipe files at the same time.
+
+- Recipes should have tasks which are idempotent, i.e. that executing a given task
+ multiple times shouldn't change the end result. The build environment is built upon
+ this assumption and breaking it can cause obscure build failures.
+
+- For idempotence when modifying files in tasks, it is usually best to:
+
+ - copy a file ``X`` to ``X.orig`` (only if it doesn't exist already)
+ - then, copy ``X.orig`` back to ``X``,
+ - and, finally, modify ``X``.
+
+ This ensures if rerun the task always has the same end result and the
+ original file can be preserved to reuse. It also guards against an
+ interrupted build corrupting the file.
+
+Patch Upstream Status
+=====================
+
+In order to keep track of patches applied by recipes and ultimately reduce the
+number of patches that need maintaining, the OpenEmbedded build system
+requires information about the upstream status of each patch.
+
+In its description, each patch should provide detailed information about the
+bug that it addresses, such as the URL in a bug tracking system and links
+to relevant mailing list archives.
+
+Then, you should also add an ``Upstream-Status:`` tag containing one of the
+following status strings:
+
+``Pending``
+ No determination has been made yet, or patch has not yet been submitted to
+ upstream.
+
+ Keep in mind that every patch submitted upstream reduces the maintainance
+ burden in OpenEmbedded and Yocto Project in the long run, so this patch
+ status should only be used in exceptional cases if there are genuine
+ obstacles to submitting a patch upstream; the reason for that should be
+ included in the patch.
+
+``Submitted [where]``
+ Submitted to upstream, waiting for approval. Optionally include where
+ it was submitted, such as the author, mailing list, etc.
+
+``Backport [version]``
+ Accepted upstream and included in the next release, or backported from newer
+ upstream version, because we are at a fixed version.
+ Include upstream version info (e.g. commit ID or next expected version).
+
+``Denied``
+ Not accepted by upstream, include reason in patch.
+
+``Inactive-Upstream [lastcommit: when (and/or) lastrelease: when]``
+ The upstream is no longer available. This typically means a defunct project
+ where no activity has happened for a long time --- measured in years. To make
+ that judgement, it is recommended to look at not only when the last release
+ happened, but also when the last commit happened, and whether newly made bug
+ reports and merge requests since that time receive no reaction. It is also
+ recommended to add to the patch description any relevant links where the
+ inactivity can be clearly seen.
+
+``Inappropriate [reason]``
+ The patch is not appropriate for upstream, include a brief reason on the
+ same line enclosed with ``[]``. In the past, there were several different
+ reasons not to submit patches upstream, but we have to consider that every
+ non-upstreamed patch means a maintainance burden for recipe maintainers.
+ Currently, the only reasons to mark patches as inappropriate for upstream
+ submission are:
+
+ - ``oe specific``: the issue is specific to how OpenEmbedded performs builds
+ or sets things up at runtime, and can be resolved only with a patch that
+ is not however relevant or appropriate for general upstream submission.
+ - ``upstream ticket <link>``: the issue is not specific to Open-Embedded
+ and should be fixed upstream, but the patch in its current form is not
+ suitable for merging upstream, and the author lacks sufficient expertise
+ to develop a proper patch. Instead the issue is handled via a bug report
+ (include link).
+
+Of course, if another person later takes care of submitting this patch upstream,
+the status should be changed to ``Submitted [where]``, and an additional
+``Signed-off-by:`` line should be added to the patch by the person claiming
+responsibility for upstreaming.
+
+Examples
+--------
+
+Here's an example of a patch that has been submitted upstream::
+
+ rpm: Adjusted the foo setting in bar
+
+ [RPM Ticket #65] -- http://rpm5.org/cvs/tktview?tn=65,5
+
+ The foo setting in bar was decreased from X to X-50% in order to
+ ensure we don't exhaust all system memory with foobar threads.
+
+ Upstream-Status: Submitted [rpm5-devel@rpm5.org]
+
+ Signed-off-by: Joe Developer <joe.developer@example.com>
+
+A future update can change the value to ``Backport`` or ``Denied`` as
+appropriate.
+
+Another example of a patch that is specific to OpenEmbedded::
+
+ Do not treat warnings as errors
+
+ There are additional warnings found with musl which are
+ treated as errors and fails the build, we have more combinations
+ than upstream supports to handle.
+
+ Upstream-Status: Inappropriate [oe specific]
+
+Here's a patch that has been backported from an upstream commit::
+
+ include missing sys/file.h for LOCK_EX
+
+ Upstream-Status: Backport [https://github.com/systemd/systemd/commit/ac8db36cbc26694ee94beecc8dca208ec4b5fd45]
+
+CVE patches
+===========
+
+In order to have a better control of vulnerabilities, patches that fix CVEs must
+contain a ``CVE:`` tag. This tag list all CVEs fixed by the patch. If more than
+one CVE is fixed, separate them using spaces.
+
+CVE Examples
+------------
+
+This should be the header of patch that fixes :cve:`2015-8370` in GRUB2::
+
+ grub2: Fix CVE-2015-8370
+
+ [No upstream tracking] -- https://bugzilla.redhat.com/show_bug.cgi?id=1286966
+
+ Back to 28; Grub2 Authentication
+
+ Two functions suffer from integer underflow fault; the grub_username_get() and grub_password_get()located in
+ grub-core/normal/auth.c and lib/crypto.c respectively. This can be exploited to obtain a Grub rescue shell.
+
+ Upstream-Status: Backport [http://git.savannah.gnu.org/cgit/grub.git/commit/?id=451d80e52d851432e109771bb8febafca7a5f1f2]
+ CVE: CVE-2015-8370
+ Signed-off-by: Joe Developer <joe.developer@example.com>
diff --git a/poky/documentation/dev-manual/disk-space.rst b/poky/documentation/dev-manual/disk-space.rst
index a84bef4511..6d1638a302 100644
--- a/poky/documentation/dev-manual/disk-space.rst
+++ b/poky/documentation/dev-manual/disk-space.rst
@@ -23,12 +23,12 @@ final disk usage of 22 Gbytes instead of &MIN_DISK_SPACE; Gbytes. However,
&MIN_DISK_SPACE_RM_WORK; Gbytes of initial free disk space are still needed to
create temporary files before they can be deleted.
-Purging Duplicate Shared State Cache Files
-==========================================
+Purging Obsolete Shared State Cache Files
+=========================================
After multiple build iterations, the Shared State (sstate) cache can contain
-duplicate cache files for a given package, consuming a substantial amount of
-disk space. However, only the most recent cache files are likeky to be reusable.
+multiple cache files for a given package, consuming a substantial amount of
+disk space. However, only the most recent ones are likely to be reused.
The following command is a quick way to purge all the cache files which
haven't been used for a least a specified number of days::
diff --git a/poky/documentation/dev-manual/licenses.rst b/poky/documentation/dev-manual/licenses.rst
index 9629dc5329..3b9190d47f 100644
--- a/poky/documentation/dev-manual/licenses.rst
+++ b/poky/documentation/dev-manual/licenses.rst
@@ -123,6 +123,13 @@ name and version (after variable expansion)::
LICENSE_FLAGS = "license_${PN}_${PV}"
+It is possible to give more details about a specific license
+using flags on the :term:`LICENSE_FLAGS_DETAILS` variable::
+
+ LICENSE_FLAGS_DETAILS[my-eula-license] = "For further details, see https://example.com/eula."
+
+If set, this will be displayed to the user if the license hasn't been accepted.
+
In order for a component restricted by a
:term:`LICENSE_FLAGS` definition to be enabled and included in an image, it
needs to have a matching entry in the global
@@ -298,19 +305,34 @@ There are other requirements beyond the scope of these three and the
methods described in this section (e.g. the mechanism through which
source code is distributed).
-As different organizations have different methods of complying with open
-source licensing, this section is not meant to imply that there is only
-one single way to meet your compliance obligations, but rather to
-describe one method of achieving compliance. The remainder of this
-section describes methods supported to meet the previously mentioned
-three requirements. Once you take steps to meet these requirements, and
-prior to releasing images, sources, and the build system, you should
-audit all artifacts to ensure completeness.
+As different organizations have different ways of releasing software,
+there can be multiple ways of meeting license obligations. At
+least, we describe here two methods for achieving compliance:
+
+- The first method is to use OpenEmbedded's ability to provide
+ the source code, provide a list of licenses, as well as
+ compilation scripts and source code modifications.
+
+ The remainder of this section describes supported methods to meet
+ the previously mentioned three requirements.
+
+- The second method is to generate a *Software Bill of Materials*
+ (:term:`SBoM`), as described in the ":doc:`/dev-manual/sbom`" section.
+ Not only do you generate :term:`SPDX` output which can be used meet
+ license compliance requirements (except for sharing the build system
+ and layers sources for the time being), but this output also includes
+ component version and patch information which can be used
+ for vulnerability assessment.
+
+Whatever method you choose, prior to releasing images, sources,
+and the build system, you should audit all artifacts to ensure
+completeness.
.. note::
The Yocto Project generates a license manifest during image creation
- that is located in ``${DEPLOY_DIR}/licenses/``\ `image_name`\ ``-``\ `datestamp`
+ that is located in
+ ``${DEPLOY_DIR}/licenses/<image-name>-<machine>.rootfs-<datestamp>/``
to assist with any audits.
Providing the Source Code
@@ -428,7 +450,7 @@ with source as defined by the GPL and other open source licenses.
Providing Compilation Scripts and Source Code Modifications
-----------------------------------------------------------
-At this point, we have addressed all we need to prior to generating the
+At this point, we have addressed all we need prior to generating the
image. The next two requirements are addressed during the final
packaging of the release.
diff --git a/poky/documentation/dev-manual/new-recipe.rst b/poky/documentation/dev-manual/new-recipe.rst
index cb9533ff5d..02bb08474f 100644
--- a/poky/documentation/dev-manual/new-recipe.rst
+++ b/poky/documentation/dev-manual/new-recipe.rst
@@ -1036,13 +1036,14 @@ build system and package managers, so the resulting packages will not
correctly trigger an upgrade.
In order to ensure the versions compare properly, the recommended
-convention is to set :term:`PV` within the
-recipe to "previous_version+current_version". You can use an additional
-variable so that you can use the current version elsewhere. Here is an
-example::
+convention is to use a tilde (``~``) character as follows::
- REALPV = "0.8.16-rc1"
- PV = "0.8.15+${REALPV}"
+ PV = 0.8.16~rc1
+
+This way ``0.8.16~rc1`` sorts before ``0.8.16``. See the
+":ref:`contributor-guide/recipe-style-guide:version policy`" section in the
+Yocto Project and OpenEmbedded Contributor Guide for more details about
+versioning code corresponding to a pre-release or to a specific Git commit.
Post-Installation Scripts
=========================
@@ -1394,9 +1395,9 @@ doing the following:
Following Recipe Style Guidelines
=================================
-When writing recipes, it is good to conform to existing style
-guidelines. The :oe_wiki:`OpenEmbedded Styleguide </Styleguide>` wiki page
-provides rough guidelines for preferred recipe style.
+When writing recipes, it is good to conform to existing style guidelines.
+See the ":doc:`../contributor-guide/recipe-style-guide`" in the Yocto Project
+and OpenEmbedded Contributor Guide for reference.
It is common for existing recipes to deviate a bit from this style.
However, aiming for at least a consistent style is a good idea. Some
diff --git a/poky/documentation/migration-guides/release-notes-4.3.rst b/poky/documentation/migration-guides/release-notes-4.3.rst
index c19cf6e4f9..87cd622743 100644
--- a/poky/documentation/migration-guides/release-notes-4.3.rst
+++ b/poky/documentation/migration-guides/release-notes-4.3.rst
@@ -10,6 +10,8 @@ New Features / Enhancements in 4.3
- New variables:
+ - :term:`FILE_LAYERNAME`: bitbake now sets this to the name of the layer containing the recipe
+
- :term:`FIT_ADDRESS_CELLS` and :term:`UBOOT_FIT_ADDRESS_CELLS`.
See details below.
@@ -17,7 +19,8 @@ New Features / Enhancements in 4.3
- :term:`KERNEL_DTBVENDORED`: whether to keep vendor subdirectories.
- - :term:`FILE_LAYERNAME`: bitbake now sets this to the name of the layer containing the recipe
+ - :term:`LICENSE_FLAGS_DETAILS`: add extra details about a recipe license
+ in case it is not allowed by :term:`LICENSE_FLAGS_ACCEPTED`.
- Layername functionality available through overrides
diff --git a/poky/documentation/ref-manual/qa-checks.rst b/poky/documentation/ref-manual/qa-checks.rst
index 6fdb0fbde9..4a02e7206a 100644
--- a/poky/documentation/ref-manual/qa-checks.rst
+++ b/poky/documentation/ref-manual/qa-checks.rst
@@ -754,7 +754,7 @@ Errors and Warnings
- ``Missing Upstream-Status in patch <patchfile> Please add according to <url> [patch-status-core/patch-status-noncore]``
- The Upstream-Status value is missing in the specified patch file's header.
+ The ``Upstream-Status`` value is missing in the specified patch file's header.
This value is intended to track whether or not the patch has been sent
upstream, whether or not it has been merged, etc.
@@ -762,13 +762,13 @@ Errors and Warnings
recipes in OE-Core) and ``patch-status-noncore`` (for recipes in any other
layer).
- For more information on setting Upstream-Status see:
- https://www.openembedded.org/wiki/Commit_Patch_Message_Guidelines#Patch_Header_Recommendations:_Upstream-Status
-
+ For more information, see the
+ ":ref:`contributor-guide/recipe-style-guide:patch upstream status`"
+ section in the Yocto Project and OpenEmbedded Contributor Guide.
- ``Malformed Upstream-Status in patch <patchfile> Please correct according to <url> [patch-status-core/patch-status-noncore]``
- The Upstream-Status value in the specified patch file's header is invalid -
+ The ``Upstream-Status`` value in the specified patch file's header is invalid -
it must be a specific format. See the "Missing Upstream-Status" entry above
for more information.
diff --git a/poky/documentation/ref-manual/variables.rst b/poky/documentation/ref-manual/variables.rst
index 7a71abc0ae..11523bb9e7 100644
--- a/poky/documentation/ref-manual/variables.rst
+++ b/poky/documentation/ref-manual/variables.rst
@@ -4968,6 +4968,23 @@ system and gives an overview of their function and contents.
":ref:`dev-manual/licenses:enabling commercially licensed recipes`"
section in the Yocto Project Development Tasks Manual.
+ :term:`LICENSE_FLAGS_DETAILS`
+ Adds details about a flag in :term:`LICENSE_FLAGS`. This way,
+ if such a flag is not accepted through :term:`LICENSE_FLAGS_ACCEPTED`,
+ the error message will be more informative, containing the specified
+ extra details.
+
+ For example, a recipe with an EULA may set::
+
+ LICENSE_FLAGS = "FooBar-EULA"
+ LICENSE_FLAGS_DETAILS[FooBar-EULA] = "For further details, see https://example.com/eula."
+
+ If ``Foobar-EULA`` isn't in :term:`LICENSE_FLAGS_ACCEPTED`, the
+ error message is more useful::
+
+ Has a restricted license 'FooBar-EULA' which is not listed in your LICENSE_FLAGS_ACCEPTED.
+ For further details, see https://example.com/eula.
+
:term:`LICENSE_PATH`
Path to additional licenses used during the build. By default, the
OpenEmbedded build system uses :term:`COMMON_LICENSE_DIR` to define the
diff --git a/poky/documentation/sdk-manual/extensible.rst b/poky/documentation/sdk-manual/extensible.rst
index 9e08e57a4e..355c6cb0e4 100644
--- a/poky/documentation/sdk-manual/extensible.rst
+++ b/poky/documentation/sdk-manual/extensible.rst
@@ -48,18 +48,20 @@ Extensible SDK can be installed in two different ways, and both have
their own pros and cons:
#. *Setting up the Extensible SDK environment directly in a Yocto build*. This
-avoids having to produce, test, distribute and maintain separate SDK installer
-archives, which can get very large. There is only one environment for the regular
-Yocto build and the SDK and less code paths where things can go not according to plan.
-It's easier to update the SDK: it simply means updating the Yocto layers with
-git fetch or layer management tooling. The SDK extensibility is better than in the
-second option: just run ``bitbake`` again to add more things to the sysroot, or add layers
-if even more things are required.
-
-#. *Setting up the Extensible SDK from a standalone installer*. This has the benefit of
-having a single, self-contained archive that includes all the needed binary artifacts.
-So nothing needs to be rebuilt, and there is no need to provide a well-functioning
-binary artefact cache over the network for developers with underpowered laptops.
+ avoids having to produce, test, distribute and maintain separate SDK
+ installer archives, which can get very large. There is only one environment
+ for the regular Yocto build and the SDK and less code paths where things can
+ go not according to plan. It's easier to update the SDK: it simply means
+ updating the Yocto layers with git fetch or layer management tooling. The
+ SDK extensibility is better than in the second option: just run ``bitbake``
+ again to add more things to the sysroot, or add layers if even more things
+ are required.
+
+#. *Setting up the Extensible SDK from a standalone installer*. This has the
+ benefit of having a single, self-contained archive that includes all the
+ needed binary artifacts. So nothing needs to be rebuilt, and there is no
+ need to provide a well-functioning binary artefact cache over the network
+ for developers with underpowered laptops.
Setting up the Extensible SDK environment directly in a Yocto build
-------------------------------------------------------------------
@@ -67,12 +69,12 @@ Setting up the Extensible SDK environment directly in a Yocto build
#. Set up all the needed layers and a Yocto :term:`Build Directory`, e.g. a regular Yocto
build where ``bitbake`` can be executed.
-#. Run:
- $ bitbake meta-ide-support
- $ bitbake -c populate_sysroot gtk+3
- (or any other target or native item that the application developer would need)
- $ bitbake build-sysroots
+#. Run::
+ $ bitbake meta-ide-support
+ $ bitbake -c populate_sysroot gtk+3
+ # or any other target or native item that the application developer would need
+ $ bitbake build-sysroots
Setting up the Extensible SDK from a standalone installer
---------------------------------------------------------
@@ -194,15 +196,13 @@ script is for an IA-based target machine using i586 tuning::
Run devtool --help for further details.
When using the environment script directly in a Yocto build, it can
-be run similarly:
+be run similarly::
$ source tmp/deploy/images/qemux86-64/environment-setup-core2-64-poky-linux
-Running the setup script defines many environment variables needed in
-order to use the SDK (e.g. ``PATH``,
-:term:`CC`,
-:term:`LD`, and so forth). If you want to
-see all the environment variables the script exports, examine the
+Running the setup script defines many environment variables needed in order to
+use the SDK (e.g. ``PATH``, :term:`CC`, :term:`LD`, and so forth). If you want
+to see all the environment variables the script exports, examine the
installation file itself.
Using ``devtool`` in Your SDK Workflow
@@ -216,11 +216,8 @@ system.
.. note::
- The use of
- devtool
- is not limited to the extensible SDK. You can use
- devtool
- to help you easily develop any project whose build output must be
+ The use of ``devtool`` is not limited to the extensible SDK. You can use
+ ``devtool`` to help you easily develop any project whose build output must be
part of an image built using the build system.
The ``devtool`` command line is organized similarly to
@@ -230,15 +227,10 @@ all the commands.
.. note::
- See the "
- devtool
-  Quick Reference
- " in the Yocto Project Reference Manual for a
- devtool
- quick reference.
+ See the ":doc:`/ref-manual/devtool-reference`"
+ section in the Yocto Project Reference Manual.
-Three ``devtool`` subcommands provide entry-points into
-development:
+Three ``devtool`` subcommands provide entry-points into development:
- *devtool add*: Assists in adding new software to be built.
@@ -315,9 +307,8 @@ command:
.. note::
- If required,
- devtool
- always creates a Git repository locally during the extraction.
+ If required, ``devtool`` always creates a Git repository locally
+ during the extraction.
Furthermore, the first positional argument ``srctree`` in this case
identifies where the ``devtool add`` command will locate the
@@ -326,8 +317,7 @@ command:
$ devtool add recipe srctree fetchuri
- In summary,
- the source code is pulled from fetchuri and extracted into the
+ In summary, the source code is pulled from fetchuri and extracted into the
location defined by ``srctree`` as a local Git repository.
Within workspace, ``devtool`` creates a recipe named recipe along
@@ -358,16 +348,14 @@ command:
$ devtool edit-recipe recipe
- From within the editor, you
- can make modifications to the recipe that take effect when you build
- it later.
+ From within the editor, you can make modifications to the recipe that
+ take effect when you build it later.
#. *Build the Recipe or Rebuild the Image*: The next step you take
depends on what you are going to do with the new code.
If you need to eventually move the build output to the target
- hardware, use the following ``devtool`` command:
- :;
+ hardware, use the following ``devtool`` command::
$ devtool build recipe
@@ -392,8 +380,11 @@ command:
development machine.
You can deploy your build output to that target hardware by using the
- ``devtool deploy-target`` command: $ devtool deploy-target recipe
- target The target is a live target machine running as an SSH server.
+ ``devtool deploy-target`` command::
+
+ $ devtool deploy-target recipe target
+
+ The target is a live target machine running as an SSH server.
You can, of course, also deploy the image you build to actual
hardware by using the ``devtool build-image`` command. However,
@@ -422,11 +413,9 @@ command:
.. note::
- You can use the
- devtool reset
- command to put things back should you decide you do not want to
- proceed with your work. If you do use this command, realize that
- the source tree is preserved.
+ You can use the ``devtool reset`` command to put things back should you
+ decide you do not want to proceed with your work. If you do use this
+ command, realize that the source tree is preserved.
Use ``devtool modify`` to Modify the Source of an Existing Component
--------------------------------------------------------------------
@@ -473,11 +462,9 @@ command:
$ devtool modify recipe
- Once
- ``devtool``\ locates the recipe, ``devtool`` uses the recipe's
- :term:`SRC_URI` statements to
- locate the source code and any local patch files from other
- developers.
+ Once ``devtool`` locates the recipe, ``devtool`` uses the recipe's
+ :term:`SRC_URI` statements to locate the source code and any local
+ patch files from other developers.
With this scenario, there is no ``srctree`` argument. Consequently, the
default behavior of the ``devtool modify`` command is to extract
@@ -513,11 +500,7 @@ command:
.. note::
- You cannot provide a URL for
- srctree
- using the
- devtool
- command.
+ You cannot provide a URL for ``srctree`` using the ``devtool`` command.
As with all extractions, the command uses the recipe's :term:`SRC_URI`
statements to locate the source files and any associated patch
@@ -570,7 +553,9 @@ command:
On the other hand, if you want an image to contain the recipe's
packages from the workspace for immediate deployment onto a device
(e.g. for testing purposes), you can use the ``devtool build-image``
- command: $ devtool build-image image
+ command::
+
+ $ devtool build-image image
#. *Deploy the Build Output*: When you use the ``devtool build`` command
to build out your recipe, you probably want to see if the resulting
@@ -610,8 +595,7 @@ command:
Any changes you want to turn into patches must be staged and
committed within the local Git repository before you use the
- devtool finish
- command.
+ ``devtool finish`` command.
Because there is no need to move the recipe, ``devtool finish``
either updates the original recipe in the original layer or the
@@ -626,11 +610,9 @@ command:
.. note::
- You can use the
- devtool reset
- command to put things back should you decide you do not want to
- proceed with your work. If you do use this command, realize that
- the source tree is preserved.
+ You can use the ``devtool reset`` command to put things back should you
+ decide you do not want to proceed with your work. If you do use this
+ command, realize that the source tree is preserved.
Use ``devtool upgrade`` to Create a Version of the Recipe that Supports a Newer Version of the Software
-------------------------------------------------------------------------------------------------------
@@ -644,12 +626,11 @@ counterparts.
.. note::
- Several methods exist by which you can upgrade recipes -
- ``devtool upgrade``
- happens to be one. You can read about all the methods by which you
- can upgrade recipes in the
- :ref:`dev-manual/upgrading-recipes:upgrading recipes` section
- of the Yocto Project Development Tasks Manual.
+ Several methods exist by which you can upgrade recipes ---
+ ``devtool upgrade`` happens to be one. You can read about all the methods by
+ which you can upgrade recipes in the
+ :ref:`dev-manual/upgrading-recipes:upgrading recipes` section of the Yocto
+ Project Development Tasks Manual.
The ``devtool upgrade`` command is flexible enough to allow you to specify
source code revision and versioning schemes, extract code into or out of the
@@ -755,8 +736,11 @@ The following diagram shows the common development flow used with the
development machine.
You can deploy your build output to that target hardware by using the
- ``devtool deploy-target`` command: $ devtool deploy-target recipe
- target The target is a live target machine running as an SSH server.
+ ``devtool deploy-target`` command::
+
+ $ devtool deploy-target recipe target
+
+ The target is a live target machine running as an SSH server.
You can, of course, also deploy the image you build using the
``devtool build-image`` command to actual hardware. However,
@@ -790,11 +774,9 @@ The following diagram shows the common development flow used with the
.. note::
- You can use the
- devtool reset
- command to put things back should you decide you do not want to
- proceed with your work. If you do use this command, realize that
- the source tree is preserved.
+ You can use the ``devtool reset`` command to put things back should you
+ decide you do not want to proceed with your work. If you do use this
+ command, realize that the source tree is preserved.
A Closer Look at ``devtool add``
================================
@@ -862,10 +844,9 @@ run ``devtool add`` again and provide the name or the version.
Dependency Detection and Mapping
--------------------------------
-The ``devtool add`` command attempts to detect build-time dependencies
-and map them to other recipes in the system. During this mapping, the
-command fills in the names of those recipes as part of the
-:term:`DEPENDS` variable within the
+The ``devtool add`` command attempts to detect build-time dependencies and map
+them to other recipes in the system. During this mapping, the command fills in
+the names of those recipes as part of the :term:`DEPENDS` variable within the
recipe. If a dependency cannot be mapped, ``devtool`` places a comment
in the recipe indicating such. The inability to map a dependency can
result from naming not being recognized or because the dependency simply
@@ -882,10 +863,8 @@ following to your recipe::
.. note::
- The
- devtool add
- command often cannot distinguish between mandatory and optional
- dependencies. Consequently, some of the detected dependencies might
+ The ``devtool add`` command often cannot distinguish between mandatory and
+ optional dependencies. Consequently, some of the detected dependencies might
in fact be optional. When in doubt, consult the documentation or the
configure script for the software the recipe is building for further
details. In some cases, you might find you can substitute the
@@ -895,16 +874,14 @@ following to your recipe::
License Detection
-----------------
-The ``devtool add`` command attempts to determine if the software you
-are adding is able to be distributed under a common, open-source
-license. If so, the command sets the
-:term:`LICENSE` value accordingly.
+The ``devtool add`` command attempts to determine if the software you are
+adding is able to be distributed under a common, open-source license. If
+so, the command sets the :term:`LICENSE` value accordingly.
You should double-check the value added by the command against the
documentation or source files for the software you are building and, if
necessary, update that :term:`LICENSE` value.
-The ``devtool add`` command also sets the
-:term:`LIC_FILES_CHKSUM`
+The ``devtool add`` command also sets the :term:`LIC_FILES_CHKSUM`
value to point to all files that appear to be license-related. Realize
that license statements often appear in comments at the top of source
files or within the documentation. In such cases, the command does not
@@ -984,10 +961,9 @@ mind:
Adding Native Tools
-------------------
-Often, you need to build additional tools that run on the :term:`Build
-Host` as opposed to
-the target. You should indicate this requirement by using one of the
-following methods when you run ``devtool add``:
+Often, you need to build additional tools that run on the :term:`Build Host`
+as opposed to the target. You should indicate this requirement by using one of
+the following methods when you run ``devtool add``:
- Specify the name of the recipe such that it ends with "-native".
Specifying the name like this produces a recipe that only builds for
@@ -1011,8 +987,7 @@ Adding Node.js Modules
----------------------
You can use the ``devtool add`` command two different ways to add
-Node.js modules: 1) Through ``npm`` and, 2) from a repository or local
-source.
+Node.js modules: through ``npm`` or from a repository or local source.
Use the following form to add Node.js modules through ``npm``::
@@ -1027,7 +1002,7 @@ these behaviors ensure the reproducibility and integrity of the build.
.. note::
- - You must use quotes around the URL. The ``devtool add`` does not
+ - You must use quotes around the URL. ``devtool add`` does not
require the quotes, but the shell considers ";" as a splitter
between multiple commands. Thus, without the quotes,
``devtool add`` does not receive the other parts, which results in
@@ -1042,9 +1017,8 @@ repository or local source tree. To add modules this way, use
$ devtool add https://github.com/diversario/node-ssdp
-In this example, ``devtool``
-fetches the specified Git repository, detects the code as Node.js code,
-fetches dependencies using ``npm``, and sets
+In this example, ``devtool`` fetches the specified Git repository, detects the
+code as Node.js code, fetches dependencies using ``npm``, and sets
:term:`SRC_URI` accordingly.
Working With Recipes
@@ -1121,18 +1095,13 @@ Setting Configure Arguments
If the software your recipe is building uses GNU autoconf, then a fixed
set of arguments is passed to it to enable cross-compilation plus any
-extras specified by
-:term:`EXTRA_OECONF` or
-:term:`PACKAGECONFIG_CONFARGS`
+extras specified by :term:`EXTRA_OECONF` or :term:`PACKAGECONFIG_CONFARGS`
set within the recipe. If you wish to pass additional options, add them
to :term:`EXTRA_OECONF` or :term:`PACKAGECONFIG_CONFARGS`. Other supported build
-tools have similar variables (e.g.
-:term:`EXTRA_OECMAKE` for
-CMake, :term:`EXTRA_OESCONS`
-for Scons, and so forth). If you need to pass anything on the ``make``
-command line, you can use :term:`EXTRA_OEMAKE` or the
-:term:`PACKAGECONFIG_CONFARGS`
-variables to do so.
+tools have similar variables (e.g. :term:`EXTRA_OECMAKE` for CMake,
+:term:`EXTRA_OESCONS` for Scons, and so forth). If you need to pass anything on
+the ``make`` command line, you can use :term:`EXTRA_OEMAKE` or the
+:term:`PACKAGECONFIG_CONFARGS` variables to do so.
You can use the ``devtool configure-help`` command to help you set the
arguments listed in the previous paragraph. The command determines the
@@ -1156,8 +1125,7 @@ the build host.
Recipes should never write files directly into the sysroot. Instead,
files should be installed into standard locations during the
-:ref:`ref-tasks-install` task within
-the ``${``\ :term:`D`\ ``}`` directory. A
+:ref:`ref-tasks-install` task within the ``${``\ :term:`D`\ ``}`` directory. A
subset of these files automatically goes into the sysroot. The reason
for this limitation is that almost all files that go into the sysroot
are cataloged in manifests in order to ensure they can be removed later
@@ -1173,14 +1141,12 @@ the target device, it is important to understand packaging because the
contents of the image are expressed in terms of packages and not
recipes.
-During the :ref:`ref-tasks-package`
-task, files installed during the
-:ref:`ref-tasks-install` task are
-split into one main package, which is almost always named the same as
-the recipe, and into several other packages. This separation exists
-because not all of those installed files are useful in every image. For
-example, you probably do not need any of the documentation installed in
-a production image. Consequently, for each recipe the documentation
+During the :ref:`ref-tasks-package` task, files installed during the
+:ref:`ref-tasks-install` task are split into one main package, which is almost
+always named the same as the recipe, and into several other packages. This
+separation exists because not all of those installed files are useful in every
+image. For example, you probably do not need any of the documentation installed
+in a production image. Consequently, for each recipe the documentation
files are separated into a ``-doc`` package. Recipes that package
software containing optional modules or plugins might undergo additional
package splitting as well.
@@ -1188,8 +1154,7 @@ package splitting as well.
After building a recipe, you can see where files have gone by looking in
the ``oe-workdir/packages-split`` directory, which contains a
subdirectory for each package. Apart from some advanced cases, the
-:term:`PACKAGES` and
-:term:`FILES` variables controls
+:term:`PACKAGES` and :term:`FILES` variables controls
splitting. The :term:`PACKAGES` variable lists all of the packages to be
produced, while the :term:`FILES` variable specifies which files to include
in each package by using an override to specify the package. For
@@ -1231,16 +1196,11 @@ target machine.
.. note::
- The
- devtool deploy-target
- and
- devtool undeploy-target
- commands do not currently interact with any package management system
- on the target device (e.g. RPM or OPKG). Consequently, you should not
- intermingle
- devtool deploy-target
- and package manager operations on the target device. Doing so could
- result in a conflicting set of files.
+ The ``devtool deploy-target`` and ``devtool undeploy-target`` commands do
+ not currently interact with any package management system on the target
+ device (e.g. RPM or OPKG). Consequently, you should not intermingle
+ ``devtool deploy-target`` and package manager operations on the target
+ device. Doing so could result in a conflicting set of files.
Installing Additional Items Into the Extensible SDK
===================================================
@@ -1264,7 +1224,7 @@ When using the extensible SDK directly in a Yocto build
In this scenario, the Yocto build tooling, e.g. ``bitbake``
is directly accessible to build additional items, and it
-can simply be executed directly:
+can simply be executed directly::
$ bitbake mesa
$ bitbake build-sysroots
@@ -1272,6 +1232,8 @@ can simply be executed directly:
When using a standalone installer for the Extensible SDK
--------------------------------------------------------
+::
+
$ devtool sdk-install mesa
By default, the ``devtool sdk-install`` command assumes
@@ -1297,13 +1259,13 @@ To update your installed SDK, use ``devtool`` as follows::
$ devtool sdk-update
-The previous command assumes your SDK provider has set the
-default update URL for you through the :term:`SDK_UPDATE_URL`
-variable as described in the
+The previous command assumes your SDK provider has set the default update URL
+for you through the :term:`SDK_UPDATE_URL` variable as described in the
":ref:`sdk-manual/appendix-customizing:Providing Updates to the Extensible SDK After Installation`"
section. If the SDK provider has not set that default URL, you need to
-specify it yourself in the command as follows: $ devtool sdk-update
-path_to_update_directory
+specify it yourself in the command as follows::
+
+ $ devtool sdk-update path_to_update_directory
.. note::
diff --git a/poky/documentation/template/template.svg b/poky/documentation/template/template.svg
index 43043e3afb..50715c08b0 100644
--- a/poky/documentation/template/template.svg
+++ b/poky/documentation/template/template.svg
@@ -1019,7 +1019,7 @@
id="tspan1183-1-8"
x="-52.348656"
y="518.42615"
- style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:37.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke:none">Objets</tspan></text>
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:37.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke:none">Objects</tspan></text>
<text
xml:space="preserve"
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"