2017-08-29 8 views
3

Pour l'exemple donné:Ajouter bbappend tâche conditionnelle sans écraser la fonction de recette

recette existante: [some-yocto-upstream-thing_1.0.bb]

do_configure_prepend() { 
    <necessary logic> 
} 

BBCLASSEXTEND = "native nativesdk" 

Je crée un bbappend à cette recette qui doit avoir une fonction que j'ai écrite être appelé avant que le do_configure_prepend ne soit appelé. Mais je veux seulement que cette fonction soit appelée pour la classe-target et non pour la classe native.

Je peux créer une classe do_configure_prepend_class-target, mais cela remplace la version de la recette (au cours des générations cible-classe). Mais alors la logique nécessaire existante ne sera pas exécutée.

Je peux créer une tâche personnalisée à appeler avant do_configure_prepend (via addtask) mais elle est ensuite appelée pour class-native, aussi (non désirée).

Des idées? Je préférerais éviter de surcharger une tâche intégrée plus ancienne (do_patch, etc.) car la recette en amont pourrait éventuellement en définir une et je la casserais.

Répondre

2

Non, en utilisant

do_configure_prepend_class-target() { 
    <necessary logic> 
} 

devrait fonctionner. Pour class-target, do_configure sera ajouté à votre code. Un exemple d'un tel préfixe avec remplacement est OE-Core/go.inc.

+0

Mais le yocto do_configure_prepend existant ne sera pas appelé puisque je le remplace par do_configure_prepend_class-target pendant la construction de la cible. Cela empêche la "" de s'exécuter. Pour être clair, la "logique nécessaire" est présente dans la recette du yocto. La fonction que j'introduis inclut une logique supplémentaire que j'ai besoin d'exécuter. Votre exemple confond les choses, à cet égard. –

+0

Non, vous pouvez avoir plusieurs '_prepend' dans une recette, ils s'appliqueront tous. – Anders

+1

Vous obtiendrez vos problèmes si vous l'avez fait dans l'autre sens: 'do_configure_class-target_prepend'. Cela annulerait toutes les valeurs non '_class-target'. – Anders