mirror of
git://git.yoctoproject.org/poky.git
synced 2025-07-19 12:59:02 +02:00

To simplify the style, replace "Following is" and "Following are" by "here is" and "here are", sounding more natural. In some cases, also go further by simplifying "Here are/is xxx" by "xxx are/is" when the "are" or "is" are not two far at the end of the sentence. In some cases too, completely remove the sentence, when it's redundant with the preceding title. (From yocto-docs rev: 52ba6bb16c73cbc2c0e77496d5226c49bce786f5) Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com> CC: Daniel Ammann <daniel.ammann@bytesatwork.ch> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
83 lines
3.2 KiB
ReStructuredText
83 lines
3.2 KiB
ReStructuredText
.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
|
|
|
|
Using a Development Shell
|
|
*************************
|
|
|
|
When debugging certain commands or even when just editing packages,
|
|
``devshell`` can be a useful tool. When you invoke ``devshell``, all
|
|
tasks up to and including
|
|
:ref:`ref-tasks-patch` are run for the
|
|
specified target. Then, a new terminal is opened and you are placed in
|
|
``${``\ :term:`S`\ ``}``, the source
|
|
directory. In the new terminal, all the OpenEmbedded build-related
|
|
environment variables are still defined so you can use commands such as
|
|
``configure`` and ``make``. The commands execute just as if the
|
|
OpenEmbedded build system were executing them. Consequently, working
|
|
this way can be helpful when debugging a build or preparing software to
|
|
be used with the OpenEmbedded build system.
|
|
|
|
Here is an example that uses ``devshell`` on a target named
|
|
``matchbox-desktop``::
|
|
|
|
$ bitbake matchbox-desktop -c devshell
|
|
|
|
This command spawns a terminal with a shell prompt within the
|
|
OpenEmbedded build environment. The
|
|
:term:`OE_TERMINAL` variable
|
|
controls what type of shell is opened.
|
|
|
|
For spawned terminals, the following occurs:
|
|
|
|
- The ``PATH`` variable includes the cross-toolchain.
|
|
|
|
- The ``pkgconfig`` variables find the correct ``.pc`` files.
|
|
|
|
- The ``configure`` command finds the Yocto Project site files as well
|
|
as any other necessary files.
|
|
|
|
Within this environment, you can run configure or compile commands as if
|
|
they were being run by the OpenEmbedded build system itself. As noted
|
|
earlier, the working directory also automatically changes to the Source
|
|
Directory (:term:`S`).
|
|
|
|
To manually run a specific task using ``devshell``, run the
|
|
corresponding ``run.*`` script in the
|
|
``${``\ :term:`WORKDIR`\ ``}/temp``
|
|
directory (e.g., ``run.do_configure.``\ `pid`). If a task's script does
|
|
not exist, which would be the case if the task was skipped by way of the
|
|
sstate cache, you can create the task by first running it outside of the
|
|
``devshell``::
|
|
|
|
$ bitbake -c task
|
|
|
|
.. note::
|
|
|
|
- Execution of a task's ``run.*`` script and BitBake's execution of
|
|
a task are identical. In other words, running the script re-runs
|
|
the task just as it would be run using the ``bitbake -c`` command.
|
|
|
|
- Any ``run.*`` file that does not have a ``.pid`` extension is a
|
|
symbolic link (symlink) to the most recent version of that file.
|
|
|
|
Remember, that the ``devshell`` is a mechanism that allows you to get
|
|
into the BitBake task execution environment. And as such, all commands
|
|
must be called just as BitBake would call them. That means you need to
|
|
provide the appropriate options for cross-compilation and so forth as
|
|
applicable.
|
|
|
|
When you are finished using ``devshell``, exit the shell or close the
|
|
terminal window.
|
|
|
|
.. note::
|
|
|
|
- It is worth remembering that when using ``devshell`` you need to
|
|
use the full compiler name such as ``arm-poky-linux-gnueabi-gcc``
|
|
instead of just using ``gcc``. The same applies to other
|
|
applications such as ``binutils``, ``libtool`` and so forth.
|
|
BitBake sets up environment variables such as :term:`CC` to assist
|
|
applications, such as ``make`` to find the correct tools.
|
|
|
|
- It is also worth noting that ``devshell`` still works over X11
|
|
forwarding and similar situations.
|
|
|