2017-08-29 20 views
3

を上書きせずに追加bbappend条件付きタスク:は、与えられた例えばレシピ機能

既存のレシピ: [some-yocto-upstream-thing_1.0.bb]

do_configure_prepend() { 
    <necessary logic> 
} 

BBCLASSEXTEND = "native nativesdk" 

私が作成していますdo_configure_prependが呼び出される前に私が書いた関数を必要とするこのレシピのbbappendが呼び出されます。しかし、私はこのクラスの目的のために呼び出され、クラスネイティブのビルドではなく、この関数が必要です。

私はdo_configure_prepend_class-targetを作成できますが、これはレシピバージョンを上書きします(クラスターゲットビルド中)。しかし、既存の必要なロジックは実行されません。

do_configure_prependの前に(addtaskを介して)呼び出されるカスタムタスクを作成することもできますが、これもclass-native(不要)として呼び出されます。

アイデア?私は上流のレシピが最終的に1つを定義することができ、私はそれを壊すだろうので、以前の組込みタスク(do_patchなど)をオーバーライドするのを避けるほうがよいでしょう。

答えて

2

いいえ、

do_configure_prepend_class-target() { 
    <necessary logic> 
} 

を使用して動作するはずです。 class-targetの場合、do_configureのコードが先頭に追加されます。

このようなオーバーライドを伴うプリペンドの例は、OE-Core/go.incです。

+0

しかし、既存のyocto do_configure_prependは、ターゲットビルド中にdo_configure_prepend_class-targetに置き換えているので、呼び出されません。これにより、が実行されなくなります。明確にするために、 "<必須論理>"がヨーコのレシピにあります。私が導入している機能には、実行する必要がある追加ロジックが含まれています。あなたの例では、そのようなことを混乱させます。 –

+0

いいえ、レシピに複数の '_prepend'を持つことができます。それらはすべて適用されます。 – Anders

+1

逆の場合は、 'do_configure_class-target_prepend'を実行すると問題が発生します。これは '_class-target'以外の値を取り消します。 – Anders