[yocto] Adding features to a machine

Darren Hart dvhart at linux.intel.com
Mon Dec 12 17:23:48 PST 2011


On 12/12/2011 08:11 AM, Marc Ferland wrote:
> 
> 
> On Thu, Dec 8, 2011 at 4:02 PM, Darren Hart <dvhart at linux.intel.com
> <mailto:dvhart at linux.intel.com>> wrote:
> 
> 
> 
>     On 12/08/2011 12:36 PM, Marc Ferland wrote:
>     > On Thu, Dec 8, 2011 at 2:50 PM, Darren Hart
>     <dvhart at linux.intel.com <mailto:dvhart at linux.intel.com>
>     > <mailto:dvhart at linux.intel.com <mailto:dvhart at linux.intel.com>>>
>     wrote:
>     >
>     >     On 12/08/2011 11:13 AM, Marc Ferland wrote:
>     >     > Hi,
>     >     >
>     >     > I have a crownbay based machine here and I would like to add the
>     >     > bluetooth machine feature to it. Do I have to create a whole new
>     >     BSP for
>     >     > this? I haven't seen any examples showing how to _modify_ a
>     machine
>     >     > description.
>     >
>     >
>     >     Have you tried modifying either MACHINE_FEATURES_crownbay or
>     >     KERNEL_FEATURES_crownbay from local.conf? I haven't attempted this
>     >     myself, but I believe it should work.
>     >
>     >
>     > Tried both.
>     >
>     > With MACHINE_FEATURES_crownbay += "bluetooth" I get:
>     > NOTE: Resolving any missing task queue dependencies
>     > ERROR: Nothing RPROVIDES 'modutils-depmod' (but
>     >
>     /home/marc/dev/poky/poky-src/meta/recipes-kernel/update-modules/update-modules_1.0.bb
>     <http://update-modules_1.0.bb>
>     > <http://update-modules_1.0.bb> RDEPENDS on or otherwise requires it)
>     > NOTE: Runtime target 'modutils-depmod' is unbuildable, removing...
> 
>     Hrm, yes, I don't see what provides modutils-depmod. I believe you may
>     have found a bug. Mind filing one?
> 
>     > Missing or unbuildable dependency chain was: ['modutils-depmod']
>     > NOTE: Runtime target 'perf' is unbuildable, removing...
>     > Missing or unbuildable dependency chain was: ['perf',
>     'update-modules',
>     > 'modutils-depmod']
>     > NOTE: Runtime target 'task-core-tools-profile' is unbuildable,
>     removing...
>     > Missing or unbuildable dependency chain was:
>     ['task-core-tools-profile',
>     > 'perf', 'update-modules', 'modutils-depmod']
>     > ERROR: Required build target 'sonatest-test-image' has no buildable
>     > providers.
>     > Missing or unbuildable dependency chain was: ['sonatest-test-image',
>     > 'task-core-tools-profile', 'perf', 'update-modules',
>     'modutils-depmod']
>     >
>     > With KERNEL_FEATURES_crownbay += "bluetooth", I get the following when
>     > recompiling the kernel:
>     > Log data follows:
>     > | Deleted branch meta-temp (was 620917d).
>     > | WARNING: addon feature "bluetooth" was not found
>     > | ERROR: required features were not found. aborting
>     >
>     > BTW, I did not find any precise kernel feature for bluetooth when
>     > looking in
>     >
>     builddir/tmp/work/crownbay-poky-linux/linux-yocto/linux/meta/cfg/kernel-cache/
> 
>     Right, you would need to add something if you need a driver that isn't
>     listed there or in the crownbay BSP.
> 
> Sorry to bring this up again, but since the documentation states that
> "bluetooth" is a valid MACHINE_FEATURE option and no configuration
> fragment is present to support this feature does that mean that it
> cannot really work by simply adding the option? Could this be a
> bug/missing feature?
> 
> BTW, I got bluetooth working but I add to create a config fragment like
> you suggested which is kind of confusing since a MACHINE_FEATURE already
> exists for this functionality.

The bug you filed needs to get fixed, when it does, the MACHINE_FEATURES
+= "bluetooth" combined with the stock linux-yocto kernel will combine
with the definition of task-base-bluetooth to give you what you are
looking for.

See meta/recipes-core/tasks/task-base.bb:

RDEPENDS_task-base-bluetooth = "\
    bluez4 \
    "

RRECOMMENDS_task-base-bluetooth = "\
    kernel-module-bluetooth \
    kernel-module-l2cap \
    kernel-module-rfcomm \
    kernel-module-hci-vhci \
    kernel-module-bnep \
    kernel-module-hidp \
    kernel-module-hci-uart \
    kernel-module-sco \
    ${@base_contains('COMBINED_FEATURES', 'usbhost',
'kernel-module-hci-usb', '',d)} \
    ${@base_contains('COMBINED_FEATURES', 'pcmcia',
'kernel-module-bluetooth3c-cs', '',d)} \
    ${@base_contains('COMBINED_FEATURES', 'pcmcia',
'kernel-module-bluecard-cs', '',d)} \
    ${@base_contains('COMBINED_FEATURES', 'pcmcia',
'kernel-module-bluetoothuart-cs', '',d)} \
    ${@base_contains('COMBINED_FEATURES', 'pcmcia',
'kernel-module-dtl1-cs', '',d)} \

What this does is include the required kernel module packages created by
the linux-yocto recipe in the package feed for your image.

Saul mentioned he would try and have a look at that bug, CC'ing him for
reference. Looking at that bug though, I see Richard has commented:

http://bugzilla.yoctoproject.org/show_bug.cgi?id=1814

Can you try with his suggestion, using:

MACHINE_FEATURES_append_crownbay = " bluetooth"

I believe the assignment you were using before explains why you hit the
original modutils-depmod failure. See:

$ git grep modutils-depmod
meta/recipes-kernel/update-modules/update-modules_1.0.bb:RDEPENDS_${PN}
= "${@base_contains("MACHINE_FEATURES", "kernel26",

Note that the recipe depends on kernel26 being part of MACHINE_FEATURES,
since you set MACHINE_FEATURES to "bluetooth", it failed to build.


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



More information about the yocto mailing list