[yocto] [bitbake] Conditional Linux Kernel compilation according to Yocto Variables

Fabien Lahoudere fabien.lahoudere at collabora.co.uk
Fri Jun 9 03:18:11 PDT 2017

On Thu, 2017-06-08 at 07:32 +0000, Karim ATIKI wrote:
> I'm using Yocto (Poky Dora is mandatory for our project) to create a Linux image for an ARM base
> board.
> Currently, we're working on an evaluation board.
> We have a dedicated layer (meta-docking) with all the stuff.
> We have dedicated recipes that installs a specific version of the Linux Kernel and some specific
> patch as well.
> As we create the image:
> bitbake -k docking-image
> Now, we're moving toward the final board to be used in production. It differs from the evaluation
> board as some connectors are added (lighting etc.).
> Therefore, the Linux Kernel being installed is slightly different, some source files need to be
> replaced/patched/modified consequently.
> My colleague, firstly chose to create another copy of the layer (i.e. meta-docking-prod).
> This option does not satisfy us, I'm sure Yocto provides mechanisms to apply taks according to the
> target.
> My question is, for example, how to apply different patches on a Linux kernel (or any yocto
> resource file) according to user's variable ? or according to the target machine ?
> Without having to duplicate layers.

1. Take a look at OVERRIDES. You can probably use the followings for different machines:

SRC_URI_append_<machine1> = " file://patchformachine1.patch"

SRC_URI_append_<machine2> = " file://patchformachine2.patch"

2. To enable patch according to variable, take a look at how bb.utils.contains works.

SRC_URI = "... \
	  ${@bb.utils.contains('YOURVARIABLE', 'tagtomatch', 'file://feature.patch', '', d)} \
	... "

and set YOURVARIABLE in your local.conf for example.

You have a lot of examples on how to use such mechanism in all available metas.

> Thanks.
> K.

More information about the yocto mailing list