This chapter describes each development method.
</para>
- <section id="platdev-appdev-devshell">
- <title>Development Within a Development Shell</title>
-
- <para>
- When debugging certain commands or even when just editing packages,
- <filename>devshell</filename> can be a useful tool.
- Using <filename>devshell</filename> differs from the example shown in the previous
- section in that when you invoke <filename>devshell</filename> source files are
- extracted into your working directory and patches are applied.
- Then, a new terminal is opened and you are placed in the working directory.
- In the new terminal, all the OpenEmbedded build-related environment variables are
- still defined so you can use commands such as <filename>configure</filename> and
- <filename>make</filename>.
- 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.
- </para>
-
- <para>
- Following is an example that uses <filename>devshell</filename> on a target named
- <filename>matchbox-desktop</filename>:
- </para>
-
- <para>
- <literallayout class='monospaced'>
- $ bitbake matchbox-desktop -c devshell
- </literallayout>
- </para>
-
- <para>
- This command opens a terminal with a shell prompt within the OpenEmbedded build environment.
- The following occurs:
- <itemizedlist>
- <listitem><para>The <filename>PATH</filename> variable includes the
- cross-toolchain.</para></listitem>
- <listitem><para>The <filename>pkgconfig</filename> variables find the correct
- <filename>.pc</filename> files.</para></listitem>
- <listitem><para>The <filename>configure</filename> command finds the
- Yocto Project site files as well as any other necessary files.</para></listitem>
- </itemizedlist>
- Within this environment, you can run <filename>configure</filename>
- or <filename>compile</filename> 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 (<filename><link linkend='var-S'>S</link></filename>).
- </para>
-
- <para>
- When you are finished, you just exit the shell or close the terminal window.
- </para>
-
- <para>
- The default shell used by <filename>devshell</filename> is xterm.
- For examples of available options, see the "UI/Interaction Configuration"
- section of the
- <filename>meta/conf/bitbake.conf</filename> configuration file in the
- <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>source directory</ulink>.
- </para>
-
- <para>
- Because an external shell is launched rather than opening directly into the
- original terminal window, it allows easier interaction with BitBake's multiple
- threads as well as accomodates a future client/server split.
- </para>
-
- <note>
- <para>It is worth remembering that when using <filename>devshell</filename>
- you need to use the full compiler name such as <filename>arm-poky-linux-gnueabi-gcc</filename>
- instead of just using <filename>gcc</filename>.
- The same applies to other applications such as <filename>binutils</filename>,
- <filename>libtool</filename> and so forth.
- BitBake sets up environment variables such as <filename>CC</filename>
- to assist applications, such as <filename>make</filename> to find the correct tools.</para>
- <para>It is also worth noting that <filename>devshell</filename> still works over
- X11 forwarding and similar situations</para>
- </note>
- </section>
-
<section id="platdev-appdev-srcrev">
<title>Development Within Yocto Project for a Package that Uses an External SCM</title>