Hi Paul, Thanks for taking the time to explain, very enlightening. I think I understood it, please allow me to play back my understanding:
1. _virtual is part of the variable name, and is not a special type of override. 2. PREFERRED_PROVIDER_virtual/kernel_am335x-evm breaks into: "PREFERRED_PROVIDER_virtual/kernel" with an override condition of "am335x-evm" 3. So for the jpeg case: >> PREFERRED_PROVIDER_jpeg = "libjpeg-turbo" >> >> PREFERRED_PROVIDER_jpeg_armv5te = "jpeg" Could this have also been _virtual/jpeg? It's just that some components use the _virtual convention and others don't? Do I have it right? Thanks, Brad On Aug 20, 2013, at 3:27 PM, Paul Eggleton <paul.eggle...@linux.intel.com> wrote: > Hi Brad, > > On Monday 19 August 2013 22:51:04 Brad Litterell wrote: >> I searched the Yocto Mega Manual, but am still somewhat mystified by the >> suffix formatting of various variable - especially virtual ones like this: >> >> >> PREFERRED_PROVIDER_virtual/gettext = "gettext" >> >> PREFERRED_PROVIDER_virtual/kernel_am335x-evm = "linux-ti-staging" >> >> PREFERRED_PROVIDER_virtual/bootloader_am335x-evm = "u-boot-ti-staging" > > These are setting PREFERRED_PROVIDER for a number of targets. "virtual/xyz" is > a convention we use where there are multiple providers for a particular > component, so a recipe that requires that component can have virtual/xyz in > its DEPENDS, each provider declares virtual/xyz in its PROVIDES, and then in > configuration the desired recipe to provide that can be selected via > PREFERRED_PROVIDER_virtual/xyz = "...". > > The second two examples have an additional override which makes them only > applicable for a specific machine (am335x-evm). If you want to know how this > mechanism works have a look at this: > > http://docs.openembedded.org/bitbake/html/ch02.html#id439023 > > (We're in the process of updating the BitBake manual, so this old version > will have to suffice.) > >> Also, there seems to be some sort of prioritization going on with the >> multiple levels underscore characters in places like this: >> >> >> # Set the PREFERRED_PROVIDER for jpeg functionality based on the MACHINE >> >> # architecture. For armv7a devices libjpeg-turbo should be used to take >> >> # advantage of the SIMD instructions. >> >> PREFERRED_PROVIDER_jpeg = "libjpeg-turbo" >> >> PREFERRED_PROVIDER_jpeg_armv5te = "jpeg" >> >> >> (all examples from the arago project in arago-prefs.inc) >> >> Is there a succinct way of viewing these suffixes that will allow me to wrap >> my head around their various & myriad versions? > > OVERRIDES is listed in order so that overrides for the later items are > preferred. If you run bitbake -e | less and search for OVERRIDES (with the / > key) you can see what the value is for the global environment; here is an > example for my current configuration: > > # $OVERRIDES [3 operations] > # set conf/bitbake.conf:670 > # > "${TARGET_OS}:${TRANSLATED_TARGET_ARCH}:build-${BUILD_OS}:pn-${PN}:${MACHINEOVERRIDES}:${DISTROOVERRIDES}:${CLASSOVERRIDE}:forcevariable" > # set conf/bitbake.conf:671 > # [vardepsexclude] "MACHINEOVERRIDES" > # postdot /home/paul/poky/poky/meta/conf/distro/include/tclibc-eglibc.inc:9 > # "${LIBCOVERRIDE}" > # computed: > # > "${TARGET_OS}:${TRANSLATED_TARGET_ARCH}:build-${BUILD_OS}:pn-${PN}:${MACHINEOVERRIDES}:${DISTROOVERRIDES}:${CLASSOVERRIDE}:forcevariable${LIBCOVERRIDE}" > OVERRIDES="linux:i586:build-linux:pn-bblayers:x86:qemuall:qemux86:poky:class-target:forcevariable:libc-glibc" > > Putting the values of all these variables into OVERRIDES gives us a way of > setting variable values per-machine, per-architecture etc. Based on the > above value, if I had: > > SOMEVAR = "value1" > SOMEVAR_qemux86 = "anothervalue" > SOMEVAR_i586 = "yetanothervalue" > > The computed value of SOMEVAR would be "anothervalue". If MACHINE were > changed to, say, "qemumips", then OVERRIDES would change and the value > of SOMEVAR would become "value1". > >> Am I right in assuming the "variable name" consists of the uppercase parse >> (regardless of number of underscores)? > > That is our (fairly strict) convention in OpenEmbedded, but FWIW I don't > think bitbake itself enforces that; it's all dependent on what is in OVERRIDES > and where the _ character appears in the left hand side of the assignment > statement. > > Cheers, > Paul > > -- > > Paul Eggleton > Intel Open Source Technology Centre _______________________________________________ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto