【问题标题】:yocto: REQUIRED_VERSION not working, if recipe does not existyocto:REQUIRED_VERSION 不工作,如果配方不存在
【发布时间】:2023-01-19 04:19:00
【问题描述】:

我在当前的 kirkstone LTS 版本中使用 yocto(很长一段时间)。我尝试使用食谱的版本信息。

见:https://docs.yoctoproject.org/4.0.6/ref-manual/variables.html?highlight=preferred_version#term-PV

所以我有一个这样的食谱:'my-recipe_1.0.0.bb'

现在我想在我的图像中安装这个版本的食谱。所以我有另一个像'image.bb'这样的食谱,它安装了类似这样的食谱:'IMAGE_INSTALL +=“我的食谱”。

现在,如果该配方版本不存在,我希望构建失败。我为此使用 REQUIRED_VERSION,请参阅:https://docs.yoctoproject.org/4.0.6/ref-manual/variables.html?highlight=preferred_version#term-REQUIRED_VERSION

所以我在我的 image.bb 中添加了这样一行:'REQUIRED_VERSION_my-recipe="1.0.0"'

这工作得很好,我可以用这种方式在我的食谱的不同版本之间切换。

现在问题来了:如果我需要一个不存在的配方版本,文档说我会收到一个错误并立即生成错误。但是相反,我的构建采用了现有的配方,而不是我需要的配方。

这导致了一种不可接受的情况,我的构建构建了我不期望的东西。 现在我想知道,是否有人知道出了什么问题。

我尝试将 REQUIRED_VERSION 用于不同的现有食谱。 -> 按预期工作。

我尝试将 REQUIRED_VERSION 用于不存在的配方。 -> 这没有按预期工作。我没有构建错误。

【问题讨论】:

    标签: yocto bitbake recipe


    【解决方案1】:

    唔。如果您尝试在 local.conf 中包含该行而不是 image.bb 文件? – thelummox 1 月 13 日 16:11

    好吧,将它添加到 local.conf 引发了预期的错误。它甚至打印可用的版本。

    这很奇怪,因为根据定义,local.conf 不是我层的一部分,但我可以使用它。

    【讨论】:

    • 我可以要求您将我的答案标记为已接受的答案,因为它解决了您的问题吗?
    【解决方案2】:

    由于手册指出 REQUIRED_VERSION“以与 PREFERRED_VERSION 完全相同的方式工作”(除了它会抛出错误),可以尝试使用 forcevariable 覆盖:

    REQUIRED_VERSION_my-recipe:forcevariable = "1.0.0"
    

    编辑:将此行包含在 local.conf 而不是 image.bb 文件中,以使预期行为生效。

    【讨论】:

    • 好主意!我忘了说我也试过这个。行为没有变化。
    • 唔。如果您尝试在 local.conf 中包含该行而不是 image.bb 文件怎么办?
    • 我将在星期一尝试并提供反馈。
    猜你喜欢
    • 2016-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多