如何在 bitbake 附加文件中设置路径?

How to set path in bitbake append file?

我正在更新 Beagle Bone Black 中的设备树以启用 i2c 配置。我创建了一个新层元测试。在元测试中有一个食谱内核,其中我有一个 leds.cfgam335x-boneblack.dts 文件 linux-yocto_%.bbappend 文件。 bbappend 文件如下所示:

FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"

PACKAGE_ARCH = "${MACHINE_ARCH}"

SRC_URI += "\
file://am335x-boneblack.dts \
file://leds.cfg \
"

使用 bitbake 构建内核后,两个文件都传输到 "build/tmp/work/beaglebone_yocto-poky-linux-gnueabi/linux-yocto/4.18.25+git**" 目录

但我希望将 dts 文件转移到另一个目录"build/tmp/work-shared/beaglebone-yocto/kernel-source/arch/arm/boot/dts “

如何在 bbappend 文件中实现这一点?

将文件附加到 linux-yocto 配方中的 SRC_URI,您是将文件添加到 linux-yocto 工作目录,而不是实际的 kernel-source 工作目录。要从 kernel-source 文件夹中获取这些文件,您有 2 个选项:

  • Move/C&P 文件。 在 linux-yocto 工作目录中,文件夹 linux-beaglebone_yocto-standard-build/sourcesbuild/tmp/work-shared/beaglebone_yocto/kernel-source 的符号链接。因此,您可以使用 bbappend 中的 cp/mv 将文件复制&paste/move 到该文件夹​​。
  • 创建一个补丁。您可以将这些文件以补丁的形式添加到内核源代码中,因此只需将补丁包含在您的 bbappend 中(将其附加到SRC_URI,一如既往)。

在我看来,这些是最佳选择。但是,您可以将文件保存在像 linux-beaglebone-yocto-standard-build/sources/arch/arm/boot/dts/yourfile.dtb 这样的文件夹结构中(在食谱目录内),然后将它们添加到 SRC_URI(它们将自动添加到该路径)。

我能够通过添加这一行来解决它:

do_configure_append() {
    cp ${WORKDIR}/am335x-boneblack.dts ${S}/arch/arm/boot/dts/
}