簡體   English   中英

如何在Yocto圖像配方中使用特定的包版本?

[英]How do you use a specific package version in a Yocto image recipe?

我目前的項目基於Yocto Daisy,在一個git倉庫中有自定義層聲明,在另一個git倉庫中包含應用程序代碼。 應用程序代碼生命周期與自定義層生命周期有些分離,因此我希望能夠在構建中捕獲它。

為此,我有兩個擴展核心圖像的方法:'my-image'和'my-image-dev'。 我想'my-image'總是使用'​​application'的標記版本(例如v0.1,v0.2等)。 我想讓'my-image-dev'始終使用來自git master的'application'HEAD。

我寫了食譜'application_0.1.bb'和'application_git.bb',並單獨測試它們。 它們的行為符合預期 - 'application_0.1.bb'獲得標記0.1,'application_git.bb'獲得主標記。

當我嘗試指示特定圖像使用特定版本的“應用程序”時,問題就出現了。 我原以為這就像在我的圖像配方中添加PREFERRED_VERSION_application = "0.1"PREFERRED_VERSION_application = "git%"一樣簡單,但這讓我沒有愛。 PREFERRED_VERSION似乎唯一有效的地方是在layer.conf和machine.conf中,這對我沒有幫助,因為兩個圖像都是針對同一個邏輯機器的。

所以這是我的問題 - 有沒有辦法從Yocto圖像聲明對特定版本的包的依賴?

我找到了一個解決方案,可以讓我完全按照自己的意願行事。

關鍵是將我的'應用程序'包拆分為兩個包 - 'application'和'application-git'。 然后我將發布版本的配方移動到'application',將開發配方移動到'application-git'。 為了減少重復的代碼,我將兩個配方之間的所有通用邏輯移動到文件'application / application.inc'中,並使用require recipes-application/application/application.inc將其包含在'application-git.bb'中。

現在我可以在我的圖像中包含適當的包。 所以'my-image.bb'包含IMAGE_INSTALL += "application" 'my-image-dev.bb'需要'my-image.bb',所以我添加了行IMAGE_INSTALL_remove = "application"並添加了IMAGE_INSTALL += "application-git"

這是對系統的輕微濫用,但由於它產生了明顯的結果(圖像中的發布版本,圖像開發中的開發版本),我認為這是值得的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM