ref-manual: Re-ordered flow for detailed process sections.

Fixes [YOCTO #2808]

Based on feedback from Dave Stewart, I have rearranged the sub-
section flow of the topics to match that of an actual build.
This meant moving the BitBake section higher up in the order.

(From yocto-docs rev: 3e62dd70dab596c3a55815c1ad3f1578a9f3400f)

Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Scott Rifenbark 2013-09-09 13:36:30 -07:00 committed by Richard Purdie
parent b359e9a981
commit 7b70da93bc
1 changed files with 217 additions and 217 deletions

View File

@ -743,223 +743,6 @@
</section>
</section>
<section id="package-feeds-dev-environment">
<title>Package Feeds</title>
<para>
When the OpenEmbedded build system generates an image or an SDK,
it gets the packages from a package feed area located in the
<ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>.
The main
<link linkend='a-closer-look-at-the-yocto-project-development-environment'>Yocto Project Development Environment</link>
figure shows this package feeds area in the upper-right corner.
</para>
<para>
This section looks a little closer into the package feeds area used
by the build system.
Here is a more detailed look at the area:
<imagedata fileref="figures/package-feeds.png" align="center" width="7in" depth="6in" />
</para>
<para>
Package feeds are an intermediary step in the build process.
BitBake generates packages whose type is defined by the
<link linkend='var-PACKAGE_CLASSES'><filename>PACKAGE_CLASSES</filename></link>
variable.
Before placing the packages into package feeds,
the build process validates them with generated output quality
assurance checks through the
<link linkend='ref-classes-insane'><filename>insane.bbclass</filename></link>
class.
</para>
<para>
The package feed area resides in
<filename>tmp/deploy</filename> of the Build Directory.
Folders are created that correspond to the package type
(IPK, DEB, or RPM) created.
Further organization is derived through the value of the
<link linkend='var-PACKAGE_ARCH'><filename>PACKAGE_ARCH</filename></link>
variable for each package.
For example, packages can exist for the i586 or qemux86
architectures.
The package files themselves reside within the appropriate
architecture folder.
</para>
<para>
BitBake uses the <filename>do_package_write_*</filename> task to
place generated packages into the package holding area (e.g.
<filename>do_package_write_ipk</filename> for IPK packages).
</para>
</section>
<section id='images-dev-environment'>
<title>Images</title>
<para>
The images produced by the OpenEmbedded build system
are compressed forms of the
root filesystems that are ready to boot on a target device.
You can see from the main
<link linkend='a-closer-look-at-the-yocto-project-development-environment'>Yocto Project Development Environment</link>
figure that BitBake output in part consists of images.
This section is going to look more closely at this output:
<imagedata fileref="figures/images.png" align="center" width="6in" depth="5in" />
</para>
<para>
For a list of example images that the Yocto Project provides,
the
"<link linkend='ref-images'>Images</link>" chapter.
</para>
<para>
Images are written out to the
<ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>
inside the <filename>deploy/images</filename> folder as shown
in the figure.
This folder contains any files expected to be loaded on the
target device.
The
<link linkend='var-DEPLOY_DIR'><filename>DEPLOY_DIR</filename></link>
variable points to the <filename>deploy</filename> directory.
<itemizedlist>
<listitem><para><filename>&lt;kernel-image&gt;</filename>:
A kernel binary file.
The <link linkend='var-KERNEL_IMAGETYPE'><filename>KERNEL_IMAGETYPE</filename></link>
variable setting determines the naming scheme for the
kernel image file.
Depending on that variable, the file could begin with
a variety of naming strings.
The <filename>deploy/images</filename> directory can
contain multiple image files.</para></listitem>
<listitem><para><filename>&lt;root-filesystem-image&gt;</filename>:
Root filesystems for the target device (e.g.
<filename>*.ext3</filename> or <filename>*.bz2</filename>
files).
The <link linkend='var-IMAGE_FSTYPES'><filename>IMAGE_FSTYPES</filename></link>
variable setting determines the root filesystem image
type.
The <filename>deploy/images</filename> directory can
contain multiple root filesystems.</para></listitem>
<listitem><para><filename>&lt;kernel-modules&gt;</filename>:
Tarballs that contain all the modules built for the kernel.
Kernel module tarballs exist for legacy purposes and
can be suppressed by setting the
<link linkend='var-MODULE_TARBALL_DEPLOY'><filename>MODULE_TARBALL_DEPLOY</filename></link>
variable to "0".
The <filename>deploy/images</filename> directory can
contain multiple kernel module tarballs.
</para></listitem>
<listitem><para><filename>&lt;bootloaders&gt;</filename>:
Bootloaders supporting the image, if applicable to the
target machine.
The <filename>deploy/images</filename> directory can
contain multiple bootloaders.
</para></listitem>
<listitem><para><filename>&lt;symlinks&gt;</filename>:
The <filename>deploy/images</filename> folder contains
a symbolic link that points to the most recently built file
for each machine.
These links might be useful for external scripts that
need to obtain the latest version of each file.
</para></listitem>
</itemizedlist>
</para>
</section>
<section id='sdk-dev-environment'>
<title>Application Development SDK</title>
<para>
In the overview figure of the
<link linkend='a-closer-look-at-the-yocto-project-development-environment'>Yocto Project Development Environment</link>
the output labeled "Application Development SDK" represents an
SDK.
This section is going to take a closer look at this output:
<imagedata fileref="figures/sdk.png" align="center" width="5in" depth="4in" />
</para>
<para>
The specific form of this output is a self-extracting
SDK installer (<filename>*.sh</filename>) that, when run,
installs the SDK, which consists of a cross-development
toolchain, a set of libraries and headers, and an SDK
environment setup script.
Running this installer essentially sets up your
cross-development environment.
You can think of the cross-toolchain as the "host"
part because it runs on the SDK machine.
You can think of the libraries and headers as the "target"
part because they are built for the target hardware.
The setup script is added so that you can initialize the
environment before using the tools.
</para>
<note>
<para>
The Yocto Project supports several methods by which you can
set up this cross-development environment.
These methods include downloading pre-built SDK installers,
building and installing your own SDK installer, or running
an Application Development Toolkit (ADT) installer to
install not just cross-development toolchains
but also additional tools to help in this type of
development.
</para>
<para>
For background information on cross-development toolchains
in the Yocto Project development environment, see the
"<link linkend='cross-development-toolchain-generation'>Cross-Development Toolchain Generation</link>"
section.
For information on setting up a cross-development
environment, see the
"<ulink url='&YOCTO_DOCS_ADT_URL;#installing-the-adt'>Installing the ADT and Toolchains</ulink>"
section in the Yocto Project Application Developer's Guide.
</para>
</note>
<para>
Once built, the SDK installers are written out to the
<filename>deploy/sdk</filename> folder inside the
<ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>
as shown in the figure at the beginning of this section.
Several variables exist that help configure these files:
<itemizedlist>
<listitem><para><link linkend='var-DEPLOY_DIR'><filename>DEPLOY_DIR</filename></link>:
Points to the <filename>deploy</filename>
directory.</para></listitem>
<listitem><para><link linkend='var-SDKMACHINE'><filename>SDKMACHINE</filename></link>:
Specifies the architecture of the machine
on which the cross-development tools are run to
create packages for the target hardware.
</para></listitem>
<listitem><para><link linkend='var-SDKIMAGE_FEATURES'><filename>SDKIMAGE_FEATURES</filename></link>:
Lists the features to include in the "target" part
of the SDK.
</para></listitem>
<listitem><para><link linkend='var-TOOLCHAIN_HOST_TASK'><filename>TOOLCHAIN_HOST_TASK</filename></link>:
Lists packages that make up the host
part of the SDK (i.e. the part that runs on
the <filename>SDKMACHINE</filename>).
When you use
<filename>bitbake -c populate_sdk &lt;imagename&gt;</filename>
to create the SDK, a set of default packages
apply.
This variable allows you to add more packages.
</para></listitem>
<listitem><para><link linkend='var-TOOLCHAIN_TARGET_TASK'><filename>TOOLCHAIN_TARGET_TASK</filename></link>:
Lists packages that make up the target part
of the SDK (i.e. the part built for the
target hardware).
</para></listitem>
</itemizedlist>
</para>
</section>
<section id='bitbake-dev-environment'>
<title>BitBake</title>
@ -1190,6 +973,223 @@
</para>
</section>
</section>
<section id="package-feeds-dev-environment">
<title>Package Feeds</title>
<para>
When the OpenEmbedded build system generates an image or an SDK,
it gets the packages from a package feed area located in the
<ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>.
The main
<link linkend='a-closer-look-at-the-yocto-project-development-environment'>Yocto Project Development Environment</link>
figure shows this package feeds area in the upper-right corner.
</para>
<para>
This section looks a little closer into the package feeds area used
by the build system.
Here is a more detailed look at the area:
<imagedata fileref="figures/package-feeds.png" align="center" width="7in" depth="6in" />
</para>
<para>
Package feeds are an intermediary step in the build process.
BitBake generates packages whose type is defined by the
<link linkend='var-PACKAGE_CLASSES'><filename>PACKAGE_CLASSES</filename></link>
variable.
Before placing the packages into package feeds,
the build process validates them with generated output quality
assurance checks through the
<link linkend='ref-classes-insane'><filename>insane.bbclass</filename></link>
class.
</para>
<para>
The package feed area resides in
<filename>tmp/deploy</filename> of the Build Directory.
Folders are created that correspond to the package type
(IPK, DEB, or RPM) created.
Further organization is derived through the value of the
<link linkend='var-PACKAGE_ARCH'><filename>PACKAGE_ARCH</filename></link>
variable for each package.
For example, packages can exist for the i586 or qemux86
architectures.
The package files themselves reside within the appropriate
architecture folder.
</para>
<para>
BitBake uses the <filename>do_package_write_*</filename> task to
place generated packages into the package holding area (e.g.
<filename>do_package_write_ipk</filename> for IPK packages).
</para>
</section>
<section id='images-dev-environment'>
<title>Images</title>
<para>
The images produced by the OpenEmbedded build system
are compressed forms of the
root filesystems that are ready to boot on a target device.
You can see from the main
<link linkend='a-closer-look-at-the-yocto-project-development-environment'>Yocto Project Development Environment</link>
figure that BitBake output in part consists of images.
This section is going to look more closely at this output:
<imagedata fileref="figures/images.png" align="center" width="6in" depth="5in" />
</para>
<para>
For a list of example images that the Yocto Project provides,
the
"<link linkend='ref-images'>Images</link>" chapter.
</para>
<para>
Images are written out to the
<ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>
inside the <filename>deploy/images</filename> folder as shown
in the figure.
This folder contains any files expected to be loaded on the
target device.
The
<link linkend='var-DEPLOY_DIR'><filename>DEPLOY_DIR</filename></link>
variable points to the <filename>deploy</filename> directory.
<itemizedlist>
<listitem><para><filename>&lt;kernel-image&gt;</filename>:
A kernel binary file.
The <link linkend='var-KERNEL_IMAGETYPE'><filename>KERNEL_IMAGETYPE</filename></link>
variable setting determines the naming scheme for the
kernel image file.
Depending on that variable, the file could begin with
a variety of naming strings.
The <filename>deploy/images</filename> directory can
contain multiple image files.</para></listitem>
<listitem><para><filename>&lt;root-filesystem-image&gt;</filename>:
Root filesystems for the target device (e.g.
<filename>*.ext3</filename> or <filename>*.bz2</filename>
files).
The <link linkend='var-IMAGE_FSTYPES'><filename>IMAGE_FSTYPES</filename></link>
variable setting determines the root filesystem image
type.
The <filename>deploy/images</filename> directory can
contain multiple root filesystems.</para></listitem>
<listitem><para><filename>&lt;kernel-modules&gt;</filename>:
Tarballs that contain all the modules built for the kernel.
Kernel module tarballs exist for legacy purposes and
can be suppressed by setting the
<link linkend='var-MODULE_TARBALL_DEPLOY'><filename>MODULE_TARBALL_DEPLOY</filename></link>
variable to "0".
The <filename>deploy/images</filename> directory can
contain multiple kernel module tarballs.
</para></listitem>
<listitem><para><filename>&lt;bootloaders&gt;</filename>:
Bootloaders supporting the image, if applicable to the
target machine.
The <filename>deploy/images</filename> directory can
contain multiple bootloaders.
</para></listitem>
<listitem><para><filename>&lt;symlinks&gt;</filename>:
The <filename>deploy/images</filename> folder contains
a symbolic link that points to the most recently built file
for each machine.
These links might be useful for external scripts that
need to obtain the latest version of each file.
</para></listitem>
</itemizedlist>
</para>
</section>
<section id='sdk-dev-environment'>
<title>Application Development SDK</title>
<para>
In the overview figure of the
<link linkend='a-closer-look-at-the-yocto-project-development-environment'>Yocto Project Development Environment</link>
the output labeled "Application Development SDK" represents an
SDK.
This section is going to take a closer look at this output:
<imagedata fileref="figures/sdk.png" align="center" width="5in" depth="4in" />
</para>
<para>
The specific form of this output is a self-extracting
SDK installer (<filename>*.sh</filename>) that, when run,
installs the SDK, which consists of a cross-development
toolchain, a set of libraries and headers, and an SDK
environment setup script.
Running this installer essentially sets up your
cross-development environment.
You can think of the cross-toolchain as the "host"
part because it runs on the SDK machine.
You can think of the libraries and headers as the "target"
part because they are built for the target hardware.
The setup script is added so that you can initialize the
environment before using the tools.
</para>
<note>
<para>
The Yocto Project supports several methods by which you can
set up this cross-development environment.
These methods include downloading pre-built SDK installers,
building and installing your own SDK installer, or running
an Application Development Toolkit (ADT) installer to
install not just cross-development toolchains
but also additional tools to help in this type of
development.
</para>
<para>
For background information on cross-development toolchains
in the Yocto Project development environment, see the
"<link linkend='cross-development-toolchain-generation'>Cross-Development Toolchain Generation</link>"
section.
For information on setting up a cross-development
environment, see the
"<ulink url='&YOCTO_DOCS_ADT_URL;#installing-the-adt'>Installing the ADT and Toolchains</ulink>"
section in the Yocto Project Application Developer's Guide.
</para>
</note>
<para>
Once built, the SDK installers are written out to the
<filename>deploy/sdk</filename> folder inside the
<ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>
as shown in the figure at the beginning of this section.
Several variables exist that help configure these files:
<itemizedlist>
<listitem><para><link linkend='var-DEPLOY_DIR'><filename>DEPLOY_DIR</filename></link>:
Points to the <filename>deploy</filename>
directory.</para></listitem>
<listitem><para><link linkend='var-SDKMACHINE'><filename>SDKMACHINE</filename></link>:
Specifies the architecture of the machine
on which the cross-development tools are run to
create packages for the target hardware.
</para></listitem>
<listitem><para><link linkend='var-SDKIMAGE_FEATURES'><filename>SDKIMAGE_FEATURES</filename></link>:
Lists the features to include in the "target" part
of the SDK.
</para></listitem>
<listitem><para><link linkend='var-TOOLCHAIN_HOST_TASK'><filename>TOOLCHAIN_HOST_TASK</filename></link>:
Lists packages that make up the host
part of the SDK (i.e. the part that runs on
the <filename>SDKMACHINE</filename>).
When you use
<filename>bitbake -c populate_sdk &lt;imagename&gt;</filename>
to create the SDK, a set of default packages
apply.
This variable allows you to add more packages.
</para></listitem>
<listitem><para><link linkend='var-TOOLCHAIN_TARGET_TASK'><filename>TOOLCHAIN_TARGET_TASK</filename></link>:
Lists packages that make up the target part
of the SDK (i.e. the part built for the
target hardware).
</para></listitem>
</itemizedlist>
</para>
</section>
</section>
<section id="cross-development-toolchain-generation">