2012-11-21 4 views
9

J'utilise bitbake/openembedded, mais ma recette échoue car certaines variables de chemin ne sont pas définies correctement. Plus précisément, j'ajoute des fichiers à SRC_URI, mais l'erreur indique que la tentative de copier le fichier est faite en utilisant le mauvais chemin. Par conséquentSuivi des affectations de variables dans bitbake

1) Comment puis-je vérifier le chemin variable « courant » utilisé lors de l'utilisation protocole file: //

2) Étant donné que je confirme en quelque sorte que la variable est utilisée pour rechercher des fichiers, puis-je suivre les affectations à cette variable dans mon graphique de dépendance? Je veux dire, bitbake doit rencontrer des ajouts/préfixes à la variable dans un certain ordre dans un ensemble de fichiers de recettes, que je voudrais inspecter afin de trouver mon erreur

Question supplémentaire: Je pense que mon courant " La méthode de débogage "pour détecter les erreurs dans mes recettes est trop primitive (par exemple, ajouter -D -D -D à la ligne de commande et parcourir ensuite les piles de sortie pour rechercher des indices). Comment les "professionnels" débuguent-ils leurs recettes de bitbake?

Mise à jour: J'ai trouvé une bien meilleure façon de débogage mes recettes:

Il se trouve que, après la tâche d'une recette donnée « chercher » a terminé avec succès, le dossier de travail pour la recette est créé. Dans ce dossier se trouve un sous-dossier "temp" contenant le code exécuté (par exemple run.do_fetch. ######) et les résultats (par exemple log._do_fetch. ######) pour chaque tâche de la recette .

L'inspection du fichier "run .. ###" vous indiquera la valeur exacte de n'importe quelle variable, et les commandes exactes/fonctions Python exécutées pour la tâche. La sortie d'un "run" donné est stockée dans le fichier "log .. ###" avec le même identifiant/numéro que le fichier "run". D'une façon ou d'une autre, cette information de base ne s'est pas enregistrée pendant que je lisais le manuel, mais maintenant je regarde toujours dans le dossier "temp" quand une recette échoue.

+0

Re: * "valeur exacte de toute variable" *: Je ne vois que des variables d'environnement dans ces fichiers 'run.'. Pas de variables BitBake. Je vois "CFLAGS" et "RANLIB" et des choses comme ça; Je ne vois pas 'WORKDIR', ou' S', ou 'FILESEXTRAPATHS' ou quoi que ce soit. – Kaz

Répondre

15

Je présume que vous avez découvert bitbake -e, non? Cela décharge l'environnement spécifique à une "cible" bitbake (c'est-à-dire une recette). Je crois que FILESPATH est la variable clé que bitbake utilise pour trouver les fichiers spécifiés dans un fichier: // SRC_URI. Utilisation de bitbake -e (recette) | grep^FILESPATH = affichera cette très grande variable de chemin!

Je ne connais pas de moyen de suivre les affectations de cette variable, mais il existe plusieurs façons de la modifier. (En fait, je me souviens d'un patch bitbake qui annotait la sortie de bitbake -e avec quel fichier modifiait quelle variable mais ne pouvait pas rappeler les détails, demandez dans la liste oe.) Dans tous les cas, si vous supprimez le signe '=' le grep ci-dessus vous pouvez voir les autres façons FILESPATH peut être modifié. Je pense que cela est couvert dans les différents documents, aussi bien. Enfin, vous pouvez avoir plus de chance sur la liste de diffusion openembedded, plutôt que sur stackoverflow. Bitbake -e et les fichiers journaux (trouvés dans $ {WORKDIR}/temp) sont les meilleurs outils de débogage. (Consultez également ack-grep, mieux que grep pour certains cas d'utilisation liés à bitbake.) Où est WORKDIR que vous posez?

bitbake -e (recette) | grep^WORKDIR =

Une fois que vous vous serez familiarisé avec WORKDIR, vous verrez le motif et n'aura pas à le trouver de cette façon.

Bonne cuisson!;)

+0

Oui, j'utilise -e pour voir les résultats. Mais les résultats entre deux de mes recettes diffèrent, et je ne peux pas voir pourquoi dans l'environnement sous-évalué. –

+0

J'ai un peu manqué, que vous avez mentionné le dossier "WORKDIR/temp" dans votre réponse. La découverte du dossier "temp" m'a vraiment ouvert les yeux et a grandement amélioré mon taux de réussite avec bitbake. Merci! –

0

fin de compte, qu'il ya un patch pour le faire dans les versions ultérieures de bitbake, son tout simplement pas pris en charge dans celui que je suis actuellement en utilisant :-(

+0

Salut, S.C., Pouvez-vous préciser quel patch et comment vous l'utilisez? Je cherche la même solution. – minghua

+1

@minghua Je suis désolé mais j'ai oublié où j'ai trouvé le patch. Trouvé via Google à la recherche d'indices pour déboguer bitbake. –

0

Je suggère d'utiliser Grille-pain, en interactif . Mode Dans la page de configuration, vous pouvez suivre l'historique de l'affectation des variables

le mockup est ici. https://www.yoctoproject.org/toaster/build-configuration.html

Pour l'utiliser, lancez "source de démarrage du grille-pain" après "source oe-init-build-env" et Dans l'interface Web, vous trouverez des données enregistrées à partir de vos builds

Espérons que cela aide, Alex

Questions connexes