2016-11-10 438 views
3

我有一个基于https://github.com/jumpnow/meta-wandboard的自定义机器层。Yocto:如何从包的RDEPENDS中删除/黑名单中的某些依赖项?

我已经将内核升级到了4.8.6,并且希望将X11添加到图像中。 我正在修改图像配方(console-image.bb)。 由于Wandboard基于i.MX6,因此我想包含来自meta-fsl-armxf86-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]的黑名单,但这只是解决方案的一部分。它有助于避免构建失败,但包装过程仍然失败。

+0

可以为我粘贴log.do_package和run.do_package的日志吗? – theadnangondal

回答

6

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作为一个bug,通常内核模块的依赖关系被指定为RRECOMMENDS因为大多数模块可以被编译到内核从而使根本没有单独的软件包,同时仍然提供功能。但那是另一个问题。

有几种方法可以解决这个问题,第一个一般路线是调整软件包的RDEPENDS。这只是一个bitbake变量,所以你可以选择assign it some other valueremove some portion of it。在第一种情况下,它会在一定程度上是这样的:

RDEPENDS_libgal-mx6 = "" 

在第二个:

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

显然,这两种选择对你的现在和未来的工作有不同的影响。一般情况下,我会选择较软的一个,因为它在更新meta-fsl-arm图层时破损的可能性较小,可以以任何方式更改imx-gpu-viv配方。但是当你用变量中的大列表覆盖一些更复杂的配方,并且你正在大量修改它(而不是仅仅删除一两件事情)时,通过完全硬分配变量来维护它可能更容易。

现在还有一个的问题,其中做这个变量mangling。主要选项是.bbappend in your layer,这就是追加的内容,但您也可以从发行版配置中完成此操作(如果您要维护自己的发行版,则可以更容易地将所有这些调整集中在一个位置,而不是喷涂到众多追加)或从您的local.conf(这是一个很好的地方快速尝试,但可能不是长期使用的东西)。我通常使用.bbappend

但是对于这个问题也有一个完全不同的方法,而不是修复软件包依赖关系,你也可以修复什么some other package provides。例如,如果你已经配置有imx-gpu-viv模块右内置到主zImage的内核,你可以做

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

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

在任何情况下,您解决此问题的方法应该反映您的设置和配方假设之间的差异。如果你确实有模块,但是在不同的包中,那么去RPROVIDES,如果你有一些其他模块提供了与libgal-mx6包相同的功能,那么修复libgal-mx6依赖关系(并且它更好的是修复它们,你不需要,但也可以添加与你的设置相关的东西)。

+0

非常感谢你为这个彻底阐述的答案!虽然我意识到我正在走的是完全错误的方式,因为现代内核采用KMS和'etnaviv'的方式来处理i.MX6,但您的答案无论如何都非常有帮助。我不知道'_remove'后缀,所以我使用python代码来做同样的事情。你的解决方案更清洁。再次感谢。 –

相关问题