我正在创建一个包含标准配方和我的拥有者的映像。我想列出所有包含的软件包中使用的许可证,然后检查我是否可以将它们用于商业应用。Yocto上软件包和映像的许可证
我有不好的惊喜packagegroups已经有一个许可证标志。我注意到它做:
bitbake -e -n -v core-image-minimal | grep "LICENSE"
它返回LICENSE = MIT,因为它是在BB文件中定义。
但我没有关于所有包含的信息。这麻省理工学院已被手动放在core-image-minimal.bb,但我会对所有的依赖感兴趣。我的.bb文件有同样的问题。
方法1
一个解决办法是把每执照INCOMPATIBLE_LICENSE然后
bitbake -k -n -e -v <recipe> | grep "incompatible with license"
然后检查哪一个弹出,加上他们在LICENSE_FLAGS_WHITELIST和INCOMPATIBLE_LICENSE和迭代删除它们。问题是,每次完成后,它会再次解析整个工作空间,并且需要很长时间。
是否有脚本可以轻松检查?像Yocto这样的蟒蛇总是这样做。
方法2 我编辑元/类/ license.bbclass并加入
bb.warn('%s license is %s' %(pn, licenses))
在
为check_license_format功能的回路。现在,它打印许可为每个包,但我想有几分总结
好办法做到这一点
所以,我无法编译我的整个配方自从“包管理“功能目前不能与deb软件包一起使用(请参阅here)。 请改编你的图像配方,并在那里使用@Roman Khimov的方法。这是干净的方式。
有没有一种方法,使其与干运行(-n,我测试过,没有得到许可工作.manifest)? –
@DavidBensoussan:不要这么想,因为'license_create_manifest()'从ROOTFS_POSTPROCESS_COMMAND运行,并且在rootfs创建阶段。此外,从理论上讲,由于至少包含动态包,因此在构建映像之前,您无法构建完整的软件包和许可证列表。 –