mirror of
https://git.yoctoproject.org/poky
synced 2026-04-21 03:32:12 +02:00
base.bbclass: Report only the licenses that are incompatible for a package
Instead of reporting ${LICENSE} when a package is identified as using
an incompatible license, report the license(s) that are actually
incompatible.
(From OE-Core rev: fb3405fac7b933a3f9d23e5faf6a3cf2d1990982)
Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
4028227713
commit
5560c50316
@@ -542,24 +542,30 @@ python () {
|
||||
bb.note("Including %s as buildable despite it having an incompatible license because it has been whitelisted" % pn)
|
||||
else:
|
||||
pkgs = d.getVar('PACKAGES').split()
|
||||
skipped_pkgs = []
|
||||
skipped_pkgs = {}
|
||||
unskipped_pkgs = []
|
||||
for pkg in pkgs:
|
||||
if incompatible_license(d, bad_licenses, pkg):
|
||||
skipped_pkgs.append(pkg)
|
||||
incompatible_lic = incompatible_license(d, bad_licenses, pkg)
|
||||
if incompatible_lic:
|
||||
skipped_pkgs[pkg] = incompatible_lic
|
||||
else:
|
||||
unskipped_pkgs.append(pkg)
|
||||
all_skipped = skipped_pkgs and not unskipped_pkgs
|
||||
if unskipped_pkgs:
|
||||
for pkg in skipped_pkgs:
|
||||
bb.debug(1, "SKIPPING the package " + pkg + " at do_rootfs because it's " + license)
|
||||
bb.debug(1, "Skipping the package %s at do_rootfs because of incompatible license(s): %s" % (pkg, ' '.join(skipped_pkgs[pkg])))
|
||||
mlprefix = d.getVar('MLPREFIX')
|
||||
d.setVar('LICENSE_EXCLUSION-' + mlprefix + pkg, 1)
|
||||
d.setVar('LICENSE_EXCLUSION-' + mlprefix + pkg, ' '.join(skipped_pkgs[pkg]))
|
||||
for pkg in unskipped_pkgs:
|
||||
bb.debug(1, "INCLUDING the package " + pkg)
|
||||
elif all_skipped or incompatible_license(d, bad_licenses):
|
||||
bb.debug(1, "SKIPPING recipe %s because it's %s" % (pn, license))
|
||||
raise bb.parse.SkipRecipe("it has an incompatible license: %s" % license)
|
||||
bb.debug(1, "Including the package %s" % pkg)
|
||||
else:
|
||||
incompatible_lic = incompatible_license(d, bad_licenses)
|
||||
for pkg in skipped_pkgs:
|
||||
incompatible_lic += skipped_pkgs[pkg]
|
||||
incompatible_lic = sorted(list(set(incompatible_lic)))
|
||||
|
||||
if incompatible_lic:
|
||||
bb.debug(1, "Skipping recipe %s because of incompatible license(s): %s" % (pn, ' '.join(incompatible_lic)))
|
||||
raise bb.parse.SkipRecipe("it has incompatible license(s): %s" % ' '.join(incompatible_lic))
|
||||
|
||||
# Try to verify per-package (LICENSE_<pkg>) values. LICENSE should be a
|
||||
# superset of all per-package licenses. We do not do advanced (pattern)
|
||||
|
||||
@@ -4,7 +4,7 @@ from oeqa.utils.commands import bitbake
|
||||
class IncompatibleLicenseTests(OESelftestTestCase):
|
||||
|
||||
def lic_test(self, pn, pn_lic, lic):
|
||||
error_msg = 'ERROR: Nothing PROVIDES \'%s\'\n%s was skipped: it has an incompatible license: %s' % (pn, pn, pn_lic)
|
||||
error_msg = 'ERROR: Nothing PROVIDES \'%s\'\n%s was skipped: it has incompatible license(s): %s' % (pn, pn, pn_lic)
|
||||
|
||||
self.write_config("INCOMPATIBLE_LICENSE += \"%s\"" % (lic))
|
||||
|
||||
@@ -27,12 +27,12 @@ class IncompatibleLicenseTests(OESelftestTestCase):
|
||||
# license cannot be built when INCOMPATIBLE_LICENSE contains this SPDX
|
||||
# license
|
||||
def test_incompatible_spdx_license_alias(self):
|
||||
self.lic_test('incompatible-license-alias', 'GPLv3', 'GPL-3.0')
|
||||
self.lic_test('incompatible-license-alias', 'GPL-3.0', 'GPL-3.0')
|
||||
|
||||
# Verify that a package with an alias (from SPDXLICENSEMAP) to an SPDX
|
||||
# license cannot be built when INCOMPATIBLE_LICENSE contains this alias
|
||||
def test_incompatible_alias_spdx_license_alias(self):
|
||||
self.lic_test('incompatible-license-alias', 'GPLv3', 'GPLv3')
|
||||
self.lic_test('incompatible-license-alias', 'GPL-3.0', 'GPLv3')
|
||||
|
||||
# Verify that a package with a non-SPDX license (neither in
|
||||
# AVAILABLE_LICENSES nor in SPDXLICENSEMAP) cannot be built when
|
||||
|
||||
Reference in New Issue
Block a user