yocto: REQUIRED_VERSION不工作,如果配方不存在



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

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

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

现在我想在我的图像中安装这个版本的配方。所以我有另一个食谱,像"图像"。'IMAGE_INSTALL += "my-recipe"

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

所以我添加了我的图像。写一行:'REQUIRED_VERSION_my-recipe="1.0.0"'

这个效果很好,我可以在不同版本的食谱之间切换。

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

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

我尝试使用REQUIRED_VERSION不同的现有食谱。→

我试图使用REQUIRED_VERSION不存在的配方。→这并没有像预期的那样起作用。我没有得到编译错误。

由于手册声明REQUIRED_VERSION "与PREFERRED_VERSION"的工作方式完全相同;(除了抛出一个错误),也许可以尝试使用强制变量override:

REQUIRED_VERSION_my-recipe:forcevariable = "1.0.0"
编辑:在local.conf中包含这一行而不是图像。Bb文件的预期行为生效

嗯。如果您尝试在local.conf中包含这行而不是的形象。bb文件?——the ummox Jan 13 at 16:11

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

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