[yocto] Conditional patches on kernel depending on board, how to maintain?

Bruce Ashfield bruce.ashfield at windriver.com
Thu Jun 12 08:51:12 PDT 2014


On 14-06-12 07:54 AM, Daniel Hilst Selli wrote:
> I have a SoM which will be used on several boards, this SoM has a base
> kernel for it, with its board-*.c file. In each board I may have
> different peripherals, so I have to patch the same board-*.c file
> depending on my target board, and that patches may be conflicting one
> each other. For example, I could have a RF on first SPI bus on one
> board, and on another board a SD card on same first SPI bus.
>
> So basically I will have a different kernel(uImage) and rootfs (with
> kernel modules) for each board.
>
> I think to create a layer for each target board, with the
> linux-SoM.bbappend including the patches for that board..., so I enable
> the layer depending on target board I'm creating, but is too much file
> editions, or have a build directory for each target board, enabling the
> right layer on each local.conf, but this means mantaining build
> directories, or at last local.conf, which doesn't seem a good idea for
> me...
>
> Would be possible to do this relying only new layers and its
> configurations?

As was mentioned in the other replies, you can always have a single
bbappend with board specific SRC_URI updates to add the patches you
need onto the base board support.

It's unfortunate that the patches conflict, since stacking hem in
board specific SRC_URIs can lead to patch failures in some configs
and not others .. if you change the baseline.

Typically in this situation, I either #ifdef the patches and use
a different configuration to conditionally build the consistent set
of changes, or maintain the changes in a git repository with board
specific patches on each branch. Again, that git approach avoids
patch failures during build.

Cheers,

Bruce

>
> Thanks in advance
> Cheers!




More information about the yocto mailing list