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

Ale*_*kin 3 openembedded bitbake yocto imx6

我有一个基于https://github.com/jumpnow/meta-wandboard的自定义机器层.

我已将内核升级到4.8.6,并希望将X11添加到图像中.我正在修改图像配方(console-image.bb).由于wandboard基于i.MX6,我想要包含xf86-video-imxfb-vivante来自的包meta-fsl-arm.然而,它无法抱怨无法建立kernel-module-imx-gpu-viv.我相信这是因为xf86-video-imxfb-vivanteDEPENDS imx-gpu-viv反过来RDEPENDS kernel-module-imx-gpu-viv.

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

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

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

Rom*_*mov 7

你问题的IIUC来自img-gpu-viv配方中的这些行:

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"
Run Code Online (Sandbox Code Playgroud)

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

有几种方法可以解决这个问题,第一种方法是调整包的RDEPENDS.它只是一个bitbake变量,所以你可以为它分配一些其他值删除它的一部分.在第一种情况下,它看起来有点像这样:

RDEPENDS_libgal-mx6 = ""
Run Code Online (Sandbox Code Playgroud)

在第二个:

RDEPENDS_libgal-mx6_remove = "kernel-module-imx-gpu-viv"
Run Code Online (Sandbox Code Playgroud)

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

现在还有一个问题,如何进行变量修改.主要选项.bbappend在您的图层中,这是附加的内容,但您也可以从发行版配置中执行此操作(如果您维护自己的发行版,可能更容易将所有这些调整放在一个地方,而不是喷涂在很多附件中)或从你的local.conf(这是一个快速尝试它的好地方,但可能不是长期使用的东西).我经常使用.bbappend.

但是对于这个问题也有一种完全不同的方法,而不是修复包依赖关系,你也可以修复其他包提供的东西.例如,如果您将内核配置为将imx-gpu-viv模块内置到主zimage中,则可以执行此操作

RPROVIDES_kernel-image += "kernel-module-imx-gpu-viv"
Run Code Online (Sandbox Code Playgroud)

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

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