[yocto] Requesting information on some variables

Rifenbark, Scott M scott.m.rifenbark at intel.com
Wed Oct 17 14:07:20 PDT 2012


Rudi,

Thanks for the added investigation here.  The original bug report listed COMMON_FEATURES as an undocumented variable.  I see, however, that the variable referred to by both you and Paul Eggleton is COMBINED_FEATURES.  I just did a grep through my entire poky tree, which had built out the core-image-minimal image for the qemux86 MACHINE and came up empty for "COMMON_FEATURES" except where the string is part of other variables.  So, it appears there is no COMMON_FEATURES variable.

According to Paul, COMBINED_FEATURES is a list of features common to both MACHINE_FEATURES and DISTRO_FEATURES.

It also seems that the lists presented in the documentation for both valid distro and machine options are not really finite lists.  I am trying to get an answer to that.  But, the fact that you grep'ed out such a huge list of DF below shows that they far exceed the 16 features listed in the documentation.  I'll update the preamble to the "Distro" and "Machine" sections in the reference manual when I get the real story on those lists.

I don't know the relationship between "features" and "packages"...  maybe it is a one-to-one relationship.  But, there are some other variables that affect packages and features (according to the documentation) that are considered during the build.  These are the ones listed in the manual's glossary section:


*         MACHINE_ESSENTIAL_EXTRA_RDEPENDS

*         MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS

*         MACHINE_EXTRA_RDEPENDS

*         MACHINE_EXTRA-RRECOMMENDS

*         DISTRO_EXTRA_RRECOMMENDS

*         DISTRO_FEATURES_BACKFILL

*         DISTRO_FEATURES_BACKFILL_CONSIDERED

*         MACHINE_FEATURES_BACKFILL

*         MACHINE_FEATURES_BACKFILL_CONSIDERED

I suspect that there is a DISTRO_EXTRA_RDEPENDS variable as well but I don't have it in the manual (should be added if so).  Also, not sure if there are variables for DISTRO_ESSENTIAL_EXTRA_RDEPENDS and DISTRO_ESSENTIAL_EXTRA_RRECOMMENDS.  If those really exist, then I need to add them as well.

Finally, the BACKFILL variables also contribute to the MACHINE_FEATURES and DISTRO_FEATURES set.  It looks like *_FEATURES_BACKFILL, which is set in the bitbake.conf file, is a way to make sure a feature is always included as part of *_FEATURES. While *_BACKFILL_CONSIDERED is used in specific machine configurations (<machine>.conf) to disable a particular feature when it also appears with *_FEATURES_BACKFILL.   So these variables add to the mix also.

I have emails out asking questions and am trying to fully understand it myself.

Thanks,
Scott


From: rstreif at linuxfoundation.org [mailto:rstreif at linuxfoundation.org] On Behalf Of Rudolf Streif
Sent: Wednesday, October 17, 2012 1:16 PM
To: Rifenbark, Scott M
Cc: yocto at yoctoproject.org
Subject: Re: [yocto] Requesting information on some variables

Scott,

Thanks for addressing this confusing part. The list of DISTRO_FEATURES (DF) and MACHINE_FEATURES (MF) in the documentation also does not seem to be complete. For instance, vfat is (at least the code in bitbake.conf that intersects DF and MF suggests so) is a MF as well as a DF.

It also seems that any package is fair game for DF (which makes sense) but the documentation says "The items below are valid options for DISTRO_FEATURES<http://www.yoctoproject.org/docs/1.3/poky-ref-manual/poky-ref-manual.html#var-DISTRO_FEATURES>:".

Some elaboration on the features would be great too. From the explanation it is not obvious why ext2 is considered a DF as well as a MF. The same seems to be the case with vfat (although not listed in the documentation). Other file systems e.g. ext3 etc. are purely considered DF.

Here are the variables from a build environment building for the Beagleboard

bitbake core-image-minimal -e | grep MACHINE_FEATURES
MACHINE_FEATURES="apm usbgadget usbhost vfat alsa"

bitbake core-image-minimal -e | grep DISTRO_FEATURES
DISTRO_FEATURES="alsa argp bluetooth ext2 irda largefile pcmcia usbgadget usbhost wifi xattr nfs zeroconf pci 3g x11 ipv4 ipv6 libc-backtrace libc-big-macros libc-bsd libc-cxx-tests libc-catgets libc-charsets libc-crypt libc-crypt-ufc libc-db-aliases libc-envz libc-fcvt libc-fmtmsg libc-fstab libc-ftraverse libc-getlogin libc-idn libc-inet-anl libc-libm libc-libm-big libc-locales libc-locale-code libc-memusage libc-nis libc-nsswitch libc-rcmd libc-rtld-debug libc-spawn libc-streams libc-sunrpc libc-utmp libc-utmpx libc-wordexp libc-posix-clang-wchar libc-posix-regexp libc-posix-regexp-glibc libc-posix-wchar-io largefile opengl pulseaudio"

bitbake core-image-minimal -e | grep COMBINED_FEATURES
COMBINED_FEATURES="alsa usbgadget usbhost"

CF seems to be an intersection of DF and MF.  If I remove usbgadget from MF then CF will of course not contain it. DF will still have it. What actually does get included with the image? Is it DF - [list of all available machine features] + CF?

[list of all available machine features] is then the superset of MF that is typically defined in a machine.conf file. That list must be implicit somewhere in the classes/configuration files somewhere, possibly bitbake.conf.

That leads me to the next question. I have seen BSPs that include 'screen' into MF in their machine.conf files. That feature is also in the documentation. But it does not show up anywhere in DF or bitbake.conf etc.

Cheers,
Rudi
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.yoctoproject.org/pipermail/yocto/attachments/20121017/4111e5e3/attachment.html>


More information about the yocto mailing list