Bitbake:根据编译的图像修改bbappend

时间:2017-02-17 10:41:09

标签: bitbake recipe openembedded

我有两个不同的图像,它们使用了很多常见的包。其中一个是wpa-supplicant,它提供默认配方安装的文件wpa_supplicant.conf。但是,我希望安装自己的wpa_supplicant.conf

我通过在我的图层中添加.bbappend来解决此问题。但是现在我只想在编译其中一个图像时应用这个附加,而不是另一个。

简而言之:根据编译的图像,有没有办法启用/禁用.bbappend

备注:

  • 我见过类似的this answer,但创建一个安装我文件的新软件包不起作用:许多软件包会尝试安装相同的文件而Bitbake会返回错误。

    • 这里的错误是我无法从两个不同的软件包安装相同的文件,这就是为什么这不是this question IMO的副本。

谢谢!

1 个答案:

答案 0 :(得分:2)

嗯,正如您链接到的答案中所述,您不能让图像影响任何其他配方。原因是每个配方都是独立于您正在构建的图像而构建的。

是否要将不同的图像安装在同一MACHINE上?否则,每个wpa_supplicant.conf可能会有不同的MACHINE

对于相同的MACHINE

  • 使用ROOTFS_POSTPROCESS_COMMAND是解决此问题的一种方法
  • 添加两个wpa_supplicant.conf - 文件(具有不同的名称)并为pkg_post_inst_${PN}(){xxx}添加wpa-supplicant脚本,在rootfs创建时,检测正在构建的图像,并选择corretct wpa_supplicant.conf
  • 另一种解决方案是从您的bbappend中的wpa_supplicant.conf包中删除wpa-supplicant。创建两个新的包wpa-supplicant-conf1wpa-supplicant-conf2,其中只包含相应的wpa_supplicant.conf。理想情况下,这两个应该有一个

wpa-supplicant-conf1

RCONFLICTS_${PN} = "wpa-supplicant-conf2" 

wpa-supplicant-conf2

RCONFLICTS_${PN} = "wpa-supplicant-conf1"

在他们的食谱中。