[yocto] EXTRA_IMAGEDEPENDS documentation

Darren Hart dvhart at linux.intel.com
Wed Nov 16 14:11:56 PST 2011



On 11/16/2011 12:52 PM, Rifenbark, Scott M wrote:
> 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?

I believe so, yes. Any place we refer to "packages" we are talking about
the root filesystem. One exception below is LAYERDEPENDS, that one does
not impact the root filesystem.

--
Darren

> 
> 	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