yocto 以编程方式分配的 SRCREV 触发器元数据不确定

问题描述 投票:0回答:1

在我的 .bb 中,我使用此表达式根据环境变量 GW_TAG 的存在来确定 SRCREV 的值,该变量可能包含 git 标签:

SRCREV = "${@ d.getVar('AUTOREV') if d.getVar("BB_ORIGENV", True).getVar("GW_TAG") is None else d.getVar("BB_ORIGENV", True).getVar("GW_TAG") }"

它工作正常,但触发此错误:

错误:重新解析 /home/mt/GW/yocto/work/src/meta-mytest/recipes-mytest/libmytest/libmytest.bb.do_fetch 时,basehash 值从 165dfeff250af9bbfa23c9371b729c7b 更改为 b524c301b8d3835a3ba74ed812d2b16 b.元数据不是确定性的,这需要修复。

如果我只是使用

SRCREV = @{AUTOREV}

一切都很好。我不明白为什么会出现错误,因为表达式的计算结果始终相同,如果已分配,则在构建之前分配 GW_TAG。

build metadata yocto bitbake non-deterministic
1个回答
0
投票

将该行修改为

SRCREV := "${@ d.getVar('AUTOREV') if d.getVar("BB_ORIGENV", True).getVar("GW_TAG") is None else d.getVar("BB_ORIGENV", True).getVar("GW_TAG") }"

解决了问题

© www.soinside.com 2019 - 2024. All rights reserved.