[poky] MACHINE_EXTRA_RRECOMMENDS not working?

Darren Hart dvhart at linux.intel.com
Fri Mar 11 20:31:45 PST 2011


I'm working to get a certain package installed for a specific machine.
In particular, I wrote a simple init.d script called n450-audio which
sets the mixer for the n450 dev board to unmute the FRONT channel and
set the volume to 70% or so - as it is muted if left untouched. For now,
I just want to make this board work, so I want to make this package get
installed if it's dependencies are met (if amixer is installed).

As I understand it, the best way to do this is with something like the
following in the machine/n450.conf file:

MACHINE_EXTRA_RRECOMMENDS += " n450-audio "

And that recipe in turn defines:

RDEPENDS = "alsa-utils-amixer"

I then:

$ bitbake -c cleanall task-base poky-image-sato-live n450-audio

followed by:

$ bitbake poky-image-sato-live

The n450-audio recipe is built, but it does not appear in the generated
image (nor in the ext3 image).

I checked the dependency chain and task-base does depend on n450-audio:

$ bitbake -g -u depexp poky-image-sato-live


I then tried using the following variables in place of
MACHINE_EXTRA_RRECOMMENDS with the same result:

MACHINE_EXTRA_RDEPENDS
MACHINE_ESSENTIAL_RRECOMMENDS
MACHINE_ESSENTIAL_RDEPENDS

Finally, I added the following to my local.conf and the image built as
expected:

POKY_EXTRA_INSTALL = " n450-audio "

Am I completely off in the weeds here? If this isn't what these
directives are for - what are they for?

I took a look at what they are used for elsewhere and found:

$ cat ~/.bashrc | grep bb
    alias bb='bitbake'
    alias bbdeps='bitbake -g -u depexp'
dvhart at rage:poky.git$ git grep MACHINE_EXTRA_RRECOMMENDS
documentation/poky-ref-manual/ref-variables.xml:         <glossentry id='var-MACHINE_EXTRA_RRECOMMENDS'><glossterm>MACHINE_
documentation/poky-ref-manual/ref-varlocality.xml:                <para><glossterm linkend='var-MACHINE_EXTRA_RRECOMMENDS'>
meta/conf/bitbake.conf:MACHINE_EXTRA_RRECOMMENDS ?= ""
meta/conf/machine/atom-pc.conf:MACHINE_EXTRA_RRECOMMENDS = "kernel-modules eee-acpi-scripts"
meta/conf/machine/beagleboard.conf:MACHINE_EXTRA_RRECOMMENDS = " kernel-modules"
meta/conf/machine/qemumips.conf:MACHINE_EXTRA_RRECOMMENDS = " kernel-modules"
meta/conf/machine/routerstationpro.conf:MACHINE_EXTRA_RRECOMMENDS = " kernel-modules"
meta/recipes-core/tasks/task-base.bb:RRECOMMENDS_task-machine-base = "${MACHINE_EXTRA_RRECOMMENDS}"

Only two other recipes are referenced with these variables:
kernel-modules and eee-acpi-scripts. I had an atom-pc build so I mounted
the rootfs and dug around - not a trace of the eee-acpi-scripts to found
anywhere. I checked for modules under
/lib/modules/2.6.34.7-yocto-standard/ and found several *.*map files,
but nothing else (certainly no *.ko files). So this mechanism certainly
doesn't do what I thought it did.

Is it supposed to? If not, what does it do. It does cause the package
listed to be built, perhaps that is it's only purpose? The user can
install the package manually if they want it?

And, more to the point, if this isn't the right mechanism to cause a
package to be added (if deps are met) to any image for a specific
machine, what is?

If you want to see the branch in question, it's here:
http://git.pokylinux.org/cgit/cgit.cgi/meta-intel/log/?h=dvhart/n450-audio

(Yes, the init script is terrible - working on that.)

Thanks,

-- 
Darren Hart
Intel Open Source Technology Center
Yocto Project - Linux Kernel



More information about the poky mailing list