如何根据使用 openembedded 和 bitbake 构建的顶级配方修改内核?

How to modify a kernel based on what top-level recipe is being built using openembedded and bitbake?

我有两个构建嵌入式 linux 图像的方法,称它们为 A.bbB.bb。我有一个内核补丁需要应用于一个配方而不是另一个。在这些 docs 之后,我创建了自己的图层并添加了一个 bbappend <your-layer>/recipes-kernel/linux/linux-yocto_3.4.bbappend 并在里面放置了 SRC_URI|+="kernel.patch"。我怎样才能做类似下面的事情:

if (A):
   SRC_URI+="kernel.patch"
else:
   SRC_URI+=""

我尝试了以下方法:

A.bb里面,我有export IMAGE_NAME="A"
然后在 linux_yocto_3.4.bbappend 里面我有
SRC_URI_append = " ${@bb.utils.contains('IMAGE_NAME', 'A', 'file://kernel.patch', '', d)} "

但这不起作用。感谢您的帮助!

你不能。

配方不能影响其他任何东西的建造方式;图像只是一个配方,因此不能修改内核的构建方式或修补方式。