我想知道是否有一种简单的方法可以在Yocto中为SRC_URI添加补丁。我正在使用Yocto为定制板创建BSP。我有几百个Linux内核和裸机补丁。
为了包含Linux内核的补丁,我创建了一个.scc文件。在.scc文件中,我已经包含了所有必需的补丁。内核配方中的SRC_URI选项如下所示:
SRC_URI += "https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.0.9.tar.xz \
file://kernelpatch.scc \
file://kernel-4.0.9.cfg \
"
对于裸机,我试图做同样的事情,但它似乎不支持.scc文件。所以现在我已经使用了所有的100多个补丁
file://patchname.patch
file://patches/0001-drivers.patch \
file://patches/0002-hw_random-C.patch \
.
.
.
.
file://patches/0304-usb-fastbootupport.patch \
是否有任何选项可以将所有补丁包含在内核中的单行中。
转到你的meta-layer/recipes-kernel/linux
创建一个像patches
这样的目录。将所有修补程序复制到此patches
目录。
创建
linux-ti_%.bbappend
文件并添加以下行
FILESEXTRAPATHS_prepend := "${THISDIR}:"
SRC_URI = "file://patches/* "
这将在单个实例中获取所有补丁并应用于内核。
你可以使用通配符来包含你的文件:file://*
我不认为它是最好的选择,但是当你有很多文件时,它可能是有用的。
正如@Pouet_forever“说”,这不是通配符补丁文件的最佳方式,而不是这个你可以使用bitbake方法与元数据文件,如.inc文件。我的意思是你可以将它们全部提取到一个变量,然后在你的主.bb配方中包含这个文件。请看一下这个例子,将不同的补丁保存在一个文件中,可以很容易地在许多食谱中使用:.inc文件和补丁 - https://github.com/kraj/meta-clang/blob/master/recipes-devtools/clang/common.inc及其在食谱中的用法:https://github.com/kraj/meta-clang/blob/master/recipes-devtools/clang/libcxx_git.bb