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-vivanteます。imx-gpu-vivkernel-module-imx-gpu-viv

これらの依存関係は、meta-fsl-arm BSP とバニラ Poky ディストリビューションで作成されていることを認識しています。しかし、それらはワンドボードにとっては時代遅れであるため、最新のカーネルでカスタム マシン レイヤーを使用しています。kernel-module-imx-gpu-vivカーネルは Vivante DRM モジュールを含むように構成されていますが、パッケージをビルドしたくありません。

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 = ""

2番目のものでは:

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

明らかに、これら 2 つのオプションは、現在および将来の作業に異なる意味を持ちます。meta-fsl-arm一般に、レイヤーを更新するときに壊れる可能性が低く、imx-gpu-vivレシピをあらゆる方法で変更できるため、2番目のより柔らかいものを選択します。しかし、変数に大きなリストを含むより複雑なレシピをオーバーライドし、それを大幅に変更する場合 (1 つまたは 2 つのものを削除するだけでなく)、変数の完全なハード割り当てを使用して維持する方が簡単な場合があります。

ここで、この変数マングリングをどこで行うかという問題もあります。主なオプションは.bbappendレイヤーにあります。これが追加の目的ですが、ディストリビューション構成からこれを行うこともできます(独自のディストリビューションを維持している場合は、これらすべての調整をスプレーするよりも1か所で行う方が簡単かもしれません多数の追加に) またはあなたからlocal.conf(すぐに試してみるには良い場所ですが、おそらく長期的に使用するものではありません)。私は通常使用します.bbappend

ただし、この問題にはまったく異なるアプローチもあり、パッケージの依存関係を修正するのではなく、他のパッケージが提供するものを修正することもできます。たとえば、imx-gpu-vivモジュールをメインの zimage に直接組み込むようにカーネルを構成している場合は、次のことができます。

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

(また.bbappend、ディストリビューション構成またはlocal.conf)、それだけです。

いずれにせよ、この問題を解決するためのアプローチは、セットアップとレシピの仮定の違いを反映する必要があります。モジュールを持っているが、別のパッケージにある場合は、パッケージRPROVIDESに同じ機能を提供する他のモジュールがある場合は、依存関係を修正します(そして、必要のないものを削除するだけでなく、それらを修正することをお勧めします、セットアップに関連するものも追加します)。libgal-mx6libgal-mx6

于 2016-11-21T09:36:24.723 に答える