在食谱中向 SRC_URI 添加多个补丁 -- Yocto

Adding multiple patches to SRC_URI in a recipe -- Yocto

我想知道是否有一种简单的方法可以在 Yocto 中向 SRC_URI 添加补丁。我正在使用 Yocto 为定制板创建 BSP。我有数百个 Linux 内核和 barebox 补丁。

为了包含 Linux 内核的补丁,我创建了一个 .scc 文件。在 .scc 文件中,我在内核配方中包含了所有补丁 required.The 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 文件。所以现在我已经使用

包含了所有一百多个补丁

file://patchname.patch

file://patches/0001-drivers.patch \
file://patches/0002-hw_random-C.patch \
.
.
.
.
file://patches/0304-usb-fastbootupport.patch \

是否有任何选项可以像在内核中那样将所有补丁包含在一行中。

您可以使用通配符来包含您的文件:file://*我不认为这是最好的选择,但是当您有很多文件时,它会很有用。

作为@Pouet_forever "said",这不是通配符补丁文件的最佳方式,而不是这个 您可以对元数据文件(例如 - .inc 文件)使用 bitbake 方法。我的意思是,您可以将它们全部提取到一个变量中,然后将此文件包含在您的主 .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

转到您的 meta-layer/recipes-kernel/linux 创建一个类似 patches 的目录。将所有补丁复制到此 patches 目录。

create linux-ti_%.bbappend file and add below lines

FILESEXTRAPATHS_prepend := "${THISDIR}:"
SRC_URI = "file://patches/* "

这将在单个实例中获取所有补丁并应用到内核。