[yocto] EXTRA_IMAGEDEPENDS documentation
Rifenbark, Scott M
scott.m.rifenbark at intel.com
Wed Nov 16 12:52:16 PST 2011
Darren,
Regarding *DEPENDS.... Right now these variables are documented in the YP Reference Manual. Your email says that the *DEPENDS variables impact the root filesystem. That is sort of vague.
Can I just add that to each of these descriptions below?
DEPENDS - A list of build-time dependencies for a given recipe.
The variable indicates recipes that must have been
staged before a particular recipe can configure.
DISTRO_EXTRA_RDEPENDS - The list of packages required by the
distribution.
LAYERDEPENDS - Lists the layers that this recipe depends upon,
separated by spaces. Optionally, you can dspecify a
specific layer version for a dependency by adding it
to the end of the layer name with a colon
(e.g. "anotherlayer:3" to be compared against
LAYERVERSION_anotherlayer in this case). An error will
be produced if any dependency is missing or the
version numbers do not match exactly (if specified).
This variable is used in the conf/layer.conf file and
must be suffixed with the name of the specific layer
(e.g. LAYERDEPENDS_mylayer).
MACHINE_ESSENTIAL_EXTRA_RDEPENDS - A list of required packages
to install as part of the package being built. The
build process depends on these packages being present.
Furthermore, because this is a "machine essential"
variable, the list of packages are essential for the
machine to boot. The impact of this variable affects
images based on task-core-boot including the
core-image-minimal image.
This variable is similar to the
MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS variable with the
exception that the package being built has a build
dependency on the variable's list of packages. In other
words, the image will not beuild if a file in this list
is not found.
For example, suppose you are building a a runtime
package that depends on a certain disk driver. In this
case, you would use the following:
MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "<disk_driver>"
MACHINE_EXTRA_RDEPENDS - A list of optional but non-machine
essential packages to install as part of the package
being built. Even though these packages are not
essential for the machine to boot, the build process
depends on them being present. The impact of this
variable affects all images based on task-base, which
does not include the core-image-minimal or
core-image-basic images.
This variable is similar to the
MACHINE_EXTRA_RRECOMMENDS variable with the exception
that the package being built has a build dependency on
the variable's list of packages. In other words, the
image will not build if a file in this list is not
found.
An example is a machine that might or might not have a
WiFi card. The package containing the WiFi support is
not essential for the machine to boot the image.
If it is not there, the machine will boot but not be able
to use the WiFi functionality. However, if you include
the package with the WiFi support as part of the
variable's package list, the build process depends on
finding the package. In this case, you would use the
following:
MACHINE_EXTRA_RDEPENDS += "<wifi_driver>"
RDEPENDS - A list of packages that must be installed as part of a
package being built. The package being built has a runtime
dependency on the packages in the variable's list. In
other words, in order for the package being built to run
correctly, it depends on these listed packages. If a
package in this list cannot be found during the build,
the build will not complete.
Because the RDEPENDS variable applies to packages
being built, you should always attach an override to the
variable to specify the particular runtime package
that has the dependency. For example, suppose you are
building a development package that depends on the
perl package. In this case, you would use the following
RDEPENDS statement:
RDEPENDS_${PN}-dev += "perl"
In the example, the package name (${PN}-dev) must
appear as it would in the PACKAGES namespace before any
renaming of the output package by classes like
debian.bbclass.
Some automatic handling occurs around the
RDEPENDS variable:
* shlibdeps: If a runtime package contains a shared
library (.so), the build processes the library
in order to determine other libraries to which it
is dynamically linked. The build process adds
these libraries to RDEPENDS to create the runtime
package.
* pcdeps: If the package ships a pkg-config information
file, the build process uses this file to add items
to the RDEPENDS variable to create the runtime
packages.
It is safe to note in each of these descriptions that the root filesystem is impacted?
-----Original Message-----
From: Darren Hart [mailto:dvhart at linux.intel.com]
Sent: Wednesday, November 16, 2011 10:10 AM
To: Yocto Project
Cc: Rifenbark, Scott M; Richard Purdie
Subject: EXTRA_IMAGEDEPENDS documentation
For the situation where a recipe is required to build a final image, but
the output is not needed in the root filesystem, the EXTRA_IMAGEDEPENDS
variable can be used to define this dependency. Bootloaders seem to be
the common example for this (such as the beagleboard dependency on uboot).
This variable is not defined in the poky manual nor in the documentation
tags (meta/conf/documentation.conf).
Another aspect of this that could be made more explicit in the manual is
that the various *RRECOMMENDS and *RDEPENDS variables impact what is
installed in the root filesystem (because they operate on packages - not
recipes). Scott, I'd recommend a few extra words in the *RRECOMMENDS and
*RDEPENDS documentation to this effect. For example, "... a list of
packages to install TO THE ROOT FILESYSTEM ...".
As for the EXTRA_IMAGEDEPENDS definition, perhaps something like this:
in documentation.conf:
EXTRA_IMAGEDEPENDS[doc] = "Recipes to build that do not install packages
to the root filesystem, such as bootloaders."
in the reference manual:
EXTRA_IMAGEDEPENDS
A list of recipes to be built that do not provide packages to be
installed in the root filesystem. This is typically used to specify a
required bootloader in a machine config.
Note: To add packages to the root filesystem, see the various *DEPENDS
and *RECOMMENDS variables.
Scott, I'll leave the reference manual changes to you. RP, if you agree
with my doc tag, I can submit a patch for that.
Thanks,
--
Darren Hart
Intel Open Source Technology Center
Yocto Project - Linux Kernel
More information about the yocto
mailing list