mirror of
https://git.yoctoproject.org/poky
synced 2026-05-08 17:19:20 +00:00
sphinx: remove DocBook files
The Yocto Project documentation was migrated to Sphinx. Let's remove the deprecated DocBook files. (From yocto-docs rev: 28fb0e63b2fbfd6426b00498bf2682bb53fdd862) Signed-off-by: Nicolas Dechesne <nicolas.dechesne@linaro.org> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
1fd9c4b2c0
commit
43d07a2851
@@ -1,836 +0,0 @@
|
||||
<!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; ] >
|
||||
<!--SPDX-License-Identifier: CC-BY-2.0-UK-->
|
||||
|
||||
<chapter id='faq'>
|
||||
<title>FAQ</title>
|
||||
<qandaset>
|
||||
<qandaentry>
|
||||
<question>
|
||||
<para>
|
||||
How does Poky differ from <ulink url='&OE_HOME_URL;'>OpenEmbedded</ulink>?
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
The term "<link link='poky'>Poky</link>"
|
||||
refers to the specific reference build system that
|
||||
the Yocto Project provides.
|
||||
Poky is based on <link linkend='oe-core'>OE-Core</link>
|
||||
and <link linkend='bitbake-term'>BitBake</link>.
|
||||
Thus, the generic term used here for the build system is
|
||||
the "OpenEmbedded build system."
|
||||
Development in the Yocto Project using Poky is closely tied to OpenEmbedded, with
|
||||
changes always being merged to OE-Core or BitBake first before being pulled back
|
||||
into Poky.
|
||||
This practice benefits both projects immediately.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry>
|
||||
<question>
|
||||
<para id='faq-not-meeting-requirements'>
|
||||
My development system does not meet the
|
||||
required Git, tar, and Python versions.
|
||||
In particular, I do not have Python 3.5.0 or greater.
|
||||
Can I still use the Yocto Project?
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
You can get the required tools on your host development
|
||||
system a couple different ways (i.e. building a tarball or
|
||||
downloading a tarball).
|
||||
See the
|
||||
"<link linkend='required-git-tar-python-and-gcc-versions'>Required Git, tar, Python and gcc Versions</link>"
|
||||
section for steps on how to update your build tools.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry>
|
||||
<question>
|
||||
<para>
|
||||
How can you claim Poky / OpenEmbedded-Core is stable?
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
There are three areas that help with stability;
|
||||
<itemizedlist>
|
||||
<listitem><para>The Yocto Project team keeps
|
||||
<link linkend='oe-core'>OE-Core</link> small
|
||||
and focused, containing around 830 recipes as opposed to the thousands
|
||||
available in other OpenEmbedded community layers.
|
||||
Keeping it small makes it easy to test and maintain.</para></listitem>
|
||||
<listitem><para>The Yocto Project team runs manual and automated tests
|
||||
using a small, fixed set of reference hardware as well as emulated
|
||||
targets.</para></listitem>
|
||||
<listitem><para>The Yocto Project uses an autobuilder,
|
||||
which provides continuous build and integration tests.</para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry>
|
||||
<question>
|
||||
<para>
|
||||
How do I get support for my board added to the Yocto Project?
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
Support for an additional board is added by creating a
|
||||
Board Support Package (BSP) layer for it.
|
||||
For more information on how to create a BSP layer, see the
|
||||
"<ulink url='&YOCTO_DOCS_DEV_URL;#understanding-and-creating-layers'>Understanding and Creating Layers</ulink>"
|
||||
section in the Yocto Project Development Tasks Manual and the
|
||||
<ulink url='&YOCTO_DOCS_BSP_URL;'>Yocto Project Board Support Package (BSP) Developer's Guide</ulink>.
|
||||
</para>
|
||||
<para>
|
||||
Usually, if the board is not completely exotic, adding support in
|
||||
the Yocto Project is fairly straightforward.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry>
|
||||
<question>
|
||||
<para>
|
||||
Are there any products built using the OpenEmbedded build system?
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
The software running on the <ulink url='http://vernier.com/labquest/'>Vernier LabQuest</ulink>
|
||||
is built using the OpenEmbedded build system.
|
||||
See the <ulink url='http://www.vernier.com/products/interfaces/labq/'>Vernier LabQuest</ulink>
|
||||
website for more information.
|
||||
There are a number of pre-production devices using the OpenEmbedded build system
|
||||
and the Yocto Project team
|
||||
announces them as soon as they are released.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry>
|
||||
<question>
|
||||
<para>
|
||||
What does the OpenEmbedded build system produce as output?
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
Because you can use the same set of recipes to create output of
|
||||
various formats, the output of an OpenEmbedded build depends on
|
||||
how you start it.
|
||||
Usually, the output is a flashable image ready for the target
|
||||
device.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry>
|
||||
<question>
|
||||
<para>
|
||||
How do I add my package to the Yocto Project?
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
To add a package, you need to create a BitBake recipe.
|
||||
For information on how to create a BitBake recipe, see the
|
||||
"<ulink url='&YOCTO_DOCS_DEV_URL;#new-recipe-writing-a-new-recipe'>Writing a New Recipe</ulink>"
|
||||
section in the Yocto Project Development Tasks Manual.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry>
|
||||
<question>
|
||||
<para>
|
||||
Do I have to reflash my entire board with a new Yocto Project image when recompiling
|
||||
a package?
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
The OpenEmbedded build system can build packages in various
|
||||
formats such as IPK for OPKG, Debian package
|
||||
(<filename>.deb</filename>), or RPM.
|
||||
You can then upgrade the packages using the package tools on
|
||||
the device, much like on a desktop distribution such as
|
||||
Ubuntu or Fedora.
|
||||
However, package management on the target is entirely optional.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry>
|
||||
<question>
|
||||
<para>
|
||||
I see the error '<filename>chmod: XXXXX new permissions are r-xrwxrwx, not r-xr-xr-x</filename>'.
|
||||
What is wrong?
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
You are probably running the build on an NTFS filesystem.
|
||||
Use <filename>ext2</filename>, <filename>ext3</filename>, or <filename>ext4</filename> instead.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<!-- <qandaentry>
|
||||
<question>
|
||||
<para>
|
||||
How do I make the Yocto Project work in RHEL/CentOS?
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
To get the Yocto Project working under RHEL/CentOS 5.1 you need to first
|
||||
install some required packages.
|
||||
The standard CentOS packages needed are:
|
||||
<itemizedlist>
|
||||
<listitem><para>"Development tools" (selected during installation)</para></listitem>
|
||||
<listitem><para><filename>texi2html</filename></para></listitem>
|
||||
<listitem><para><filename>compat-gcc-34</filename></para></listitem>
|
||||
</itemizedlist>
|
||||
On top of these, you need the following external packages:
|
||||
<itemizedlist>
|
||||
<listitem><para><filename>python-sqlite2</filename> from
|
||||
<ulink url='http://dag.wieers.com/rpm/packages/python-sqlite2/'>DAG repository</ulink>
|
||||
</para></listitem>
|
||||
<listitem><para><filename>help2man</filename> from
|
||||
<ulink url='http://centos.karan.org/el4/extras/stable/x86_64/RPMS/repodata/repoview/help2man-0-1.33.1-2.html'>Karan repository</ulink></para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Once these packages are installed, the OpenEmbedded build system will be able
|
||||
to build standard images.
|
||||
However, there might be a problem with the QEMU emulator segfaulting.
|
||||
You can either disable the generation of binary locales by setting
|
||||
<filename><link linkend='var-ENABLE_BINARY_LOCALE_GENERATION'>ENABLE_BINARY_LOCALE_GENERATION</link>
|
||||
</filename> to "0" or by removing the <filename>linux-2.6-execshield.patch</filename>
|
||||
from the kernel and rebuilding it since that is the patch that causes the problems with QEMU.
|
||||
</para>
|
||||
|
||||
<note>
|
||||
<para>For information on distributions that the Yocto Project
|
||||
uses during validation, see the
|
||||
<ulink url='&YOCTO_WIKI_URL;/wiki/Distribution_Support'>Distribution Support</ulink>
|
||||
Wiki page.</para>
|
||||
<para>For notes about using the Yocto Project on a RHEL 4-based
|
||||
host, see the
|
||||
<ulink url='&YOCTO_WIKI_URL;/wiki/BuildingOnRHEL4'>Building on RHEL4</ulink>
|
||||
Wiki page.</para>
|
||||
</note>
|
||||
</answer>
|
||||
</qandaentry> -->
|
||||
|
||||
<qandaentry>
|
||||
<question>
|
||||
<para>
|
||||
I see lots of 404 responses for files when the OpenEmbedded
|
||||
build system is trying to download sources.
|
||||
Is something wrong?
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
Nothing is wrong.
|
||||
The OpenEmbedded build system checks any configured source mirrors before downloading
|
||||
from the upstream sources.
|
||||
The build system does this searching for both source archives and
|
||||
pre-checked out versions of SCM-managed software.
|
||||
These checks help in large installations because it can reduce load on the SCM servers
|
||||
themselves.
|
||||
The address above is one of the default mirrors configured into the
|
||||
build system.
|
||||
Consequently, if an upstream source disappears, the team
|
||||
can place sources there so builds continue to work.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry>
|
||||
<question>
|
||||
<para>
|
||||
I have machine-specific data in a package for one machine only but the package is
|
||||
being marked as machine-specific in all cases, how do I prevent this?
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
Set <filename><link linkend='var-SRC_URI_OVERRIDES_PACKAGE_ARCH'>SRC_URI_OVERRIDES_PACKAGE_ARCH</link>
|
||||
</filename> = "0" in the <filename>.bb</filename> file but make sure the package is
|
||||
manually marked as
|
||||
machine-specific for the case that needs it.
|
||||
The code that handles
|
||||
<filename>SRC_URI_OVERRIDES_PACKAGE_ARCH</filename> is in
|
||||
the <filename>meta/classes/base.bbclass</filename> file.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry>
|
||||
<question>
|
||||
<para id='i-am-behind-a-firewall-and-need-to-use-a-proxy-server'>
|
||||
I'm behind a firewall and need to use a proxy server. How do I do that?
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
Most source fetching by the OpenEmbedded build system is done
|
||||
by <filename>wget</filename> and you therefore need to specify
|
||||
the proxy settings in a <filename>.wgetrc</filename> file,
|
||||
which can be in your home directory if you are a single user
|
||||
or can be in <filename>/usr/local/etc/wgetrc</filename> as
|
||||
a global user file.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Following is the applicable code for setting various proxy
|
||||
types in the <filename>.wgetrc</filename> file.
|
||||
By default, these settings are disabled with comments.
|
||||
To use them, remove the comments:
|
||||
<literallayout class='monospaced'>
|
||||
# You can set the default proxies for Wget to use for http, https, and ftp.
|
||||
# They will override the value in the environment.
|
||||
#https_proxy = http://proxy.yoyodyne.com:18023/
|
||||
#http_proxy = http://proxy.yoyodyne.com:18023/
|
||||
#ftp_proxy = http://proxy.yoyodyne.com:18023/
|
||||
|
||||
# If you do not want to use proxy at all, set this to off.
|
||||
#use_proxy = on
|
||||
</literallayout>
|
||||
The Yocto Project also includes a
|
||||
<filename>meta-poky/conf/site.conf.sample</filename> file that
|
||||
shows how to configure CVS and Git proxy servers if needed.
|
||||
For more information on setting up various proxy types and
|
||||
configuring proxy servers, see the
|
||||
"<ulink url='&YOCTO_WIKI_URL;/wiki/Working_Behind_a_Network_Proxy'>Working Behind a Network Proxy</ulink>"
|
||||
Wiki page.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry>
|
||||
<question>
|
||||
<para>
|
||||
What's the difference between <replaceable>target</replaceable> and <replaceable>target</replaceable><filename>-native</filename>?
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
The <filename>*-native</filename> targets are designed to run on the system
|
||||
being used for the build.
|
||||
These are usually tools that are needed to assist the build in some way such as
|
||||
<filename>quilt-native</filename>, which is used to apply patches.
|
||||
The non-native version is the one that runs on the target device.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry>
|
||||
<question>
|
||||
<para>
|
||||
I'm seeing random build failures. Help?!
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
If the same build is failing in totally different and random
|
||||
ways, the most likely explanation is:
|
||||
<itemizedlist>
|
||||
<listitem><para>The hardware you are running the build on
|
||||
has some problem.</para></listitem>
|
||||
<listitem><para>You are running the build under
|
||||
virtualization, in which case the virtualization
|
||||
probably has bugs.</para></listitem>
|
||||
</itemizedlist>
|
||||
The OpenEmbedded build system processes a massive amount of
|
||||
data that causes lots of network, disk and CPU activity and
|
||||
is sensitive to even single-bit failures in any of these areas.
|
||||
True random failures have always been traced back to hardware
|
||||
or virtualization issues.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry>
|
||||
<question>
|
||||
<para>
|
||||
When I try to build a native recipe, the build fails with <filename>iconv.h</filename> problems.
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
If you get an error message that indicates GNU
|
||||
<filename>libiconv</filename> is not in use but
|
||||
<filename>iconv.h</filename> has been included from
|
||||
<filename>libiconv</filename>, you need to check to see if
|
||||
you have a previously installed version of the header file
|
||||
in <filename>/usr/local/include</filename>.
|
||||
<literallayout class='monospaced'>
|
||||
#error GNU libiconv not in use but included iconv.h is from libiconv
|
||||
</literallayout>
|
||||
If you find a previously installed file, you should either
|
||||
uninstall it or temporarily rename it and try the build again.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
This issue is just a single manifestation of "system
|
||||
leakage" issues caused when the OpenEmbedded build system
|
||||
finds and uses previously installed files during a native
|
||||
build.
|
||||
This type of issue might not be limited to
|
||||
<filename>iconv.h</filename>.
|
||||
Be sure that leakage cannot occur from
|
||||
<filename>/usr/local/include</filename> and
|
||||
<filename>/opt</filename> locations.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry>
|
||||
<question>
|
||||
<para>
|
||||
What do we need to ship for license compliance?
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
This is a difficult question and you need to consult your lawyer
|
||||
for the answer for your specific case.
|
||||
It is worth bearing in mind that for GPL compliance, there needs
|
||||
to be enough information shipped to allow someone else to
|
||||
rebuild and produce the same end result you are shipping.
|
||||
This means sharing the source code, any patches applied to it,
|
||||
and also any configuration information about how that package
|
||||
was configured and built.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
You can find more information on licensing in the
|
||||
"<ulink url='&YOCTO_DOCS_OM_URL;#licensing'>Licensing</ulink>"
|
||||
section in the Yocto Project Overview and Concepts Manual
|
||||
and also in the
|
||||
"<ulink url='&YOCTO_DOCS_DEV_URL;#maintaining-open-source-license-compliance-during-your-products-lifecycle'>Maintaining Open Source License Compliance During Your Product's Lifecycle</ulink>"
|
||||
section in the Yocto Project Development Tasks Manual.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry>
|
||||
<question>
|
||||
<para>
|
||||
How do I disable the cursor on my touchscreen device?
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
You need to create a form factor file as described in the
|
||||
"<ulink url='&YOCTO_DOCS_BSP_URL;#bsp-filelayout-misc-recipes'>Miscellaneous BSP-Specific Recipe Files</ulink>"
|
||||
section in the Yocto Project Board Support Packages (BSP)
|
||||
Developer's Guide.
|
||||
Set the <filename>HAVE_TOUCHSCREEN</filename> variable equal to
|
||||
one as follows:
|
||||
<literallayout class='monospaced'>
|
||||
HAVE_TOUCHSCREEN=1
|
||||
</literallayout>
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry>
|
||||
<question>
|
||||
<para>
|
||||
How do I make sure connected network interfaces are brought up by default?
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
The default interfaces file provided by the netbase recipe does not
|
||||
automatically bring up network interfaces.
|
||||
Therefore, you will need to add a BSP-specific netbase that includes an interfaces
|
||||
file.
|
||||
See the "<ulink url='&YOCTO_DOCS_BSP_URL;#bsp-filelayout-misc-recipes'>Miscellaneous BSP-Specific Recipe Files</ulink>"
|
||||
section in the Yocto Project Board Support Packages (BSP)
|
||||
Developer's Guide for information on creating these types of
|
||||
miscellaneous recipe files.
|
||||
</para>
|
||||
<para>
|
||||
For example, add the following files to your layer:
|
||||
<literallayout class='monospaced'>
|
||||
meta-MACHINE/recipes-bsp/netbase/netbase/MACHINE/interfaces
|
||||
meta-MACHINE/recipes-bsp/netbase/netbase_5.0.bbappend
|
||||
</literallayout>
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry>
|
||||
<question>
|
||||
<para>
|
||||
How do I create images with more free space?
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
By default, the OpenEmbedded build system creates images
|
||||
that are 1.3 times the size of the populated root filesystem.
|
||||
To affect the image size, you need to set various
|
||||
configurations:
|
||||
<itemizedlist>
|
||||
<listitem><para><emphasis>Image Size:</emphasis>
|
||||
The OpenEmbedded build system uses the
|
||||
<link linkend='var-IMAGE_ROOTFS_SIZE'><filename>IMAGE_ROOTFS_SIZE</filename></link>
|
||||
variable to define the size of the image in Kbytes.
|
||||
The build system determines the size by taking into
|
||||
account the initial root filesystem size before any
|
||||
modifications such as requested size for the image and
|
||||
any requested additional free disk space to be
|
||||
added to the image.</para></listitem>
|
||||
<listitem><para><emphasis>Overhead:</emphasis>
|
||||
Use the
|
||||
<link linkend='var-IMAGE_OVERHEAD_FACTOR'><filename>IMAGE_OVERHEAD_FACTOR</filename></link>
|
||||
variable to define the multiplier that the build system
|
||||
applies to the initial image size, which is 1.3 by
|
||||
default.</para></listitem>
|
||||
<listitem><para><emphasis>Additional Free Space:</emphasis>
|
||||
Use the
|
||||
<link linkend='var-IMAGE_ROOTFS_EXTRA_SPACE'><filename>IMAGE_ROOTFS_EXTRA_SPACE</filename></link>
|
||||
variable to add additional free space to the image.
|
||||
The build system adds this space to the image after
|
||||
it determines its
|
||||
<filename>IMAGE_ROOTFS_SIZE</filename>.
|
||||
</para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry>
|
||||
<question>
|
||||
<para>
|
||||
Why don't you support directories with spaces in the pathnames?
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
The Yocto Project team has tried to do this before but too
|
||||
many of the tools the OpenEmbedded build system depends on,
|
||||
such as <filename>autoconf</filename>, break when they find
|
||||
spaces in pathnames.
|
||||
Until that situation changes, the team will not support spaces
|
||||
in pathnames.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry>
|
||||
<question>
|
||||
<para>
|
||||
How do I use an external toolchain?
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
The toolchain configuration is very flexible and customizable.
|
||||
It is primarily controlled with the
|
||||
<filename><link linkend='var-TCMODE'>TCMODE</link></filename>
|
||||
variable.
|
||||
This variable controls which <filename>tcmode-*.inc</filename>
|
||||
file to include from the
|
||||
<filename>meta/conf/distro/include</filename> directory within
|
||||
the
|
||||
<link linkend='source-directory'>Source Directory</link>.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The default value of <filename>TCMODE</filename> is "default",
|
||||
which tells the OpenEmbedded build system to use its internally
|
||||
built toolchain (i.e. <filename>tcmode-default.inc</filename>).
|
||||
However, other patterns are accepted.
|
||||
In particular, "external-*" refers to external toolchains.
|
||||
One example is the Sourcery G++ Toolchain.
|
||||
The support for this toolchain resides in the separate
|
||||
<filename>meta-sourcery</filename> layer at
|
||||
<ulink url='http://github.com/MentorEmbedded/meta-sourcery/'></ulink>.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
In addition to the toolchain configuration, you also need a
|
||||
corresponding toolchain recipe file.
|
||||
This recipe file needs to package up any pre-built objects in
|
||||
the toolchain such as <filename>libgcc</filename>,
|
||||
<filename>libstdcc++</filename>, any locales, and
|
||||
<filename>libc</filename>.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry>
|
||||
<question>
|
||||
<para id='how-does-the-yocto-project-obtain-source-code-and-will-it-work-behind-my-firewall-or-proxy-server'>
|
||||
How does the OpenEmbedded build system obtain source code and
|
||||
will it work behind my firewall or proxy server?
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
The way the build system obtains source code is highly
|
||||
configurable.
|
||||
You can setup the build system to get source code in most
|
||||
environments if HTTP transport is available.
|
||||
</para>
|
||||
<para>
|
||||
When the build system searches for source code, it first
|
||||
tries the local download directory.
|
||||
If that location fails, Poky tries
|
||||
<link linkend='var-PREMIRRORS'><filename>PREMIRRORS</filename></link>,
|
||||
the upstream source, and then
|
||||
<link linkend='var-MIRRORS'><filename>MIRRORS</filename></link>
|
||||
in that order.
|
||||
</para>
|
||||
<para>
|
||||
Assuming your distribution is "poky", the OpenEmbedded build
|
||||
system uses the Yocto Project source
|
||||
<filename>PREMIRRORS</filename> by default for SCM-based
|
||||
sources, upstreams for normal tarballs, and then falls back
|
||||
to a number of other mirrors including the Yocto Project
|
||||
source mirror if those fail.
|
||||
</para>
|
||||
<para>
|
||||
As an example, you could add a specific server for the
|
||||
build system to attempt before any others by adding something
|
||||
like the following to the <filename>local.conf</filename>
|
||||
configuration file:
|
||||
<literallayout class='monospaced'>
|
||||
PREMIRRORS_prepend = "\
|
||||
git://.*/.* http://www.yoctoproject.org/sources/ \n \
|
||||
ftp://.*/.* http://www.yoctoproject.org/sources/ \n \
|
||||
http://.*/.* http://www.yoctoproject.org/sources/ \n \
|
||||
https://.*/.* http://www.yoctoproject.org/sources/ \n"
|
||||
</literallayout>
|
||||
</para>
|
||||
<para>
|
||||
These changes cause the build system to intercept Git, FTP,
|
||||
HTTP, and HTTPS requests and direct them to the
|
||||
<filename>http://</filename> sources mirror.
|
||||
You can use <filename>file://</filename> URLs to point to
|
||||
local directories or network shares as well.
|
||||
</para>
|
||||
<para>
|
||||
Aside from the previous technique, these options also exist:
|
||||
<literallayout class='monospaced'>
|
||||
BB_NO_NETWORK = "1"
|
||||
</literallayout>
|
||||
This statement tells BitBake to issue an error instead of
|
||||
trying to access the Internet.
|
||||
This technique is useful if you want to ensure code builds
|
||||
only from local sources.
|
||||
</para>
|
||||
<para>
|
||||
Here is another technique:
|
||||
<literallayout class='monospaced'>
|
||||
BB_FETCH_PREMIRRORONLY = "1"
|
||||
</literallayout>
|
||||
This statement limits the build system to pulling source
|
||||
from the <filename>PREMIRRORS</filename> only.
|
||||
Again, this technique is useful for reproducing builds.
|
||||
</para>
|
||||
<para>
|
||||
Here is another technique:
|
||||
<literallayout class='monospaced'>
|
||||
BB_GENERATE_MIRROR_TARBALLS = "1"
|
||||
</literallayout>
|
||||
This statement tells the build system to generate mirror
|
||||
tarballs.
|
||||
This technique is useful if you want to create a mirror server.
|
||||
If not, however, the technique can simply waste time during
|
||||
the build.
|
||||
</para>
|
||||
<para>
|
||||
Finally, consider an example where you are behind an
|
||||
HTTP-only firewall.
|
||||
You could make the following changes to the
|
||||
<filename>local.conf</filename> configuration file as long as
|
||||
the <filename>PREMIRRORS</filename> server is current:
|
||||
<literallayout class='monospaced'>
|
||||
PREMIRRORS_prepend = "\
|
||||
ftp://.*/.* http://www.yoctoproject.org/sources/ \n \
|
||||
http://.*/.* http://www.yoctoproject.org/sources/ \n \
|
||||
https://.*/.* http://www.yoctoproject.org/sources/ \n"
|
||||
BB_FETCH_PREMIRRORONLY = "1"
|
||||
</literallayout>
|
||||
These changes would cause the build system to successfully
|
||||
fetch source over HTTP and any network accesses to anything
|
||||
other than the <filename>PREMIRRORS</filename> would fail.
|
||||
</para>
|
||||
<para>
|
||||
The build system also honors the standard shell environment
|
||||
variables <filename>http_proxy</filename>,
|
||||
<filename>ftp_proxy</filename>,
|
||||
<filename>https_proxy</filename>, and
|
||||
<filename>all_proxy</filename> to redirect requests through
|
||||
proxy servers.
|
||||
</para>
|
||||
<note>
|
||||
You can find more information on the
|
||||
"<ulink url='&YOCTO_WIKI_URL;/wiki/Working_Behind_a_Network_Proxy'>Working Behind a Network Proxy</ulink>"
|
||||
Wiki page.
|
||||
</note>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry>
|
||||
<question>
|
||||
<para>
|
||||
Can I get rid of build output so I can start over?
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
Yes - you can easily do this.
|
||||
When you use BitBake to build an image, all the build output
|
||||
goes into the directory created when you run the
|
||||
build environment setup script (i.e.
|
||||
<link linkend='structure-core-script'><filename>&OE_INIT_FILE;</filename></link>).
|
||||
By default, this
|
||||
<link linkend='build-directory'>Build Directory</link>
|
||||
is named <filename>build</filename> but can be named
|
||||
anything you want.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Within the Build Directory, is the <filename>tmp</filename>
|
||||
directory.
|
||||
To remove all the build output yet preserve any source code or
|
||||
downloaded files from previous builds, simply remove the
|
||||
<filename>tmp</filename> directory.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry>
|
||||
<question>
|
||||
<para>
|
||||
Why do <filename>${bindir}</filename> and <filename>${libdir}</filename> have strange values for <filename>-native</filename> recipes?
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
Executables and libraries might need to be used from a
|
||||
directory other than the directory into which they were
|
||||
initially installed.
|
||||
Complicating this situation is the fact that sometimes these
|
||||
executables and libraries are compiled with the expectation
|
||||
of being run from that initial installation target directory.
|
||||
If this is the case, moving them causes problems.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
This scenario is a fundamental problem for package maintainers
|
||||
of mainstream Linux distributions as well as for the
|
||||
OpenEmbedded build system.
|
||||
As such, a well-established solution exists.
|
||||
Makefiles, Autotools configuration scripts, and other build
|
||||
systems are expected to respect environment variables such as
|
||||
<filename>bindir</filename>, <filename>libdir</filename>,
|
||||
and <filename>sysconfdir</filename> that indicate where
|
||||
executables, libraries, and data reside when a program is
|
||||
actually run.
|
||||
They are also expected to respect a
|
||||
<filename>DESTDIR</filename> environment variable, which is
|
||||
prepended to all the other variables when the build system
|
||||
actually installs the files.
|
||||
It is understood that the program does not actually run from
|
||||
within <filename>DESTDIR</filename>.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
When the OpenEmbedded build system uses a recipe to build a
|
||||
target-architecture program (i.e. one that is intended for
|
||||
inclusion on the image being built), that program eventually
|
||||
runs from the root file system of that image.
|
||||
Thus, the build system provides a value of "/usr/bin" for
|
||||
<filename>bindir</filename>, a value of "/usr/lib" for
|
||||
<filename>libdir</filename>, and so forth.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Meanwhile, <filename>DESTDIR</filename> is a path within the
|
||||
<link linkend='build-directory'>Build Directory</link>.
|
||||
However, when the recipe builds a native program (i.e. one
|
||||
that is intended to run on the build machine), that program
|
||||
is never installed directly to the build machine's root
|
||||
file system.
|
||||
Consequently, the build system uses paths within the Build
|
||||
Directory for <filename>DESTDIR</filename>,
|
||||
<filename>bindir</filename> and related variables.
|
||||
To better understand this, consider the following two paths
|
||||
where the first is relatively normal and the second is not:
|
||||
<note>
|
||||
Due to these lengthy examples, the paths are artificially
|
||||
broken across lines for readability.
|
||||
</note>
|
||||
<literallayout class='monospaced'>
|
||||
/home/maxtothemax/poky-bootchart2/build/tmp/work/i586-poky-linux/zlib/
|
||||
1.2.8-r0/sysroot-destdir/usr/bin
|
||||
|
||||
/home/maxtothemax/poky-bootchart2/build/tmp/work/x86_64-linux/
|
||||
zlib-native/1.2.8-r0/sysroot-destdir/home/maxtothemax/poky-bootchart2/
|
||||
build/tmp/sysroots/x86_64-linux/usr/bin
|
||||
</literallayout>
|
||||
Even if the paths look unusual, they both are correct -
|
||||
the first for a target and the second for a native recipe.
|
||||
These paths are a consequence of the
|
||||
<filename>DESTDIR</filename> mechanism and while they
|
||||
appear strange, they are correct and in practice very effective.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry>
|
||||
<question>
|
||||
<para>
|
||||
The files provided by my <filename>*-native</filename> recipe do
|
||||
not appear to be available to other recipes.
|
||||
Files are missing from the native sysroot, my recipe is
|
||||
installing to the wrong place, or I am getting permissions
|
||||
errors during the do_install task in my recipe! What is wrong?
|
||||
</para>
|
||||
</question>
|
||||
<answer>
|
||||
<para>
|
||||
This situation results when a build system does
|
||||
not recognize the environment variables supplied to it by
|
||||
<link linkend='bitbake-term'>BitBake</link>.
|
||||
The incident that prompted this FAQ entry involved a Makefile
|
||||
that used an environment variable named
|
||||
<filename>BINDIR</filename> instead of the more standard
|
||||
variable <filename>bindir</filename>.
|
||||
The makefile's hardcoded default value of "/usr/bin" worked
|
||||
most of the time, but not for the recipe's
|
||||
<filename>-native</filename> variant.
|
||||
For another example, permissions errors might be caused
|
||||
by a Makefile that ignores <filename>DESTDIR</filename> or uses
|
||||
a different name for that environment variable.
|
||||
Check the the build system to see if these kinds of
|
||||
issues exist.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
</qandaset>
|
||||
</chapter>
|
||||
<!--
|
||||
vim: expandtab tw=80 ts=4
|
||||
-->
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,842 +0,0 @@
|
||||
<!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; ] >
|
||||
<!--SPDX-License-Identifier: CC-BY-2.0-UK-->
|
||||
|
||||
<chapter id='ref-devtool-reference'>
|
||||
<title><filename>devtool</filename> Quick Reference</title>
|
||||
|
||||
<para>
|
||||
The <filename>devtool</filename> command-line tool provides a number
|
||||
of features that help you build, test, and package software.
|
||||
This command is available alongside the <filename>bitbake</filename>
|
||||
command.
|
||||
Additionally, the <filename>devtool</filename> command is a key
|
||||
part of the extensible SDK.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
This chapter provides a Quick Reference for the
|
||||
<filename>devtool</filename> command.
|
||||
For more information on how to apply the command when using the
|
||||
extensible SDK, see the
|
||||
"<ulink url='&YOCTO_DOCS_SDK_URL;#sdk-extensible'>Using the Extensible SDK</ulink>"
|
||||
chapter in the Yocto Project Application Development and the
|
||||
Extensible Software Development Kit (eSDK) manual.
|
||||
</para>
|
||||
|
||||
<section id='devtool-getting-help'>
|
||||
<title>Getting Help</title>
|
||||
|
||||
<para>
|
||||
The <filename>devtool</filename> command line is organized
|
||||
similarly to Git in that it has a number of sub-commands for
|
||||
each function.
|
||||
You can run <filename>devtool --help</filename> to see all
|
||||
the commands:
|
||||
<literallayout class='monospaced'>
|
||||
$ devtool -h
|
||||
NOTE: Starting bitbake server...
|
||||
usage: devtool [--basepath BASEPATH] [--bbpath BBPATH] [-d] [-q]
|
||||
[--color COLOR] [-h]
|
||||
<subcommand> ...
|
||||
|
||||
OpenEmbedded development tool
|
||||
|
||||
options:
|
||||
--basepath BASEPATH Base directory of SDK / build directory
|
||||
--bbpath BBPATH Explicitly specify the BBPATH, rather than getting it
|
||||
from the metadata
|
||||
-d, --debug Enable debug output
|
||||
-q, --quiet Print only errors
|
||||
--color COLOR Colorize output (where COLOR is auto, always, never)
|
||||
-h, --help show this help message and exit
|
||||
|
||||
subcommands:
|
||||
Beginning work on a recipe:
|
||||
add Add a new recipe
|
||||
modify Modify the source for an existing recipe
|
||||
upgrade Upgrade an existing recipe
|
||||
Getting information:
|
||||
status Show workspace status
|
||||
search Search available recipes
|
||||
latest-version Report the latest version of an existing recipe
|
||||
check-upgrade-status Report upgradability for multiple (or all) recipes
|
||||
Working on a recipe in the workspace:
|
||||
build Build a recipe
|
||||
rename Rename a recipe file in the workspace
|
||||
edit-recipe Edit a recipe file
|
||||
find-recipe Find a recipe file
|
||||
configure-help Get help on configure script options
|
||||
update-recipe Apply changes from external source tree to recipe
|
||||
reset Remove a recipe from your workspace
|
||||
finish Finish working on a recipe in your workspace
|
||||
Testing changes on target:
|
||||
deploy-target Deploy recipe output files to live target machine
|
||||
undeploy-target Undeploy recipe output files in live target machine
|
||||
build-image Build image including workspace recipe packages
|
||||
Advanced:
|
||||
create-workspace Set up workspace in an alternative location
|
||||
export Export workspace into a tar archive
|
||||
import Import exported tar archive into workspace
|
||||
extract Extract the source for an existing recipe
|
||||
sync Synchronize the source tree for an existing recipe
|
||||
Use devtool <subcommand> --help to get help on a specific command
|
||||
</literallayout>
|
||||
As directed in the general help output, you can get more syntax
|
||||
on a specific command by providing the command name and using
|
||||
"--help":
|
||||
<literallayout class='monospaced'>
|
||||
$ devtool add --help
|
||||
NOTE: Starting bitbake server...
|
||||
usage: devtool add [-h] [--same-dir | --no-same-dir] [--fetch URI]
|
||||
[--fetch-dev] [--version VERSION] [--no-git]
|
||||
[--srcrev SRCREV | --autorev] [--srcbranch SRCBRANCH]
|
||||
[--binary] [--also-native] [--src-subdir SUBDIR]
|
||||
[--mirrors] [--provides PROVIDES]
|
||||
[recipename] [srctree] [fetchuri]
|
||||
|
||||
Adds a new recipe to the workspace to build a specified source tree. Can
|
||||
optionally fetch a remote URI and unpack it to create the source tree.
|
||||
|
||||
arguments:
|
||||
recipename Name for new recipe to add (just name - no version,
|
||||
path or extension). If not specified, will attempt to
|
||||
auto-detect it.
|
||||
srctree Path to external source tree. If not specified, a
|
||||
subdirectory of
|
||||
/home/scottrif/poky/build/workspace/sources will be
|
||||
used.
|
||||
fetchuri Fetch the specified URI and extract it to create the
|
||||
source tree
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
--same-dir, -s Build in same directory as source
|
||||
--no-same-dir Force build in a separate build directory
|
||||
--fetch URI, -f URI Fetch the specified URI and extract it to create the
|
||||
source tree (deprecated - pass as positional argument
|
||||
instead)
|
||||
--fetch-dev For npm, also fetch devDependencies
|
||||
--version VERSION, -V VERSION
|
||||
Version to use within recipe (PV)
|
||||
--no-git, -g If fetching source, do not set up source tree as a git
|
||||
repository
|
||||
--srcrev SRCREV, -S SRCREV
|
||||
Source revision to fetch if fetching from an SCM such
|
||||
as git (default latest)
|
||||
--autorev, -a When fetching from a git repository, set SRCREV in the
|
||||
recipe to a floating revision instead of fixed
|
||||
--srcbranch SRCBRANCH, -B SRCBRANCH
|
||||
Branch in source repository if fetching from an SCM
|
||||
such as git (default master)
|
||||
--binary, -b Treat the source tree as something that should be
|
||||
installed verbatim (no compilation, same directory
|
||||
structure). Useful with binary packages e.g. RPMs.
|
||||
--also-native Also add native variant (i.e. support building recipe
|
||||
for the build host as well as the target machine)
|
||||
--src-subdir SUBDIR Specify subdirectory within source tree to use
|
||||
--mirrors Enable PREMIRRORS and MIRRORS for source tree fetching
|
||||
(disable by default).
|
||||
--provides PROVIDES, -p PROVIDES
|
||||
Specify an alias for the item provided by the recipe.
|
||||
E.g. virtual/libgl
|
||||
</literallayout>
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section id='devtool-the-workspace-layer-structure'>
|
||||
<title>The Workspace Layer Structure</title>
|
||||
|
||||
<para>
|
||||
<filename>devtool</filename> uses a "Workspace" layer
|
||||
in which to accomplish builds.
|
||||
This layer is not specific to any single
|
||||
<filename>devtool</filename> command but is rather a common
|
||||
working area used across the tool.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The following figure shows the workspace structure:
|
||||
</para>
|
||||
|
||||
<para>
|
||||
<imagedata fileref="figures/build-workspace-directory.png"
|
||||
width="6in" depth="5in" align="left" scale="70" />
|
||||
</para>
|
||||
|
||||
<para>
|
||||
<literallayout class='monospaced'>
|
||||
attic - A directory created if devtool believes it must preserve
|
||||
anything when you run "devtool reset". For example, if you
|
||||
run "devtool add", make changes to the recipe, and then
|
||||
run "devtool reset", devtool takes notice that the file has
|
||||
been changed and moves it into the attic should you still
|
||||
want the recipe.
|
||||
|
||||
README - Provides information on what is in workspace layer and how to
|
||||
manage it.
|
||||
|
||||
.devtool_md5 - A checksum file used by devtool.
|
||||
|
||||
appends - A directory that contains *.bbappend files, which point to
|
||||
external source.
|
||||
|
||||
conf - A configuration directory that contains the layer.conf file.
|
||||
|
||||
recipes - A directory containing recipes. This directory contains a
|
||||
folder for each directory added whose name matches that of the
|
||||
added recipe. devtool places the <replaceable>recipe</replaceable>.bb file
|
||||
within that sub-directory.
|
||||
|
||||
sources - A directory containing a working copy of the source files used
|
||||
when building the recipe. This is the default directory used
|
||||
as the location of the source tree when you do not provide a
|
||||
source tree path. This directory contains a folder for each
|
||||
set of source files matched to a corresponding recipe.
|
||||
</literallayout>
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section id='devtool-adding-a-new-recipe-to-the-workspace'>
|
||||
<title>Adding a New Recipe to the Workspace Layer</title>
|
||||
|
||||
<para>
|
||||
Use the <filename>devtool add</filename> command to add a new recipe
|
||||
to the workspace layer.
|
||||
The recipe you add should not exist -
|
||||
<filename>devtool</filename> creates it for you.
|
||||
The source files the recipe uses should exist in an external
|
||||
area.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The following example creates and adds a new recipe named
|
||||
<filename>jackson</filename> to a workspace layer the tool creates.
|
||||
The source code built by the recipes resides in
|
||||
<filename>/home/<replaceable>user</replaceable>/sources/jackson</filename>:
|
||||
<literallayout class='monospaced'>
|
||||
$ devtool add jackson /home/<replaceable>user</replaceable>/sources/jackson
|
||||
</literallayout>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
If you add a recipe and the workspace layer does not exist,
|
||||
the command creates the layer and populates it as
|
||||
described in
|
||||
"<link linkend='devtool-the-workspace-layer-structure'>The Workspace Layer Structure</link>"
|
||||
section.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Running <filename>devtool add</filename> when the
|
||||
workspace layer exists causes the tool to add the recipe,
|
||||
append files, and source files into the existing workspace layer.
|
||||
The <filename>.bbappend</filename> file is created to point
|
||||
to the external source tree.
|
||||
<note>
|
||||
If your recipe has runtime dependencies defined, you must be sure
|
||||
that these packages exist on the target hardware before attempting
|
||||
to run your application.
|
||||
If dependent packages (e.g. libraries) do not exist on the target,
|
||||
your application, when run, will fail to find those functions.
|
||||
For more information, see the
|
||||
"<link linkend='devtool-deploying-your-software-on-the-target-machine'>Deploying Your Software on the Target Machine</link>"
|
||||
section.
|
||||
</note>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
By default, <filename>devtool add</filename> uses the latest
|
||||
revision (i.e. master) when unpacking files from a remote URI.
|
||||
In some cases, you might want to specify a source revision by
|
||||
branch, tag, or commit hash. You can specify these options when
|
||||
using the <filename>devtool add</filename> command:
|
||||
<itemizedlist>
|
||||
<listitem><para>
|
||||
To specify a source branch, use the
|
||||
<filename>--srcbranch</filename> option:
|
||||
<literallayout class='monospaced'>
|
||||
$ devtool add --srcbranch &DISTRO_NAME_NO_CAP; jackson /home/<replaceable>user</replaceable>/sources/jackson
|
||||
</literallayout>
|
||||
In the previous example, you are checking out the
|
||||
&DISTRO_NAME_NO_CAP; branch.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
To specify a specific tag or commit hash, use the
|
||||
<filename>--srcrev</filename> option:
|
||||
<literallayout class='monospaced'>
|
||||
$ devtool add --srcrev &DISTRO_REL_TAG; jackson /home/<replaceable>user</replaceable>/sources/jackson
|
||||
$ devtool add --srcrev <replaceable>some_commit_hash</replaceable> /home/<replaceable>user</replaceable>/sources/jackson
|
||||
</literallayout>
|
||||
The previous examples check out the &DISTRO_REL_TAG; tag
|
||||
and the commit associated with the
|
||||
<replaceable>some_commit_hash</replaceable> hash.
|
||||
</para></listitem>
|
||||
</itemizedlist>
|
||||
<note>
|
||||
If you prefer to use the latest revision every time the recipe is
|
||||
built, use the options <filename>--autorev</filename>
|
||||
or <filename>-a</filename>.
|
||||
</note>
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section id='devtool-extracting-the-source-for-an-existing-recipe'>
|
||||
<title>Extracting the Source for an Existing Recipe</title>
|
||||
|
||||
<para>
|
||||
Use the <filename>devtool extract</filename> command to
|
||||
extract the source for an existing recipe.
|
||||
When you use this command, you must supply the root name
|
||||
of the recipe (i.e. no version, paths, or extensions), and
|
||||
you must supply the directory to which you want the source
|
||||
extracted.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Additional command options let you control the name of a
|
||||
development branch into which you can checkout the source
|
||||
and whether or not to keep a temporary directory, which is
|
||||
useful for debugging.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section id='devtool-synchronizing-a-recipes-extracted-source-tree'>
|
||||
<title>Synchronizing a Recipe's Extracted Source Tree</title>
|
||||
|
||||
<para>
|
||||
Use the <filename>devtool sync</filename> command to
|
||||
synchronize a previously extracted source tree for an
|
||||
existing recipe.
|
||||
When you use this command, you must supply the root name
|
||||
of the recipe (i.e. no version, paths, or extensions), and
|
||||
you must supply the directory to which you want the source
|
||||
extracted.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Additional command options let you control the name of a
|
||||
development branch into which you can checkout the source
|
||||
and whether or not to keep a temporary directory, which is
|
||||
useful for debugging.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section id='devtool-modifying-a-recipe'>
|
||||
<title>Modifying an Existing Recipe</title>
|
||||
|
||||
<para>
|
||||
Use the <filename>devtool modify</filename> command to begin
|
||||
modifying the source of an existing recipe.
|
||||
This command is very similar to the
|
||||
<link linkend='devtool-adding-a-new-recipe-to-the-workspace'><filename>add</filename></link>
|
||||
command except that it does not physically create the
|
||||
recipe in the workspace layer because the recipe already
|
||||
exists in an another layer.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The <filename>devtool modify</filename> command extracts the
|
||||
source for a recipe, sets it up as a Git repository if the
|
||||
source had not already been fetched from Git, checks out a
|
||||
branch for development, and applies any patches from the recipe
|
||||
as commits on top.
|
||||
You can use the following command to checkout the source
|
||||
files:
|
||||
<literallayout class='monospaced'>
|
||||
$ devtool modify <replaceable>recipe</replaceable>
|
||||
</literallayout>
|
||||
Using the above command form, <filename>devtool</filename> uses
|
||||
the existing recipe's
|
||||
<link linkend='var-SRC_URI'><filename>SRC_URI</filename></link>
|
||||
statement to locate the upstream source, extracts the source
|
||||
into the default sources location in the workspace.
|
||||
The default development branch used is "devtool".
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section id='devtool-edit-an-existing-recipe'>
|
||||
<title>Edit an Existing Recipe</title>
|
||||
|
||||
<para>
|
||||
Use the <filename>devtool edit-recipe</filename> command
|
||||
to run the default editor, which is identified using the
|
||||
<filename>EDITOR</filename> variable, on the specified recipe.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
When you use the <filename>devtool edit-recipe</filename>
|
||||
command, you must supply the root name of the recipe
|
||||
(i.e. no version, paths, or extensions).
|
||||
Also, the recipe file itself must reside in the workspace
|
||||
as a result of the <filename>devtool add</filename> or
|
||||
<filename>devtool upgrade</filename> commands.
|
||||
However, you can override that requirement by using the
|
||||
"-a" or "--any-recipe" option.
|
||||
Using either of these options allows you to edit any recipe
|
||||
regardless of its location.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section id='devtool-updating-a-recipe'>
|
||||
<title>Updating a Recipe</title>
|
||||
|
||||
<para>
|
||||
Use the <filename>devtool update-recipe</filename> command to
|
||||
update your recipe with patches that reflect changes you make
|
||||
to the source files.
|
||||
For example, if you know you are going to work on some
|
||||
code, you could first use the
|
||||
<link linkend='devtool-modifying-a-recipe'><filename>devtool modify</filename></link>
|
||||
command to extract the code and set up the workspace.
|
||||
After which, you could modify, compile, and test the code.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
When you are satisfied with the results and you have committed
|
||||
your changes to the Git repository, you can then
|
||||
run the <filename>devtool update-recipe</filename> to create the
|
||||
patches and update the recipe:
|
||||
<literallayout class='monospaced'>
|
||||
$ devtool update-recipe <replaceable>recipe</replaceable>
|
||||
</literallayout>
|
||||
If you run the <filename>devtool update-recipe</filename>
|
||||
without committing your changes, the command ignores the
|
||||
changes.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Often, you might want to apply customizations made to your
|
||||
software in your own layer rather than apply them to the
|
||||
original recipe.
|
||||
If so, you can use the
|
||||
<filename>-a</filename> or <filename>--append</filename>
|
||||
option with the <filename>devtool update-recipe</filename>
|
||||
command.
|
||||
These options allow you to specify the layer into which to
|
||||
write an append file:
|
||||
<literallayout class='monospaced'>
|
||||
$ devtool update-recipe <replaceable>recipe</replaceable> -a <replaceable>base-layer-directory</replaceable>
|
||||
</literallayout>
|
||||
The <filename>*.bbappend</filename> file is created at the
|
||||
appropriate path within the specified layer directory, which
|
||||
may or may not be in your <filename>bblayers.conf</filename>
|
||||
file.
|
||||
If an append file already exists, the command updates it
|
||||
appropriately.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section id='devtool-checking-on-the-upgrade-status-of-a-recipe'>
|
||||
<title>Checking on the Upgrade Status of a Recipe</title>
|
||||
|
||||
<para>
|
||||
Upstream recipes change over time.
|
||||
Consequently, you might find that you need to determine if you
|
||||
can upgrade a recipe to a newer version.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
To check on the upgrade status of a recipe, use the
|
||||
<filename>devtool check-upgrade-status</filename> command.
|
||||
The command displays a table of your current recipe versions,
|
||||
the latest upstream versions, the email address of the recipe's
|
||||
maintainer, and any additional information such as commit hash
|
||||
strings and reasons you might not be able to upgrade a particular
|
||||
recipe.
|
||||
<note><title>NOTES:</title>
|
||||
<itemizedlist>
|
||||
<listitem><para>
|
||||
For the <filename>oe-core</filename> layer, recipe
|
||||
maintainers come from the
|
||||
<ulink url='http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/meta/conf/distro/include/maintainers.inc'><filename>maintainers.inc</filename></ulink>
|
||||
file.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
If the recipe is using the
|
||||
<ulink url='&YOCTO_DOCS_BB_URL;#git-fetcher'>Git fetcher</ulink>
|
||||
rather than a tarball, the commit hash points to the
|
||||
commit that matches the recipe's latest version tag.
|
||||
</para></listitem>
|
||||
</itemizedlist>
|
||||
</note>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
As with all <filename>devtool</filename> commands, you can get
|
||||
help on the individual command:
|
||||
<literallayout class='monospaced'>
|
||||
$ devtool check-upgrade-status -h
|
||||
NOTE: Starting bitbake server...
|
||||
usage: devtool check-upgrade-status [-h] [--all] [recipe [recipe ...]]
|
||||
|
||||
Prints a table of recipes together with versions currently provided by
|
||||
recipes, and latest upstream versions, when there is a later version available
|
||||
|
||||
arguments:
|
||||
recipe Name of the recipe to report (omit to report upgrade info for
|
||||
all recipes)
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
--all, -a Show all recipes, not just recipes needing upgrade
|
||||
</literallayout>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Unless you provide a specific recipe name on the command line,
|
||||
the command checks all recipes in all configured layers.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Following is a partial example table that reports on all the
|
||||
recipes.
|
||||
Notice the reported reason for not upgrading the
|
||||
<filename>base-passwd</filename> recipe.
|
||||
In this example, while a new version is available upstream,
|
||||
you do not want to use it because the dependency on
|
||||
<filename>cdebconf</filename> is not easily satisfied.
|
||||
<note>
|
||||
When a reason for not upgrading displays, the reason is
|
||||
usually written into the recipe using the
|
||||
<filename>RECIPE_NO_UPDATE_REASON</filename> variable.
|
||||
See the
|
||||
<ulink url='http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/meta/recipes-core/base-passwd/base-passwd_3.5.29.bb'><filename>base-passwd.bb</filename></ulink>
|
||||
recipe for an example.
|
||||
</note>
|
||||
<literallayout class='monospaced'>
|
||||
$ devtool check-upgrade-status
|
||||
...
|
||||
NOTE: acpid 2.0.30 2.0.31
|
||||
Ross Burton <ross.burton@intel.com>
|
||||
NOTE: u-boot-fw-utils 2018.11 2019.01
|
||||
Marek Vasut <marek.vasut@gmail.com>
|
||||
d3689267f92c5956e09cc7d1baa4700141662bff
|
||||
NOTE: u-boot-tools 2018.11 2019.01
|
||||
Marek Vasut <marek.vasut@gmail.com>
|
||||
d3689267f92c5956e09cc7d1baa4700141662bff
|
||||
.
|
||||
.
|
||||
.
|
||||
NOTE: base-passwd 3.5.29 3.5.45
|
||||
Anuj Mittal <anuj.mittal@intel.com> cannot be updated due to: Version
|
||||
3.5.38 requires cdebconf for update-passwd utility
|
||||
NOTE: busybox 1.29.2 1.30.0
|
||||
Andrej Valek <andrej.valek@siemens.com>
|
||||
NOTE: dbus-test 1.12.10 1.12.12
|
||||
Chen Qi <Qi.Chen@windriver.com>
|
||||
</literallayout>
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section id='devtool-upgrading-a-recipe'>
|
||||
<title>Upgrading a Recipe</title>
|
||||
|
||||
<para>
|
||||
As software matures, upstream recipes are upgraded to newer
|
||||
versions.
|
||||
As a developer, you need to keep your local recipes up-to-date
|
||||
with the upstream version releases.
|
||||
Several methods exist by which you can upgrade recipes.
|
||||
You can read about them in the
|
||||
"<ulink url='&YOCTO_DOCS_DEV_URL;#gs-upgrading-recipes'>Upgrading Recipes</ulink>"
|
||||
section of the Yocto Project Development Tasks Manual.
|
||||
This section overviews the <filename>devtool upgrade</filename>
|
||||
command.
|
||||
<note>
|
||||
Before you upgrade a recipe, you can check on its upgrade
|
||||
status.
|
||||
See the
|
||||
"<link linkend='devtool-checking-on-the-upgrade-status-of-a-recipe'>Checking on the Upgrade Status of a Recipe</link>"
|
||||
for more information.
|
||||
</note>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The <filename>devtool upgrade</filename> command
|
||||
upgrades an existing recipe to a more recent version of the
|
||||
recipe upstream.
|
||||
The command puts the upgraded recipe file along with any associated
|
||||
files into a "workspace" and, if necessary, extracts the source
|
||||
tree to a specified location.
|
||||
During the upgrade, patches associated with the recipe are
|
||||
rebased or added as needed.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
When you use the <filename>devtool upgrade</filename> command,
|
||||
you must supply the root name of the recipe (i.e. no version,
|
||||
paths, or extensions), and you must supply the directory
|
||||
to which you want the source extracted.
|
||||
Additional command options let you control things such as
|
||||
the version number to which you want to upgrade (i.e. the
|
||||
<link linkend='var-PV'><filename>PV</filename></link>),
|
||||
the source revision to which you want to upgrade (i.e. the
|
||||
<link linkend='var-SRCREV'><filename>SRCREV</filename></link>),
|
||||
whether or not to apply patches, and so forth.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
You can read more on the <filename>devtool upgrade</filename>
|
||||
workflow in the
|
||||
"<ulink url='&YOCTO_DOCS_SDK_URL;#sdk-devtool-use-devtool-upgrade-to-create-a-version-of-the-recipe-that-supports-a-newer-version-of-the-software'>Use <filename>devtool upgrade</filename> to Create a Version of the Recipe that Supports a Newer Version of the Software</ulink>"
|
||||
section in the Yocto Project Application Development and the
|
||||
Extensible Software Development Kit (eSDK) manual.
|
||||
You can also see an example of how to use
|
||||
<filename>devtool upgrade</filename> in the
|
||||
"<ulink url='&YOCTO_DOCS_DEV_URL;#gs-using-devtool-upgrade'>Using <filename>devtool upgrade</filename></ulink>"
|
||||
section in the Yocto Project Development Tasks Manual.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section id='devtool-resetting-a-recipe'>
|
||||
<title>Resetting a Recipe</title>
|
||||
|
||||
<para>
|
||||
Use the <filename>devtool reset</filename> command to remove a
|
||||
recipe and its configuration (e.g. the corresponding
|
||||
<filename>.bbappend</filename> file) from the workspace layer.
|
||||
Realize that this command deletes the recipe and the
|
||||
append file.
|
||||
The command does not physically move them for you.
|
||||
Consequently, you must be sure to physically relocate your
|
||||
updated recipe and the append file outside of the workspace
|
||||
layer before running the <filename>devtool reset</filename>
|
||||
command.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
If the <filename>devtool reset</filename> command detects that
|
||||
the recipe or the append files have been modified, the
|
||||
command preserves the modified files in a separate "attic"
|
||||
subdirectory under the workspace layer.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Here is an example that resets the workspace directory that
|
||||
contains the <filename>mtr</filename> recipe:
|
||||
<literallayout class='monospaced'>
|
||||
$ devtool reset mtr
|
||||
NOTE: Cleaning sysroot for recipe mtr...
|
||||
NOTE: Leaving source tree /home/scottrif/poky/build/workspace/sources/mtr as-is; if you no
|
||||
longer need it then please delete it manually
|
||||
$
|
||||
</literallayout>
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section id='devtool-building-your-recipe'>
|
||||
<title>Building Your Recipe</title>
|
||||
|
||||
<para>
|
||||
Use the <filename>devtool build</filename> command to build your
|
||||
recipe.
|
||||
The <filename>devtool build</filename> command is equivalent to
|
||||
the <filename>bitbake -c populate_sysroot</filename> command.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
When you use the <filename>devtool build</filename> command,
|
||||
you must supply the root name of the recipe (i.e. do not provide
|
||||
versions, paths, or extensions).
|
||||
You can use either the "-s" or the "--disable-parallel-make"
|
||||
options to disable parallel makes during the build.
|
||||
Here is an example:
|
||||
<literallayout class='monospaced'>
|
||||
$ devtool build <replaceable>recipe</replaceable>
|
||||
</literallayout>
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section id='devtool-building-your-image'>
|
||||
<title>Building Your Image</title>
|
||||
|
||||
<para>
|
||||
Use the <filename>devtool build-image</filename> command
|
||||
to build an image, extending it to include packages from
|
||||
recipes in the workspace.
|
||||
Using this command is useful when you want an image that
|
||||
ready for immediate deployment onto a device for testing.
|
||||
For proper integration into a final image, you need to
|
||||
edit your custom image recipe appropriately.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
When you use the <filename>devtool build-image</filename>
|
||||
command, you must supply the name of the image.
|
||||
This command has no command line options:
|
||||
<literallayout class='monospaced'>
|
||||
$ devtool build-image <replaceable>image</replaceable>
|
||||
</literallayout>
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section id='devtool-deploying-your-software-on-the-target-machine'>
|
||||
<title>Deploying Your Software on the Target Machine</title>
|
||||
|
||||
<para>
|
||||
Use the <filename>devtool deploy-target</filename> command to
|
||||
deploy the recipe's build output to the live target machine:
|
||||
<literallayout class='monospaced'>
|
||||
$ devtool deploy-target <replaceable>recipe</replaceable> <replaceable>target</replaceable>
|
||||
</literallayout>
|
||||
The <replaceable>target</replaceable> is the address of the
|
||||
target machine, which must be running an SSH server (i.e.
|
||||
<filename>user@hostname[:destdir]</filename>).
|
||||
</para>
|
||||
|
||||
<para>
|
||||
This command deploys all files installed during the
|
||||
<link linkend='ref-tasks-install'><filename>do_install</filename></link>
|
||||
task.
|
||||
Furthermore, you do not need to have package management enabled
|
||||
within the target machine.
|
||||
If you do, the package manager is bypassed.
|
||||
<note><title>Notes</title>
|
||||
<para>
|
||||
The <filename>deploy-target</filename>
|
||||
functionality is for development only.
|
||||
You should never use it to update an image that will be
|
||||
used in production.
|
||||
</para>
|
||||
</note>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Some conditions exist that could prevent a deployed application
|
||||
from behaving as expected.
|
||||
When both of the following conditions exist, your application has
|
||||
the potential to not behave correctly when run on the target:
|
||||
<itemizedlist>
|
||||
<listitem><para>
|
||||
You are deploying a new application to the target and
|
||||
the recipe you used to build the application had
|
||||
correctly defined runtime dependencies.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
The target does not physically have the packages on which
|
||||
the application depends installed.
|
||||
</para></listitem>
|
||||
</itemizedlist>
|
||||
If both of these conditions exist, your application will not
|
||||
behave as expected.
|
||||
The reason for this misbehavior is because the
|
||||
<filename>devtool deploy-target</filename> command does not deploy
|
||||
the packages (e.g. libraries) on which your new application
|
||||
depends.
|
||||
The assumption is that the packages are already on the target.
|
||||
Consequently, when a runtime call is made in the application
|
||||
for a dependent function (e.g. a library call), the function
|
||||
cannot be found.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
To be sure you have all the dependencies local to the target, you
|
||||
need to be sure that the packages are pre-deployed (installed)
|
||||
on the target before attempting to run your application.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section id='devtool-removing-your-software-from-the-target-machine'>
|
||||
<title>Removing Your Software from the Target Machine</title>
|
||||
|
||||
<para>
|
||||
Use the <filename>devtool undeploy-target</filename> command to
|
||||
remove deployed build output from the target machine.
|
||||
For the <filename>devtool undeploy-target</filename> command to
|
||||
work, you must have previously used the
|
||||
<link linkend='devtool-deploying-your-software-on-the-target-machine'><filename>devtool deploy-target</filename></link>
|
||||
command.
|
||||
<literallayout class='monospaced'>
|
||||
$ devtool undeploy-target <replaceable>recipe</replaceable> <replaceable>target</replaceable>
|
||||
</literallayout>
|
||||
The <replaceable>target</replaceable> is the address of the
|
||||
target machine, which must be running an SSH server (i.e.
|
||||
<filename>user@hostname</filename>).
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section id='devtool-creating-the-workspace'>
|
||||
<title>Creating the Workspace Layer in an Alternative Location</title>
|
||||
|
||||
<para>
|
||||
Use the <filename>devtool create-workspace</filename> command to
|
||||
create a new workspace layer in your
|
||||
<link linkend='build-directory'>Build Directory</link>.
|
||||
When you create a new workspace layer, it is populated with the
|
||||
<filename>README</filename> file and the
|
||||
<filename>conf</filename> directory only.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The following example creates a new workspace layer in your
|
||||
current working and by default names the workspace layer
|
||||
"workspace":
|
||||
<literallayout class='monospaced'>
|
||||
$ devtool create-workspace
|
||||
</literallayout>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
You can create a workspace layer anywhere by supplying
|
||||
a pathname with the command.
|
||||
The following command creates a new workspace layer named
|
||||
"new-workspace":
|
||||
<literallayout class='monospaced'>
|
||||
$ devtool create-workspace /home/scottrif/new-workspace
|
||||
</literallayout>
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section id='devtool-get-the-status-of-the-recipes-in-your-workspace'>
|
||||
<title>Get the Status of the Recipes in Your Workspace</title>
|
||||
|
||||
<para>
|
||||
Use the <filename>devtool status</filename> command to
|
||||
list the recipes currently in your workspace.
|
||||
Information includes the paths to their respective
|
||||
external source trees.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The <filename>devtool status</filename> command has no
|
||||
command-line options:
|
||||
<literallayout class='monospaced'>
|
||||
$ devtool status
|
||||
</literallayout>
|
||||
Following is sample output after using
|
||||
<link linkend='devtool-adding-a-new-recipe-to-the-workspace'><filename>devtool add</filename></link>
|
||||
to create and add the <filename>mtr_0.86.bb</filename> recipe
|
||||
to the <filename>workspace</filename> directory:
|
||||
<literallayout class='monospaced'>
|
||||
$ devtool status
|
||||
mtr: /home/scottrif/poky/build/workspace/sources/mtr (/home/scottrif/poky/build/workspace/recipes/mtr/mtr_0.86.bb)
|
||||
$
|
||||
</literallayout>
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section id='devtool-search-for-available-target-recipes'>
|
||||
<title>Search for Available Target Recipes</title>
|
||||
|
||||
<para>
|
||||
Use the <filename>devtool search</filename> command to
|
||||
search for available target recipes.
|
||||
The command matches the recipe name, package name,
|
||||
description, and installed files.
|
||||
The command displays the recipe name as a result of a
|
||||
match.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
When you use the <filename>devtool search</filename> command,
|
||||
you must supply a <replaceable>keyword</replaceable>.
|
||||
The command uses the <replaceable>keyword</replaceable> when
|
||||
searching for a match.
|
||||
</para>
|
||||
</section>
|
||||
</chapter>
|
||||
<!--
|
||||
vim: expandtab tw=80 ts=4
|
||||
-->
|
||||
@@ -1,461 +0,0 @@
|
||||
<!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; ] >
|
||||
<!--SPDX-License-Identifier: CC-BY-2.0-UK-->
|
||||
|
||||
<chapter id='ref-features'>
|
||||
<title>Features</title>
|
||||
|
||||
<para>
|
||||
This chapter provides a reference of shipped machine and distro features
|
||||
you can include as part of your image, a reference on image features you can
|
||||
select, and a reference on feature backfilling.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Features provide a mechanism for working out which packages
|
||||
should be included in the generated images.
|
||||
Distributions can select which features they want to support through the
|
||||
<filename><link linkend='var-DISTRO_FEATURES'>DISTRO_FEATURES</link></filename>
|
||||
variable, which is set or appended to in a distribution's configuration file such as
|
||||
<filename>poky.conf</filename>,
|
||||
<filename>poky-tiny.conf</filename>,
|
||||
<filename>poky-lsb.conf</filename> and so forth.
|
||||
Machine features are set in the
|
||||
<filename><link linkend='var-MACHINE_FEATURES'>MACHINE_FEATURES</link></filename>
|
||||
variable, which is set in the machine configuration file and
|
||||
specifies the hardware features for a given machine.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
These two variables combine to work out which kernel modules,
|
||||
utilities, and other packages to include.
|
||||
A given distribution can support a selected subset of features so some machine features might not
|
||||
be included if the distribution itself does not support them.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
One method you can use to determine which recipes are checking to see if a
|
||||
particular feature is contained or not is to <filename>grep</filename> through
|
||||
the <link linkend='metadata'>Metadata</link>
|
||||
for the feature.
|
||||
Here is an example that discovers the recipes whose build is potentially
|
||||
changed based on a given feature:
|
||||
<literallayout class='monospaced'>
|
||||
$ cd poky
|
||||
$ git grep 'contains.*MACHINE_FEATURES.*<replaceable>feature</replaceable>'
|
||||
</literallayout>
|
||||
</para>
|
||||
|
||||
<section id='ref-features-machine'>
|
||||
<title>Machine Features</title>
|
||||
|
||||
<para>
|
||||
The items below are features you can use with
|
||||
<link linkend='var-MACHINE_FEATURES'><filename>MACHINE_FEATURES</filename></link>.
|
||||
Features do not have a one-to-one correspondence to packages, and they can
|
||||
go beyond simply controlling the installation of a package or packages.
|
||||
Sometimes a feature can influence how certain recipes are built.
|
||||
For example, a feature might determine whether a particular configure option
|
||||
is specified within the
|
||||
<link linkend='ref-tasks-configure'><filename>do_configure</filename></link>
|
||||
task for a particular recipe.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
This feature list only represents features as shipped with the Yocto Project metadata:
|
||||
<itemizedlist>
|
||||
<listitem><para><emphasis>acpi:</emphasis> Hardware has ACPI (x86/x86_64 only)
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>alsa:</emphasis> Hardware has ALSA audio drivers
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>apm:</emphasis> Hardware uses APM (or APM emulation)
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>bluetooth:</emphasis> Hardware has integrated BT
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>efi:</emphasis> Support for booting through EFI
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>ext2:</emphasis> Hardware HDD or Microdrive
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>keyboard:</emphasis> Hardware has a keyboard
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>pcbios:</emphasis> Support for booting through BIOS
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>pci:</emphasis> Hardware has a PCI bus
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>pcmcia:</emphasis> Hardware has PCMCIA or CompactFlash sockets
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>phone:</emphasis> Mobile phone (voice) support
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>qvga:</emphasis> Machine has a QVGA (320x240) display
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>rtc:</emphasis> Machine has a Real-Time Clock
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>screen:</emphasis> Hardware has a screen
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>serial:</emphasis> Hardware has serial support (usually RS232)
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>touchscreen:</emphasis> Hardware has a touchscreen
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>usbgadget:</emphasis> Hardware is USB gadget device capable
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>usbhost:</emphasis> Hardware is USB Host capable
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>vfat:</emphasis> FAT file system support
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>wifi:</emphasis> Hardware has integrated WiFi
|
||||
</para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section id='ref-features-distro'>
|
||||
<title>Distro Features</title>
|
||||
|
||||
<para>
|
||||
The items below are features you can use with
|
||||
<link linkend='var-DISTRO_FEATURES'><filename>DISTRO_FEATURES</filename></link>
|
||||
to enable features across your distribution.
|
||||
Features do not have a one-to-one correspondence to packages,
|
||||
and they can go beyond simply controlling the installation of a
|
||||
package or packages.
|
||||
In most cases, the presence or absence of a feature translates to
|
||||
the appropriate option supplied to the configure script during the
|
||||
<link linkend='ref-tasks-configure'><filename>do_configure</filename></link>
|
||||
task for the recipes that optionally
|
||||
support the feature.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Some distro features are also machine features.
|
||||
These select features make sense to be controlled both at
|
||||
the machine and distribution configuration level.
|
||||
See the
|
||||
<link linkend='var-COMBINED_FEATURES'><filename>COMBINED_FEATURES</filename></link>
|
||||
variable for more information.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
This list only represents features as shipped with the Yocto Project metadata:
|
||||
<itemizedlist>
|
||||
<listitem><para><emphasis>alsa:</emphasis> Include ALSA support
|
||||
(OSS compatibility kernel modules installed if available).
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>api-documentation:</emphasis>
|
||||
Enables generation of API documentation during recipe
|
||||
builds.
|
||||
The resulting documentation is added to SDK tarballs
|
||||
when the
|
||||
<filename>bitbake -c populate_sdk</filename> command
|
||||
is used.
|
||||
See the
|
||||
"<ulink url='&YOCTO_DOCS_SDK_URL;#adding-api-documentation-to-the-standard-sdk'>Adding API Documentation to the Standard SDK</ulink>"
|
||||
section in the Yocto Project Application Development and
|
||||
the Extensible Software Development Kit (eSDK) manual.
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>bluetooth:</emphasis> Include
|
||||
bluetooth support (integrated BT only).</para></listitem>
|
||||
<listitem><para><emphasis>cramfs:</emphasis> Include CramFS
|
||||
support.</para></listitem>
|
||||
<listitem><para><emphasis>directfb:</emphasis>
|
||||
Include DirectFB support.
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>ext2:</emphasis> Include tools for
|
||||
supporting for devices with internal HDD/Microdrive for
|
||||
storing files (instead of Flash only devices).
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>ipsec:</emphasis> Include IPSec
|
||||
support.</para></listitem>
|
||||
<listitem><para><emphasis>ipv6:</emphasis> Include IPv6 support.
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>keyboard:</emphasis> Include keyboard
|
||||
support (e.g. keymaps will be loaded during boot).
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>ldconfig:</emphasis>
|
||||
Include support for ldconfig and
|
||||
<filename>ld.so.conf</filename> on the target.
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>nfs:</emphasis> Include NFS client
|
||||
support (for mounting NFS exports on device).
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>opengl:</emphasis>
|
||||
Include the Open Graphics Library, which is a
|
||||
cross-language, multi-platform application programming
|
||||
interface used for rendering two and three-dimensional
|
||||
graphics.</para></listitem>
|
||||
<listitem><para><emphasis>pci:</emphasis> Include PCI bus
|
||||
support.</para></listitem>
|
||||
<listitem><para><emphasis>pcmcia:</emphasis> Include
|
||||
PCMCIA/CompactFlash support.</para></listitem>
|
||||
<listitem><para><emphasis>ppp:</emphasis> Include PPP dialup
|
||||
support.</para></listitem>
|
||||
<listitem><para><emphasis>ptest:</emphasis> Enables building
|
||||
the package tests where supported by individual recipes.
|
||||
For more information on package tests, see the
|
||||
"<ulink url='&YOCTO_DOCS_DEV_URL;#testing-packages-with-ptest'>Testing Packages With ptest</ulink>"
|
||||
section in the Yocto Project Development Tasks Manual.
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>smbfs:</emphasis> Include SMB networks
|
||||
client support (for mounting Samba/Microsoft Windows shares
|
||||
on device).</para></listitem>
|
||||
<listitem><para><emphasis>systemd:</emphasis> Include support
|
||||
for this <filename>init</filename> manager, which is a full
|
||||
replacement of for <filename>init</filename> with parallel
|
||||
starting of services, reduced shell overhead, and other
|
||||
features.
|
||||
This <filename>init</filename> manager is used by many
|
||||
distributions.</para></listitem>
|
||||
<listitem><para><emphasis>usbgadget:</emphasis> Include USB
|
||||
Gadget Device support (for USB networking/serial/storage).
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>usbhost:</emphasis> Include USB Host
|
||||
support (allows to connect external keyboard, mouse,
|
||||
storage, network etc).</para></listitem>
|
||||
<listitem><para><emphasis>usrmerge:</emphasis> Merges the
|
||||
<filename>/bin</filename>, <filename>/sbin</filename>,
|
||||
<filename>/lib</filename>, and <filename>/lib64</filename>
|
||||
directories into their respective counterparts in the
|
||||
<filename>/usr</filename> directory to provide better package
|
||||
and application compatibility.</para></listitem>
|
||||
<listitem><para><emphasis>wayland:</emphasis> Include the
|
||||
Wayland display server protocol and the library that
|
||||
supports it.</para></listitem>
|
||||
<listitem><para><emphasis>wifi:</emphasis> Include WiFi support
|
||||
(integrated only).</para></listitem>
|
||||
<listitem><para><emphasis>x11:</emphasis> Include the X server
|
||||
and libraries.</para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section id='ref-features-image'>
|
||||
<title>Image Features</title>
|
||||
|
||||
<para>
|
||||
The contents of images generated by the OpenEmbedded build system
|
||||
can be controlled by the
|
||||
<link linkend='var-IMAGE_FEATURES'><filename>IMAGE_FEATURES</filename></link>
|
||||
and
|
||||
<link linkend='var-EXTRA_IMAGE_FEATURES'><filename>EXTRA_IMAGE_FEATURES</filename></link>
|
||||
variables that you typically configure in your image recipes.
|
||||
Through these variables, you can add several different
|
||||
predefined packages such as development utilities or packages with
|
||||
debug information needed to investigate application problems or
|
||||
profile applications.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The following image features are available for all images:
|
||||
<itemizedlist>
|
||||
<listitem><para><emphasis>allow-empty-password:</emphasis>
|
||||
Allows Dropbear and OpenSSH to accept root logins
|
||||
and logins from accounts having an empty password string.
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>dbg-pkgs:</emphasis>
|
||||
Installs debug symbol packages for all packages installed
|
||||
in a given image.
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>debug-tweaks:</emphasis>
|
||||
Makes an image suitable for development (e.g.
|
||||
allows root logins without passwords and enables
|
||||
post-installation logging).
|
||||
See the 'allow-empty-password', 'empty-root-password',
|
||||
and 'post-install-logging' features in this list for
|
||||
additional information.
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>dev-pkgs:</emphasis>
|
||||
Installs development packages (headers and extra library
|
||||
links) for all packages installed in a given image.
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>doc-pkgs:</emphasis> Installs
|
||||
documentation packages for all packages installed in a
|
||||
given image.
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>empty-root-password:</emphasis>
|
||||
Sets the root password to an empty string, which allows
|
||||
logins with a blank password.
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>package-management:</emphasis>
|
||||
Installs package management tools and preserves the package
|
||||
manager database.
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>post-install-logging:</emphasis>
|
||||
Enables logging postinstall script runs to
|
||||
the <filename>/var/log/postinstall.log</filename> file
|
||||
on first boot of the image on the target system.
|
||||
<note>
|
||||
To make the <filename>/var/log</filename> directory
|
||||
on the target persistent, use the
|
||||
<link linkend='var-VOLATILE_LOG_DIR'><filename>VOLATILE_LOG_DIR</filename></link>
|
||||
variable by setting it to "no".
|
||||
</note>
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>ptest-pkgs:</emphasis>
|
||||
Installs ptest packages for all ptest-enabled recipes.
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>read-only-rootfs:</emphasis>
|
||||
Creates an image whose root filesystem is read-only.
|
||||
See the
|
||||
"<ulink url='&YOCTO_DOCS_DEV_URL;#creating-a-read-only-root-filesystem'>Creating a Read-Only Root Filesystem</ulink>"
|
||||
section in the Yocto Project Development Tasks Manual for
|
||||
more information.
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>splash:</emphasis>
|
||||
Enables showing a splash screen during boot.
|
||||
By default, this screen is provided by
|
||||
<filename>psplash</filename>, which does allow
|
||||
customization.
|
||||
If you prefer to use an alternative splash screen package,
|
||||
you can do so by setting the <filename>SPLASH</filename>
|
||||
variable to a different package name (or names) within the
|
||||
image recipe or at the distro configuration level.
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>staticdev-pkgs:</emphasis>
|
||||
Installs static development packages, which are
|
||||
static libraries (i.e. <filename>*.a</filename> files), for
|
||||
all packages installed in a given image.
|
||||
</para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Some image features are available only when you inherit the
|
||||
<link linkend='ref-classes-core-image'><filename>core-image</filename></link>
|
||||
class.
|
||||
The current list of these valid features is as follows:
|
||||
<itemizedlist>
|
||||
<listitem><para><emphasis>hwcodecs:</emphasis> Installs
|
||||
hardware acceleration codecs.
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>nfs-server:</emphasis>
|
||||
Installs an NFS server.
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>perf:</emphasis>
|
||||
Installs profiling tools such as
|
||||
<filename>perf</filename>, <filename>systemtap</filename>,
|
||||
and <filename>LTTng</filename>.
|
||||
For general information on user-space tools, see the
|
||||
<ulink url='&YOCTO_DOCS_SDK_URL;'>Yocto Project Application Development and the Extensible Software Development Kit (eSDK)</ulink>
|
||||
manual.
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>ssh-server-dropbear:</emphasis>
|
||||
Installs the Dropbear minimal SSH server.
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>ssh-server-openssh:</emphasis>
|
||||
Installs the OpenSSH SSH server, which is more
|
||||
full-featured than Dropbear.
|
||||
Note that if both the OpenSSH SSH server and the Dropbear
|
||||
minimal SSH server are present in
|
||||
<filename>IMAGE_FEATURES</filename>, then OpenSSH will take
|
||||
precedence and Dropbear will not be installed.
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>tools-debug:</emphasis>
|
||||
Installs debugging tools such as
|
||||
<filename>strace</filename> and <filename>gdb</filename>.
|
||||
For information on GDB, see the
|
||||
"<ulink url='&YOCTO_DOCS_DEV_URL;#platdev-gdb-remotedebug'>Debugging With the GNU Project Debugger (GDB) Remotely</ulink>"
|
||||
section in the Yocto Project Development Tasks Manual.
|
||||
For information on tracing and profiling, see the
|
||||
<ulink url='&YOCTO_DOCS_PROF_URL;'>Yocto Project Profiling and Tracing Manual</ulink>.
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>tools-sdk:</emphasis>
|
||||
Installs a full SDK that runs on the device.
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>tools-testapps:</emphasis>
|
||||
Installs device testing tools (e.g. touchscreen debugging).
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>x11:</emphasis>
|
||||
Installs the X server.
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>x11-base:</emphasis>
|
||||
Installs the X server with a minimal environment.
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>x11-sato:</emphasis>
|
||||
Installs the OpenedHand Sato environment.
|
||||
</para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
</section>
|
||||
|
||||
<section id='ref-features-backfill'>
|
||||
<title>Feature Backfilling</title>
|
||||
|
||||
<para>
|
||||
Sometimes it is necessary in the OpenEmbedded build system to extend
|
||||
<link linkend='var-MACHINE_FEATURES'><filename>MACHINE_FEATURES</filename></link>
|
||||
or <link linkend='var-DISTRO_FEATURES'><filename>DISTRO_FEATURES</filename></link>
|
||||
to control functionality that was previously enabled and not able
|
||||
to be disabled.
|
||||
For these cases, we need to add an
|
||||
additional feature item to appear in one of these variables,
|
||||
but we do not want to force developers who have existing values
|
||||
of the variables in their configuration to add the new feature
|
||||
in order to retain the same overall level of functionality.
|
||||
Thus, the OpenEmbedded build system has a mechanism to
|
||||
automatically "backfill" these added features into existing
|
||||
distro or machine configurations.
|
||||
You can see the list of features for which this is done by
|
||||
finding the
|
||||
<link linkend='var-DISTRO_FEATURES_BACKFILL'><filename>DISTRO_FEATURES_BACKFILL</filename></link>
|
||||
and <link linkend='var-MACHINE_FEATURES_BACKFILL'><filename>MACHINE_FEATURES_BACKFILL</filename></link>
|
||||
variables in the <filename>meta/conf/bitbake.conf</filename> file.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Because such features are backfilled by default into all
|
||||
configurations as described in the previous paragraph, developers
|
||||
who wish to disable the new features need to be able to selectively
|
||||
prevent the backfilling from occurring.
|
||||
They can do this by adding the undesired feature or features to the
|
||||
<link linkend='var-DISTRO_FEATURES_BACKFILL_CONSIDERED'><filename>DISTRO_FEATURES_BACKFILL_CONSIDERED</filename></link>
|
||||
or <link linkend='var-MACHINE_FEATURES_BACKFILL_CONSIDERED'><filename>MACHINE_FEATURES_BACKFILL_CONSIDERED</filename></link>
|
||||
variables for distro features and machine features respectively.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Here are two examples to help illustrate feature backfilling:
|
||||
<itemizedlist>
|
||||
<listitem><para><emphasis>The "pulseaudio" distro feature option</emphasis>:
|
||||
Previously, PulseAudio support was enabled within the Qt and
|
||||
GStreamer frameworks.
|
||||
Because of this, the feature is backfilled and thus
|
||||
enabled for all distros through the
|
||||
<filename>DISTRO_FEATURES_BACKFILL</filename>
|
||||
variable in the <filename>meta/conf/bitbake.conf</filename> file.
|
||||
However, your distro needs to disable the feature.
|
||||
You can disable the feature without affecting
|
||||
other existing distro configurations that need PulseAudio support
|
||||
by adding "pulseaudio" to
|
||||
<filename>DISTRO_FEATURES_BACKFILL_CONSIDERED</filename>
|
||||
in your distro's <filename>.conf</filename> file.
|
||||
Adding the feature to this variable when it also
|
||||
exists in the <filename>DISTRO_FEATURES_BACKFILL</filename>
|
||||
variable prevents the build system from adding the feature to
|
||||
your configuration's <filename>DISTRO_FEATURES</filename>, effectively disabling
|
||||
the feature for that particular distro.</para></listitem>
|
||||
<listitem><para><emphasis>The "rtc" machine feature option</emphasis>:
|
||||
Previously, real time clock (RTC) support was enabled for all
|
||||
target devices.
|
||||
Because of this, the feature is backfilled and thus enabled
|
||||
for all machines through the <filename>MACHINE_FEATURES_BACKFILL</filename>
|
||||
variable in the <filename>meta/conf/bitbake.conf</filename> file.
|
||||
However, your target device does not have this capability.
|
||||
You can disable RTC support for your device without
|
||||
affecting other machines that need RTC support
|
||||
by adding the feature to your machine's
|
||||
<filename>MACHINE_FEATURES_BACKFILL_CONSIDERED</filename>
|
||||
list in the machine's <filename>.conf</filename> file.
|
||||
Adding the feature to this variable when it also
|
||||
exists in the <filename>MACHINE_FEATURES_BACKFILL</filename>
|
||||
variable prevents the build system from adding the feature to
|
||||
your configuration's <filename>MACHINE_FEATURES</filename>, effectively
|
||||
disabling RTC support for that particular machine.</para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
</section>
|
||||
</chapter>
|
||||
|
||||
<!--
|
||||
vim: expandtab tw=80 ts=4 spell spelllang=en_gb
|
||||
-->
|
||||
@@ -1,170 +0,0 @@
|
||||
<!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; ] >
|
||||
<!--SPDX-License-Identifier: CC-BY-2.0-UK-->
|
||||
|
||||
<chapter id='ref-images'>
|
||||
<title>Images</title>
|
||||
|
||||
<para>
|
||||
The OpenEmbedded build system provides several example
|
||||
images to satisfy different needs.
|
||||
When you issue the <filename>bitbake</filename> command you provide a "top-level" recipe
|
||||
that essentially begins the build for the type of image you want.
|
||||
</para>
|
||||
|
||||
<note>
|
||||
Building an image without GNU General Public License Version 3 (GPLv3),
|
||||
GNU Lesser General Public License Version 3 (LGPLv3), and the
|
||||
GNU Affero General Public License Version 3 (AGPL-3.0) components
|
||||
is only supported for minimal and base images.
|
||||
Furthermore, if you are going to build an image using non-GPLv3 and
|
||||
similarly licensed components, you must make the following changes in
|
||||
the <filename>local.conf</filename> file before using the BitBake
|
||||
command to build the minimal or base image:
|
||||
<literallayout class='monospaced'>
|
||||
1. Comment out the EXTRA_IMAGE_FEATURES line
|
||||
2. Set INCOMPATIBLE_LICENSE = "GPL-3.0 LGPL-3.0 AGPL-3.0"
|
||||
</literallayout>
|
||||
</note>
|
||||
|
||||
<para>
|
||||
From within the <filename>poky</filename> Git repository, you can use
|
||||
the following command to display the list of directories within the
|
||||
<link linkend='source-directory'>Source Directory</link>
|
||||
that contain image recipe files:
|
||||
<literallayout class='monospaced'>
|
||||
$ ls meta*/recipes*/images/*.bb
|
||||
</literallayout>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Following is a list of supported recipes:
|
||||
<itemizedlist>
|
||||
<listitem><para>
|
||||
<filename>build-appliance-image</filename>:
|
||||
An example virtual machine that contains all the pieces
|
||||
required to run builds using the build system as well as the
|
||||
build system itself.
|
||||
You can boot and run the image using either the
|
||||
<ulink url='http://www.vmware.com/products/player/overview.html'>VMware Player</ulink>
|
||||
or
|
||||
<ulink url='http://www.vmware.com/products/workstation/overview.html'>VMware Workstation</ulink>.
|
||||
For more information on this image, see the
|
||||
<ulink url='&YOCTO_HOME_URL;/software-item/build-appliance/'>Build Appliance</ulink>
|
||||
page on the Yocto Project website.
|
||||
</para></listitem>
|
||||
<listitem><para><filename>core-image-base</filename>:
|
||||
A console-only image that fully supports the target device hardware.</para></listitem>
|
||||
<listitem><para><filename>core-image-clutter</filename>:
|
||||
An image with support for the Open GL-based toolkit Clutter, which enables development of
|
||||
rich and animated graphical user interfaces.</para></listitem>
|
||||
<listitem><para><filename>core-image-full-cmdline</filename>:
|
||||
A console-only image with more full-featured Linux system
|
||||
functionality installed.</para></listitem>
|
||||
<listitem><para><filename>core-image-lsb</filename>:
|
||||
An image that conforms to the Linux Standard Base (LSB)
|
||||
specification.
|
||||
This image requires a distribution configuration that
|
||||
enables LSB compliance (e.g. <filename>poky-lsb</filename>).
|
||||
If you build <filename>core-image-lsb</filename> without that
|
||||
configuration, the image will not be LSB-compliant.
|
||||
</para></listitem>
|
||||
<listitem><para><filename>core-image-lsb-dev</filename>:
|
||||
A <filename>core-image-lsb</filename> image that is suitable for development work
|
||||
using the host.
|
||||
The image includes headers and libraries you can use in a host development
|
||||
environment.
|
||||
This image requires a distribution configuration that
|
||||
enables LSB compliance (e.g. <filename>poky-lsb</filename>).
|
||||
If you build <filename>core-image-lsb-dev</filename> without that
|
||||
configuration, the image will not be LSB-compliant.
|
||||
</para></listitem>
|
||||
<listitem><para><filename>core-image-lsb-sdk</filename>:
|
||||
A <filename>core-image-lsb</filename> that includes everything in
|
||||
the cross-toolchain but also includes development headers and libraries
|
||||
to form a complete standalone SDK.
|
||||
This image requires a distribution configuration that
|
||||
enables LSB compliance (e.g. <filename>poky-lsb</filename>).
|
||||
If you build <filename>core-image-lsb-sdk</filename> without that
|
||||
configuration, the image will not be LSB-compliant.
|
||||
This image is suitable for development using the target.</para></listitem>
|
||||
<listitem><para><filename>core-image-minimal</filename>:
|
||||
A small image just capable of allowing a device to boot.</para></listitem>
|
||||
<listitem><para><filename>core-image-minimal-dev</filename>:
|
||||
A <filename>core-image-minimal</filename> image suitable for development work
|
||||
using the host.
|
||||
The image includes headers and libraries you can use in a host development
|
||||
environment.
|
||||
</para></listitem>
|
||||
<listitem><para id='images-core-image-minimal-initramfs'><filename>core-image-minimal-initramfs</filename>:
|
||||
A <filename>core-image-minimal</filename> image that has the Minimal RAM-based
|
||||
Initial Root Filesystem (initramfs) as part of the kernel,
|
||||
which allows the system to find the first "init" program more efficiently.
|
||||
See the
|
||||
<link linkend='var-PACKAGE_INSTALL'><filename>PACKAGE_INSTALL</filename></link>
|
||||
variable for additional information helpful when working with
|
||||
initramfs images.
|
||||
</para></listitem>
|
||||
<listitem><para><filename>core-image-minimal-mtdutils</filename>:
|
||||
A <filename>core-image-minimal</filename> image that has support
|
||||
for the Minimal MTD Utilities, which let the user interact with the
|
||||
MTD subsystem in the kernel to perform operations on flash devices.
|
||||
</para></listitem>
|
||||
<listitem><para><filename>core-image-rt</filename>:
|
||||
A <filename>core-image-minimal</filename> image plus a real-time test suite and
|
||||
tools appropriate for real-time use.</para></listitem>
|
||||
<listitem><para><filename>core-image-rt-sdk</filename>:
|
||||
A <filename>core-image-rt</filename> image that includes everything in
|
||||
the cross-toolchain.
|
||||
The image also includes development headers and libraries to form a complete
|
||||
stand-alone SDK and is suitable for development using the target.
|
||||
</para></listitem>
|
||||
<listitem><para><filename>core-image-sato</filename>:
|
||||
An image with Sato support, a mobile environment and visual style that works well
|
||||
with mobile devices.
|
||||
The image supports X11 with a Sato theme and applications such as
|
||||
a terminal, editor, file manager, media player, and so forth.
|
||||
</para></listitem>
|
||||
<listitem><para><filename>core-image-sato-dev</filename>:
|
||||
A <filename>core-image-sato</filename> image suitable for development
|
||||
using the host.
|
||||
The image includes libraries needed to build applications on the device itself,
|
||||
testing and profiling tools, and debug symbols.
|
||||
This image was formerly <filename>core-image-sdk</filename>.
|
||||
</para></listitem>
|
||||
<listitem><para><filename>core-image-sato-sdk</filename>:
|
||||
A <filename>core-image-sato</filename> image that includes everything in
|
||||
the cross-toolchain.
|
||||
The image also includes development headers and libraries to form a complete standalone SDK
|
||||
and is suitable for development using the target.</para></listitem>
|
||||
<listitem><para><filename>core-image-testmaster</filename>:
|
||||
A "master" image designed to be used for automated runtime testing.
|
||||
Provides a "known good" image that is deployed to a separate
|
||||
partition so that you can boot into it and use it to deploy a
|
||||
second image to be tested.
|
||||
You can find more information about runtime testing in 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></listitem>
|
||||
<listitem><para><filename>core-image-testmaster-initramfs</filename>:
|
||||
A RAM-based Initial Root Filesystem (initramfs) image tailored for
|
||||
use with the <filename>core-image-testmaster</filename> image.
|
||||
</para></listitem>
|
||||
<listitem><para><filename>core-image-weston</filename>:
|
||||
A very basic Wayland image with a terminal.
|
||||
This image provides the Wayland protocol libraries and the
|
||||
reference Weston compositor.
|
||||
For more information, see the
|
||||
"<ulink url='&YOCTO_DOCS_DEV_URL;#dev-using-wayland-and-weston'>Using Wayland and Weston</ulink>"
|
||||
section in the Yocto Project Development Tasks Manual.
|
||||
</para></listitem>
|
||||
<listitem><para><filename>core-image-x11</filename>:
|
||||
A very basic X11 image with a terminal.
|
||||
</para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
</chapter>
|
||||
<!--
|
||||
vim: expandtab tw=80 ts=4
|
||||
-->
|
||||
@@ -1,335 +0,0 @@
|
||||
<!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; ] >
|
||||
<!--SPDX-License-Identifier: CC-BY-2.0-UK-->
|
||||
|
||||
<chapter id='ref-kickstart'>
|
||||
<title>OpenEmbedded Kickstart (<filename>.wks</filename>) Reference</title>
|
||||
|
||||
<section id='openembedded-kickstart-wks-reference'>
|
||||
<title>Introduction</title>
|
||||
|
||||
<para>
|
||||
The current Wic implementation supports only the basic kickstart
|
||||
partitioning commands:
|
||||
<filename>partition</filename> (or <filename>part</filename>
|
||||
for short) and <filename>bootloader</filename>.
|
||||
<note>
|
||||
Future updates will implement more commands and options.
|
||||
If you use anything that is not specifically supported, results
|
||||
can be unpredictable.
|
||||
</note>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
This chapter provides a reference on the available kickstart
|
||||
commands.
|
||||
The information lists the commands, their syntax, and meanings.
|
||||
Kickstart commands are based on the Fedora kickstart versions but
|
||||
with modifications to reflect Wic capabilities.
|
||||
You can see the original documentation for those commands at the
|
||||
following link:
|
||||
<literallayout class='monospaced'>
|
||||
<ulink url='http://pykickstart.readthedocs.io/en/latest/kickstart-docs.html'>http://pykickstart.readthedocs.io/en/latest/kickstart-docs.html</ulink>
|
||||
</literallayout>
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section id='command-part-or-partition'>
|
||||
<title>Command: part or partition</title>
|
||||
|
||||
<para>
|
||||
Either of these commands creates a partition on the system and uses
|
||||
the following syntax:
|
||||
<literallayout class='monospaced'>
|
||||
part [<replaceable>mntpoint</replaceable>]
|
||||
partition [<replaceable>mntpoint</replaceable>]
|
||||
</literallayout>
|
||||
If you do not provide <replaceable>mntpoint</replaceable>, Wic
|
||||
creates a partition but does not mount it.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The <filename><replaceable>mntpoint</replaceable></filename> is
|
||||
where the partition is mounted and must be in one of the
|
||||
following forms:
|
||||
<itemizedlist>
|
||||
<listitem><para>
|
||||
<filename>/<replaceable>path</replaceable></filename>:
|
||||
For example, "/", "/usr", or "/home"
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<filename>swap</filename>:
|
||||
The created partition is used as swap space
|
||||
</para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Specifying a <replaceable>mntpoint</replaceable> causes the
|
||||
partition to automatically be mounted.
|
||||
Wic achieves this by adding entries to the filesystem table (fstab)
|
||||
during image generation.
|
||||
In order for Wic to generate a valid fstab, you must also provide
|
||||
one of the <filename>--ondrive</filename>,
|
||||
<filename>--ondisk</filename>, or
|
||||
<filename>--use-uuid</filename> partition options as part of the
|
||||
command.
|
||||
<note>
|
||||
The mount program must understand the PARTUUID syntax you use
|
||||
with <filename>--use-uuid</filename> and non-root
|
||||
<replaceable>mountpoint</replaceable>, including swap.
|
||||
The busybox versions of these application are currently
|
||||
excluded.
|
||||
</note>
|
||||
Here is an example that uses "/" as the
|
||||
<replaceable>mountpoint</replaceable>.
|
||||
The command uses <filename>--ondisk</filename> to force the
|
||||
partition onto the
|
||||
<filename>sdb</filename> disk:
|
||||
<literallayout class='monospaced'>
|
||||
part / --source rootfs --ondisk sdb --fstype=ext3 --label platform --align 1024
|
||||
</literallayout>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Here is a list that describes other supported options you can use
|
||||
with the <filename>part</filename> and
|
||||
<filename>partition</filename> commands:
|
||||
<itemizedlist>
|
||||
<listitem><para>
|
||||
<emphasis><filename>--size</filename>:</emphasis>
|
||||
The minimum partition size in MBytes.
|
||||
Specify an integer value such as 500.
|
||||
Do not append the number with "MB".
|
||||
You do not need this option if you use
|
||||
<filename>--source</filename>.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<emphasis><filename>--fixed-size</filename>:</emphasis>
|
||||
The exact partition size in MBytes.
|
||||
You cannot specify with <filename>--size</filename>.
|
||||
An error occurs when assembling the disk image if the
|
||||
partition data is larger than
|
||||
<filename>--fixed-size</filename>.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<emphasis><filename>--source</filename>:</emphasis>
|
||||
This option is a Wic-specific option that names the source
|
||||
of the data that populates the partition.
|
||||
The most common value for this option is "rootfs", but you
|
||||
can use any value that maps to a valid source plugin.
|
||||
For information on the source plugins, see the
|
||||
"<ulink url='&YOCTO_DOCS_DEV_URL;#wic-using-the-wic-plugin-interface'>Using the Wic Plugins Interface</ulink>"
|
||||
section in the Yocto Project Development Tasks Manual.
|
||||
</para>
|
||||
|
||||
<para>If you use <filename>--source rootfs</filename>, Wic
|
||||
creates a partition as large as needed and fills it with
|
||||
the contents of the root filesystem pointed to by the
|
||||
<filename>-r</filename> command-line option or the
|
||||
equivalent rootfs derived from the <filename>-e</filename>
|
||||
command-line option.
|
||||
The filesystem type used to create the partition is driven
|
||||
by the value of the <filename>--fstype</filename> option
|
||||
specified for the partition.
|
||||
See the entry on <filename>--fstype</filename> that follows
|
||||
for more information.</para>
|
||||
|
||||
<para>If you use
|
||||
<filename>--source <replaceable>plugin-name</replaceable></filename>,
|
||||
Wic creates a partition as large as needed and fills it
|
||||
with the contents of the partition that is generated by the
|
||||
specified plugin name using the data pointed to by the
|
||||
<filename>-r</filename> command-line option or the
|
||||
equivalent rootfs derived from the <filename>-e</filename>
|
||||
command-line option.
|
||||
Exactly what those contents are and filesystem type used are
|
||||
dependent on the given plugin implementation.
|
||||
</para>
|
||||
|
||||
<para>If you do not use the <filename>--source</filename>
|
||||
option, the <filename>wic</filename> command creates an
|
||||
empty partition.
|
||||
Consequently, you must use the <filename>--size</filename>
|
||||
option to specify the size of the empty partition.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<emphasis><filename>--ondisk</filename> or <filename>--ondrive</filename>:</emphasis>
|
||||
Forces the partition to be created on a particular disk.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<emphasis><filename>--fstype</filename>:</emphasis>
|
||||
Sets the file system type for the partition.
|
||||
Valid values are:
|
||||
<itemizedlist>
|
||||
<listitem><para>
|
||||
<filename>ext4</filename>
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<filename>ext3</filename>
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<filename>ext2</filename>
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<filename>btrfs</filename>
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<filename>squashfs</filename>
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<filename>swap</filename>
|
||||
</para></listitem>
|
||||
</itemizedlist>
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<emphasis><filename>--fsoptions</filename>:</emphasis>
|
||||
Specifies a free-form string of options to be used when
|
||||
mounting the filesystem.
|
||||
This string is copied into the
|
||||
<filename>/etc/fstab</filename> file of the installed
|
||||
system and should be enclosed in quotes.
|
||||
If not specified, the default string is "defaults".
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<emphasis><filename>--label label</filename>:</emphasis>
|
||||
Specifies the label to give to the filesystem to be made on
|
||||
the partition.
|
||||
If the given label is already in use by another filesystem,
|
||||
a new label is created for the partition.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<emphasis><filename>--active</filename>:</emphasis>
|
||||
Marks the partition as active.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<emphasis><filename>--align (in KBytes)</filename>:</emphasis>
|
||||
This option is a Wic-specific option that says to start
|
||||
partitions on boundaries given
|
||||
<replaceable>x</replaceable> KBytes.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<emphasis><filename>--no-table</filename>:</emphasis>
|
||||
This option is a Wic-specific option.
|
||||
Using the option reserves space for the partition and
|
||||
causes it to become populated.
|
||||
However, the partition is not added to the partition table.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<emphasis><filename>--exclude-path</filename>:</emphasis>
|
||||
This option is a Wic-specific option that excludes the given
|
||||
relative path from the resulting image.
|
||||
This option is only effective with the rootfs source
|
||||
plugin.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<emphasis><filename>--extra-space</filename>:</emphasis>
|
||||
This option is a Wic-specific option that adds extra space
|
||||
after the space filled by the content of the partition.
|
||||
The final size can exceed the size specified by the
|
||||
<filename>--size</filename> option.
|
||||
The default value is 10 Mbytes.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<emphasis><filename>--overhead-factor</filename>:</emphasis>
|
||||
This option is a Wic-specific option that multiplies the
|
||||
size of the partition by the option's value.
|
||||
You must supply a value greater than or equal to "1".
|
||||
The default value is "1.3".
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<emphasis><filename>--part-name</filename>:</emphasis>
|
||||
This option is a Wic-specific option that specifies a name
|
||||
for GPT partitions.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<emphasis><filename>--part-type</filename>:</emphasis>
|
||||
This option is a Wic-specific option that specifies the
|
||||
partition type globally unique identifier (GUID) for GPT
|
||||
partitions.
|
||||
You can find the list of partition type GUIDs at
|
||||
<ulink url='http://en.wikipedia.org/wiki/GUID_Partition_Table#Partition_type_GUIDs'></ulink>.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<emphasis><filename>--use-uuid</filename>:</emphasis>
|
||||
This option is a Wic-specific option that causes Wic to
|
||||
generate a random GUID for the partition.
|
||||
The generated identifier is used in the bootloader
|
||||
configuration to specify the root partition.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<emphasis><filename>--uuid</filename>:</emphasis>
|
||||
This option is a Wic-specific option that specifies the
|
||||
partition UUID.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<emphasis><filename>--fsuuid</filename>:</emphasis>
|
||||
This option is a Wic-specific option that specifies the
|
||||
filesystem UUID.
|
||||
You can generate or modify
|
||||
<link linkend='var-WKS_FILE'><filename>WKS_FILE</filename></link>
|
||||
with this option if a preconfigured filesystem UUID is
|
||||
added to the kernel command line in the bootloader
|
||||
configuration before you run Wic.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<emphasis><filename>--system-id</filename>:</emphasis>
|
||||
This option is a Wic-specific option that specifies the
|
||||
partition system ID, which is a one byte long, hexadecimal
|
||||
parameter with or without the 0x prefix.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<emphasis><filename>--mkfs-extraopts</filename>:</emphasis>
|
||||
This option specifies additional options to pass to the
|
||||
<filename>mkfs</filename> utility.
|
||||
Some default options for certain filesystems do not take
|
||||
effect.
|
||||
See Wic's help on kickstart
|
||||
(i.e. <filename>wic help kickstart</filename>).
|
||||
</para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section id='command-bootloader'>
|
||||
<title>Command: bootloader</title>
|
||||
|
||||
<para>
|
||||
This command specifies how the bootloader should be configured and
|
||||
supports the following options:
|
||||
<note>
|
||||
Bootloader functionality and boot partitions are implemented by
|
||||
the various <filename>--source</filename> plugins that
|
||||
implement bootloader functionality.
|
||||
The bootloader command essentially provides a means of
|
||||
modifying bootloader configuration.
|
||||
</note>
|
||||
<itemizedlist>
|
||||
<listitem><para>
|
||||
<emphasis><filename>--timeout</filename>:</emphasis>
|
||||
Specifies the number of seconds before the bootloader times
|
||||
out and boots the default option.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<emphasis><filename>--append</filename>:</emphasis>
|
||||
Specifies kernel parameters.
|
||||
These parameters will be added to the syslinux
|
||||
<filename>APPEND</filename> or <filename>grub</filename>
|
||||
kernel command line.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<emphasis><filename>--configfile</filename>:</emphasis>
|
||||
Specifies a user-defined configuration file for the
|
||||
bootloader.
|
||||
You can provide a full pathname for the file or a file that
|
||||
exists in the <filename>canned-wks</filename> folder.
|
||||
This option overrides all other bootloader options.
|
||||
</para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
</section>
|
||||
</chapter>
|
||||
<!--
|
||||
vim: expandtab tw=80 ts=4
|
||||
-->
|
||||
@@ -1,31 +0,0 @@
|
||||
<?xml version='1.0'?>
|
||||
<!--SPDX-License-Identifier: CC-BY-2.0-UK-->
|
||||
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" xmlns:fo="http://www.w3.org/1999/XSL/Format" version="1.0">
|
||||
|
||||
<xsl:import href="http://downloads.yoctoproject.org/mirror/docbook-mirror/docbook-xsl-1.76.1/xhtml/docbook.xsl" />
|
||||
|
||||
<!--
|
||||
|
||||
<xsl:import href="../template/1.76.1/docbook-xsl-1.76.1/xhtml/docbook.xsl" />
|
||||
|
||||
<xsl:import href="http://docbook.sourceforge.net/release/xsl/1.76.1/xhtml/docbook.xsl" />
|
||||
|
||||
-->
|
||||
|
||||
<xsl:include href="../template/permalinks.xsl"/>
|
||||
<xsl:include href="../template/section.title.xsl"/>
|
||||
<xsl:include href="../template/component.title.xsl"/>
|
||||
<xsl:include href="../template/division.title.xsl"/>
|
||||
<xsl:include href="../template/formal.object.heading.xsl"/>
|
||||
<xsl:include href="../template/gloss-permalinks.xsl"/>
|
||||
<xsl:include href="../template/qa-code-permalinks.xsl"/>
|
||||
|
||||
<xsl:param name="html.stylesheet" select="'ref-style.css'" />
|
||||
<xsl:param name="chapter.autolabel" select="1" />
|
||||
<xsl:param name="appendix.autolabel" select="A" />
|
||||
<xsl:param name="section.autolabel" select="1" />
|
||||
<xsl:param name="section.label.includes.component.label" select="1" />
|
||||
<xsl:param name="generate.id.attributes" select="1" />
|
||||
|
||||
</xsl:stylesheet>
|
||||
@@ -1,232 +0,0 @@
|
||||
<!DOCTYPE book 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; ] >
|
||||
|
||||
<book id='ref-manual' lang='en'
|
||||
xmlns:xi="http://www.w3.org/2003/XInclude"
|
||||
xmlns="http://docbook.org/ns/docbook"
|
||||
>
|
||||
<bookinfo>
|
||||
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref='figures/poky-title.png'
|
||||
format='SVG'
|
||||
align='left' scalefit='1' width='100%'/>
|
||||
</imageobject>
|
||||
</mediaobject>
|
||||
|
||||
<title>
|
||||
Yocto Project Reference Manual
|
||||
</title>
|
||||
|
||||
<authorgroup>
|
||||
<author>
|
||||
<affiliation>
|
||||
<orgname>&ORGNAME;</orgname>
|
||||
</affiliation>
|
||||
<email>&ORGEMAIL;</email>
|
||||
</author>
|
||||
|
||||
</authorgroup>
|
||||
|
||||
<revhistory>
|
||||
<revision>
|
||||
<revnumber>4.0+git</revnumber>
|
||||
<date>November 2010</date>
|
||||
<revremark>The initial document released with the Yocto Project 0.9 Release</revremark>
|
||||
</revision>
|
||||
<revision>
|
||||
<revnumber>1.0</revnumber>
|
||||
<date>April 2011</date>
|
||||
<revremark>Released with the Yocto Project 1.0 Release.</revremark>
|
||||
</revision>
|
||||
<revision>
|
||||
<revnumber>1.1</revnumber>
|
||||
<date>October 2011</date>
|
||||
<revremark>Released with the Yocto Project 1.1 Release.</revremark>
|
||||
</revision>
|
||||
<revision>
|
||||
<revnumber>1.2</revnumber>
|
||||
<date>April 2012</date>
|
||||
<revremark>Released with the Yocto Project 1.2 Release.</revremark>
|
||||
</revision>
|
||||
<revision>
|
||||
<revnumber>1.3</revnumber>
|
||||
<date>October 2012</date>
|
||||
<revremark>Released with the Yocto Project 1.3 Release.</revremark>
|
||||
</revision>
|
||||
<revision>
|
||||
<revnumber>1.4</revnumber>
|
||||
<date>April 2013</date>
|
||||
<revremark>Released with the Yocto Project 1.4 Release.</revremark>
|
||||
</revision>
|
||||
<revision>
|
||||
<revnumber>1.5</revnumber>
|
||||
<date>October 2013</date>
|
||||
<revremark>Released with the Yocto Project 1.5 Release.</revremark>
|
||||
</revision>
|
||||
<revision>
|
||||
<revnumber>1.6</revnumber>
|
||||
<date>April 2014</date>
|
||||
<revremark>Released with the Yocto Project 1.6 Release.</revremark>
|
||||
</revision>
|
||||
<revision>
|
||||
<revnumber>1.7</revnumber>
|
||||
<date>October 2014</date>
|
||||
<revremark>Released with the Yocto Project 1.7 Release.</revremark>
|
||||
</revision>
|
||||
<revision>
|
||||
<revnumber>1.8</revnumber>
|
||||
<date>April 2015</date>
|
||||
<revremark>Released with the Yocto Project 1.8 Release.</revremark>
|
||||
</revision>
|
||||
<revision>
|
||||
<revnumber>2.0</revnumber>
|
||||
<date>October 2015</date>
|
||||
<revremark>Released with the Yocto Project 2.0 Release.</revremark>
|
||||
</revision>
|
||||
<revision>
|
||||
<revnumber>2.1</revnumber>
|
||||
<date>April 2016</date>
|
||||
<revremark>Released with the Yocto Project 2.1 Release.</revremark>
|
||||
</revision>
|
||||
<revision>
|
||||
<revnumber>2.2</revnumber>
|
||||
<date>October 2016</date>
|
||||
<revremark>Released with the Yocto Project 2.2 Release.</revremark>
|
||||
</revision>
|
||||
<revision>
|
||||
<revnumber>2.3</revnumber>
|
||||
<date>May 2017</date>
|
||||
<revremark>Released with the Yocto Project 2.3 Release.</revremark>
|
||||
</revision>
|
||||
<revision>
|
||||
<revnumber>2.4</revnumber>
|
||||
<date>October 2017</date>
|
||||
<revremark>Released with the Yocto Project 2.4 Release.</revremark>
|
||||
</revision>
|
||||
<revision>
|
||||
<revnumber>2.5</revnumber>
|
||||
<date>May 2018</date>
|
||||
<revremark>Released with the Yocto Project 2.5 Release.</revremark>
|
||||
</revision>
|
||||
<revision>
|
||||
<revnumber>2.6</revnumber>
|
||||
<date>November 2018</date>
|
||||
<revremark>Released with the Yocto Project 2.6 Release.</revremark>
|
||||
</revision>
|
||||
<revision>
|
||||
<revnumber>2.7</revnumber>
|
||||
<date>May 2019</date>
|
||||
<revremark>Released with the Yocto Project 2.7 Release.</revremark>
|
||||
</revision>
|
||||
<revision>
|
||||
<revnumber>3.0</revnumber>
|
||||
<date>October 2019</date>
|
||||
<revremark>Released with the Yocto Project 3.0 Release.</revremark>
|
||||
</revision>
|
||||
<revision>
|
||||
<revnumber>3.1</revnumber>
|
||||
<date>&REL_MONTH_YEAR;</date>
|
||||
<revremark>Released with the Yocto Project 3.1 Release.</revremark>
|
||||
</revision>
|
||||
</revhistory>
|
||||
|
||||
<copyright>
|
||||
<year>©RIGHT_YEAR;</year>
|
||||
<holder>Linux Foundation</holder>
|
||||
</copyright>
|
||||
|
||||
<legalnotice>
|
||||
<para>
|
||||
Permission is granted to copy, distribute and/or modify this document under
|
||||
the terms of the <ulink type="http" url="http://creativecommons.org/licenses/by-sa/2.0/uk/">Creative Commons Attribution-Share Alike 2.0 UK: England & Wales</ulink> as published by Creative Commons.
|
||||
</para>
|
||||
<note><title>Manual Notes</title>
|
||||
<itemizedlist>
|
||||
<listitem><para>
|
||||
This version of the
|
||||
<emphasis>Yocto Project Reference Manual</emphasis>
|
||||
is for the &YOCTO_DOC_VERSION; release of the
|
||||
Yocto Project.
|
||||
To be sure you have the latest version of the manual
|
||||
for this release, go to the
|
||||
<ulink url='&YOCTO_DOCS_URL;'>Yocto Project documentation page</ulink>
|
||||
and select the manual from that site.
|
||||
Manuals from the site are more up-to-date than manuals
|
||||
derived from the Yocto Project released TAR files.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
If you located this manual through a web search, the
|
||||
version of the manual might not be the one you want
|
||||
(e.g. the search might have returned a manual much
|
||||
older than the Yocto Project version with which you
|
||||
are working).
|
||||
You can see all Yocto Project major releases by
|
||||
visiting the
|
||||
<ulink url='&YOCTO_WIKI_URL;/wiki/Releases'>Releases</ulink>
|
||||
page.
|
||||
If you need a version of this manual for a different
|
||||
Yocto Project release, visit the
|
||||
<ulink url='&YOCTO_DOCS_URL;'>Yocto Project documentation page</ulink>
|
||||
and select the manual set by using the
|
||||
"ACTIVE RELEASES DOCUMENTATION" or "DOCUMENTS ARCHIVE"
|
||||
pull-down menus.
|
||||
</para></listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
To report any inaccuracies or problems with this
|
||||
(or any other Yocto Project) manual, send an email to
|
||||
the Yocto Project documentation mailing list at
|
||||
<filename>docs@lists.yoctoproject.org</filename> or
|
||||
log into the freenode <filename>#yocto</filename> channel.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</note>
|
||||
</legalnotice>
|
||||
|
||||
</bookinfo>
|
||||
|
||||
<xi:include href="ref-system-requirements.xml"/>
|
||||
|
||||
<xi:include href="ref-terms.xml"/>
|
||||
|
||||
<xi:include href="ref-release-process.xml"/>
|
||||
|
||||
<xi:include href="migration.xml"/>
|
||||
|
||||
<xi:include href="ref-structure.xml"/>
|
||||
|
||||
<xi:include href="ref-classes.xml"/>
|
||||
|
||||
<xi:include href="ref-tasks.xml"/>
|
||||
|
||||
<xi:include href="ref-devtool-reference.xml"/>
|
||||
|
||||
<xi:include href="ref-kickstart.xml"/>
|
||||
|
||||
<xi:include href="ref-qa-checks.xml"/>
|
||||
|
||||
<xi:include href="ref-images.xml"/>
|
||||
|
||||
<xi:include href="ref-features.xml"/>
|
||||
|
||||
<xi:include href="ref-variables.xml"/>
|
||||
|
||||
<xi:include href="ref-varlocality.xml"/>
|
||||
|
||||
<xi:include href="faq.xml"/>
|
||||
|
||||
<xi:include href="resources.xml"/>
|
||||
|
||||
<!-- <index id='index'>
|
||||
<title>Index</title>
|
||||
</index>
|
||||
-->
|
||||
|
||||
</book>
|
||||
<!--
|
||||
vim: expandtab tw=80 ts=4
|
||||
-->
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,256 +0,0 @@
|
||||
<!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; ] >
|
||||
<!--SPDX-License-Identifier: CC-BY-2.0-UK-->
|
||||
|
||||
<chapter id='ref-release-process'>
|
||||
<title>Yocto Project Releases and the Stable Release Process</title>
|
||||
|
||||
<para>
|
||||
The Yocto Project release process is predictable and consists of both
|
||||
major and minor (point) releases.
|
||||
This brief chapter provides information on how releases are named, their
|
||||
life cycle, and their stability.
|
||||
</para>
|
||||
|
||||
<section id='major-and-minor-release-cadence'>
|
||||
<title>Major and Minor Release Cadence</title>
|
||||
|
||||
<para>
|
||||
The Yocto Project delivers major releases (e.g. &DISTRO;) using a six
|
||||
month cadence roughly timed each April and October of the year.
|
||||
Following are examples of some major YP releases with their codenames
|
||||
also shown.
|
||||
See the
|
||||
"<link linkend='major-release-codenames'>Major Release Codenames</link>"
|
||||
section for information on codenames used with major releases.
|
||||
<literallayout class='monospaced'>
|
||||
2.2 (Morty)
|
||||
2.1 (Krogoth)
|
||||
2.0 (Jethro)
|
||||
</literallayout>
|
||||
While the cadence is never perfect, this timescale facilitates
|
||||
regular releases that have strong QA cycles while not overwhelming
|
||||
users with too many new releases.
|
||||
The cadence is predictable and avoids many major holidays in various
|
||||
geographies.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The Yocto project delivers minor (point) releases on an unscheduled
|
||||
basis and are usually driven by the accumulation of enough significant
|
||||
fixes or enhancements to the associated major release.
|
||||
Following are some example past point releases:
|
||||
<literallayout class='monospaced'>
|
||||
2.1.1
|
||||
2.1.2
|
||||
2.2.1
|
||||
</literallayout>
|
||||
The point release indicates a point in the major release branch where
|
||||
a full QA cycle and release process validates the content of the new
|
||||
branch.
|
||||
<note>
|
||||
Realize that there can be patches merged onto the stable release
|
||||
branches as and when they become available.
|
||||
</note>
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section id='major-release-codenames'>
|
||||
<title>Major Release Codenames</title>
|
||||
|
||||
<para>
|
||||
Each major release receives a codename that identifies the release in
|
||||
the
|
||||
<ulink url='&YOCTO_DOCS_OM_URL;#yocto-project-repositories'>Yocto Project Source Repositories</ulink>.
|
||||
The concept is that branches of
|
||||
<link linkend='metadata'>Metadata</link>
|
||||
with the same codename are likely to be compatible and thus
|
||||
work together.
|
||||
<note>
|
||||
Codenames are associated with major releases because a Yocto
|
||||
Project release number (e.g. &DISTRO;) could conflict with
|
||||
a given layer or company versioning scheme.
|
||||
Codenames are unique, interesting, and easily identifiable.
|
||||
</note>
|
||||
Releases are given a nominal release version as well but the codename
|
||||
is used in repositories for this reason.
|
||||
You can find information on Yocto Project releases and codenames at
|
||||
<ulink url='https://wiki.yoctoproject.org/wiki/Releases'></ulink>.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section id='stable-release-process'>
|
||||
<title>Stable Release Process</title>
|
||||
|
||||
<para>
|
||||
Once released, the release enters the stable release process at which
|
||||
time a person is assigned as the maintainer for that stable release.
|
||||
This maintainer monitors activity for the release by investigating
|
||||
and handling nominated patches and backport activity.
|
||||
Only fixes and enhancements that have first been applied on the
|
||||
"master" branch (i.e. the current, in-development branch) are
|
||||
considered for backporting to a stable release.
|
||||
<note>
|
||||
The current Yocto Project policy regarding backporting is to
|
||||
consider bug fixes and security fixes only.
|
||||
Policy dictates that features are not backported to a stable
|
||||
release.
|
||||
This policy means generic recipe version upgrades are unlikely to
|
||||
be accepted for backporting.
|
||||
The exception to this policy occurs when a strong reason exists
|
||||
such as the fix happens to also be the preferred upstream approach.
|
||||
</note>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Stable release branches have strong maintenance for about a year after
|
||||
their initial release.
|
||||
Should significant issues be found for any release regardless of its
|
||||
age, fixes could be backported to older releases.
|
||||
For issues that are not backported given an older release,
|
||||
Community LTS trees and branches exist where
|
||||
community members share patches for older releases.
|
||||
However, these types of patches do not go through the same release
|
||||
process as do point releases.
|
||||
You can find more information about stable branch maintenance at
|
||||
<ulink url='https://wiki.yoctoproject.org/wiki/Stable_branch_maintenance'></ulink>.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section id='testing-and-quality-assurance'>
|
||||
<title>Testing and Quality Assurance</title>
|
||||
|
||||
<para>
|
||||
Part of the Yocto Project development and release process is quality
|
||||
assurance through the execution of test strategies.
|
||||
Test strategies provide the Yocto Project team a way to ensure a
|
||||
release is validated.
|
||||
Additionally, because the test strategies are visible to you as a
|
||||
developer, you can validate your projects.
|
||||
This section overviews the available test infrastructure used in the
|
||||
Yocto Project.
|
||||
For information on how to run available tests on your projects, 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>
|
||||
|
||||
<para>
|
||||
The QA/testing infrastructure is woven into the project to the point
|
||||
where core developers take some of it for granted.
|
||||
The infrastructure consists of the following pieces:
|
||||
<itemizedlist>
|
||||
<listitem><para>
|
||||
<filename>bitbake-selftest</filename>:
|
||||
A standalone command that runs unit tests on key pieces of
|
||||
BitBake and its fetchers.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<link linkend='ref-classes-sanity'><filename>sanity.bbclass</filename></link>:
|
||||
This automatically included class checks the build environment
|
||||
for missing tools (e.g. <filename>gcc</filename>) or common
|
||||
misconfigurations such as
|
||||
<link linkend='var-MACHINE'><filename>MACHINE</filename></link>
|
||||
set incorrectly.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<link linkend='ref-classes-insane'><filename>insane.bbclass</filename></link>:
|
||||
This class checks the generated output from builds for sanity.
|
||||
For example, if building for an ARM target, did the build
|
||||
produce ARM binaries.
|
||||
If, for example, the build produced PPC binaries then there
|
||||
is a problem.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<link linkend='ref-classes-testimage*'><filename>testimage.bbclass</filename></link>:
|
||||
This class performs runtime testing of images after they are
|
||||
built.
|
||||
The tests are usually used with
|
||||
<ulink url='&YOCTO_DOCS_DEV_URL;#dev-manual-qemu'>QEMU</ulink>
|
||||
to boot the images and check the combined runtime result
|
||||
boot operation and functions.
|
||||
However, the test can also use the IP address of a machine to
|
||||
test.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<ulink url='&YOCTO_DOCS_DEV_URL;#testing-packages-with-ptest'><filename>ptest</filename></ulink>:
|
||||
Runs tests against packages produced during the build for a
|
||||
given piece of software.
|
||||
The test allows the packages to be be run within a target
|
||||
image.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<filename>oe-selftest</filename>:
|
||||
Tests combination BitBake invocations.
|
||||
These tests operate outside the OpenEmbedded build system
|
||||
itself.
|
||||
The <filename>oe-selftest</filename> can run all tests by
|
||||
default or can run selected tests or test suites.
|
||||
<note>
|
||||
Running <filename>oe-selftest</filename> requires
|
||||
host packages beyond the "Essential" grouping.
|
||||
See the
|
||||
"<link linkend='required-packages-for-the-build-host'>Required Packages for the Build Host</link>"
|
||||
section for more information.
|
||||
</note>
|
||||
</para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Originally, much of this testing was done manually.
|
||||
However, significant effort has been made to automate the tests so
|
||||
that more people can use them and the Yocto Project development team
|
||||
can run them faster and more efficiently.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The Yocto Project's main Autobuilder
|
||||
(<filename>autobuilder.yoctoproject.org</filename>) publicly tests
|
||||
each Yocto Project release's code in the
|
||||
<link linkend='oe-core'>OE-Core</link>, Poky, and BitBake
|
||||
repositories.
|
||||
The testing occurs for both the current state of the
|
||||
"master" branch and also for submitted patches.
|
||||
Testing for submitted patches usually occurs in the
|
||||
"ross/mut" branch in the <filename>poky-contrib</filename> repository
|
||||
(i.e. the master-under-test branch) or in the "master-next" branch
|
||||
in the <filename>poky</filename> repository.
|
||||
<note>
|
||||
You can find all these branches in the Yocto Project
|
||||
<ulink url='&YOCTO_DOCS_OM_URL;#source-repositories'>Source Repositories</ulink>.
|
||||
</note>
|
||||
Testing within these public branches ensures in a publicly visible way
|
||||
that all of the main supposed architectures and recipes in OE-Core
|
||||
successfully build and behave properly.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Various features such as <filename>multilib</filename>, sub
|
||||
architectures (e.g. <filename>x32</filename>,
|
||||
<filename>poky-tiny</filename>, <filename>musl</filename>,
|
||||
<filename>no-x11</filename> and and so forth),
|
||||
<filename>bitbake-selftest</filename>, and
|
||||
<filename>oe-selftest</filename> are tested as part of
|
||||
the QA process of a release.
|
||||
Complete testing and validation for a release takes the Autobuilder
|
||||
workers several hours.
|
||||
<note>
|
||||
The Autobuilder workers are non-homogeneous, which means regular
|
||||
testing across a variety of Linux distributions occurs.
|
||||
The Autobuilder is limited to only testing QEMU-based setups and
|
||||
not real hardware.
|
||||
</note>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Finally, in addition to the Autobuilder's tests, the Yocto Project
|
||||
QA team also performs testing on a variety of platforms, which includes
|
||||
actual hardware, to ensure expected results.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
</chapter>
|
||||
<!--
|
||||
vim: expandtab tw=80 ts=4
|
||||
-->
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,577 +0,0 @@
|
||||
<!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; ] >
|
||||
<!--SPDX-License-Identifier: CC-BY-2.0-UK-->
|
||||
|
||||
<chapter id='ref-manual-system-requirements'>
|
||||
<title>System Requirements</title>
|
||||
|
||||
<para>
|
||||
Welcome to the Yocto Project Reference Manual!
|
||||
This manual provides reference information for the current release
|
||||
of the Yocto Project, and
|
||||
is most effectively used after you have an understanding
|
||||
of the basics of the Yocto Project.
|
||||
The manual is neither meant to be read as a starting point to the
|
||||
Yocto Project, nor read from start to finish.
|
||||
Rather, use this manual to find variable definitions, class
|
||||
descriptions, and so forth as needed during the course of using
|
||||
the Yocto Project.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
For introductory information on the Yocto Project, see the
|
||||
<ulink url='&YOCTO_HOME_URL;'>Yocto Project Website</ulink> and the
|
||||
"<ulink url='&YOCTO_DOCS_OM_URL;#overview-development-environment'>Yocto Project Development Environment</ulink>"
|
||||
chapter in the Yocto Project Overview and Concepts Manual.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
If you want to use the Yocto Project to quickly build an image
|
||||
without having to understand concepts, work through the
|
||||
<ulink url='&YOCTO_DOCS_BRIEF_URL;'>Yocto Project Quick Build</ulink>
|
||||
document.
|
||||
You can find "how-to" information in the
|
||||
<ulink url='&YOCTO_DOCS_DEV_URL;'>Yocto Project Development Tasks Manual</ulink>.
|
||||
You can find Yocto Project overview and conceptual information in the
|
||||
<ulink url='&YOCTO_DOCS_OM_URL;'>Yocto Project Overview and Concepts Manual</ulink>.
|
||||
<note><title>Tip</title>
|
||||
For more information about the Yocto Project Documentation set,
|
||||
see the
|
||||
"<link linkend='resources-links-and-related-documentation'>Links and Related Documentation</link>"
|
||||
section.
|
||||
</note>
|
||||
</para>
|
||||
|
||||
<section id='detailed-supported-distros'>
|
||||
<title>Supported Linux Distributions</title>
|
||||
|
||||
<para>
|
||||
Currently, the Yocto Project is supported on the following
|
||||
distributions:
|
||||
<note><title>Notes</title>
|
||||
<itemizedlist>
|
||||
<listitem><para>
|
||||
Yocto Project releases are tested against the stable
|
||||
Linux distributions in the following list.
|
||||
The Yocto Project should work on other distributions but
|
||||
validation is not performed against them.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
In particular, the Yocto Project does not support
|
||||
and currently has no plans to support
|
||||
rolling-releases or development distributions due to
|
||||
their constantly changing nature.
|
||||
We welcome patches and bug reports, but keep in mind
|
||||
that our priority is on the supported platforms listed
|
||||
below.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
You may use Windows Subsystem For Linux v2 to set up a build
|
||||
host using Windows 10, but validation is not performed
|
||||
against build hosts using WSLv2.
|
||||
<note>
|
||||
The Yocto Project is not compatible with WSLv1, it is
|
||||
compatible but not officially supported nor validated
|
||||
with WSLv2, if you still decide to use WSL please upgrade
|
||||
to WSLv2.
|
||||
</note>
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
If you encounter problems, please go to
|
||||
<ulink url='&YOCTO_BUGZILLA_URL;'>Yocto Project Bugzilla</ulink>
|
||||
and submit a bug.
|
||||
We are interested in hearing about your experience.
|
||||
For information on how to submit a bug, see the
|
||||
Yocto Project
|
||||
<ulink url='&YOCTO_WIKI_URL;/wiki/Bugzilla_Configuration_and_Bug_Tracking'>Bugzilla wiki page</ulink>
|
||||
and the
|
||||
"<ulink url='&YOCTO_DOCS_DEV_URL;#submitting-a-defect-against-the-yocto-project'>Submitting a Defect Against the Yocto Project</ulink>"
|
||||
section in the Yocto Project Development Tasks Manual.
|
||||
</para></listitem>
|
||||
</itemizedlist>
|
||||
</note>
|
||||
<itemizedlist>
|
||||
<listitem><para>Ubuntu 16.04 (LTS)</para></listitem>
|
||||
<listitem><para>Ubuntu 18.04 (LTS)</para></listitem>
|
||||
<listitem><para>Ubuntu 20.04</para></listitem>
|
||||
<listitem><para>Fedora 30</para></listitem>
|
||||
<listitem><para>Fedora 31</para></listitem>
|
||||
<listitem><para>Fedora 32</para></listitem>
|
||||
<listitem><para>CentOS 7.x</para></listitem>
|
||||
<listitem><para>CentOS 8.x</para></listitem>
|
||||
<listitem><para>Debian GNU/Linux 8.x (Jessie)</para></listitem>
|
||||
<listitem><para>Debian GNU/Linux 9.x (Stretch)</para></listitem>
|
||||
<listitem><para>Debian GNU/Linux 10.x (Buster)</para></listitem>
|
||||
<listitem><para>OpenSUSE Leap 15.1</para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
<note>
|
||||
While the Yocto Project Team attempts to ensure all Yocto Project
|
||||
releases are one hundred percent compatible with each officially
|
||||
supported Linux distribution, instances might exist where you
|
||||
encounter a problem while using the Yocto Project on a specific
|
||||
distribution.
|
||||
</note>
|
||||
</section>
|
||||
|
||||
<section id='required-packages-for-the-build-host'>
|
||||
<title>Required Packages for the Build Host</title>
|
||||
|
||||
<para>
|
||||
The list of packages you need on the host development system can
|
||||
be large when covering all build scenarios using the Yocto Project.
|
||||
This section describes required packages according to
|
||||
Linux distribution and function.
|
||||
</para>
|
||||
|
||||
<section id='ubuntu-packages'>
|
||||
<title>Ubuntu and Debian</title>
|
||||
|
||||
<para>
|
||||
The following list shows the required packages by function
|
||||
given a supported Ubuntu or Debian Linux distribution:
|
||||
<note><title>Notes</title>
|
||||
<itemizedlist>
|
||||
<listitem><para>
|
||||
If your build system has the
|
||||
<filename>oss4-dev</filename> package installed, you
|
||||
might experience QEMU build failures due to the package
|
||||
installing its own custom
|
||||
<filename>/usr/include/linux/soundcard.h</filename> on
|
||||
the Debian system.
|
||||
If you run into this situation, either of the following
|
||||
solutions exist:
|
||||
<literallayout class='monospaced'>
|
||||
$ sudo apt-get build-dep qemu
|
||||
$ sudo apt-get remove oss4-dev
|
||||
</literallayout>
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
For Debian-8, <filename>python3-git</filename> and <filename>pylint3</filename> are no longer available via <filename>apt-get</filename>.
|
||||
<literallayout class='monospaced'>
|
||||
$ sudo pip3 install GitPython pylint==1.9.5
|
||||
</literallayout>
|
||||
</para></listitem>
|
||||
</itemizedlist>
|
||||
</note>
|
||||
<itemizedlist>
|
||||
<listitem><para><emphasis>Essentials:</emphasis>
|
||||
Packages needed to build an image on a headless
|
||||
system:
|
||||
<literallayout class='monospaced'>
|
||||
$ sudo apt-get install &UBUNTU_HOST_PACKAGES_ESSENTIAL;
|
||||
</literallayout></para></listitem>
|
||||
<listitem><para><emphasis>Documentation:</emphasis>
|
||||
Packages needed if you are going to build out the
|
||||
Yocto Project documentation manuals:
|
||||
<literallayout class='monospaced'>
|
||||
$ sudo apt-get install make xsltproc docbook-utils fop dblatex xmlto
|
||||
</literallayout></para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section id='fedora-packages'>
|
||||
<title>Fedora Packages</title>
|
||||
|
||||
<para>
|
||||
The following list shows the required packages by function
|
||||
given a supported Fedora Linux distribution:
|
||||
<itemizedlist>
|
||||
<listitem><para><emphasis>Essentials:</emphasis>
|
||||
Packages needed to build an image for a headless
|
||||
system:
|
||||
<literallayout class='monospaced'>
|
||||
$ sudo dnf install &FEDORA_HOST_PACKAGES_ESSENTIAL;
|
||||
</literallayout></para></listitem>
|
||||
<listitem><para><emphasis>Documentation:</emphasis>
|
||||
Packages needed if you are going to build out the
|
||||
Yocto Project documentation manuals:
|
||||
<literallayout class='monospaced'>
|
||||
$ sudo dnf install docbook-style-dsssl docbook-style-xsl \
|
||||
docbook-dtds docbook-utils fop libxslt dblatex xmlto
|
||||
</literallayout></para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section id='opensuse-packages'>
|
||||
<title>openSUSE Packages</title>
|
||||
|
||||
<para>
|
||||
The following list shows the required packages by function
|
||||
given a supported openSUSE Linux distribution:
|
||||
<itemizedlist>
|
||||
<listitem><para><emphasis>Essentials:</emphasis>
|
||||
Packages needed to build an image for a headless
|
||||
system:
|
||||
<literallayout class='monospaced'>
|
||||
$ sudo zypper install &OPENSUSE_HOST_PACKAGES_ESSENTIAL;
|
||||
</literallayout></para></listitem>
|
||||
<listitem><para><emphasis>Documentation:</emphasis>
|
||||
Packages needed if you are going to build out the
|
||||
Yocto Project documentation manuals:
|
||||
<literallayout class='monospaced'>
|
||||
$ sudo zypper install dblatex xmlto
|
||||
</literallayout></para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section id='centos-7-packages'>
|
||||
<title>CentOS-7 Packages</title>
|
||||
|
||||
<para>
|
||||
The following list shows the required packages by function
|
||||
given a supported CentOS-7 Linux distribution:
|
||||
<itemizedlist>
|
||||
<listitem><para><emphasis>Essentials:</emphasis>
|
||||
Packages needed to build an image for a headless
|
||||
system:
|
||||
<literallayout class='monospaced'>
|
||||
$ sudo yum install &CENTOS7_HOST_PACKAGES_ESSENTIAL;
|
||||
</literallayout>
|
||||
<note><title>Notes</title>
|
||||
<itemizedlist>
|
||||
<listitem><para>
|
||||
Extra Packages for Enterprise Linux
|
||||
(i.e. <filename>epel-release</filename>)
|
||||
is a collection of packages from Fedora
|
||||
built on RHEL/CentOS for easy installation
|
||||
of packages not included in enterprise
|
||||
Linux by default.
|
||||
You need to install these packages
|
||||
separately.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
The <filename>makecache</filename> command
|
||||
consumes additional Metadata from
|
||||
<filename>epel-release</filename>.
|
||||
</para></listitem>
|
||||
</itemizedlist>
|
||||
</note>
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>Documentation:</emphasis>
|
||||
Packages needed if you are going to build out the
|
||||
Yocto Project documentation manuals:
|
||||
<literallayout class='monospaced'>
|
||||
$ sudo yum install docbook-style-dsssl docbook-style-xsl \
|
||||
docbook-dtds docbook-utils fop libxslt dblatex xmlto
|
||||
</literallayout>
|
||||
</para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section id='centos-8-packages'>
|
||||
<title>CentOS-8 Packages</title>
|
||||
|
||||
<para>
|
||||
The following list shows the required packages by function
|
||||
given a supported CentOS-8 Linux distribution:
|
||||
<itemizedlist>
|
||||
<listitem><para><emphasis>Essentials:</emphasis>
|
||||
Packages needed to build an image for a headless
|
||||
system:
|
||||
<literallayout class='monospaced'>
|
||||
$ sudo dnf install &CENTOS8_HOST_PACKAGES_ESSENTIAL;
|
||||
</literallayout>
|
||||
<note><title>Notes</title>
|
||||
<itemizedlist>
|
||||
<listitem><para>
|
||||
Extra Packages for Enterprise Linux
|
||||
(i.e. <filename>epel-release</filename>)
|
||||
is a collection of packages from Fedora
|
||||
built on RHEL/CentOS for easy installation
|
||||
of packages not included in enterprise
|
||||
Linux by default.
|
||||
You need to install these packages
|
||||
separately.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
The <filename>PowerTools</filename> repo
|
||||
provides additional packages such as
|
||||
<filename>rpcgen</filename> and
|
||||
<filename>texinfo</filename>.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
The <filename>makecache</filename> command
|
||||
consumes additional Metadata from
|
||||
<filename>epel-release</filename>.
|
||||
</para></listitem>
|
||||
</itemizedlist>
|
||||
</note>
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>Documentation:</emphasis>
|
||||
Packages needed if you are going to build out the
|
||||
Yocto Project documentation manuals:
|
||||
<literallayout class='monospaced'>
|
||||
$ sudo dnf install docbook-style-dsssl docbook-style-xsl \
|
||||
docbook-dtds docbook-utils fop libxslt dblatex xmlto
|
||||
</literallayout>
|
||||
</para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<section id='required-git-tar-python-and-gcc-versions'>
|
||||
<title>Required Git, tar, Python and gcc Versions</title>
|
||||
|
||||
<para>
|
||||
In order to use the build system, your host development system
|
||||
must meet the following version requirements for Git, tar, and
|
||||
Python:
|
||||
<itemizedlist>
|
||||
<listitem><para>Git 1.8.3.1 or greater</para></listitem>
|
||||
<listitem><para>tar 1.28 or greater</para></listitem>
|
||||
<listitem><para>Python 3.5.0 or greater</para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
If your host development system does not meet all these requirements,
|
||||
you can resolve this by installing a <filename>buildtools</filename>
|
||||
tarball that contains these tools.
|
||||
You can get the tarball one of two ways: download a pre-built
|
||||
tarball or use BitBake to build the tarball.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
In addition, your host development system must meet the following
|
||||
version requirement for gcc:
|
||||
<itemizedlist>
|
||||
<listitem><para>gcc 5.0 or greater</para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
If your host development system does not meet this requirement,
|
||||
you can resolve this by installing a <filename>buildtools-extended</filename>
|
||||
tarball that contains additional tools, the equivalent of <filename>buildtools-essential</filename>.
|
||||
</para>
|
||||
<section id='installing-a-pre-built-buildtools-tarball-with-install-buildtools-script'>
|
||||
<title>Installing a Pre-Built <filename>buildtools</filename> Tarball with <filename>install-buildtools</filename> script</title>
|
||||
|
||||
<para>
|
||||
The <filename>install-buildtools</filename> script is the easiest
|
||||
of the three methods by which you can get these tools. It downloads
|
||||
a pre-built buildtools installer and automatically installs the tools
|
||||
for you:
|
||||
<orderedlist>
|
||||
<listitem><para>
|
||||
Execute the <filename>install-buildtools</filename> script.
|
||||
Here is an example:
|
||||
<literallayout class='monospaced'>
|
||||
$ cd poky
|
||||
$ scripts/install-buildtools --without-extended-buildtools \
|
||||
--base-url &YOCTO_DL_URL;/releases/yocto \
|
||||
--release yocto-&DISTRO; \
|
||||
--installer-version &DISTRO;
|
||||
</literallayout>
|
||||
<para>
|
||||
During execution, the buildtools tarball will be downloaded,
|
||||
the checksum of the download will be verified, the installer
|
||||
will be run for you, and some basic checks will be run to
|
||||
to make sure the installation is functional.
|
||||
</para>
|
||||
<para>
|
||||
To avoid the need of <filename>sudo</filename> privileges,
|
||||
the <filename>install-buildtools</filename> script will
|
||||
by default tell the installer to install in:
|
||||
<literallayout class='monospaced'>
|
||||
<replaceable>/path/to/</replaceable>poky/buildtools
|
||||
</literallayout>
|
||||
</para>
|
||||
<para>
|
||||
If your host development system needs the additional tools
|
||||
provided in the <filename>buildtools-extended</filename>
|
||||
tarball, you can instead execute the
|
||||
<filename>install-buildtools</filename> script with the
|
||||
default parameters:
|
||||
<literallayout class='monospaced'>
|
||||
$ cd poky
|
||||
$ scripts/install-buildtools
|
||||
</literallayout>
|
||||
</para>
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
Source the tools environment setup script by using a
|
||||
command like the following:
|
||||
<literallayout class='monospaced'>
|
||||
$ source <replaceable>/path/to/</replaceable>poky/buildtools/environment-setup-x86_64-pokysdk-linux
|
||||
</literallayout>
|
||||
Of course, you need to supply your installation directory and be
|
||||
sure to use the right file (i.e. i586 or x86_64).
|
||||
</para>
|
||||
<para>
|
||||
After you have sourced the setup script,
|
||||
the tools are added to <filename>PATH</filename>
|
||||
and any other environment variables required to run the
|
||||
tools are initialized.
|
||||
The results are working versions versions of Git, tar,
|
||||
Python and <filename>chrpath</filename>. And in the case of
|
||||
the <filename>buildtools-extended</filename> tarball, additional
|
||||
working versions of tools including <filename>gcc</filename>,
|
||||
<filename>make</filename> and the other tools included in
|
||||
<filename>packagegroup-core-buildessential</filename>.
|
||||
</para></listitem>
|
||||
</orderedlist>
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section id='downloading-a-pre-built-buildtools-tarball'>
|
||||
<title>Downloading a Pre-Built <filename>buildtools</filename> Tarball</title>
|
||||
|
||||
<para>
|
||||
Downloading and running a pre-built buildtools installer is
|
||||
the easiest of the two methods by which you can get these tools:
|
||||
<orderedlist>
|
||||
<listitem><para>
|
||||
Locate and download the <filename>*.sh</filename> at
|
||||
<ulink url='&YOCTO_RELEASE_DL_URL;/buildtools/'></ulink>.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
Execute the installation script.
|
||||
Here is an example for the traditional installer:
|
||||
<literallayout class='monospaced'>
|
||||
$ sh ~/Downloads/x86_64-buildtools-nativesdk-standalone-&DISTRO;.sh
|
||||
</literallayout>
|
||||
Here is an example for the extended installer:
|
||||
<literallayout class='monospaced'>
|
||||
$ sh ~/Downloads/x86_64-buildtools-extended-nativesdk-standalone-&DISTRO;.sh
|
||||
</literallayout>
|
||||
During execution, a prompt appears that allows you to
|
||||
choose the installation directory.
|
||||
For example, you could choose the following:
|
||||
<literallayout class='monospaced'>
|
||||
/home/<replaceable>your-username</replaceable>/buildtools
|
||||
</literallayout>
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
Source the tools environment setup script by using a
|
||||
command like the following:
|
||||
<literallayout class='monospaced'>
|
||||
$ source /home/<replaceable>your_username</replaceable>/buildtools/environment-setup-i586-poky-linux
|
||||
</literallayout>
|
||||
Of course, you need to supply your installation directory and be
|
||||
sure to use the right file (i.e. i585 or x86-64).
|
||||
</para>
|
||||
<para>
|
||||
After you have sourced the setup script,
|
||||
the tools are added to <filename>PATH</filename>
|
||||
and any other environment variables required to run the
|
||||
tools are initialized.
|
||||
The results are working versions versions of Git, tar,
|
||||
Python and <filename>chrpath</filename>. And in the case of
|
||||
the <filename>buildtools-extended</filename> tarball, additional
|
||||
working versions of tools including <filename>gcc</filename>,
|
||||
<filename>make</filename> and the other tools included in
|
||||
<filename>packagegroup-core-buildessential</filename>.
|
||||
</para></listitem>
|
||||
</orderedlist>
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section id='building-your-own-buildtools-tarball'>
|
||||
<title>Building Your Own <filename>buildtools</filename> Tarball</title>
|
||||
|
||||
<para>
|
||||
Building and running your own buildtools installer applies
|
||||
only when you have a build host that can already run BitBake.
|
||||
In this case, you use that machine to build the
|
||||
<filename>.sh</filename> file and then
|
||||
take steps to transfer and run it on a
|
||||
machine that does not meet the minimal Git, tar, and Python
|
||||
(or gcc) requirements.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Here are the steps to take to build and run your own
|
||||
buildtools installer:
|
||||
<orderedlist>
|
||||
<listitem><para>
|
||||
On the machine that is able to run BitBake,
|
||||
be sure you have set up your build environment with
|
||||
the setup script
|
||||
(<link linkend='structure-core-script'><filename>&OE_INIT_FILE;</filename></link>).
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
Run the BitBake command to build the tarball:
|
||||
<literallayout class='monospaced'>
|
||||
$ bitbake buildtools-tarball
|
||||
</literallayout>
|
||||
or run the BitBake command to build the extended tarball:
|
||||
<literallayout class='monospaced'>
|
||||
$ bitbake buildtools-extended-tarball
|
||||
</literallayout>
|
||||
<note>
|
||||
The
|
||||
<link linkend='var-SDKMACHINE'><filename>SDKMACHINE</filename></link>
|
||||
variable in your <filename>local.conf</filename> file
|
||||
determines whether you build tools for a 32-bit
|
||||
or 64-bit system.
|
||||
</note>
|
||||
Once the build completes, you can find the
|
||||
<filename>.sh</filename> file that installs
|
||||
the tools in the <filename>tmp/deploy/sdk</filename>
|
||||
subdirectory of the
|
||||
<link linkend='build-directory'>Build Directory</link>.
|
||||
The installer file has the string "buildtools"
|
||||
(or "buildtools-extended") in the name.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
Transfer the <filename>.sh</filename> file from the
|
||||
build host to the machine that does not meet the
|
||||
Git, tar, or Python (or gcc) requirements.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
On the machine that does not meet the requirements,
|
||||
run the <filename>.sh</filename> file
|
||||
to install the tools.
|
||||
Here is an example for the traditional installer:
|
||||
<literallayout class='monospaced'>
|
||||
$ sh ~/Downloads/x86_64-buildtools-nativesdk-standalone-&DISTRO;.sh
|
||||
</literallayout>
|
||||
Here is an example for the extended installer:
|
||||
<literallayout class='monospaced'>
|
||||
$ sh ~/Downloads/x86_64-buildtools-extended-nativesdk-standalone-&DISTRO;.sh
|
||||
</literallayout>
|
||||
During execution, a prompt appears that allows you to
|
||||
choose the installation directory.
|
||||
For example, you could choose the following:
|
||||
<literallayout class='monospaced'>
|
||||
/home/<replaceable>your_username</replaceable>/buildtools
|
||||
</literallayout>
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
Source the tools environment setup script by using a
|
||||
command like the following:
|
||||
<literallayout class='monospaced'>
|
||||
$ source /home/<replaceable>your_username</replaceable>/buildtools/environment-setup-x86_64-poky-linux
|
||||
</literallayout>
|
||||
Of course, you need to supply your installation directory and be
|
||||
sure to use the right file (i.e. i586 or x86_64).
|
||||
</para>
|
||||
<para>
|
||||
After you have sourced the setup script,
|
||||
the tools are added to <filename>PATH</filename>
|
||||
and any other environment variables required to run the
|
||||
tools are initialized.
|
||||
The results are working versions versions of Git, tar,
|
||||
Python and <filename>chrpath</filename>. And in the case of
|
||||
the <filename>buildtools-extended</filename> tarball, additional
|
||||
working versions of tools including <filename>gcc</filename>,
|
||||
<filename>make</filename> and the other tools included in
|
||||
<filename>packagegroup-core-buildessential</filename>.
|
||||
</para></listitem>
|
||||
</orderedlist>
|
||||
</para>
|
||||
</section>
|
||||
</section>
|
||||
</chapter>
|
||||
<!--
|
||||
vim: expandtab tw=80 ts=4
|
||||
-->
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,525 +0,0 @@
|
||||
<!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; ] >
|
||||
<!--SPDX-License-Identifier: CC-BY-2.0-UK-->
|
||||
|
||||
<chapter id='ref-terms'>
|
||||
<title>Yocto Project Terms</title>
|
||||
|
||||
<para>
|
||||
Following is a list of terms and definitions users new to the Yocto
|
||||
Project development environment might find helpful.
|
||||
While some of these terms are universal, the list includes them
|
||||
just in case:
|
||||
<itemizedlist>
|
||||
<listitem><para>
|
||||
<emphasis>Append Files:</emphasis>
|
||||
Files that append build information to a recipe file.
|
||||
Append files are known as BitBake append files and
|
||||
<filename>.bbappend</filename> files.
|
||||
The OpenEmbedded build system expects every append file to have
|
||||
a corresponding recipe (<filename>.bb</filename>) file.
|
||||
Furthermore, the append file and corresponding recipe file
|
||||
must use the same root filename.
|
||||
The filenames can differ only in the file type suffix used
|
||||
(e.g.
|
||||
<filename>formfactor_0.0.bb</filename> and
|
||||
<filename>formfactor_0.0.bbappend</filename>).</para>
|
||||
|
||||
<para>Information in append files extends or overrides the
|
||||
information in the similarly-named recipe file.
|
||||
For an example of an append file in use, see the
|
||||
"<ulink url='&YOCTO_DOCS_DEV_URL;#using-bbappend-files'>Using .bbappend Files in Your Layer</ulink>"
|
||||
section in the Yocto Project Development Tasks Manual.</para>
|
||||
|
||||
<para>When you name an append file, you can use the
|
||||
"<filename>%</filename>" wildcard character to allow for
|
||||
matching recipe names.
|
||||
For example, suppose you have an append file named as follows:
|
||||
<literallayout class='monospaced'>
|
||||
busybox_1.21.%.bbappend
|
||||
</literallayout>
|
||||
That append file would match any
|
||||
<filename>busybox_1.21.</filename><replaceable>x</replaceable><filename>.bb</filename>
|
||||
version of the recipe.
|
||||
So, the append file would match any of the following recipe names:
|
||||
<literallayout class='monospaced'>
|
||||
busybox_1.21.1.bb
|
||||
busybox_1.21.2.bb
|
||||
busybox_1.21.3.bb
|
||||
busybox_1.21.10.bb
|
||||
busybox_1.21.25.bb
|
||||
</literallayout>
|
||||
<note><title>Important</title>
|
||||
The use of the "<filename>%</filename>" character
|
||||
is limited in that it only works directly in front of the
|
||||
<filename>.bbappend</filename> portion of the append file's
|
||||
name.
|
||||
You cannot use the wildcard character in any other
|
||||
location of the name.
|
||||
</note>
|
||||
</para></listitem>
|
||||
<listitem><para id='bitbake-term'>
|
||||
<emphasis>BitBake:</emphasis>
|
||||
The task executor and scheduler used by the OpenEmbedded build
|
||||
system to build images.
|
||||
For more information on BitBake, see the
|
||||
<ulink url='&YOCTO_DOCS_BB_URL;'>BitBake User Manual</ulink>.
|
||||
</para></listitem>
|
||||
<listitem><para id='board-support-package-bsp-term'>
|
||||
<emphasis>Board Support Package (BSP):</emphasis>
|
||||
A group of drivers, definitions, and other components that
|
||||
provide support for a specific hardware configuration.
|
||||
For more information on BSPs, see the
|
||||
<ulink url='&YOCTO_DOCS_BSP_URL;'>Yocto Project Board Support Package (BSP) Developer's Guide</ulink>.
|
||||
</para></listitem>
|
||||
<listitem>
|
||||
<para id='build-directory'>
|
||||
<emphasis>Build Directory:</emphasis>
|
||||
This term refers to the area used by the OpenEmbedded build
|
||||
system for builds.
|
||||
The area is created when you <filename>source</filename> the
|
||||
setup environment script that is found in the Source Directory
|
||||
(i.e. <link linkend='structure-core-script'><filename>&OE_INIT_FILE;</filename></link>).
|
||||
The
|
||||
<link linkend='var-TOPDIR'><filename>TOPDIR</filename></link>
|
||||
variable points to the Build Directory.</para>
|
||||
|
||||
<para>You have a lot of flexibility when creating the Build
|
||||
Directory.
|
||||
Following are some examples that show how to create the
|
||||
directory.
|
||||
The examples assume your
|
||||
<link linkend='source-directory'>Source Directory</link> is
|
||||
named <filename>poky</filename>:
|
||||
<itemizedlist>
|
||||
<listitem><para>Create the Build Directory inside your
|
||||
Source Directory and let the name of the Build
|
||||
Directory default to <filename>build</filename>:
|
||||
<literallayout class='monospaced'>
|
||||
$ cd $HOME/poky
|
||||
$ source &OE_INIT_FILE;
|
||||
</literallayout>
|
||||
</para></listitem>
|
||||
<listitem><para>Create the Build Directory inside your
|
||||
home directory and specifically name it
|
||||
<filename>test-builds</filename>:
|
||||
<literallayout class='monospaced'>
|
||||
$ cd $HOME
|
||||
$ source poky/&OE_INIT_FILE; test-builds
|
||||
</literallayout>
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
Provide a directory path and specifically name the
|
||||
Build Directory.
|
||||
Any intermediate folders in the pathname must exist.
|
||||
This next example creates a Build Directory named
|
||||
<filename>YP-&POKYVERSION;</filename>
|
||||
in your home directory within the existing
|
||||
directory <filename>mybuilds</filename>:
|
||||
<literallayout class='monospaced'>
|
||||
$ cd $HOME
|
||||
$ source $HOME/poky/&OE_INIT_FILE; $HOME/mybuilds/YP-&POKYVERSION;
|
||||
</literallayout>
|
||||
</para></listitem>
|
||||
</itemizedlist>
|
||||
<note>
|
||||
By default, the Build Directory contains
|
||||
<link linkend='var-TMPDIR'><filename>TMPDIR</filename></link>,
|
||||
which is a temporary directory the build system uses for
|
||||
its work.
|
||||
<filename>TMPDIR</filename> cannot be under NFS.
|
||||
Thus, by default, the Build Directory cannot be under NFS.
|
||||
However, if you need the Build Directory to be under NFS,
|
||||
you can set this up by setting <filename>TMPDIR</filename>
|
||||
in your <filename>local.conf</filename> file
|
||||
to use a local drive.
|
||||
Doing so effectively separates <filename>TMPDIR</filename>
|
||||
from <filename>TOPDIR</filename>, which is the Build
|
||||
Directory.
|
||||
</note>
|
||||
</para></listitem>
|
||||
<listitem><para id='hardware-build-system-term'>
|
||||
<emphasis>Build Host:</emphasis>
|
||||
The system used to build images in a Yocto Project
|
||||
Development environment.
|
||||
The build system is sometimes referred to as the
|
||||
<firstterm>development host</firstterm>.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<emphasis>Classes:</emphasis>
|
||||
Files that provide for logic encapsulation and inheritance so
|
||||
that commonly used patterns can be defined once and then
|
||||
easily used in multiple recipes.
|
||||
For reference information on the Yocto Project classes, see the
|
||||
"<link linkend='ref-classes'>Classes</link>" chapter.
|
||||
Class files end with the <filename>.bbclass</filename>
|
||||
filename extension.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<emphasis>Configuration File:</emphasis>
|
||||
Files that hold global definitions of variables,
|
||||
user-defined variables, and hardware configuration
|
||||
information.
|
||||
These files tell the OpenEmbedded build system what to
|
||||
build and what to put into the image to support a
|
||||
particular platform.</para>
|
||||
|
||||
<para>Configuration files end with a <filename>.conf</filename>
|
||||
filename extension.
|
||||
The <filename>conf/local.conf</filename> configuration file in
|
||||
the
|
||||
<link linkend='build-directory'>Build Directory</link>
|
||||
contains user-defined variables that affect every build.
|
||||
The <filename>meta-poky/conf/distro/poky.conf</filename>
|
||||
configuration file defines Yocto "distro" configuration
|
||||
variables used only when building with this policy.
|
||||
Machine configuration files, which
|
||||
are located throughout the
|
||||
<link linkend='source-directory'>Source Directory</link>, define
|
||||
variables for specific hardware and are only used when building
|
||||
for that target (e.g. the
|
||||
<filename>machine/beaglebone.conf</filename> configuration
|
||||
file defines variables for the Texas Instruments ARM Cortex-A8
|
||||
development board).
|
||||
</para></listitem>
|
||||
<listitem><para id='term-container-layer'>
|
||||
<emphasis>Container Layer:</emphasis>
|
||||
Layers that hold other layers.
|
||||
An example of a container layer is OpenEmbedded's
|
||||
<ulink url='https://github.com/openembedded/meta-openembedded'><filename>meta-openembedded</filename></ulink>
|
||||
layer.
|
||||
The <filename>meta-openembedded</filename> layer contains
|
||||
many <filename>meta-*</filename> layers.
|
||||
</para></listitem>
|
||||
<listitem><para id='cross-development-toolchain'>
|
||||
<emphasis>Cross-Development Toolchain:</emphasis>
|
||||
In general, a cross-development toolchain is a collection of
|
||||
software development tools and utilities that run on one
|
||||
architecture and allow you to develop software for a
|
||||
different, or targeted, architecture.
|
||||
These toolchains contain cross-compilers, linkers, and
|
||||
debuggers that are specific to the target architecture.</para>
|
||||
|
||||
<para>The Yocto Project supports two different cross-development
|
||||
toolchains:
|
||||
<itemizedlist>
|
||||
<listitem><para>
|
||||
A toolchain only used by and within
|
||||
BitBake when building an image for a target
|
||||
architecture.
|
||||
</para></listitem>
|
||||
<listitem><para>A relocatable toolchain used outside of
|
||||
BitBake by developers when developing applications
|
||||
that will run on a targeted device.
|
||||
</para></listitem>
|
||||
</itemizedlist></para>
|
||||
|
||||
<para>Creation of these toolchains is simple and automated.
|
||||
For information on toolchain concepts as they apply to the
|
||||
Yocto Project, see the
|
||||
"<ulink url='&YOCTO_DOCS_OM_URL;#cross-development-toolchain-generation'>Cross-Development Toolchain Generation</ulink>"
|
||||
section in the Yocto Project Overview and Concepts Manual.
|
||||
You can also find more information on using the
|
||||
relocatable toolchain in the
|
||||
<ulink url='&YOCTO_DOCS_SDK_URL;'>Yocto Project Application Development and the Extensible Software Development Kit (eSDK)</ulink>
|
||||
manual.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<emphasis>Extensible Software Development Kit (eSDK):</emphasis>
|
||||
A custom SDK for application developers.
|
||||
This eSDK allows developers to incorporate their library
|
||||
and programming changes back into the image to make
|
||||
their code available to other application developers.</para>
|
||||
|
||||
<para>For information on the eSDK, see the
|
||||
<ulink url='&YOCTO_DOCS_SDK_URL;'>Yocto Project Application Development and the Extensible Software Development Kit (eSDK)</ulink>
|
||||
manual.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<emphasis>Image:</emphasis>
|
||||
An image is an artifact of the BitBake build process given
|
||||
a collection of recipes and related Metadata.
|
||||
Images are the binary output that run on specific hardware or
|
||||
QEMU and are used for specific use-cases.
|
||||
For a list of the supported image types that the Yocto Project
|
||||
provides, see the
|
||||
"<link linkend='ref-images'>Images</link>"
|
||||
chapter.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<emphasis>Layer:</emphasis>
|
||||
A collection of related recipes.
|
||||
Layers allow you to consolidate related metadata to
|
||||
customize your build.
|
||||
Layers also isolate information used when building
|
||||
for multiple architectures.
|
||||
Layers are hierarchical in their ability to override
|
||||
previous specifications.
|
||||
You can include any number of available layers from the
|
||||
Yocto Project and customize the build by adding your
|
||||
layers after them.
|
||||
You can search the Layer Index for layers used within
|
||||
Yocto Project.</para>
|
||||
|
||||
<para>For introductory information on layers, see the
|
||||
"<ulink url='&YOCTO_DOCS_OM_URL;#the-yocto-project-layer-model'>The Yocto Project Layer Model</ulink>"
|
||||
section in the Yocto Project Overview and Concepts Manual.
|
||||
For more detailed information on layers, see the
|
||||
"<ulink url='&YOCTO_DOCS_DEV_URL;#understanding-and-creating-layers'>Understanding and Creating Layers</ulink>"
|
||||
section in the Yocto Project Development Tasks Manual.
|
||||
For a discussion specifically on BSP Layers, see the
|
||||
"<ulink url='&YOCTO_DOCS_BSP_URL;#bsp-layers'>BSP Layers</ulink>"
|
||||
section in the Yocto Project Board Support Packages (BSP)
|
||||
Developer's Guide.
|
||||
</para></listitem>
|
||||
<listitem><para id='metadata'>
|
||||
<emphasis>Metadata:</emphasis>
|
||||
A key element of the Yocto Project is the Metadata that
|
||||
is used to construct a Linux distribution and is contained
|
||||
in the files that the
|
||||
<link linkend='build-system-term'>OpenEmbedded build system</link>
|
||||
parses when building an image.
|
||||
In general, Metadata includes recipes, configuration
|
||||
files, and other information that refers to the build
|
||||
instructions themselves, as well as the data used to
|
||||
control what things get built and the effects of the
|
||||
build.
|
||||
Metadata also includes commands and data used to
|
||||
indicate what versions of software are used, from
|
||||
where they are obtained, and changes or additions to the
|
||||
software itself (patches or auxiliary files) that
|
||||
are used to fix bugs or customize the software for use
|
||||
in a particular situation.
|
||||
OpenEmbedded-Core is an important set of validated
|
||||
metadata.</para>
|
||||
|
||||
<para>In the context of the kernel ("kernel Metadata"), the
|
||||
term refers to the kernel config fragments and features
|
||||
contained in the
|
||||
<ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi/yocto-kernel-cache'><filename>yocto-kernel-cache</filename></ulink>
|
||||
Git repository.
|
||||
</para></listitem>
|
||||
<listitem><para id='oe-core'>
|
||||
<emphasis>OpenEmbedded-Core (OE-Core):</emphasis>
|
||||
OE-Core is metadata comprised of foundational recipes,
|
||||
classes, and associated files that are meant to be
|
||||
common among many different OpenEmbedded-derived systems,
|
||||
including the Yocto Project.
|
||||
OE-Core is a curated subset of an original repository
|
||||
developed by the OpenEmbedded community that has been
|
||||
pared down into a smaller, core set of continuously
|
||||
validated recipes.
|
||||
The result is a tightly controlled and an quality-assured
|
||||
core set of recipes.</para>
|
||||
|
||||
<para>You can see the Metadata in the
|
||||
<filename>meta</filename> directory of the Yocto Project
|
||||
<ulink url='http://git.yoctoproject.org/cgit/cgit.cgi'>Source Repositories</ulink>.
|
||||
</para></listitem>
|
||||
<listitem><para id='build-system-term'>
|
||||
<emphasis>OpenEmbedded Build System:</emphasis>
|
||||
The build system specific to the Yocto Project.
|
||||
The OpenEmbedded build system is based on another project known
|
||||
as "Poky", which uses
|
||||
<link linkend='bitbake-term'>BitBake</link> as the task
|
||||
executor.
|
||||
Throughout the Yocto Project documentation set, the
|
||||
OpenEmbedded build system is sometimes referred to simply
|
||||
as "the build system".
|
||||
If other build systems, such as a host or target build system
|
||||
are referenced, the documentation clearly states the
|
||||
difference.
|
||||
<note>
|
||||
For some historical information about Poky, see the
|
||||
<link linkend='poky'>Poky</link> term.
|
||||
</note>
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<emphasis>Package:</emphasis>
|
||||
In the context of the Yocto Project, this term refers to a
|
||||
recipe's packaged output produced by BitBake (i.e. a
|
||||
"baked recipe").
|
||||
A package is generally the compiled binaries produced from the
|
||||
recipe's sources.
|
||||
You "bake" something by running it through BitBake.</para>
|
||||
|
||||
<para>It is worth noting that the term "package" can,
|
||||
in general, have subtle meanings.
|
||||
For example, the packages referred to in the
|
||||
"<link linkend='required-packages-for-the-build-host'>Required Packages for the Build Host</link>"
|
||||
section are compiled binaries that, when installed, add
|
||||
functionality to your Linux distribution.</para>
|
||||
|
||||
<para>Another point worth noting is that historically within
|
||||
the Yocto Project, recipes were referred to as packages - thus,
|
||||
the existence of several BitBake variables that are seemingly
|
||||
mis-named,
|
||||
(e.g. <link linkend='var-PR'><filename>PR</filename></link>,
|
||||
<link linkend='var-PV'><filename>PV</filename></link>, and
|
||||
<link linkend='var-PE'><filename>PE</filename></link>).
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<emphasis>Package Groups:</emphasis>
|
||||
Arbitrary groups of software Recipes.
|
||||
You use package groups to hold recipes that, when built,
|
||||
usually accomplish a single task.
|
||||
For example, a package group could contain the recipes for a
|
||||
company's proprietary or value-add software.
|
||||
Or, the package group could contain the recipes that enable
|
||||
graphics.
|
||||
A package group is really just another recipe.
|
||||
Because package group files are recipes, they end with the
|
||||
<filename>.bb</filename> filename extension.
|
||||
</para></listitem>
|
||||
<listitem><para id='poky'>
|
||||
<emphasis>Poky:</emphasis>
|
||||
Poky, which is pronounced <emphasis>Pock</emphasis>-ee,
|
||||
is a reference embedded distribution and a reference
|
||||
test configuration.
|
||||
Poky provides the following:
|
||||
<itemizedlist>
|
||||
<listitem><para>
|
||||
A base-level functional distro used to illustrate
|
||||
how to customize a distribution.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
A means by which to test the Yocto Project
|
||||
components (i.e. Poky is used to validate
|
||||
the Yocto Project).
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
A vehicle through which you can download
|
||||
the Yocto Project.
|
||||
</para></listitem>
|
||||
</itemizedlist>
|
||||
Poky is not a product level distro.
|
||||
Rather, it is a good starting point for customization.
|
||||
<note>
|
||||
Poky began as an open-source
|
||||
project initially developed by OpenedHand.
|
||||
OpenedHand developed Poky from the existing
|
||||
OpenEmbedded build system to create a commercially
|
||||
supportable build system for embedded Linux.
|
||||
After Intel Corporation acquired OpenedHand, the
|
||||
poky project became the basis for the Yocto Project's
|
||||
build system.
|
||||
</note>
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<emphasis>Recipe:</emphasis>
|
||||
A set of instructions for building packages.
|
||||
A recipe describes where you get source code, which patches
|
||||
to apply, how to configure the source, how to compile it and so on.
|
||||
Recipes also describe dependencies for libraries or for other
|
||||
recipes.
|
||||
Recipes represent the logical unit of execution, the software
|
||||
to build, the images to build, and use the
|
||||
<filename>.bb</filename> file extension.
|
||||
</para></listitem>
|
||||
<listitem><para id='reference-kit-term'>
|
||||
<emphasis>Reference Kit:</emphasis>
|
||||
A working example of a system, which includes a
|
||||
<link linkend='board-support-package-bsp-term'>BSP</link>
|
||||
as well as a
|
||||
<link linkend='hardware-build-system-term'>build host</link>
|
||||
and other components, that can work on specific hardware.
|
||||
</para></listitem>
|
||||
<listitem>
|
||||
<para id='source-directory'>
|
||||
<emphasis>Source Directory:</emphasis>
|
||||
This term refers to the directory structure created as a result
|
||||
of creating a local copy of the <filename>poky</filename> Git
|
||||
repository <filename>git://git.yoctoproject.org/poky</filename>
|
||||
or expanding a released <filename>poky</filename> tarball.
|
||||
<note>
|
||||
Creating a local copy of the <filename>poky</filename>
|
||||
Git repository is the recommended method for setting up
|
||||
your Source Directory.
|
||||
</note>
|
||||
Sometimes you might hear the term "poky directory" used to refer
|
||||
to this directory structure.
|
||||
<note>
|
||||
The OpenEmbedded build system does not support file or
|
||||
directory names that contain spaces.
|
||||
Be sure that the Source Directory you use does not contain
|
||||
these types of names.
|
||||
</note></para>
|
||||
|
||||
<para>The Source Directory contains BitBake, Documentation,
|
||||
Metadata and other files that all support the Yocto Project.
|
||||
Consequently, you must have the Source Directory in place on
|
||||
your development system in order to do any development using
|
||||
the Yocto Project.</para>
|
||||
|
||||
<para>When you create a local copy of the Git repository, you
|
||||
can name the repository anything you like.
|
||||
Throughout much of the documentation, "poky"
|
||||
is used as the name of the top-level folder of the local copy of
|
||||
the poky Git repository.
|
||||
So, for example, cloning the <filename>poky</filename> Git
|
||||
repository results in a local Git repository whose top-level
|
||||
folder is also named "poky".</para>
|
||||
|
||||
<para>While it is not recommended that you use tarball expansion
|
||||
to set up the Source Directory, if you do, the top-level
|
||||
directory name of the Source Directory is derived from the
|
||||
Yocto Project release tarball.
|
||||
For example, downloading and unpacking
|
||||
<filename>&YOCTO_POKY_TARBALL;</filename> results in a
|
||||
Source Directory whose root folder is named
|
||||
<filename>&YOCTO_POKY;</filename>.</para>
|
||||
|
||||
<para>It is important to understand the differences between the
|
||||
Source Directory created by unpacking a released tarball as
|
||||
compared to cloning
|
||||
<filename>git://git.yoctoproject.org/poky</filename>.
|
||||
When you unpack a tarball, you have an exact copy of the files
|
||||
based on the time of release - a fixed release point.
|
||||
Any changes you make to your local files in the Source Directory
|
||||
are on top of the release and will remain local only.
|
||||
On the other hand, when you clone the <filename>poky</filename>
|
||||
Git repository, you have an active development repository with
|
||||
access to the upstream repository's branches and tags.
|
||||
In this case, any local changes you make to the local
|
||||
Source Directory can be later applied to active development
|
||||
branches of the upstream <filename>poky</filename> Git
|
||||
repository.</para>
|
||||
|
||||
<para>For more information on concepts related to Git
|
||||
repositories, branches, and tags, see the
|
||||
"<ulink url='&YOCTO_DOCS_OM_URL;#repositories-tags-and-branches'>Repositories, Tags, and Branches</ulink>"
|
||||
section in the Yocto Project Overview and Concepts Manual.
|
||||
</para></listitem>
|
||||
<listitem><para><emphasis>Task:</emphasis>
|
||||
A unit of execution for BitBake (e.g.
|
||||
<link linkend='ref-tasks-compile'><filename>do_compile</filename></link>,
|
||||
<link linkend='ref-tasks-fetch'><filename>do_fetch</filename></link>,
|
||||
<link linkend='ref-tasks-patch'><filename>do_patch</filename></link>,
|
||||
and so forth).
|
||||
</para></listitem>
|
||||
<listitem><para id='toaster-term'><emphasis>Toaster:</emphasis>
|
||||
A web interface to the Yocto Project's
|
||||
<link linkend='build-system-term'>OpenEmbedded Build System</link>.
|
||||
The interface enables you to configure and run your builds.
|
||||
Information about builds is collected and stored in a database.
|
||||
For information on Toaster, see the
|
||||
<ulink url='&YOCTO_DOCS_TOAST_URL;'>Toaster User Manual</ulink>.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<emphasis>Upstream:</emphasis>
|
||||
A reference to source code or repositories
|
||||
that are not local to the development system but located in a
|
||||
master area that is controlled by the maintainer of the source
|
||||
code.
|
||||
For example, in order for a developer to work on a particular
|
||||
piece of code, they need to first get a copy of it from an
|
||||
"upstream" source.
|
||||
</para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
</chapter>
|
||||
<!--
|
||||
vim: expandtab tw=80 ts=4
|
||||
-->
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,199 +0,0 @@
|
||||
<!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; ] >
|
||||
<!--SPDX-License-Identifier: CC-BY-2.0-UK-->
|
||||
|
||||
<chapter id='ref-varlocality'>
|
||||
<title>Variable Context</title>
|
||||
|
||||
<para>
|
||||
While you can use most variables in almost any context such as
|
||||
<filename>.conf</filename>, <filename>.bbclass</filename>,
|
||||
<filename>.inc</filename>, and <filename>.bb</filename> files,
|
||||
some variables are often associated with a particular locality or context.
|
||||
This chapter describes some common associations.
|
||||
</para>
|
||||
|
||||
<section id='ref-varlocality-configuration'>
|
||||
<title>Configuration</title>
|
||||
|
||||
<para>
|
||||
The following subsections provide lists of variables whose context is
|
||||
configuration: distribution, machine, and local.
|
||||
</para>
|
||||
|
||||
<section id='ref-varlocality-config-distro'>
|
||||
<title>Distribution (Distro)</title>
|
||||
|
||||
<para>
|
||||
This section lists variables whose configuration context is the
|
||||
distribution, or distro.
|
||||
<itemizedlist>
|
||||
<listitem><para><filename><link linkend='var-DISTRO'>DISTRO</link></filename></para></listitem>
|
||||
<listitem><para><filename><link linkend='var-DISTRO_NAME'>DISTRO_NAME</link></filename>
|
||||
</para></listitem>
|
||||
<listitem><para><filename><link linkend='var-DISTRO_VERSION'>DISTRO_VERSION</link>
|
||||
</filename></para></listitem>
|
||||
<listitem><para><filename><link linkend='var-MAINTAINER'>MAINTAINER</link></filename>
|
||||
</para></listitem>
|
||||
<listitem><para><filename><link linkend='var-PACKAGE_CLASSES'>PACKAGE_CLASSES</link>
|
||||
</filename></para></listitem>
|
||||
<listitem><para><filename><link linkend='var-TARGET_OS'>TARGET_OS</link></filename>
|
||||
</para></listitem>
|
||||
<listitem><para><filename><link linkend='var-TARGET_FPU'>TARGET_FPU</link></filename>
|
||||
</para></listitem>
|
||||
<listitem><para><filename><link linkend='var-TCMODE'>TCMODE</link></filename>
|
||||
</para></listitem>
|
||||
<listitem><para><filename><link linkend='var-TCLIBC'>TCLIBC</link></filename>
|
||||
</para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section id='ref-varlocality-config-machine'>
|
||||
<title>Machine</title>
|
||||
|
||||
<para>
|
||||
This section lists variables whose configuration context is the
|
||||
machine.
|
||||
<itemizedlist>
|
||||
<listitem><para><filename><link linkend='var-TARGET_ARCH'>TARGET_ARCH</link></filename>
|
||||
</para></listitem>
|
||||
<listitem><para><filename><link linkend='var-SERIAL_CONSOLES'>SERIAL_CONSOLES</link>
|
||||
</filename></para></listitem>
|
||||
<listitem><para><filename><link linkend='var-PACKAGE_EXTRA_ARCHS'>PACKAGE_EXTRA_ARCHS</link>
|
||||
</filename></para></listitem>
|
||||
<listitem><para><filename><link linkend='var-IMAGE_FSTYPES'>IMAGE_FSTYPES</link>
|
||||
</filename></para></listitem>
|
||||
<listitem><para><filename><link linkend='var-MACHINE_FEATURES'>MACHINE_FEATURES</link>
|
||||
</filename></para></listitem>
|
||||
<listitem><para><filename><link linkend='var-MACHINE_EXTRA_RDEPENDS'>MACHINE_EXTRA_RDEPENDS
|
||||
</link></filename></para></listitem>
|
||||
<listitem><para><filename><link linkend='var-MACHINE_EXTRA_RRECOMMENDS'>MACHINE_EXTRA_RRECOMMENDS
|
||||
</link></filename></para></listitem>
|
||||
<listitem><para><filename><link linkend='var-MACHINE_ESSENTIAL_EXTRA_RDEPENDS'>MACHINE_ESSENTIAL_EXTRA_RDEPENDS
|
||||
</link></filename></para></listitem>
|
||||
<listitem><para><filename><link linkend='var-MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS'>
|
||||
MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS</link></filename></para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section id='ref-varlocality-config-local'>
|
||||
<title>Local</title>
|
||||
|
||||
<para>
|
||||
This section lists variables whose configuration context is the
|
||||
local configuration through the <filename>local.conf</filename>
|
||||
file.
|
||||
<itemizedlist>
|
||||
<listitem><para><filename><link linkend='var-DISTRO'>DISTRO</link></filename>
|
||||
</para></listitem>
|
||||
<listitem><para><filename><link linkend='var-MACHINE'>MACHINE</link></filename>
|
||||
</para></listitem>
|
||||
<listitem><para><filename><link linkend='var-DL_DIR'>DL_DIR</link></filename>
|
||||
</para></listitem>
|
||||
<listitem><para><filename><link linkend='var-BBFILES'>BBFILES</link></filename>
|
||||
</para></listitem>
|
||||
<listitem><para><filename><link linkend='var-EXTRA_IMAGE_FEATURES'>EXTRA_IMAGE_FEATURES
|
||||
</link></filename></para></listitem>
|
||||
<listitem><para><filename><link linkend='var-PACKAGE_CLASSES'>PACKAGE_CLASSES</link>
|
||||
</filename></para></listitem>
|
||||
<listitem><para><filename><link linkend='var-BB_NUMBER_THREADS'>BB_NUMBER_THREADS</link>
|
||||
</filename></para></listitem>
|
||||
<listitem><para><filename><link linkend='var-BBINCLUDELOGS'>BBINCLUDELOGS</link>
|
||||
</filename></para></listitem>
|
||||
<listitem><para><filename><link linkend='var-ENABLE_BINARY_LOCALE_GENERATION'>
|
||||
ENABLE_BINARY_LOCALE_GENERATION</link></filename></para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<section id='ref-varlocality-recipes'>
|
||||
<title>Recipes</title>
|
||||
|
||||
<para>
|
||||
The following subsections provide lists of variables whose context is
|
||||
recipes: required, dependencies, path, and extra build information.
|
||||
</para>
|
||||
|
||||
<section id='ref-varlocality-recipe-required'>
|
||||
<title>Required</title>
|
||||
|
||||
<para>
|
||||
This section lists variables that are required for recipes.
|
||||
<itemizedlist>
|
||||
<listitem><para><filename><link linkend='var-LICENSE'>LICENSE</link>
|
||||
</filename></para></listitem>
|
||||
<listitem><para><filename><link linkend='var-LIC_FILES_CHKSUM'>LIC_FILES_CHKSUM</link>
|
||||
</filename></para></listitem>
|
||||
<listitem><para><filename><link linkend='var-SRC_URI'>SRC_URI</link></filename> - used
|
||||
in recipes that fetch local or remote files.
|
||||
</para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section id='ref-varlocality-recipe-dependencies'>
|
||||
<title>Dependencies</title>
|
||||
|
||||
<para>
|
||||
This section lists variables that define recipe dependencies.
|
||||
<itemizedlist>
|
||||
<listitem><para><filename><link linkend='var-DEPENDS'>DEPENDS</link>
|
||||
</filename></para></listitem>
|
||||
<listitem><para><filename><link linkend='var-RDEPENDS'>RDEPENDS</link>
|
||||
</filename></para></listitem>
|
||||
<listitem><para><filename><link linkend='var-RRECOMMENDS'>RRECOMMENDS</link>
|
||||
</filename></para></listitem>
|
||||
<listitem><para><filename><link linkend='var-RCONFLICTS'>RCONFLICTS</link>
|
||||
</filename></para></listitem>
|
||||
<listitem><para><filename><link linkend='var-RREPLACES'>RREPLACES</link>
|
||||
</filename></para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section id='ref-varlocality-recipe-paths'>
|
||||
<title>Paths</title>
|
||||
|
||||
<para>
|
||||
This section lists variables that define recipe paths.
|
||||
<itemizedlist>
|
||||
<listitem><para><filename><link linkend='var-WORKDIR'>WORKDIR</link>
|
||||
</filename></para></listitem>
|
||||
<listitem><para><filename><link linkend='var-S'>S</link>
|
||||
</filename></para></listitem>
|
||||
<listitem><para><filename><link linkend='var-FILES'>FILES</link>
|
||||
</filename></para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section id='ref-varlocality-recipe-build'>
|
||||
<title>Extra Build Information</title>
|
||||
|
||||
<para>
|
||||
This section lists variables that define extra build information for recipes.
|
||||
<itemizedlist>
|
||||
<listitem><para><filename><link linkend='var-DEFAULT_PREFERENCE'>DEFAULT_PREFERENCE
|
||||
</link></filename></para></listitem>
|
||||
<listitem><para><filename><link linkend='var-EXTRA_OECMAKE'>EXTRA_OECMAKE</link>
|
||||
</filename></para></listitem>
|
||||
<listitem><para><filename><link linkend='var-EXTRA_OECONF'>EXTRA_OECONF</link>
|
||||
</filename></para></listitem>
|
||||
<listitem><para><filename><link linkend='var-EXTRA_OEMAKE'>EXTRA_OEMAKE</link>
|
||||
</filename></para></listitem>
|
||||
<listitem><para><filename><link linkend='var-PACKAGECONFIG_CONFARGS'>PACKAGECONFIG_CONFARGS</link>
|
||||
</filename></para></listitem>
|
||||
<listitem><para><filename><link linkend='var-PACKAGES'>PACKAGES</link></filename>
|
||||
</para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
</section>
|
||||
</section>
|
||||
</chapter>
|
||||
<!--
|
||||
vim: expandtab tw=80 ts=4 spell spelllang=en_gb
|
||||
-->
|
||||
@@ -1,298 +0,0 @@
|
||||
<!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; ] >
|
||||
<!--SPDX-License-Identifier: CC-BY-2.0-UK-->
|
||||
|
||||
<chapter id='resources'>
|
||||
<title>Contributions and Additional Information</title>
|
||||
|
||||
<section id='resources-intro'>
|
||||
<title>Introduction</title>
|
||||
<para>
|
||||
The Yocto Project team is happy for people to experiment with the
|
||||
Yocto Project.
|
||||
A number of places exist to find help if you run into difficulties
|
||||
or find bugs.
|
||||
This presents information about contributing and participating in
|
||||
the Yocto Project.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section id='resources-contributions'>
|
||||
<title>Contributions</title>
|
||||
|
||||
<para>
|
||||
The Yocto Project gladly accepts contributions.
|
||||
You can submit changes to the project either by creating and sending
|
||||
pull requests,
|
||||
or by submitting patches through email.
|
||||
For information on how to do both as well as information on how
|
||||
to identify the maintainer for each area of code, see the
|
||||
"<ulink url='&YOCTO_DOCS_DEV_URL;#how-to-submit-a-change'>Submitting a Change to the Yocto Project</ulink>"
|
||||
section in the Yocto Project Development Tasks Manual.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section id='resources-bugtracker'>
|
||||
<title>Yocto Project Bugzilla</title>
|
||||
|
||||
<para>
|
||||
The Yocto Project uses its own implementation of
|
||||
<ulink url='&YOCTO_BUGZILLA_URL;'>Bugzilla</ulink> to
|
||||
track defects (bugs).
|
||||
Implementations of Bugzilla work well for group development because
|
||||
they track bugs and code changes, can be used to communicate changes
|
||||
and problems with developers, can be used to submit and review patches,
|
||||
and can be used to manage quality assurance.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Sometimes it is helpful to submit, investigate, or track a bug against
|
||||
the Yocto Project itself (e.g. when discovering an issue with some
|
||||
component of the build system that acts contrary to the documentation
|
||||
or your expectations).
|
||||
</para>
|
||||
|
||||
<para>
|
||||
A general procedure and guidelines exist for when you use Bugzilla to
|
||||
submit a bug.
|
||||
For information on how to use Bugzilla to submit a bug against the
|
||||
Yocto Project, see the following:
|
||||
<itemizedlist>
|
||||
<listitem><para>
|
||||
The
|
||||
"<ulink url='&YOCTO_DOCS_DEV_URL;#submitting-a-defect-against-the-yocto-project'>Submitting a Defect Against the Yocto Project</ulink>"
|
||||
section in the Yocto Project Development Tasks Manual.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
The Yocto Project
|
||||
<ulink url='&YOCTO_WIKI_URL;/wiki/Bugzilla_Configuration_and_Bug_Tracking'>Bugzilla wiki page</ulink>
|
||||
</para></listitem>
|
||||
</itemizedlist>
|
||||
For information on Bugzilla in general, see
|
||||
<ulink url='http://www.bugzilla.org/about/'></ulink>.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section id='resources-mailinglist'>
|
||||
<title>Mailing lists</title>
|
||||
|
||||
<para>
|
||||
A number of mailing lists maintained by the Yocto Project exist
|
||||
as well as related OpenEmbedded mailing lists for discussion,
|
||||
patch submission and announcements.
|
||||
To subscribe to one of the following mailing lists, click on the
|
||||
appropriate URL in the following list and follow the instructions:
|
||||
<itemizedlist>
|
||||
<listitem><para><ulink url='&YOCTO_LISTS_URL;/listinfo/yocto'></ulink> -
|
||||
General Yocto Project discussion mailing list. </para></listitem>
|
||||
<listitem><para><ulink url='&OE_LISTS_URL;/listinfo/openembedded-core'></ulink> -
|
||||
Discussion mailing list about OpenEmbedded-Core (the core metadata).</para></listitem>
|
||||
<listitem><para><ulink url='&OE_LISTS_URL;/listinfo/openembedded-devel'></ulink> -
|
||||
Discussion mailing list about OpenEmbedded.</para></listitem>
|
||||
<listitem><para><ulink url='&OE_LISTS_URL;/listinfo/bitbake-devel'></ulink> -
|
||||
Discussion mailing list about the
|
||||
<link linkend='bitbake-term'>BitBake</link>
|
||||
build tool.</para></listitem>
|
||||
<listitem><para><ulink url='&YOCTO_LISTS_URL;/listinfo/poky'></ulink> -
|
||||
Discussion mailing list about
|
||||
<link linkend='poky'>Poky</link>.
|
||||
</para></listitem>
|
||||
<listitem><para><ulink url='&YOCTO_LISTS_URL;/listinfo/yocto-announce'></ulink> -
|
||||
Mailing list to receive official Yocto Project release and milestone
|
||||
announcements.</para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
For more Yocto Project-related mailing lists, see the
|
||||
<ulink url='&YOCTO_HOME_URL;'>Yocto Project Website</ulink>.
|
||||
</section>
|
||||
|
||||
<section id='resources-irc'>
|
||||
<title>Internet Relay Chat (IRC)</title>
|
||||
|
||||
<para>
|
||||
Two IRC channels on freenode are available for the Yocto Project and Poky discussions:
|
||||
<itemizedlist>
|
||||
<listitem><para><filename>#yocto</filename></para></listitem>
|
||||
<listitem><para><filename>#poky</filename></para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section id='resources-links-and-related-documentation'>
|
||||
<title>Links and Related Documentation</title>
|
||||
|
||||
<para>
|
||||
Here is a list of resources you might find helpful:
|
||||
<itemizedlist>
|
||||
<listitem><para>
|
||||
<emphasis>
|
||||
<ulink url='&YOCTO_HOME_URL;'>The Yocto Project website</ulink>:
|
||||
</emphasis> The home site for the Yocto Project.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<emphasis>
|
||||
<ulink url='&YOCTO_WIKI_URL;/wiki/Main_Page'>The Yocto Project Main Wiki Page</ulink>:
|
||||
</emphasis>
|
||||
The main wiki page for the Yocto Project.
|
||||
This page contains information about project planning,
|
||||
release engineering, QA & automation, a reference
|
||||
site map, and other resources related to the Yocto Project.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<emphasis>
|
||||
<ulink url='&OE_HOME_URL;'>OpenEmbedded</ulink>:
|
||||
</emphasis>
|
||||
The build system used by the Yocto Project.
|
||||
This project is the upstream, generic, embedded distribution
|
||||
from which the Yocto Project derives its build system (Poky)
|
||||
and to which it contributes.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<emphasis>
|
||||
<ulink url='http://www.openembedded.org/wiki/BitBake'>
|
||||
BitBake</ulink>:
|
||||
</emphasis> The tool used to process metadata.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<emphasis>
|
||||
<ulink url='&YOCTO_DOCS_BB_URL;'>BitBake User Manual</ulink>:
|
||||
</emphasis>
|
||||
A comprehensive guide to the BitBake tool.
|
||||
If you want information on BitBake, see this manual.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<emphasis>
|
||||
<ulink url='&YOCTO_DOCS_BRIEF_URL;'>Yocto Project Quick Build</ulink>:
|
||||
</emphasis>
|
||||
This short document lets you experience building an image using
|
||||
the Yocto Project without having to understand any concepts or
|
||||
details.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<emphasis>
|
||||
<ulink url='&YOCTO_DOCS_OM_URL;'>Yocto Project Overview and Concepts Manual</ulink>:
|
||||
</emphasis>
|
||||
This manual provides overview and conceptual information
|
||||
about the Yocto Project.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<emphasis>
|
||||
<ulink url='&YOCTO_DOCS_DEV_URL;'>Yocto Project Development Tasks Manual</ulink>:
|
||||
</emphasis>
|
||||
This manual is a "how-to" guide that presents procedures
|
||||
useful to both application and system developers who use the
|
||||
Yocto Project.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<emphasis>
|
||||
<ulink url='&YOCTO_DOCS_SDK_URL;'>Yocto Project Application Development and the Extensible Software Development Kit (eSDK)</ulink>
|
||||
manual:</emphasis>
|
||||
This guide provides information that lets you get going
|
||||
with the standard or extensible SDK.
|
||||
An SDK, with its cross-development toolchains, allows you
|
||||
to develop projects inside or outside of the Yocto Project
|
||||
environment.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<emphasis>
|
||||
<ulink url='&YOCTO_DOCS_BSP_URL;'>Yocto Project Board Support Package (BSP) Developer's Guide</ulink>:
|
||||
</emphasis>
|
||||
This guide defines the structure for BSP components.
|
||||
Having a commonly understood structure encourages
|
||||
standardization.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<emphasis>
|
||||
<ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;'>Yocto Project Linux Kernel Development Manual</ulink>:
|
||||
</emphasis>
|
||||
This manual describes how to work with Linux Yocto kernels as
|
||||
well as provides a bit of conceptual information on the
|
||||
construction of the Yocto Linux kernel tree.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<emphasis>
|
||||
<ulink url='&YOCTO_DOCS_REF_URL;'>Yocto Project Reference Manual</ulink>:
|
||||
</emphasis>
|
||||
This manual provides reference material such as variable,
|
||||
task, and class descriptions.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<emphasis>
|
||||
<ulink url='&YOCTO_DOCS_MM_URL;'>Yocto Project Mega-Manual</ulink>:
|
||||
</emphasis>
|
||||
This manual is simply a single HTML file comprised of the
|
||||
bulk of the Yocto Project manuals.
|
||||
The Mega-Manual primarily exists as a vehicle by which you can
|
||||
easily search for phrases and terms used in the Yocto Project
|
||||
documentation set.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<emphasis>
|
||||
<ulink url='&YOCTO_DOCS_PROF_URL;'>Yocto Project Profiling and Tracing Manual</ulink>:
|
||||
</emphasis>
|
||||
This manual presents a set of common and generally useful
|
||||
tracing and profiling schemes along with their applications
|
||||
(as appropriate) to each tool.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<emphasis>
|
||||
<ulink url='&YOCTO_DOCS_TOAST_URL;'>Toaster User Manual</ulink>:
|
||||
</emphasis>
|
||||
This manual introduces and describes how to set up and use
|
||||
Toaster.
|
||||
Toaster is an Application Programming Interface (API) and
|
||||
web-based interface to the
|
||||
<link linkend='build-system-term'>OpenEmbedded Build System</link>,
|
||||
which uses BitBake, that reports build information.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<emphasis>
|
||||
<ulink url='&YOCTO_WIKI_URL;/wiki/FAQ'>FAQ</ulink>:
|
||||
</emphasis>
|
||||
A list of commonly asked questions and their answers.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<emphasis>Release Notes:</emphasis>
|
||||
Features, updates and known issues for the current
|
||||
release of the Yocto Project.
|
||||
To access the Release Notes, go to the
|
||||
<ulink url='&YOCTO_HOME_URL;/software-overview/downloads/'>Downloads</ulink>
|
||||
page on the Yocto Project website and click on the
|
||||
"RELEASE INFORMATION" link for the appropriate release.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<emphasis>
|
||||
<ulink url='&YOCTO_BUGZILLA_URL;'>Bugzilla</ulink>:
|
||||
</emphasis>
|
||||
The bug tracking application the Yocto Project uses.
|
||||
If you find problems with the Yocto Project, you should report
|
||||
them using this application.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<emphasis>
|
||||
<ulink url='&YOCTO_WIKI_URL;/wiki/Bugzilla_Configuration_and_Bug_Tracking'>Bugzilla Configuration and Bug Tracking Wiki Page</ulink>:
|
||||
</emphasis>
|
||||
Information on how to get set up and use the Yocto Project
|
||||
implementation of Bugzilla for logging and tracking Yocto
|
||||
Project defects.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<emphasis>Internet Relay Chat (IRC):</emphasis>
|
||||
Two IRC channels on freenode are available
|
||||
for Yocto Project and Poky discussions: <filename>#yocto</filename> and
|
||||
<filename>#poky</filename>, respectively.
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
<emphasis>
|
||||
<ulink url='http://wiki.qemu.org/Index.html'>Quick EMUlator (QEMU)</ulink>:
|
||||
</emphasis>
|
||||
An open-source machine emulator and virtualizer.
|
||||
</para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
</section>
|
||||
</chapter>
|
||||
<!--
|
||||
vim: expandtab tw=80 ts=4
|
||||
-->
|
||||
Reference in New Issue
Block a user