2012-11-21 133 views
9

我使用的是bitbake/openembedded,但是我的配方失敗,因爲一些路徑變量最終沒有正確設置我認爲。具體而言,我將文件添加到SRC_URI,但錯誤表示嘗試複製文件是使用錯誤的路徑完成的。因此跟蹤bitbake中的變量賦值

1)如何驗證的「當前」使用文件時所使用的路徑變量://協議

2)考慮到我在某種程度上確認哪個變量被用於搜索文件,我可以跟蹤分配到我的依賴關係圖中的變量?我的意思是,bitbake必須在一些配方文件中遇到以某種順序追加/前置變量,我想檢查它以便發現我的錯誤

獎勵問題:我在想我目前的「調試方法「用於檢測我的食譜中的錯誤太原始(例如,向命令行添加-D -D -D,然後通過一堆輸出來查找提示)。 「專業人員」如何調試他們的bitbake食譜?

更新:我發現我的調試食譜一個更好的方法:

事實證明,那之後的給定配方的「取」任務已順利完成,工作文件夾爲配方被建造。在這個文件夾裏有一個「temp」子文件夾,包含配方中每個任務的執行代碼(例如run.do_fetch。######)和結果(例如log._do_fetch。######) 。

檢查「run .. ###」文件會告訴您任何變量的確切值,以及爲任務執行的精確命令/ Python函數。給定「運行」的輸出存儲在與「運行」文件相同的ID /編號的「log .. ###」文件中。不知何故,當我閱讀手冊時,這些非常基本的信息沒有註冊,但現在當配方失敗時,我總是查看「temp」文件夾。

+0

Re:*「任何變量的確切值」*:我在這些'run.'文件中只看到環境變量。沒有任何BitBake變量。我看到'CFLAGS'和'RANLIB'以及類似的東西;我沒有看到'WORKDIR','S',或'FILESEXTRAPATHS'等等。 – Kaz

回答

15

我認爲你已經發現了bitbake -e,對吧?這將特定於單個bitbake「目標」(即配方)的環境轉儲。我相信FILESPATH是bitbake用來查找file:// SRC_URI組件中指定文件的關鍵變量。使用bitbake -e(配方)| grep^FILESPATH =會顯示那個非常大的路徑變量!

我不知道一種方法來跟蹤分配給該變量,但有幾種方法來修改它。 (實際上我記得一個bitbake補丁,它將註釋bitbake -e的輸出與哪個文件修改了哪個變量但不記得詳細信息。請在oe列表中查詢)。無論如何,如果您從中刪除'='標誌上面的grep可以看到FILESPATH可以被修改的其他方式。我認爲這也包括在各種文檔中。

最後,在openembedded郵件列表上,你可能會有更好的運氣,而不是這裏的stackoverflow。

Bitbake -e和日誌文件(可在$ {WORKDIR}/temp中找到)是您最好的調試工具。 (也可以查看ack-grep。比grep更適合與一些bitbake相關的用例。)你問什麼WORKDIR在哪裏?

bitbake -e(食譜)| grep^WORKDIR =

一旦熟悉了WORKDIR,您將看到該模式,而不必以這種方式找到它。

快樂烘焙!;)

+0

是的,我正在使用-e查看結果。但是我的兩個食譜之間的結果不同,我看不出爲什麼在傾倒的環境中。 –

+0

我不知何故錯過了,你在答案中提到了「WORKDIR/temp」文件夾。發現「臨時」文件夾對我來說是一個真正令人大開眼界,並通過bitbake大大提高了我的成功率。謝謝! –

0

原來,有在BitBake的更高版本的這樣一個補丁,它只是沒有在我目前使用的:-(一個支持

+0

嗨,S.C.,你能明確哪個補丁以及你如何使用它?我正在尋找相同的解決方案。 – minghua

+1

@minghua我很抱歉,但我忘記了在哪裏找到了補丁。通過谷歌搜索找到調試bitbake的線索。 –

0

我會建議使用電風扇,在互動。模式在配置頁面中,您可以跟蹤變量賦值歷史

的樣機是在這裏:。https://www.yoctoproject.org/toaster/build-configuration.html

爲「Source OE-INIT-集結ENV」後使用,運行「源烤麪包機開始」和在網絡界面中,您可以找到從您的版本中記錄的數據。

希望這會有所幫助, Alex