1093 lines
43 KiB
XML
1093 lines
43 KiB
XML
|
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
|
||
|
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
|
||
|
[<!ENTITY % poky SYSTEM "../poky.ent"> %poky; ] >
|
||
|
|
||
|
<chapter id='ref-tasks'>
|
||
|
<title>Tasks</title>
|
||
|
|
||
|
<para>
|
||
|
Tasks are units of execution for BitBake.
|
||
|
Recipes (<filename>.bb</filename> files) use tasks to complete
|
||
|
configuring, compiling, and packaging software.
|
||
|
This chapter provides a reference of the tasks defined in the
|
||
|
OpenEmbedded build system.
|
||
|
</para>
|
||
|
|
||
|
<section id='normal-recipe-build-tasks'>
|
||
|
<title>Normal Recipe Build Tasks</title>
|
||
|
|
||
|
<para>
|
||
|
The following sections describe normal tasks associated with building
|
||
|
a recipe.
|
||
|
For more information on tasks and dependencies, see the
|
||
|
"<ulink url='&YOCTO_DOCS_BB_URL;#tasks'>Tasks</ulink>" and
|
||
|
"<ulink url='&YOCTO_DOCS_BB_URL;#dependencies'>Dependencies</ulink>"
|
||
|
sections in the BitBake User Manual.
|
||
|
</para>
|
||
|
|
||
|
<section id='ref-tasks-build'>
|
||
|
<title><filename>do_build</filename></title>
|
||
|
|
||
|
<para>
|
||
|
The default task for all recipes.
|
||
|
This task depends on all other normal tasks
|
||
|
required to build a recipe.
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-compile'>
|
||
|
<title><filename>do_compile</filename></title>
|
||
|
|
||
|
<para>
|
||
|
Compiles the source code.
|
||
|
This task runs with the current working directory set
|
||
|
to
|
||
|
<filename>${</filename><link linkend='var-B'><filename>B</filename></link><filename>}</filename>.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
The default behavior of this task is to run the
|
||
|
<filename>oe_runmake</filename> function if a makefile
|
||
|
(<filename>Makefile</filename>, <filename>makefile</filename>,
|
||
|
or <filename>GNUmakefile</filename>) is found.
|
||
|
If no such file is found, the <filename>do_compile</filename>
|
||
|
task does nothing.
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-compile_ptest_base'>
|
||
|
<title><filename>do_compile_ptest_base</filename></title>
|
||
|
|
||
|
<para>
|
||
|
Compiles the runtime test suite included in the software being
|
||
|
built.
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-configure'>
|
||
|
<title><filename>do_configure</filename></title>
|
||
|
|
||
|
<para>
|
||
|
Configures the source by enabling and disabling any build-time and
|
||
|
configuration options for the software being built.
|
||
|
The task runs with the current working directory set to
|
||
|
<filename>${</filename><link linkend='var-B'><filename>B</filename></link><filename>}</filename>.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
The default behavior of this task is to run
|
||
|
<filename>oe_runmake clean</filename> if a makefile
|
||
|
(<filename>Makefile</filename>, <filename>makefile</filename>,
|
||
|
or <filename>GNUmakefile</filename>) is found and
|
||
|
<link linkend='var-CLEANBROKEN'><filename>CLEANBROKEN</filename></link>
|
||
|
is not set to "1".
|
||
|
If no such file is found or the <filename>CLEANBROKEN</filename>
|
||
|
variable is set to "1", the <filename>do_configure</filename>
|
||
|
task does nothing.
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-configure_ptest_base'>
|
||
|
<title><filename>do_configure_ptest_base</filename></title>
|
||
|
|
||
|
<para>
|
||
|
Configures the runtime test suite included in the software being
|
||
|
built.
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-deploy'>
|
||
|
<title><filename>do_deploy</filename></title>
|
||
|
|
||
|
<para>
|
||
|
Writes output files that are to be deployed to
|
||
|
<filename>${</filename><link linkend='var-DEPLOY_DIR_IMAGE'><filename>DEPLOY_DIR_IMAGE</filename></link><filename>}</filename>.
|
||
|
The task runs with the current working directory set to
|
||
|
<filename>${</filename><link linkend='var-B'><filename>B</filename></link><filename>}</filename>.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
Recipes implementing this task should inherit the
|
||
|
<link linkend='ref-classes-deploy'><filename>deploy</filename></link>
|
||
|
class and should write the output to
|
||
|
<filename>${</filename><link linkend='var-DEPLOYDIR'><filename>DEPLOYDIR</filename></link><filename>}</filename>,
|
||
|
which is not to be confused with
|
||
|
<filename>${</filename><link linkend='var-DEPLOY_DIR'><filename>DEPLOY_DIR</filename></link><filename>}</filename>.
|
||
|
The <filename>deploy</filename> class sets up
|
||
|
<filename>do_deploy</filename> as a shared state (sstate) task that
|
||
|
can be accelerated through sstate use.
|
||
|
The sstate mechanism takes care of copying the output from
|
||
|
<filename>${DEPLOYDIR}</filename> to
|
||
|
<filename>${DEPLOY_DIR_IMAGE}</filename>.
|
||
|
<note>
|
||
|
<title>Caution</title>
|
||
|
Do not write the output directly to
|
||
|
<filename>${DEPLOY_DIR_IMAGE}</filename>, as this causes
|
||
|
the sstate mechanism to malfunction.
|
||
|
</note>
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
The <filename>do_deploy</filename> task is not added as a task
|
||
|
by default and consequently needs to be added manually.
|
||
|
If you want the task to run after
|
||
|
<link linkend='ref-tasks-compile'><filename>do_compile</filename></link>,
|
||
|
you can add it by doing the following:
|
||
|
<literallayout class='monospaced'>
|
||
|
addtask deploy after do_compile
|
||
|
</literallayout>
|
||
|
Adding <filename>do_deploy</filename> after other tasks works the
|
||
|
same way.
|
||
|
<note>
|
||
|
You do not need to add <filename>before do_build</filename>
|
||
|
to the <filename>addtask</filename> command (though it is
|
||
|
harmless), because the
|
||
|
<link linkend='ref-classes-base'><filename>base</filename></link>
|
||
|
class contains the following:
|
||
|
<literallayout class='monospaced'>
|
||
|
do_build[recrdeptask] += "do_deploy"
|
||
|
</literallayout>
|
||
|
See the
|
||
|
"<ulink url='&YOCTO_DOCS_BB_URL;#dependencies'>Dependencies</ulink>"
|
||
|
section in the BitBake User Manual for more information.
|
||
|
</note>
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
If the <filename>do_deploy</filename> task re-executes, any
|
||
|
previous output is removed (i.e. "cleaned").
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-distrodata'>
|
||
|
<title><filename>do_distrodata</filename></title>
|
||
|
|
||
|
<para>
|
||
|
Provides information about the recipe.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
The <filename>distrodata</filename> task is included as part of the
|
||
|
<link linkend='ref-classes-distrodata'><filename>distrodata</filename></link>
|
||
|
class.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
To build the <filename>distrodata</filename> task, use the
|
||
|
<filename>bitbake</filename> command with the "-c" option and
|
||
|
task name:
|
||
|
<literallayout class='monospaced'>
|
||
|
$ bitbake core-image-minimal -c distrodata
|
||
|
</literallayout>
|
||
|
By default, the results are stored in
|
||
|
<link linkend='var-LOG_DIR'><filename>$LOG_DIR</filename></link>
|
||
|
(e.g. <filename>$BUILD_DIR/tmp/log</filename>).
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-fetch'>
|
||
|
<title><filename>do_fetch</filename></title>
|
||
|
|
||
|
<para>
|
||
|
Fetches the source code.
|
||
|
This task uses the
|
||
|
<link linkend='var-SRC_URI'><filename>SRC_URI</filename></link>
|
||
|
variable and the argument's prefix to determine the correct
|
||
|
fetcher module.
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-image'>
|
||
|
<title><filename>do_image</filename></title>
|
||
|
|
||
|
<para>
|
||
|
Starts the image generation process.
|
||
|
The <filename>do_image</filename> task runs after the
|
||
|
OpenEmbedded build system has run the
|
||
|
<link linkend='ref-tasks-rootfs'><filename>do_rootfs</filename></link>
|
||
|
task during which packages are identified for installation into
|
||
|
the image and the root filesystem is created, complete with
|
||
|
post-processing.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
The <filename>do_image</filename> task performs pre-processing
|
||
|
on the image through the
|
||
|
<link linkend='var-IMAGE_PREPROCESS_COMMAND'><filename>IMAGE_PREPROCESS_COMMAND</filename></link>
|
||
|
and dynamically generates supporting
|
||
|
<filename>do_image_*</filename> tasks as needed.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
For more information on image creation, see the
|
||
|
"<link linkend='image-generation-dev-environment'>Image Generation</link>"
|
||
|
section.
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-image-complete'>
|
||
|
<title><filename>do_image_complete</filename></title>
|
||
|
|
||
|
<para>
|
||
|
Completes the image generation process.
|
||
|
The <filename>do_image_complete</filename> task runs after the
|
||
|
OpenEmbedded build system has run the
|
||
|
<link linkend='ref-tasks-rootfs'><filename>do_image</filename></link>
|
||
|
task during which image pre-processing occurs and through
|
||
|
dynamically generated <filename>do_image_*</filename> tasks the
|
||
|
image is constructed.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
The <filename>do_image_complete</filename> task performs
|
||
|
post-processing on the image through the
|
||
|
<link linkend='var-IMAGE_POSTPROCESS_COMMAND'><filename>IMAGE_POSTPROCESS_COMMAND</filename></link>.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
For more information on image creation, see the
|
||
|
"<link linkend='image-generation-dev-environment'>Image Generation</link>"
|
||
|
section.
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-install'>
|
||
|
<title><filename>do_install</filename></title>
|
||
|
|
||
|
<para>
|
||
|
Copies files that are to be packaged into the holding area
|
||
|
<filename>${</filename><link linkend='var-D'><filename>D</filename></link><filename>}</filename>.
|
||
|
This task runs with the current working directory set to
|
||
|
<filename>${</filename><link linkend='var-B'><filename>B</filename></link><filename>}</filename>,
|
||
|
which is the compilation directory.
|
||
|
The <filename>do_install</filename> task, as well as other tasks
|
||
|
that either directly or indirectly depend on the installed files
|
||
|
(e.g.
|
||
|
<link linkend='ref-tasks-package'><filename>do_package</filename></link>,
|
||
|
<link linkend='ref-tasks-package_write_deb'><filename>do_package_write_*</filename></link>,
|
||
|
and
|
||
|
<link linkend='ref-tasks-rootfs'><filename>do_rootfs</filename></link>),
|
||
|
run under
|
||
|
<link linkend='fakeroot-and-pseudo'>fakeroot</link>.
|
||
|
<note>
|
||
|
<title>Caution</title>
|
||
|
|
||
|
<para>
|
||
|
When installing files, be careful not to set the owner and
|
||
|
group IDs of the installed files to unintended values.
|
||
|
Some methods of copying files, notably when using the
|
||
|
recursive <filename>cp</filename> command, can preserve the
|
||
|
UID and/or GID of the original file, which is usually not
|
||
|
what you want.
|
||
|
The
|
||
|
<link linkend='ref-classes-insane'><filename>host-user-contaminated</filename></link>
|
||
|
QA check checks for files that probably have the wrong
|
||
|
ownership.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
Safe methods for installing files include the following:
|
||
|
<itemizedlist>
|
||
|
<listitem><para>
|
||
|
The <filename>install</filename> utility.
|
||
|
This utility is the preferred method.
|
||
|
</para></listitem>
|
||
|
<listitem><para>
|
||
|
The <filename>cp</filename> command with the
|
||
|
"--no-preserve=ownership" option.
|
||
|
</para></listitem>
|
||
|
<listitem><para>
|
||
|
The <filename>tar</filename> command with the
|
||
|
"--no-same-owner" option.
|
||
|
See the <filename>bin_package.bbclass</filename>
|
||
|
file in the <filename>meta/classes</filename>
|
||
|
directory of the
|
||
|
<link linkend='source-directory'>Source Directory</link>
|
||
|
for an example.
|
||
|
</para></listitem>
|
||
|
</itemizedlist>
|
||
|
</para>
|
||
|
</note>
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-install_ptest_base'>
|
||
|
<title><filename>do_install_ptest_base</filename></title>
|
||
|
|
||
|
<para>
|
||
|
Copies the runtime test suite files from the compilation directory
|
||
|
to a holding area.
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-package'>
|
||
|
<title><filename>do_package</filename></title>
|
||
|
|
||
|
<para>
|
||
|
Analyzes the content of the holding area
|
||
|
<filename>${</filename><link linkend='var-D'><filename>D</filename></link><filename>}</filename>
|
||
|
and splits the content into subsets based on available packages
|
||
|
and files.
|
||
|
This task makes use of the
|
||
|
<link linkend='var-PACKAGES'><filename>PACKAGES</filename></link>
|
||
|
and
|
||
|
<link linkend='var-FILES'><filename>FILES</filename></link>
|
||
|
variables.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
The <filename>do_package</filename> task, in conjunction with the
|
||
|
<link linkend='ref-tasks-packagedata'><filename>do_packagedata</filename></link>
|
||
|
task, also saves some important package metadata.
|
||
|
For additional information, see the
|
||
|
<link linkend='var-PKGDESTWORK'><filename>PKGDESTWORK</filename></link>
|
||
|
variable and the
|
||
|
"<link linkend='automatically-added-runtime-dependencies'>Automatically Added Runtime Dependencies</link>"
|
||
|
section.
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-package_qa'>
|
||
|
<title><filename>do_package_qa</filename></title>
|
||
|
|
||
|
<para>
|
||
|
Runs QA checks on packaged files.
|
||
|
For more information on these checks, see the
|
||
|
<link linkend='ref-classes-insane'><filename>insane</filename></link>
|
||
|
class.
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-package_write_deb'>
|
||
|
<title><filename>do_package_write_deb</filename></title>
|
||
|
|
||
|
<para>
|
||
|
Creates Debian packages (i.e. <filename>*.deb</filename> files) and
|
||
|
places them in the
|
||
|
<filename>${</filename><link linkend='var-DEPLOY_DIR_DEB'><filename>DEPLOY_DIR_DEB</filename></link><filename>}</filename>
|
||
|
directory in the package feeds area.
|
||
|
For more information, see the
|
||
|
"<link linkend='package-feeds-dev-environment'>Package Feeds</link>"
|
||
|
section.
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-package_write_ipk'>
|
||
|
<title><filename>do_package_write_ipk</filename></title>
|
||
|
|
||
|
<para>
|
||
|
Creates IPK packages (i.e. <filename>*.ipk</filename> files) and
|
||
|
places them in the
|
||
|
<filename>${</filename><link linkend='var-DEPLOY_DIR_IPK'><filename>DEPLOY_DIR_IPK</filename></link><filename>}</filename>
|
||
|
directory in the package feeds area.
|
||
|
For more information, see the
|
||
|
"<link linkend='package-feeds-dev-environment'>Package Feeds</link>"
|
||
|
section.
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-package_write_rpm'>
|
||
|
<title><filename>do_package_write_rpm</filename></title>
|
||
|
|
||
|
<para>
|
||
|
Creates RPM packages (i.e. <filename>*.rpm</filename> files) and
|
||
|
places them in the
|
||
|
<filename>${</filename><link linkend='var-DEPLOY_DIR_RPM'><filename>DEPLOY_DIR_RPM</filename></link><filename>}</filename>
|
||
|
directory in the package feeds area.
|
||
|
For more information, see the
|
||
|
"<link linkend='package-feeds-dev-environment'>Package Feeds</link>"
|
||
|
section.
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-package_write_tar'>
|
||
|
<title><filename>do_package_write_tar</filename></title>
|
||
|
|
||
|
<para>
|
||
|
Creates tarballs and places them in the
|
||
|
<filename>${</filename><link linkend='var-DEPLOY_DIR_TAR'><filename>DEPLOY_DIR_TAR</filename></link><filename>}</filename>
|
||
|
directory in the package feeds area.
|
||
|
For more information, see the
|
||
|
"<link linkend='package-feeds-dev-environment'>Package Feeds</link>"
|
||
|
section.
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-packagedata'>
|
||
|
<title><filename>do_packagedata</filename></title>
|
||
|
|
||
|
<para>
|
||
|
Saves package metadata generated by the
|
||
|
<link linkend='ref-tasks-package'><filename>do_package</filename></link>
|
||
|
task in
|
||
|
<link linkend='var-PKGDATA_DIR'><filename>PKGDATA_DIR</filename></link>
|
||
|
to make it available globally.
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-patch'>
|
||
|
<title><filename>do_patch</filename></title>
|
||
|
|
||
|
<para>
|
||
|
Locates patch files and applies them to the source code.
|
||
|
See the
|
||
|
"<link linkend='patching-dev-environment'>Patching</link>"
|
||
|
section for more information.
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-populate_lic'>
|
||
|
<title><filename>do_populate_lic</filename></title>
|
||
|
|
||
|
<para>
|
||
|
Writes license information for the recipe that is collected later
|
||
|
when the image is constructed.
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-populate_sdk'>
|
||
|
<title><filename>do_populate_sdk</filename></title>
|
||
|
|
||
|
<para>
|
||
|
Creates the file and directory structure for an installable SDK.
|
||
|
See the
|
||
|
"<link linkend='sdk-generation-dev-environment'>SDK Generation</link>"
|
||
|
section for more information.
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-populate_sysroot'>
|
||
|
<title><filename>do_populate_sysroot</filename></title>
|
||
|
|
||
|
<para>
|
||
|
Stages (copies) a subset of the files installed by the
|
||
|
<link linkend='ref-tasks-install'><filename>do_install</filename></link>
|
||
|
task into the appropriate sysroot.
|
||
|
For information on how to access these files from other recipes,
|
||
|
see the
|
||
|
<link linkend='var-STAGING_DIR_HOST'><filename>STAGING_DIR*</filename></link>
|
||
|
variables.
|
||
|
Directories that would typically not be needed by other recipes at
|
||
|
build time (e.g. <filename>/etc</filename>) are not copied by
|
||
|
default.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
For information on what directories are copied by default, see the
|
||
|
<link linkend='var-SYSROOT_DIRS'><filename>SYSROOT_DIRS*</filename></link>
|
||
|
variables.
|
||
|
You can change these variables inside your recipe if you need
|
||
|
to make additional (or fewer) directories available to other
|
||
|
recipes at build time.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
The <filename>do_populate_sysroot</filename> task is a
|
||
|
shared state (sstate) task, which means that the task can
|
||
|
be accelerated through sstate use.
|
||
|
Realize also that if the task is re-executed, any previous output
|
||
|
is removed (i.e. "cleaned").
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-prepare_recipe_sysroot'>
|
||
|
<title><filename>do_prepare_recipe_sysroot</filename></title>
|
||
|
|
||
|
<para>
|
||
|
Installs the files into the individual recipe specific sysroots
|
||
|
(i.e. <filename>recipe-sysroot</filename> and
|
||
|
<filename>recipe-sysroot-native</filename> under
|
||
|
<filename>${</filename><link linkend='var-WORKDIR'><filename>WORKDIR</filename></link><filename>}</filename>
|
||
|
based upon the dependencies specified by
|
||
|
<link linkend='var-DEPENDS'><filename>DEPENDS</filename></link>).
|
||
|
See the
|
||
|
"<link linkend='ref-classes-staging'><filename>staging</filename></link>"
|
||
|
class for more information.
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-rm_work'>
|
||
|
<title><filename>do_rm_work</filename></title>
|
||
|
|
||
|
<para>
|
||
|
Removes work files after the OpenEmbedded build system has
|
||
|
finished with them.
|
||
|
You can learn more by looking at the
|
||
|
"<link linkend='ref-classes-rm-work'><filename>rm_work.bbclass</filename></link>"
|
||
|
section.
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-rm_work_all'>
|
||
|
<title><filename>do_rm_work_all</filename></title>
|
||
|
|
||
|
<para>
|
||
|
Top-level task for removing work files after the build system has
|
||
|
finished with them.
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-unpack'>
|
||
|
<title><filename>do_unpack</filename></title>
|
||
|
|
||
|
<para>
|
||
|
Unpacks the source code into a working directory pointed to
|
||
|
by
|
||
|
<filename>${</filename><link linkend='var-WORKDIR'><filename>WORKDIR</filename></link><filename>}</filename>.
|
||
|
The
|
||
|
<link linkend='var-S'><filename>S</filename></link> variable also
|
||
|
plays a role in where unpacked source files ultimately reside.
|
||
|
For more information on how source files are unpacked, see the
|
||
|
"<link linkend='source-fetching-dev-environment'>Source Fetching</link>"
|
||
|
section and the <filename>WORKDIR</filename> and
|
||
|
<filename>S</filename> variable descriptions.
|
||
|
</para>
|
||
|
</section>
|
||
|
</section>
|
||
|
|
||
|
<section id='manually-called-tasks'>
|
||
|
<title>Manually Called Tasks</title>
|
||
|
|
||
|
<para>
|
||
|
These tasks are typically manually triggered (e.g. by using the
|
||
|
<filename>bitbake -c</filename> command-line option):
|
||
|
</para>
|
||
|
|
||
|
<section id='ref-tasks-checkpkg'>
|
||
|
<title><filename>do_checkpkg</filename></title>
|
||
|
|
||
|
<para>
|
||
|
Provides information about the recipe including its upstream
|
||
|
version and status.
|
||
|
The upstream version and status reveals whether or not a version
|
||
|
of the recipe exists upstream and a status of not updated, updated,
|
||
|
or unknown.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
The <filename>checkpkg</filename> task is included as part of the
|
||
|
<link linkend='ref-classes-distrodata'><filename>distrodata</filename></link>
|
||
|
class.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
To build the <filename>checkpkg</filename> task, use the
|
||
|
<filename>bitbake</filename> command with the "-c" option and
|
||
|
task name:
|
||
|
<literallayout class='monospaced'>
|
||
|
$ bitbake core-image-minimal -c checkpkg
|
||
|
</literallayout>
|
||
|
By default, the results are stored in
|
||
|
<link linkend='var-LOG_DIR'><filename>$LOG_DIR</filename></link>
|
||
|
(e.g. <filename>$BUILD_DIR/tmp/log</filename>).
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-checkuri'>
|
||
|
<title><filename>do_checkuri</filename></title>
|
||
|
|
||
|
<para>
|
||
|
Validates the
|
||
|
<link linkend='var-SRC_URI'><filename>SRC_URI</filename></link>
|
||
|
value.
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-checkuriall'>
|
||
|
<title><filename>do_checkuriall</filename></title>
|
||
|
|
||
|
<para>
|
||
|
Validates the
|
||
|
<link linkend='var-SRC_URI'><filename>SRC_URI</filename></link>
|
||
|
value for all recipes required to build a target.
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-clean'>
|
||
|
<title><filename>do_clean</filename></title>
|
||
|
|
||
|
<para>
|
||
|
Removes all output files for a target from the
|
||
|
<link linkend='ref-tasks-unpack'><filename>do_unpack</filename></link>
|
||
|
task forward (i.e.
|
||
|
<link linkend='ref-tasks-patch'><filename>do_unpack</filename></link>,
|
||
|
<link linkend='ref-tasks-configure'><filename>do_configure</filename></link>,
|
||
|
<link linkend='ref-tasks-compile'><filename>do_compile</filename></link>,
|
||
|
<link linkend='ref-tasks-install'><filename>do_install</filename></link>,
|
||
|
and
|
||
|
<link linkend='ref-tasks-package'><filename>do_package</filename></link>).
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
You can run this task using BitBake as follows:
|
||
|
<literallayout class='monospaced'>
|
||
|
$ bitbake -c clean <replaceable>recipe</replaceable>
|
||
|
</literallayout>
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
Running this task does not remove the
|
||
|
<link linkend='shared-state-cache'>sstate</link>) cache
|
||
|
files.
|
||
|
Consequently, if no changes have been made and the recipe is
|
||
|
rebuilt after cleaning, output files are simply restored from the
|
||
|
sstate cache.
|
||
|
If you want to remove the sstate cache files for the recipe,
|
||
|
you need to use the
|
||
|
<link linkend='ref-tasks-cleansstate'><filename>do_cleansstate</filename></link>
|
||
|
task instead (i.e. <filename>bitbake -c cleansstate</filename> <replaceable>recipe</replaceable>).
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-cleanall'>
|
||
|
<title><filename>do_cleanall</filename></title>
|
||
|
|
||
|
<para>
|
||
|
Removes all output files, shared state
|
||
|
(<link linkend='shared-state-cache'>sstate</link>) cache, and
|
||
|
downloaded source files for a target (i.e. the contents of
|
||
|
<link linkend='var-DL_DIR'><filename>DL_DIR</filename></link>).
|
||
|
Essentially, the <filename>do_cleanall</filename> task is
|
||
|
identical to the
|
||
|
<link linkend='ref-tasks-cleansstate'><filename>do_cleansstate</filename></link>
|
||
|
task with the added removal of downloaded source files.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
You can run this task using BitBake as follows:
|
||
|
<literallayout class='monospaced'>
|
||
|
$ bitbake -c cleanall <replaceable>recipe</replaceable>
|
||
|
</literallayout>
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
Typically, you would not normally use the
|
||
|
<filename>cleanall</filename> task.
|
||
|
Do so only if you want to start fresh with the
|
||
|
<link linkend='ref-tasks-fetch'><filename>do_fetch</filename></link>
|
||
|
task.
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-cleansstate'>
|
||
|
<title><filename>do_cleansstate</filename></title>
|
||
|
|
||
|
<para>
|
||
|
Removes all output files and shared state
|
||
|
(<link linkend='shared-state-cache'>sstate</link>)
|
||
|
cache for a target.
|
||
|
Essentially, the <filename>do_cleansstate</filename> task is
|
||
|
identical to the
|
||
|
<link linkend='ref-tasks-clean'><filename>do_clean</filename></link>
|
||
|
task with the added removal of shared state
|
||
|
(<link linkend='shared-state-cache'>sstate</link>) cache.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
You can run this task using BitBake as follows:
|
||
|
<literallayout class='monospaced'>
|
||
|
$ bitbake -c cleansstate <replaceable>recipe</replaceable>
|
||
|
</literallayout>
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
When you run the <filename>do_cleansstate</filename> task,
|
||
|
the OpenEmbedded build system no longer uses any
|
||
|
sstate.
|
||
|
Consequently, building the recipe from scratch is guaranteed.
|
||
|
<note>
|
||
|
The <filename>do_cleansstate</filename> task cannot remove
|
||
|
sstate from a remote sstate mirror.
|
||
|
If you need to build a target from scratch using remote
|
||
|
mirrors, use the "-f" option as follows:
|
||
|
<literallayout class='monospaced'>
|
||
|
$ bitbake -f -c do_cleansstate <replaceable>target</replaceable>
|
||
|
</literallayout>
|
||
|
</note>
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-devpyshell'>
|
||
|
<title><filename>do_devpyshell</filename></title>
|
||
|
|
||
|
<para>
|
||
|
Starts a shell in which an interactive Python interpreter allows
|
||
|
you to interact with the BitBake build environment.
|
||
|
From within this shell, you can directly examine and set
|
||
|
bits from the data store and execute functions as if within
|
||
|
the BitBake environment.
|
||
|
See the
|
||
|
"<ulink url='&YOCTO_DOCS_DEV_URL;#platdev-appdev-devpyshell'>Using a Development Python Shell</ulink>"
|
||
|
section in the Yocto Project Development Tasks Manual for more
|
||
|
information about using <filename>devpyshell</filename>.
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-devshell'>
|
||
|
<title><filename>do_devshell</filename></title>
|
||
|
|
||
|
<para>
|
||
|
Starts a shell whose environment is set up for
|
||
|
development, debugging, or both.
|
||
|
See the
|
||
|
"<ulink url='&YOCTO_DOCS_DEV_URL;#platdev-appdev-devshell'>Using a Development Shell</ulink>"
|
||
|
section in the Yocto Project Development Tasks Manual for more
|
||
|
information about using <filename>devshell</filename>.
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-fetchall'>
|
||
|
<title><filename>do_fetchall</filename></title>
|
||
|
|
||
|
<para>
|
||
|
Fetches all remote sources required to build a target.
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-listtasks'>
|
||
|
<title><filename>do_listtasks</filename></title>
|
||
|
|
||
|
<para>
|
||
|
Lists all defined tasks for a target.
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-package_index'>
|
||
|
<title><filename>do_package_index</filename></title>
|
||
|
|
||
|
<para>
|
||
|
Creates or updates the index in the
|
||
|
<link linkend='package-feeds-dev-environment'>Package Feeds</link>
|
||
|
area.
|
||
|
<note>
|
||
|
This task is not triggered with the
|
||
|
<filename>bitbake -c</filename> command-line option as
|
||
|
are the other tasks in this section.
|
||
|
Because this task is specifically for the
|
||
|
<filename>package-index</filename> recipe,
|
||
|
you run it using
|
||
|
<filename>bitbake package-index</filename>.
|
||
|
</note>
|
||
|
</para>
|
||
|
</section>
|
||
|
</section>
|
||
|
|
||
|
<section id='image-related-tasks'>
|
||
|
<title>Image-Related Tasks</title>
|
||
|
|
||
|
<para>
|
||
|
The following tasks are applicable to image recipes.
|
||
|
</para>
|
||
|
|
||
|
<section id='ref-tasks-bootimg'>
|
||
|
<title><filename>do_bootimg</filename></title>
|
||
|
|
||
|
<para>
|
||
|
Creates a bootable live image.
|
||
|
See the
|
||
|
<link linkend='var-IMAGE_FSTYPES'><filename>IMAGE_FSTYPES</filename></link>
|
||
|
variable for additional information on live image types.
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-bundle_initramfs'>
|
||
|
<title><filename>do_bundle_initramfs</filename></title>
|
||
|
|
||
|
<para>
|
||
|
Combines an initial RAM disk (initramfs) image and kernel
|
||
|
together to form a single image.
|
||
|
The
|
||
|
<link linkend='var-CONFIG_INITRAMFS_SOURCE'><filename>CONFIG_INITRAMFS_SOURCE</filename></link>
|
||
|
variable has some more information about these types of images.
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-rootfs'>
|
||
|
<title><filename>do_rootfs</filename></title>
|
||
|
|
||
|
<para>
|
||
|
Creates the root filesystem (file and directory structure) for an
|
||
|
image.
|
||
|
See the
|
||
|
"<link linkend='image-generation-dev-environment'>Image Generation</link>"
|
||
|
section for more information on how the root filesystem is created.
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-testimage'>
|
||
|
<title><filename>do_testimage</filename></title>
|
||
|
|
||
|
<para>
|
||
|
Boots an image and performs runtime tests within the image.
|
||
|
For information on automatically testing images, see the
|
||
|
"<ulink url='&YOCTO_DOCS_DEV_URL;#performing-automated-runtime-testing'>Performing Automated Runtime Testing</ulink>"
|
||
|
section in the Yocto Project Development Tasks Manual.
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-testimage_auto'>
|
||
|
<title><filename>do_testimage_auto</filename></title>
|
||
|
|
||
|
<para>
|
||
|
Boots an image and performs runtime tests within the image
|
||
|
immediately after it has been built.
|
||
|
This task is enabled when you set
|
||
|
<link linkend='var-TEST_IMAGE'><filename>TEST_IMAGE</filename></link>
|
||
|
equal to "1".
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
For information on automatically testing images, see the
|
||
|
"<ulink url='&YOCTO_DOCS_DEV_URL;#performing-automated-runtime-testing'>Performing Automated Runtime Testing</ulink>"
|
||
|
section in the Yocto Project Development Tasks Manual.
|
||
|
</para>
|
||
|
</section>
|
||
|
</section>
|
||
|
|
||
|
<section id='kernel-related-tasks'>
|
||
|
<title>Kernel-Related Tasks</title>
|
||
|
|
||
|
<para>
|
||
|
The following tasks are applicable to kernel recipes.
|
||
|
Some of these tasks (e.g. the
|
||
|
<link linkend='ref-tasks-menuconfig'><filename>do_menuconfig</filename></link>
|
||
|
task) are also applicable to recipes that use
|
||
|
Linux kernel style configuration such as the BusyBox recipe.
|
||
|
</para>
|
||
|
|
||
|
<section id='ref-tasks-compile_kernelmodules'>
|
||
|
<title><filename>do_compile_kernelmodules</filename></title>
|
||
|
|
||
|
<para>
|
||
|
Runs the step that builds the kernel modules (if needed).
|
||
|
Building a kernel consists of two steps: 1) the kernel
|
||
|
(<filename>vmlinux</filename>) is built, and 2) the modules
|
||
|
are built (i.e. <filename>make modules</filename>).
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-diffconfig'>
|
||
|
<title><filename>do_diffconfig</filename></title>
|
||
|
|
||
|
<para>
|
||
|
When invoked by the user, this task creates a file containing the
|
||
|
differences between the original config as produced by
|
||
|
<link linkend='ref-tasks-kernel_configme'><filename>do_kernel_configme</filename></link>
|
||
|
task and the changes made by the user with other methods
|
||
|
(i.e. using
|
||
|
(<link linkend='ref-tasks-kernel_menuconfig'><filename>do_kernel_menuconfig</filename></link>).
|
||
|
Once the file of differences is created, it can be used to create
|
||
|
a config fragment that only contains the differences.
|
||
|
You can invoke this task from the command line as follows:
|
||
|
<literallayout class='monospaced'>
|
||
|
$ bitbake linux-yocto -c diffconfig
|
||
|
</literallayout>
|
||
|
For more information, see the
|
||
|
"<ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#creating-config-fragments'>Creating Configuration Fragments</ulink>"
|
||
|
section in the Yocto Project Linux Kernel Development Manual.
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-kernel_checkout'>
|
||
|
<title><filename>do_kernel_checkout</filename></title>
|
||
|
|
||
|
<para>
|
||
|
Converts the newly unpacked kernel source into a form with which
|
||
|
the OpenEmbedded build system can work.
|
||
|
Because the kernel source can be fetched in several different ways,
|
||
|
the <filename>do_kernel_checkout</filename> task makes sure that
|
||
|
subsequent tasks are given a clean working tree copy of the kernel
|
||
|
with the correct branches checked out.
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-kernel_configcheck'>
|
||
|
<title><filename>do_kernel_configcheck</filename></title>
|
||
|
|
||
|
<para>
|
||
|
Validates the configuration produced by the
|
||
|
<link linkend='ref-tasks-kernel_menuconfig'><filename>do_kernel_menuconfig</filename></link>
|
||
|
task.
|
||
|
The <filename>do_kernel_configcheck</filename> task produces
|
||
|
warnings when a requested configuration does not appear in the
|
||
|
final <filename>.config</filename> file or when you override a
|
||
|
policy configuration in a hardware configuration fragment.
|
||
|
You can run this task explicitly and view the output by using
|
||
|
the following command:
|
||
|
<literallayout class='monospaced'>
|
||
|
$ bitbake linux-yocto -c kernel_configcheck -f
|
||
|
</literallayout>
|
||
|
For more information, see the
|
||
|
"<ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#validating-configuration'>Validating Configuration</ulink>"
|
||
|
section in the Yocto Project Linux Kernel Development Manual.
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-kernel_configme'>
|
||
|
<title><filename>do_kernel_configme</filename></title>
|
||
|
|
||
|
<para>
|
||
|
After the kernel is patched by the
|
||
|
<link linkend='ref-tasks-patch'><filename>do_patch</filename></link>
|
||
|
task, the <filename>do_kernel_configme</filename> task assembles
|
||
|
and merges all the kernel config fragments into a merged
|
||
|
configuration that can then be passed to the kernel configuration
|
||
|
phase proper.
|
||
|
This is also the time during which user-specified defconfigs
|
||
|
are applied if present, and where configuration modes such as
|
||
|
<filename>--allnoconfig</filename> are applied.
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-kernel_menuconfig'>
|
||
|
<title><filename>do_kernel_menuconfig</filename></title>
|
||
|
|
||
|
<para>
|
||
|
Invoked by the user to manipulate the
|
||
|
<filename>.config</filename> file used to build a linux-yocto
|
||
|
recipe.
|
||
|
This task starts the Linux kernel configuration tool, which you
|
||
|
then use to modify the kernel configuration.
|
||
|
<note>
|
||
|
You can also invoke this tool from the command line as
|
||
|
follows:
|
||
|
<literallayout class='monospaced'>
|
||
|
$ bitbake linux-yocto -c menuconfig
|
||
|
</literallayout>
|
||
|
</note>
|
||
|
See the
|
||
|
"<ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#using-menuconfig'>Using <filename>menuconfig</filename></ulink>"
|
||
|
section in the Yocto Project Linux Kernel Development Manual
|
||
|
for more information on this configuration tool.
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-kernel_metadata'>
|
||
|
<title><filename>do_kernel_metadata</filename></title>
|
||
|
|
||
|
<para>
|
||
|
Collects all the features required for a given kernel build,
|
||
|
whether the features come from
|
||
|
<link linkend='var-SRC_URI'><filename>SRC_URI</filename></link>
|
||
|
or from Git repositories.
|
||
|
After collection, the <filename>do_kernel_metadata</filename> task
|
||
|
processes the features into a series of config fragments and
|
||
|
patches, which can then be applied by subsequent tasks such as
|
||
|
<link linkend='ref-tasks-patch'><filename>do_patch</filename></link>
|
||
|
and
|
||
|
<link linkend='ref-tasks-kernel_configme'><filename>do_kernel_configme</filename></link>.
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-menuconfig'>
|
||
|
<title><filename>do_menuconfig</filename></title>
|
||
|
|
||
|
<para>
|
||
|
Runs <filename>make menuconfig</filename> for the kernel.
|
||
|
For information on <filename>menuconfig</filename>, see the
|
||
|
"<ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#using-menuconfig'>Using <filename>menuconfig</filename></ulink>"
|
||
|
section in the Yocto Project Linux Kernel Development Manual.
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-savedefconfig'>
|
||
|
<title><filename>do_savedefconfig</filename></title>
|
||
|
|
||
|
<para>
|
||
|
When invoked by the user, creates a defconfig file that can be
|
||
|
used instead of the default defconfig.
|
||
|
The saved defconfig contains the differences between the default
|
||
|
defconfig and the changes made by the user using other methods
|
||
|
(i.e. the
|
||
|
<link linkend='ref-tasks-kernel_menuconfig'><filename>do_kernel_menuconfig</filename></link>
|
||
|
task.
|
||
|
You can invoke the task using the following command:
|
||
|
<literallayout class='monospaced'>
|
||
|
$ bitbake linux-yocto -c savedefconfig
|
||
|
</literallayout>
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-shared_workdir'>
|
||
|
<title><filename>do_shared_workdir</filename></title>
|
||
|
|
||
|
<para>
|
||
|
After the kernel has been compiled but before the kernel modules
|
||
|
have been compiled, this task copies files required for module
|
||
|
builds and which are generated from the kernel build into the
|
||
|
shared work directory.
|
||
|
With these copies successfully copied, the
|
||
|
<link linkend='ref-tasks-compile_kernelmodules'><filename>do_compile_kernelmodules</filename></link>
|
||
|
task can successfully build the kernel modules in the next step
|
||
|
of the build.
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-sizecheck'>
|
||
|
<title><filename>do_sizecheck</filename></title>
|
||
|
|
||
|
<para>
|
||
|
After the kernel has been built, this task checks the size of the
|
||
|
stripped kernel image against
|
||
|
<link linkend='var-KERNEL_IMAGE_MAXSIZE'><filename>KERNEL_IMAGE_MAXSIZE</filename></link>.
|
||
|
If that variable was set and the size of the stripped kernel
|
||
|
exceeds that size, the kernel build produces a warning to that
|
||
|
effect.
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-strip'>
|
||
|
<title><filename>do_strip</filename></title>
|
||
|
|
||
|
<para>
|
||
|
If
|
||
|
<filename>KERNEL_IMAGE_STRIP_EXTRA_SECTIONS</filename> is defined,
|
||
|
this task strips the sections named in that variable from
|
||
|
<filename>vmlinux</filename>.
|
||
|
This stripping is typically used to remove nonessential sections
|
||
|
such as <filename>.comment</filename> sections from a
|
||
|
size-sensitive configuration.
|
||
|
</para>
|
||
|
</section>
|
||
|
|
||
|
<section id='ref-tasks-validate_branches'>
|
||
|
<title><filename>do_validate_branches</filename></title>
|
||
|
|
||
|
<para>
|
||
|
After the kernel is unpacked but before it is patched, this task
|
||
|
makes sure that the machine and metadata branches as specified
|
||
|
by the <link linkend='var-SRCREV'><filename>SRCREV</filename></link>
|
||
|
variables actually exist on the specified branches.
|
||
|
If these branches do not exist and
|
||
|
<link linkend='var-AUTOREV'><filename>AUTOREV</filename></link>
|
||
|
is not being used, the <filename>do_validate_branches</filename>
|
||
|
task fails during the build.
|
||
|
</para>
|
||
|
</section>
|
||
|
</section>
|
||
|
|
||
|
<section id='miscellaneous-tasks'>
|
||
|
<title>Miscellaneous Tasks</title>
|
||
|
|
||
|
<para>
|
||
|
The following sections describe miscellaneous tasks.
|
||
|
</para>
|
||
|
|
||
|
<section id='ref-tasks-spdx'>
|
||
|
<title><filename>do_spdx</filename></title>
|
||
|
|
||
|
<para>
|
||
|
A build stage that takes the source code and scans it on a remote
|
||
|
FOSSOLOGY server in order to produce an SPDX document.
|
||
|
This task applies only to the
|
||
|
<link linkend='ref-classes-spdx'><filename>spdx</filename></link>
|
||
|
class.
|
||
|
</para>
|
||
|
</section>
|
||
|
</section>
|
||
|
|
||
|
</chapter>
|
||
|
<!--
|
||
|
vim: expandtab tw=80 ts=4
|
||
|
-->
|