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: rstr...@linuxfoundation.org [mailto:rstr...@linuxfoundation.org] On 
Behalf Of Rudolf Streif
Sent: Wednesday, October 17, 2012 1:16 PM
To: Rifenbark, Scott M
Cc: yocto@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
_______________________________________________
yocto mailing list
yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/yocto

Reply via email to