【问题标题】:How to add a macro or variable in yocto recipe which can be used in other recipes?如何在 yocto 配方中添加可用于其他配方的宏或变量?
【发布时间】:2016-07-10 15:14:25
【问题描述】:

我有一个名为“foo”的组件,它的配方和一个图像配方,它将把 foo 添加到整个堆栈并构建一个启用 foo 的图像。

现在我只需要在启用 foo 的图像中启用一项功能。所以我需要为启用 foo 的图像添加一个宏或变量来区分它们。

我尝试通过如下所示的图像配方在发行版功能中添加 foo。

DISTRO_FEATURES_append = " foo"

但它不起作用,因为它没有反映在其他食谱中。

我必须根据 foo.js 在另一个模块中进行更改。我需要检查第二个模块是否启用了 foo。

有没有其他方法可以实现这一点。我可以为此使用发行版功能吗?

【问题讨论】:

    标签: build yocto bitbake openembedded


    【解决方案1】:

    发行版的功能——顾名思义——是发行版的。您不能在配方中更改它并期望它传播给其他人,因为每个配方都会继承发行版范围的配置,然后进行自己的更改。

    这包括镜像配方,因为镜像配方所做的只是获取已经构建的包并安装它们。如果您更改映像配方中的 DISTRO_FEATURES,那么您将更改它以用于映像构建,但使用的包已经构建。

    由于您的问题在细节上相当模糊,因此很难给出一个好的答案。您的意思是根据图像是否“启用 foo”,需要以不同的方式构建各个食谱?或者这只是图像是否包含 foo 包的问题?

    【讨论】:

    • 您的意思是根据图像是否“启用 foo”,需要以不同方式构建各个食谱? - 是的。我必须根据 foo.js 在另一个模块中进行更改。我需要检查第二个模块是否启用了 foo。
    • 然后你基本上描述了一个发行版功能,所以你需要两个不同的发行版:比如 mydistro 和 mydistrofoo(mydistrofoo.conf 可以简单地包含 mydistro.conf 并将 foo 添加到 DISTRO_FEATURES)。另一个解决方案 - 因为你是抽象的,所以很难具体帮助 - 将始终使用 foo 构建但拆分包,以便可以在没有任何 foo 的情况下安装包。 oe-core 中的很多包已经这样做了,即默认情况下会启用 python 支持,但放在单独的包中,因此不必安装。
    • 你能给我一个添加发行版功能的例子吗?我是 yocto 的新手。
    • 简化我的问题:我在同一个元层中有 2 个组件(foo1 和 foo2)。我为他们准备了 2 个单独的食谱。我必须在第一个配方(foo1.bb)中启用一个宏,并在第二个配方(foo2.bb)中检查相同的宏,并根据该宏做一些事情(可能是启用一些东西)。你能指导我如何实现这一目标吗?
    • 你不能这样做:食谱是孤立的。您可以在 local.conf 或 distro.conf 中设置两个配方都尊重的变量。
    猜你喜欢
    • 2017-07-18
    • 1970-01-01
    • 2018-12-31
    • 1970-01-01
    • 2018-05-31
    • 2019-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多