3

我有一个基于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 on imx-gpu-vivwhich 又 RDEPENDS on kernel-module-imx-gpu-viv

我意识到这些依赖项是使用 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],但这只是解决方案的一部分。它有助于避免构建失败,但打包过程仍然失败。

4

1 回答 1

11

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"

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

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

RDEPENDS_libgal-mx6 = ""

在第二个中:

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

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

现在还有一个问题是在哪里做这个变量修饰。主要选项.bbappend在您的 layer中,这就是附加的目的,但您也可以从您的发行版配置中执行此操作(如果您要维护自己的发行版,将所有这些调整放在一个地方可能更容易,而不是喷洒到许多附加)或从你的local.conf(这是一个快速尝试的好地方,但可能不是长期使用的东西)。我通常使用.bbappend.

但是也有一个完全不同的方法来解决这个问题,而不是修复包依赖关系,您还可以修复一些其他包提供的内容。例如,如果您将内核配置为将imx-gpu-viv模块直接内置到主 zimage 中,您可以这样做

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

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

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

于 2016-11-21T09:36:24.723 回答