2012-11-21 16 views
9

Używam bitbake/openembedded, ale mój przepis zawodzi, ponieważ niektóre zmienne ścieżki nie są poprawnie ustawione, tak myślę. W szczególności dodawanie plików do SRC_URI, ale błąd wskazuje, że próba skopiowania pliku odbywa się przy użyciu niewłaściwej ścieżki. DlategoŚledzenie przypisania zmiennych w bitbake

1) Jak mogę sprawdzić „bieżący” path-zmienna użyta przy użyciu protokołu file: //

2) Biorąc pod uwagę, że w jakiś sposób potwierdzić których zmienna służy do wyszukiwania plików, mogę śledzić zadania do wspomnianej zmiennej na moim wykresie zależności? Chodzi mi o to, że bitbake musi napotkać appends/prepends do zmiennej w jakiejś kolejności w jakimś zbiorze plików receptur, które chciałbym sprawdzić, aby znaleźć mój błąd.

Dodatkowe pytanie: Myślę, że moje obecne " metoda debugowania "w celu wykrycia błędów w moich przepisach jest zbyt prymitywna (np. dodanie -D -D -D do linii poleceń, a następnie branie przez stosy wyników wyszukiwania w poszukiwaniu wskazówek). W jaki sposób "profesjonaliści" debugują swoje przepisy dotyczące bitbestów?

Aktualizacja: Znalazłem dużo lepszy sposób debugowania moich receptur:

Okazuje się, że po „fetch” zadaniem danego przepisu została pomyślnie zakończona, folder roboczy o przepis jest tworzone. Wewnątrz tego folderu znajduje się podfolder "temp" zawierający wykonany kod (np. Run.do_fetch. ######) i wyniki (np. Log._do_fetch. ######) dla każdego zadania w recepturze .

Sprawdzanie pliku "uruchom .. ###" powie Ci dokładną wartość dowolnej zmiennej oraz dokładne polecenia/funkcje Pythona wykonane dla zadania. Dane wyjściowe danego "przebiegu" są przechowywane w pliku "log .. ###" z tym samym identyfikatorem/numerem co plik "uruchom". W jakiś sposób ta bardzo podstawowa informacja nie została zarejestrowana podczas czytania instrukcji, ale teraz zawsze patrzę w folder "temp", gdy przepis zawodzi.

+0

Re: * "Dokładna wartość zmiennej ofany" *: Widzę tylko zmienne środowiskowe w tych 'run.' plików. Nie żadnych zmiennych BitBake. Widzę 'CFLAGS' i' RANLIB' i podobne rzeczy; Nie widzę 'WORKDIR' lub' S' lub 'FILESEXTRAPATHS' lub cokolwiek innego. – Kaz

Odpowiedz

15

Zakładam, że odkryłeś bitbake-e, prawda? To zrzuca środowisko specyficzne dla "celu" pojedynczego bitu (tj. Przepisu). Uważam, że FILESPATH jest kluczową zmienną, którą bitBake wykorzystuje do znalezienia plików określonych w składniku file: // SRC_URI. Używanie bitbake -e (przepis) | grep^FILESPATH = wyświetli tę bardzo dużą zmienną ścieżki!

Nie wiem, jak śledzić przypisania do tej zmiennej, ale istnieje kilka sposobów na jej modyfikację. (Właściwie to przypominam sobie łatkę bitbake, która opisywałaby wyjście bitbake-e z tym, który plik zmodyfikował zmienną, ale nie może przywołać szczegółów.) Zapytaj na liście oe.) W każdym razie, jeśli usuniesz znak "=" z grep powyżej można zobaczyć inne sposoby można zmienić FILESPATH. Myślę, że jest to również uwzględnione w różnych dokumentach.

Wreszcie, powinieneś mieć więcej szczęścia z prośbą o otwartą listę mailingową, niż tutaj na stackoverflow.

Bitbake -e i pliki dziennika (znalezione w $ {WORKDIR}/temp) to najlepsze narzędzia do debugowania. (Sprawdź także ack-grep. Lepiej niż grep dla niektórych przypadków użycia bitbake.) Gdzie jest WORKDIR, pytasz?

bitbake -e (przepis) | grep^WORKDIR =

Po zapoznaniu się z WORKDIR, zobaczysz wzór i nie będzie musiał go znaleźć w ten sposób.

Happy baking!;)

+0

Tak, używam opcji -e, aby wyświetlić wyniki. Ale wyniki między dwoma z moich przepisów różnią się i nie rozumiem, dlaczego w zatopionym środowisku. –

+0

Jakoś mi brakowało, że wspomniałeś folder "WORKDIR/temp" w swojej odpowiedzi. Odkrycie folderu "temp" było dla mnie prawdziwym utrudnieniem i znacznie poprawiło mój wskaźnik sukcesu z bitbakiem. Dzięki! –

0

Okazuje się, że istnieje patch dla tej operacji w nowszych wersjach BitBake, jej po prostu nie jest obsługiwana w jednym obecnie używam :-(

+0

Witam, S.C., czy możesz określić, która łatka i jak z niej korzystasz? Szukam tego samego rozwiązania. – minghua

+1

@minghua Przykro mi, ale zapomniałem, gdzie znalazłem łatkę. Znaleziono przez Google w poszukiwaniu wskazówek do debugowania bitbota. –

0

Sugerowałbym użyciu Toster, w interaktywny . W trybie strony konfiguracji, można śledzić zmienną historię przypisania

Atrapa jest tutaj:. https://www.yoctoproject.org/toaster/build-configuration.html

Aby go użyć, run „start źródło toster” po „źródła oe-startowych-build-env” i w interfejsie internetowym znajdziesz dane rejestrowane z twoich buildów

Nadzieja to pomaga, Alex