如何让do_deploy任务的机器级覆盖配置在Yocto gatesgarth中生效?
问题原因
你仅定义了带机器名后缀的do_deploy变体实现,但没有声明基础的do_deploy函数实体,BitBake无法将带MACHINE override的变体绑定为实际执行的任务,所以最终查询到的do_deploy为空。
解决方法
你可以选择以下任意一种方案修改代码:
方案1:新增基础空实现
先声明一个空的基础do_deploy函数,对应机器的重载实现会自动覆盖它:
addtask deploy after do_install before do_build # 基础空实现 do_deploy() { : } do_deploy_MACHINE-A () { bbinfo "Doing something for machine A" } do_deploy_MACHINE-B () { bbinfo "Doing something for machine B" }
方案2:使用override追加语法
gatesgarth版本支持冒号分隔的override语法,直接针对对应机器追加任务逻辑,无需额外定义空基础函数:
addtask deploy after do_install before do_build do_deploy:append:MACHINE-A () { bbinfo "Doing something for machine A" } do_deploy:append:MACHINE-B () { bbinfo "Doing something for machine B" }
修改完成后重新执行bitbake -e <你的配方名>即可看到do_deploy已经加载了对应机器的实现逻辑。
内容的提问来源于stack exchange,提问作者user33056
相关产品推荐
相关产品推荐

