【问题标题】:How do you use a specific package version in a Yocto image recipe?你如何在 Yocto 镜像配方中使用特定的包版本?
【发布时间】:2014-12-10 23:40:18
【问题描述】:

我当前的项目基于 Yocto Daisy,在一个 git repo 中包含自定义层声明,在另一个 git repo 中包含应用程序代码。应用程序代码生命周期与自定义层生命周期有些分离,因此我希望能够在构建中捕获它。

为此,我有两个扩展 core-image 的配方:“my-image”和“my-image-dev”。我想让“我的图像”始终使用“应用程序”的标记版本(例如 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 图像声明对特定版本的包的依赖?

【问题讨论】:

    标签: embedded-linux yocto


    【解决方案1】:

    我找到了一个解决方案,可以让我完全按照我的要求去做。

    关键是将我的“应用程序”包分成两个包——“应用程序”和“应用程序-git”。然后,我将发布版本的配方移至“应用程序”,将开发配方移至“应用程序-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"

    这是对系统的轻微滥用,但由于它产生了清晰的结果(image中的release版本,image-dev中的dev版本),我认为这是值得的。

    【讨论】:

    • 不,这不是滥用...这是正确的做法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-28
    • 1970-01-01
    • 1970-01-01
    • 2015-09-26
    • 2019-09-17
    相关资源
    最近更新 更多