Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在yocto配方中生成一个文件并将其部署到映像_Yocto_Bitbake_Openembedded - Fatal编程技术网

在yocto配方中生成一个文件并将其部署到映像

在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 } 还有其他更喜欢的方式吗? 该

我需要根据配方的内容生成某种清单。此文件也需要部署到映像中

为了生成文件,我在许多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}可能更合适,但我认为它在这种情况下没有实际效果。我已经更新了回复。