在yocto配方中生成一个文件并将其部署到映像
我需要根据配方的内容生成某种清单。此文件也需要部署到映像中 为了生成文件,我在许多BBL类中看到python代码函数以类似的方式使用,例如: python不创建清单{ [...] filename=d.expand${d}${LOC}/${MANIFEST\u NAME} [...] 打开文件名时,“w”作为清单文件: json.dumpmanifest\u dict,manifest\u文件,indent=True os.chmodfilename,0o644 } 还有其他更喜欢的方式吗? 该文件是在添加任务依赖项后创建的,但是当打包该文件时,文件中会出现主机用户受污染的警告 尽管我在很多食谱中都看到了:在yocto配方中生成一个文件并将其部署到映像,yocto,bitbake,openembedded,Yocto,Bitbake,Openembedded,我需要根据配方的内容生成某种清单。此文件也需要部署到映像中 为了生成文件,我在许多BBL类中看到python代码函数以类似的方式使用,例如: python不创建清单{ [...] filename=d.expand${d}${LOC}/${MANIFEST\u NAME} [...] 打开文件名时,“w”作为清单文件: json.dumpmanifest\u dict,manifest\u文件,indent=True os.chmodfilename,0o644 } 还有其他更喜欢的方式吗? 该
chown -R root:root ${D}${...}/${...}
此操作失败,因为chown需要由root用户运行,而bitbake由当前用户运行:
Log data follows:
| DEBUG: Executing shell function do_uncontaminate
| chown: changing ownership of '/mnt/thud/build-r0w/[...]/manifest.json': Operation not permitted
| WARNING: exit code 1 from a shell command.
在这种情况下,如何修复主机用户受污染的警告?
注意:我知道这会阻止警告出现,但不会解决问题
INSANE_SKIP_${PN} = "host-user-contaminated"
您没有指定创建此文件的位置、文件名包含的路径,但根据错误,我怀疑您是直接在${D}某处创建它的 如果您改为在例如${B}下创建清单文件,然后在常规的do_安装过程中使用例如install-Dm0644${B}/my_manifest${D}/dest/path/my_manifest安装它,那么所有权问题将与配方安装的任何其他文件一样得到处理
只需确保在安装do_之前运行do_create_manifest任务。您能分享完整的配方吗?以及完整的错误日志。Hello@danlor代码在一个类中,配方太长,无法在这个问题中添加。我添加了给定的错误,这就解决了问题。我已经完成了一些问题,以澄清您的第一个假设,事实上,我将文件放在${D}中。将它放在${B}中不是更正确吗?@urnenfeld Yes${B}可能更合适,但我认为它在这种情况下没有实际效果。我已经更新了回复。