Yocto:如何 remove/blacklist 来自包的 RDEPENDS 的一些依赖项?
Yocto: how to remove/blacklist some dependency from RDEPENDS of a package?
我有一个基于 https://github.com/jumpnow/meta-wandboard 的自定义机器层。
我已将内核升级到 4.8.6 并想将 X11 添加到映像中。
我正在修改图像配方 (console-image.bb
)。
由于魔杖板基于 i.MX6,我想包含来自 meta-fsl-arm
的 xf86-video-imxfb-vivante
包。
但是,它无法抱怨无法构建 kernel-module-imx-gpu-viv
。我相信会发生这种情况,因为 xf86-video-imxfb-vivante
取决于 imx-gpu-viv
,而 imx-gpu-viv
又取决于 kernel-module-imx-gpu-viv
。
我意识到这些依赖项是使用 meta-fsl-arm BSP 和 vanilla Poky 发行版创建的。但是这些东西对于魔杖板来说已经过时了,因此我正在使用带有现代内核的自定义机器层。
内核配置为包含 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 or 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
依赖项(它是最好 修复 它们,这意味着不仅要删除不需要的东西,还要添加与您的设置相关的东西。
我有一个基于 https://github.com/jumpnow/meta-wandboard 的自定义机器层。
我已将内核升级到 4.8.6 并想将 X11 添加到映像中。
我正在修改图像配方 (console-image.bb
)。
由于魔杖板基于 i.MX6,我想包含来自 meta-fsl-arm
的 xf86-video-imxfb-vivante
包。
但是,它无法抱怨无法构建 kernel-module-imx-gpu-viv
。我相信会发生这种情况,因为 xf86-video-imxfb-vivante
取决于 imx-gpu-viv
,而 imx-gpu-viv
又取决于 kernel-module-imx-gpu-viv
。
我意识到这些依赖项是使用 meta-fsl-arm BSP 和 vanilla Poky 发行版创建的。但是这些东西对于魔杖板来说已经过时了,因此我正在使用带有现代内核的自定义机器层。
内核配置为包含 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 or 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
依赖项(它是最好 修复 它们,这意味着不仅要删除不需要的东西,还要添加与您的设置相关的东西。