Yocto上的包组和图像的许可证

时间:2016-08-18 13:00:26

标签: licensing yocto

我正在创建一个包含标准食谱和我自己的图像。我想列出我在所有包含的软件包中使用的许可证,然后检查我是否可以将它们用于商业应用程序。

我有惊喜包装组已经有一个LICENSE标志。我注意到了:

bitbake -e -n -v core-image-minimal | grep "LICENSE"

它返回 LICENSE = MIT ,因为它是在bb文件中定义的。

但是我没有关于所有包含的信息。这个MIT已经手动放在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 我编辑了meta / classes / license.bbclass并添加了

bb.warn('%s license is %s' %(pn, licenses))

在check_license_format函数的for循环中。现在它打印每个包的许可证,但我想总结一下

这样做的好方法

所以,我无法编译我的整个配方,因为“包管理”功能目前不适用于deb包(阅读here)。 请调整你的图像配方并使用@Roman Khimov的方法。这是干净的方式。

1 个答案:

答案 0 :(得分:10)

您不需要做任何特别的事情,只需构建您的图片并查看build/tmp/deploy/licenses/$IMAGE_NAME-$MACHINE-$DATE/license.manifest中生成的清单文件(当然,如果您没有重新定义LICENSE_DIRECTORY)。

例如,如果我为自己的core-image-minimal MACHINE构建generic-amd64,我会在build/tmp-musl/deploy/licenses/core-image-minimal-generic-amd64-20160818141324/license.manifest中得到结果:

PACKAGE NAME: base-files
PACKAGE VERSION: 3.0.14
RECIPE NAME: base-files
LICENSE: GPLv2

PACKAGE NAME: base-passwd
PACKAGE VERSION: 3.5.29
RECIPE NAME: base-passwd
LICENSE: GPLv2+
...