升级(覆盖)自定义层中的整个配方

Upgrading (overriding) an entire recipe in a custom layer

我在项目中有一个自定义图层。这与同事分享。

我的发行版 (poky) 它使用旧版本的 alsa。这会在构建区域的初始设置时下载。我想 'replace' 那个版本的 alsa 有更高版本,并在我的自定义层中执行此操作,这样他们就不必 edit/replace poky 中的食谱。

最好的方法是什么?如果我只是下载较新的配方并将其包含在我的层中(匹配文件系统名称),它会自动使用较新的版本还是我需要做其他事情?

您进行的方式是正确的,您应该在自己的层上添加新的 recipes/bbappend 文件,您不应该默认修改 Yocto 的基础层或 third-party 层。尽管如此,由于您想添加现有食谱的更新版本,您应该记住:

  • 你必须检查你自己图层的优先级和包含原始配方的图层的优先级。 Yocto 将选择更高优先级层的配方,无论它是否是较新版本(忽略 PV)。有关详细信息,请在 Yocto 项目参考手册中搜索 BBFILE_PRIORITY。 (您还可以使用命令 bitbake-layers show-layers 查看所有配置层的列表及其优先级)
  • 在两层具有相同优先级的情况下,Yocto 将构建具有最高 PV 的配方(您可以 check/set 您的配方或其文件名中的此值 recipename_pv.bb)。或者,如果您希望 select 另一个版本而不是当前正在构建的版本,您可以在 distro.conf[=24= 中设置变量 PREFERRED_VERSION_recipename = desiredPV ] 或 local.conf 文件。