Warnings occur if and only if licenses in the sources don't match LICENSE value of the recipe. Firstly, the recipe LICENSE strings are split into their individual license and the canonicalised to easy enable matching with licenses of sources. With the IGNOREWITHLINUXSYSCALLNOTE variable set to "1" in local.conf, it removes the "WITH Linux syscall note" string attached to the license value for sources before comparism. Added text to distinguish licenses from sources and those from recipes when warnings are outputed.
Signed-off-by: Ida Delphine <[email protected]> --- meta/classes/package.bbclass | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass index ab96f141ae..e814965d70 100644 --- a/meta/classes/package.bbclass +++ b/meta/classes/package.bbclass @@ -1545,6 +1545,7 @@ PKGDESTWORK = "${WORKDIR}/pkgdata" PKGDATA_VARS = "PN PE PV PR PKGE PKGV PKGR LICENSE DESCRIPTION SUMMARY RDEPENDS RPROVIDES RRECOMMENDS RSUGGESTS RREPLACES RCONFLICTS SECTION PKG ALLOW_EMPTY FILES CONFFILES FILES_INFO PACKAGE_ADD_METADATA pkg_postinst pkg_postrm pkg_preinst pkg_prerm" python emit_pkgdata() { + import oe.license from glob import glob import json import subprocess @@ -1756,13 +1757,30 @@ fi computedpkglics[pkg].update(computedlics[f]) if not found: bb.warn("%s not in %s" % (f, str(filemap))) - #if computedpkglics: - # bb.warn(str(computedpkglics)) for pkg in computedpkglics: lic = d.getVar('LICENSE_%s' % (pkg)) if not lic: lic = d.getVar('LICENSE') - bb.warn("License for package %s is %s vs %s" % (pkg, computedpkglics[pkg], lic)) + + # Splits the LICENSE values and canonicalise each license + # in the set of split license(s) + split_lic = oe.license.list_licenses(lic) + spdx_lic = set([canonical_license(d, l) for l in split_lic]) + if computedpkglics[pkg]: + computedpkglicsperpkg = set([]) + for l in computedpkglics[pkg]: + if l.endswith('-or-later'): + lic_ = l.replace('-or-later', '+') + computedpkglicsperpkg.add(lic_) + elif l.endswith(' WITH Linux-syscall-note'): + if d.getVar("IGNOREWITHLINUXSYSCALLNOTE") == "1": + lic_ = l.replace(' WITH Linux-syscall-note', '') + computedpkglicsperpkg.add(lic_) + else: + computedpkglicsperpkg.add(l) + # Displays warnings for licenses found in the recipes and not sources + if spdx_lic - computedpkglicsperpkg: + bb.warn("License for package %s is %s (source SPDX headers) vs %s (LICENSE)" % (pkg, computedpkglicsperpkg, str(spdx_lic))) } emit_pkgdata[dirs] = "${PKGDESTWORK}/runtime ${PKGDESTWORK}/runtime-reverse ${PKGDESTWORK}/runtime-rprovides" -- 2.25.1
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#147579): https://lists.openembedded.org/g/openembedded-core/message/147579 Mute This Topic: https://lists.openembedded.org/mt/80310847/21656 Group Owner: [email protected] Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
