当前位置 : 主页 > 手机开发 > 其它 >

Yocto:如何从包的RDEPENDS中删除/黑名单一些依赖?

来源:互联网 收集:自由互联 发布时间:2021-06-22
我有一个基于 https://github.com/jumpnow/meta-wandboard的自定义机器层. 我已将内核升级到4.8.6,并希望将X11添加到图像中. 我正在修改图像配方(console-image.bb). 由于wandboard基于i.MX6,我想从meta-fsl-
我有一个基于 https://github.com/jumpnow/meta-wandboard的自定义机器层.

我已将内核升级到4.8.6,并希望将X11添加到图像中.
我正在修改图像配方(console-image.bb).
由于wandboard基于i.MX6,我想从meta-fsl-arm中包含xf86-video-imxfb-vivante包.
但是,它无法抱怨无法构建kernel-module-imx-gpu-viv.我相信这是因为xf86-video-imxfb-vivante取决于imx-gpu-viv,而后者又依赖于kernel-module-imx-gpu-viv上的RDEPENDS.

我意识到这些依赖关系是使用meta-fsl-arm BSP和vanilla Poky发行版创建的.但是这些东西对于wandboard来说已经过时了,因此我使用了具有现代内核的自定义机器层.
内核配置为包含Vivante DRM模块,我真的不希望构建kernel-module-imx-gpu-viv包.

有没有办法将其从RDEPENDS中排除?我可以以某种方式向构建系统发誓,我会自己处理这种特定的运行时依赖吗?

我已经尝试在我的local.conf中设置黑名单’kernel-module-imx-gpu-viv’设置PNBLACKLIST [kernel-module-imx-gpu-viv],但这只是解决方案的一部分.它有助于避免构建失败,但打包过程仍然失败.

你问题的IIUC来自 img-gpu-viv recipe这些行:

FILES_libgal-mx6 = "${libdir}/libGAL${SOLIBS} ${libdir}/libGAL_egl${SOLIBS}"
FILES_libgal-mx6-dev = "${libdir}/libGAL${SOLIBSDEV} ${includedir}/HAL"
RDEPENDS_libgal-mx6 += "kernel-module-imx-gpu-viv"
INSANE_SKIP_libgal-mx6 += "build-deps"

我实际上将此RDEPENDS限定为错误,通常将内核模块依赖项指定为RRECOMMENDS,因为大多数模块都可以编译到内核中,因此在提供功能时根本不会创建单独的包.但这是另一个问题.

有几种方法可以解决这个问题,第一种方法是调整包的RDEPENDS.它只是一个bitbake变量,因此您可以使用assign it some other value或remove some portion of it.在第一种情况下,它看起来有点像这样:

RDEPENDS_libgal-mx6 = ""

在第二个:

RDEPENDS_libgal-mx6_remove = "kernel-module-imx-gpu-viv"

显然,这两个选项对您现在和将来的工作有不同的含义.一般来说,我会选择较软的,这是第二次,因为当你要更新meta-fsl-arm层时,它可能会有更少的破损,这可以以任何方式改变imx-gpu-viv配方.但是当你用变量中的大列表覆盖一些更复杂的配方并且你正在大量修改它(不只是删除一两件事)时,通过完全硬分配变量来维护它可能更容易.

现在还有一个问题,即如何进行变量修改.主要选项是.bbappend in your layer,这是附加的内容,但你也可以从你的发行版配置中做到这一点(如果你维护自己的发行版,可能更容易将所有这些调整放在一个地方,而不是喷到很多附加)或从你的local.conf(这是一个快速尝试它的好地方,但可能不会长期使用).我通常使用.bbappend.

但是对于这个问题也有一种完全不同的方法,而不是修复包依赖关系,你也可以修复some other package provides.例如,你有一个内核配置为在主zimage内置imx-gpu-viv模块你可以做

RPROVIDES_kernel-image += "kernel-module-imx-gpu-viv"

(也在.bbappend,发行版配置或local.conf中)就是这样.

无论如何,您解决此问题的方法应反映您的设置和配方假设之间的差异.如果你有模块,但是在另一个软件包中,那么选择RPROVIDES,如果你有一些其他模块提供与libgal-mx6软件包相同的功能,那么修复libgal-mx6依赖项(并且最好修复它们,这意味着不仅仅是删除你不需要的东西,但也添加与你的设置相关的东西.

网友评论