如何在yocto配方中覆盖已定义的任务顺序?

时间:2019-10-17 08:10:24

标签: embedded-linux yocto bitbake

首先介绍我的问题:

我正在尝试添加一些补丁,以从linux-msm-4.4_git.bb配方(可在meta-qti-bsp层中找到)中使用的源代码修改某些设备树。

我的linux-msm-4.4_git.bbappend看起来像这样:

FILESEXTRAPATHS_append := "${THISDIR}/files:"

SRC_URI += " file://0001-patching-dts-stuff_1.patch"
SRC_URI += " file://0002-patching-dts-stuff_2.patch"
SRC_URI += " file://0003-patching-dts-stuff_3.patch"
SRC_URI += " file://0004-patching-dts-stuff_4.patch"
SRC_URI += " file://0005-patching-dts-stuff_5.patch"
SRC_URI += " file://0006-patching-dts-stuff_6.patch"
SRC_URI += " file://0007-patching-dts-stuff_7.patch"
SRC_URI += " file://0008-patching-dts-stuff_8.patch"
SRC_URI += " file://0009-patching-dts-stuff_9.patch"

但是当我将图层添加到build / conf / bblayers.conf时,配方在任务 do_shared_workdir 期间失败,因为它找不到 certs / signing_key.pem 文件。

尝试解决该错误,我发现了以下信息:

meta-qti-bsp与repo中的代码略有修改(我在zip文件中收到了代码,因此我不知道对外部维护的图层进行了多少更改)。

我遵循了食谱中的所有包含,继承和要求,以便了解正在发生的事情: Here is an image of that.

我发现do_shared_workdir被kernel.bbclass覆盖。

当不包括我的图层 并启动 bitbake linux-msm-4.4 时,任务的执行顺序为:

  • 获取
  • 打开包装
  • prepare_recipe_sysroot
  • 打开包装
  • 补丁
  • 配置
  • populate_lic
  • 编译
  • shared_workdir
  • kernel_link_images

当包含我的图层时, shared_workir kernel_link_images 总是按执行顺序交换。

所以我尝试了是否在我的 .bbappend 中执行“在do_compile之后在do_compile之后添加任务shared_workdir ”,以覆盖“在do_compile_kernelmodules之前在do_compile之后添加任务 addstrong shared_workdir “来自<​​strong> kernel.bbclass 的代码,以强制执行不会以错误结尾的任务顺序,

在kernel.bbclass中修改它 did 解决了该错误,但是我宁愿不必在我不维护的层中进行更改。

我的主要问题:

  • 是否可以从我的图层强制执行正确的任务顺序?

为了进一步了解yocto框架,我想知道响应的另一个问题:

如果我使用命令 bitbake-layers add-layer meta-mylayer 创建了该层。我只是添加了食谱的相同结构-* / 食谱名称 / 食谱。bb在原始图层中添加了该bbappend及其文件/ 补丁< / em>是我唯一添加的内容。此补丁和配方未定义对任务执行顺序的更改。

  • 为什么添加我的图层会导致执行此任务的顺序发生变化?

0 个答案:

没有答案