mirror of
https://git.yoctoproject.org/poky
synced 2026-05-07 16:59:22 +00:00
sdk-manual: extensible.rst: align with master branch
In particular, this addresses multiple formatting issues. Aligning with the master branch as all updates apply to kirkstone too. (From yocto-docs rev: 5e2ec35e3d63f9c73726122fe2b3dd6d6f85a77e) Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com> Signed-off-by: Steve Sakoman <steve@sakoman.com>
This commit is contained in:
committed by
Steve Sakoman
parent
b099a1c252
commit
bdf0b48912
@@ -41,6 +41,44 @@ functionality.
|
||||
Installing the Extensible SDK
|
||||
=============================
|
||||
|
||||
Two ways to install the Extensible SDK
|
||||
--------------------------------------
|
||||
|
||||
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.
|
||||
|
||||
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
|
||||
|
||||
Setting up the Extensible SDK from a standalone installer
|
||||
---------------------------------------------------------
|
||||
|
||||
The first thing you need to do is install the SDK on your :term:`Build
|
||||
Host` by running the ``*.sh`` installation script.
|
||||
|
||||
@@ -102,16 +140,7 @@ must be writable for whichever users need to use the SDK.
|
||||
The following command shows how to run the installer given a toolchain
|
||||
tarball for a 64-bit x86 development host system and a 64-bit x86 target
|
||||
architecture. The example assumes the SDK installer is located in
|
||||
``~/Downloads/`` and has execution rights.
|
||||
|
||||
.. note::
|
||||
|
||||
If you do not have write permissions for the directory into which you
|
||||
are installing the SDK, the installer notifies you and exits. For
|
||||
that case, set up the proper permissions in the directory and run the
|
||||
installer again.
|
||||
|
||||
::
|
||||
``~/Downloads/`` and has execution rights::
|
||||
|
||||
$ ./Downloads/poky-glibc-x86_64-core-image-minimal-core2-64-toolchain-ext-2.5.sh
|
||||
Poky (Yocto Project Reference Distro) Extensible SDK installer version 2.5
|
||||
@@ -132,11 +161,23 @@ architecture. The example assumes the SDK installer is located in
|
||||
Each time you wish to use the SDK in a new shell session, you need to source the environment setup script e.g.
|
||||
$ . /home/scottrif/poky_sdk/environment-setup-core2-64-poky-linux
|
||||
|
||||
.. note::
|
||||
|
||||
If you do not have write permissions for the directory into which you
|
||||
are installing the SDK, the installer notifies you and exits. For
|
||||
that case, set up the proper permissions in the directory and run the
|
||||
installer again.
|
||||
|
||||
Running the Extensible SDK Environment Setup Script
|
||||
===================================================
|
||||
|
||||
Once you have the SDK installed, you must run the SDK environment setup
|
||||
script before you can actually use the SDK. This setup script resides in
|
||||
script before you can actually use the SDK.
|
||||
|
||||
When using a SDK directly in a Yocto build, you will find the script in
|
||||
``tmp/deploy/images/qemux86-64/`` in your :term:`Build Directory`.
|
||||
|
||||
When using a standalone SDK installer, this setup script resides in
|
||||
the directory you chose when you installed the SDK, which is either the
|
||||
default ``poky_sdk`` directory or the directory you chose during
|
||||
installation.
|
||||
@@ -154,11 +195,14 @@ script is for an IA-based target machine using i586 tuning::
|
||||
SDK environment now set up; additionally you may now run devtool to perform development tasks.
|
||||
Run devtool --help for further details.
|
||||
|
||||
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
|
||||
When using the environment script directly in a Yocto build, it can
|
||||
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
|
||||
installation file itself.
|
||||
|
||||
Using ``devtool`` in Your SDK Workflow
|
||||
@@ -172,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
|
||||
@@ -186,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.
|
||||
|
||||
@@ -233,9 +269,9 @@ shows common development flows you would use with the ``devtool add``
|
||||
command:
|
||||
|
||||
.. image:: figures/sdk-devtool-add-flow.png
|
||||
:align: center
|
||||
:width: 100%
|
||||
|
||||
1. *Generating the New Recipe*: The top part of the flow shows three
|
||||
#. *Generating the New Recipe*: The top part of the flow shows three
|
||||
scenarios by which you could use ``devtool add`` to generate a recipe
|
||||
based on existing source code.
|
||||
|
||||
@@ -252,7 +288,7 @@ command:
|
||||
- *Left*: The left scenario in the figure represents a common
|
||||
situation where the source code does not exist locally and needs
|
||||
to be extracted. In this situation, the source code is extracted
|
||||
to the default workspace - you do not want the files in some
|
||||
to the default workspace --- you do not want the files in some
|
||||
specific location outside of the workspace. Thus, everything you
|
||||
need will be located in the workspace::
|
||||
|
||||
@@ -267,13 +303,12 @@ command:
|
||||
- *Middle*: The middle scenario in the figure also represents a
|
||||
situation where the source code does not exist locally. In this
|
||||
case, the code is again upstream and needs to be extracted to some
|
||||
local area - this time outside of the default workspace.
|
||||
local area --- this time outside of the default workspace.
|
||||
|
||||
.. 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
|
||||
@@ -282,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
|
||||
@@ -302,28 +336,26 @@ command:
|
||||
recipe for the code and places the recipe into the workspace.
|
||||
|
||||
Because the extracted source code already exists, ``devtool`` does
|
||||
not try to relocate the source code into the workspace - only the
|
||||
not try to relocate the source code into the workspace --- only the
|
||||
new recipe is placed in the workspace.
|
||||
|
||||
Aside from a recipe folder, the command also creates an associated
|
||||
append folder and places an initial ``*.bbappend`` file within.
|
||||
|
||||
2. *Edit the Recipe*: You can use ``devtool edit-recipe`` to open up the
|
||||
#. *Edit the Recipe*: You can use ``devtool edit-recipe`` to open up the
|
||||
editor as defined by the ``$EDITOR`` environment variable and modify
|
||||
the file::
|
||||
|
||||
$ 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.
|
||||
|
||||
3. *Build the Recipe or Rebuild the Image*: The next step you take
|
||||
#. *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
|
||||
|
||||
@@ -334,7 +366,7 @@ command:
|
||||
|
||||
$ devtool build-image image
|
||||
|
||||
4. *Deploy the Build Output*: When you use the ``devtool build`` command
|
||||
#. *Deploy the Build Output*: When you use the ``devtool build`` command
|
||||
to build out your recipe, you probably want to see if the resulting
|
||||
build output works as expected on the target hardware.
|
||||
|
||||
@@ -348,20 +380,22 @@ 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,
|
||||
``devtool`` does not provide a specific command that allows you to
|
||||
deploy the image to actual hardware.
|
||||
|
||||
5. *Finish Your Work With the Recipe*: The ``devtool finish`` command
|
||||
#. *Finish Your Work With the Recipe*: The ``devtool finish`` command
|
||||
creates any patches corresponding to commits in the local Git
|
||||
repository, moves the new recipe to a more permanent layer, and then
|
||||
resets the recipe so that the recipe is built normally rather than
|
||||
from the workspace.
|
||||
::
|
||||
from the workspace::
|
||||
|
||||
$ devtool finish recipe layer
|
||||
|
||||
@@ -379,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
|
||||
--------------------------------------------------------------------
|
||||
@@ -401,9 +433,9 @@ diagram shows common development flows for the ``devtool modify``
|
||||
command:
|
||||
|
||||
.. image:: figures/sdk-devtool-modify-flow.png
|
||||
:align: center
|
||||
:width: 100%
|
||||
|
||||
1. *Preparing to Modify the Code*: The top part of the flow shows three
|
||||
#. *Preparing to Modify the Code*: The top part of the flow shows three
|
||||
scenarios by which you could use ``devtool modify`` to prepare to
|
||||
work on source files. Each scenario assumes the following:
|
||||
|
||||
@@ -430,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
|
||||
@@ -470,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
|
||||
@@ -512,11 +538,11 @@ command:
|
||||
append file for the recipe in the ``devtool`` workspace. The
|
||||
recipe and the source code remain in their original locations.
|
||||
|
||||
2. *Edit the Source*: Once you have used the ``devtool modify`` command,
|
||||
#. *Edit the Source*: Once you have used the ``devtool modify`` command,
|
||||
you are free to make changes to the source files. You can use any
|
||||
editor you like to make and save your source code modifications.
|
||||
|
||||
3. *Build the Recipe or Rebuild the Image*: The next step you take
|
||||
#. *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
|
||||
@@ -527,9 +553,11 @@ 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::
|
||||
|
||||
4. *Deploy the Build Output*: When you use the ``devtool build`` 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
|
||||
build output works as expected on target hardware.
|
||||
|
||||
@@ -554,13 +582,12 @@ command:
|
||||
``devtool`` does not provide a specific command to deploy the image
|
||||
to actual hardware.
|
||||
|
||||
5. *Finish Your Work With the Recipe*: The ``devtool finish`` command
|
||||
#. *Finish Your Work With the Recipe*: The ``devtool finish`` command
|
||||
creates any patches corresponding to commits in the local Git
|
||||
repository, updates the recipe to point to them (or creates a
|
||||
``.bbappend`` file to do so, depending on the specified destination
|
||||
layer), and then resets the recipe so that the recipe is built
|
||||
normally rather than from the workspace.
|
||||
::
|
||||
normally rather than from the workspace::
|
||||
|
||||
$ devtool finish recipe layer
|
||||
|
||||
@@ -568,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
|
||||
@@ -584,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
|
||||
-------------------------------------------------------------------------------------------------------
|
||||
@@ -602,27 +626,25 @@ 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 ``devtool``
|
||||
:ref:`devtool-the-workspace-layer-structure`,
|
||||
and work with any source file forms that the
|
||||
:ref:`bitbake:bitbake-user-manual/bitbake-user-manual-fetching:fetchers` support.
|
||||
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
|
||||
``devtool`` :ref:`devtool-the-workspace-layer-structure`, and work with any
|
||||
source file forms that the
|
||||
:ref:`bitbake-user-manual/bitbake-user-manual-fetching:fetchers` support.
|
||||
|
||||
The following diagram shows the common development flow used with the
|
||||
``devtool upgrade`` command:
|
||||
|
||||
.. image:: figures/sdk-devtool-upgrade-flow.png
|
||||
:align: center
|
||||
:width: 100%
|
||||
|
||||
1. *Initiate the Upgrade*: The top part of the flow shows the typical
|
||||
#. *Initiate the Upgrade*: The top part of the flow shows the typical
|
||||
scenario by which you use the ``devtool upgrade`` command. The
|
||||
following conditions exist:
|
||||
|
||||
@@ -674,7 +696,7 @@ The following diagram shows the common development flow used with the
|
||||
are incorporated into the build the next time you build the software
|
||||
just as are other changes you might have made to the source.
|
||||
|
||||
2. *Resolve any Conflicts created by the Upgrade*: Conflicts could happen
|
||||
#. *Resolve any Conflicts created by the Upgrade*: Conflicts could happen
|
||||
after upgrading the software to a new version. Conflicts occur
|
||||
if your recipe specifies some patch files in :term:`SRC_URI` that
|
||||
conflict with changes made in the new version of the software. For
|
||||
@@ -685,7 +707,7 @@ The following diagram shows the common development flow used with the
|
||||
conflicts created through use of a newer or different version of the
|
||||
software.
|
||||
|
||||
3. *Build the Recipe or Rebuild the Image*: The next step you take
|
||||
#. *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
|
||||
@@ -700,7 +722,7 @@ The following diagram shows the common development flow used with the
|
||||
|
||||
$ devtool build-image image
|
||||
|
||||
4. *Deploy the Build Output*: When you use the ``devtool build`` command
|
||||
#. *Deploy the Build Output*: When you use the ``devtool build`` command
|
||||
or ``bitbake`` to build your recipe, you probably want to see if the
|
||||
resulting build output works as expected on target hardware.
|
||||
|
||||
@@ -714,15 +736,18 @@ 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,
|
||||
``devtool`` does not provide a specific command that allows you to do
|
||||
this.
|
||||
|
||||
5. *Finish Your Work With the Recipe*: The ``devtool finish`` command
|
||||
#. *Finish Your Work With the Recipe*: The ``devtool finish`` command
|
||||
creates any patches corresponding to commits in the local Git
|
||||
repository, moves the new recipe to a more permanent layer, and then
|
||||
resets the recipe so that the recipe is built normally rather than
|
||||
@@ -734,8 +759,7 @@ The following diagram shows the common development flow used with the
|
||||
|
||||
If you specify a destination layer that is the same as the original
|
||||
source, then the old version of the recipe and associated files are
|
||||
removed prior to adding the new version.
|
||||
::
|
||||
removed prior to adding the new version::
|
||||
|
||||
$ devtool finish recipe layer
|
||||
|
||||
@@ -750,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``
|
||||
================================
|
||||
@@ -822,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
|
||||
@@ -842,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
|
||||
@@ -855,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
|
||||
@@ -944,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
|
||||
@@ -971,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``::
|
||||
|
||||
@@ -987,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
|
||||
@@ -1002,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
|
||||
@@ -1013,17 +1027,17 @@ Working With Recipes
|
||||
When building a recipe using the ``devtool build`` command, the typical
|
||||
build progresses as follows:
|
||||
|
||||
1. Fetch the source
|
||||
#. Fetch the source
|
||||
|
||||
2. Unpack the source
|
||||
#. Unpack the source
|
||||
|
||||
3. Configure the source
|
||||
#. Configure the source
|
||||
|
||||
4. Compile the source
|
||||
#. Compile the source
|
||||
|
||||
5. Install the build output
|
||||
#. Install the build output
|
||||
|
||||
6. Package the installed output
|
||||
#. Package the installed output
|
||||
|
||||
For recipes in the workspace, fetching and unpacking is disabled as the
|
||||
source tree has already been prepared and is persistent. Each of these
|
||||
@@ -1038,9 +1052,8 @@ does not include complete instructions for building the software.
|
||||
Instead, common functionality is encapsulated in classes inherited with
|
||||
the ``inherit`` directive. This technique leaves the recipe to describe
|
||||
just the things that are specific to the software being built. There is
|
||||
a :ref:`base <ref-classes-base>` class that
|
||||
is implicitly inherited by all recipes and provides the functionality
|
||||
that most recipes typically need.
|
||||
a :ref:`ref-classes-base` class that is implicitly inherited by all recipes
|
||||
and provides the functionality that most recipes typically need.
|
||||
|
||||
The remainder of this section presents information useful when working
|
||||
with recipes.
|
||||
@@ -1066,7 +1079,7 @@ links created within the source tree:
|
||||
``${``\ :term:`D`\ ``}``.
|
||||
|
||||
- ``sysroot-destdir/``: Contains a subset of files installed within
|
||||
``do_install`` that have been put into the shared sysroot. For
|
||||
:ref:`ref-tasks-install` that have been put into the shared sysroot. For
|
||||
more information, see the
|
||||
":ref:`dev-manual/new-recipe:sharing files between recipes`" section.
|
||||
|
||||
@@ -1082,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
|
||||
@@ -1117,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
|
||||
@@ -1134,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.
|
||||
@@ -1149,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
|
||||
@@ -1192,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
|
||||
===================================================
|
||||
@@ -1215,9 +1214,25 @@ need to link to libGL but you are not sure which recipe provides libGL.
|
||||
You can use the following command to find out::
|
||||
|
||||
$ devtool search libGL mesa
|
||||
A free implementation of the OpenGL API
|
||||
|
||||
A free implementation of the OpenGL API Once you know the recipe
|
||||
(i.e. ``mesa`` in this example), you can install it::
|
||||
Once you know the recipe
|
||||
(i.e. ``mesa`` in this example), you can install it.
|
||||
|
||||
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::
|
||||
|
||||
$ bitbake mesa
|
||||
$ bitbake build-sysroots
|
||||
|
||||
When using a standalone installer for the Extensible SDK
|
||||
--------------------------------------------------------
|
||||
|
||||
::
|
||||
|
||||
$ devtool sdk-install mesa
|
||||
|
||||
@@ -1244,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::
|
||||
|
||||
@@ -1267,15 +1282,15 @@ those customers need an SDK that has custom libraries. In such a case,
|
||||
you can produce a derivative SDK based on the currently installed SDK
|
||||
fairly easily by following these steps:
|
||||
|
||||
1. If necessary, install an extensible SDK that you want to use as a
|
||||
#. If necessary, install an extensible SDK that you want to use as a
|
||||
base for your derivative SDK.
|
||||
|
||||
2. Source the environment script for the SDK.
|
||||
#. Source the environment script for the SDK.
|
||||
|
||||
3. Add the extra libraries or other components you want by using the
|
||||
#. Add the extra libraries or other components you want by using the
|
||||
``devtool add`` command.
|
||||
|
||||
4. Run the ``devtool build-sdk`` command.
|
||||
#. Run the ``devtool build-sdk`` command.
|
||||
|
||||
The previous steps take the recipes added to the workspace and construct
|
||||
a new SDK installer that contains those recipes and the resulting binary
|
||||
|
||||
Reference in New Issue
Block a user