summaryrefslogtreecommitdiffstats
path: root/meta/classes/base.bbclass
diff options
context:
space:
mode:
authorPeter Kjellerstedt <peter.kjellerstedt@axis.com>2019-12-11 17:48:17 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2019-12-16 23:25:50 +0000
commit5560c50316a8b2d47c4fcb51cf12ef473079ff54 (patch)
tree04b167f8ec722197083d92cdd53d477bee93bf4f /meta/classes/base.bbclass
parent4028227713e5453860f0918c64388357f71d0456 (diff)
downloadpoky-5560c50316a8b2d47c4fcb51cf12ef473079ff54.tar.gz
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>
Diffstat (limited to 'meta/classes/base.bbclass')
-rw-r--r--meta/classes/base.bbclass26
1 files changed, 16 insertions, 10 deletions
diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass
index a3170d219c..145daea3ec 100644
--- a/meta/classes/base.bbclass
+++ b/meta/classes/base.bbclass
@@ -542,24 +542,30 @@ python () {
542 bb.note("Including %s as buildable despite it having an incompatible license because it has been whitelisted" % pn) 542 bb.note("Including %s as buildable despite it having an incompatible license because it has been whitelisted" % pn)
543 else: 543 else:
544 pkgs = d.getVar('PACKAGES').split() 544 pkgs = d.getVar('PACKAGES').split()
545 skipped_pkgs = [] 545 skipped_pkgs = {}
546 unskipped_pkgs = [] 546 unskipped_pkgs = []
547 for pkg in pkgs: 547 for pkg in pkgs:
548 if incompatible_license(d, bad_licenses, pkg): 548 incompatible_lic = incompatible_license(d, bad_licenses, pkg)
549 skipped_pkgs.append(pkg) 549 if incompatible_lic:
550 skipped_pkgs[pkg] = incompatible_lic
550 else: 551 else:
551 unskipped_pkgs.append(pkg) 552 unskipped_pkgs.append(pkg)
552 all_skipped = skipped_pkgs and not unskipped_pkgs
553 if unskipped_pkgs: 553 if unskipped_pkgs:
554 for pkg in skipped_pkgs: 554 for pkg in skipped_pkgs:
555 bb.debug(1, "SKIPPING the package " + pkg + " at do_rootfs because it's " + license) 555 bb.debug(1, "Skipping the package %s at do_rootfs because of incompatible license(s): %s" % (pkg, ' '.join(skipped_pkgs[pkg])))
556 mlprefix = d.getVar('MLPREFIX') 556 mlprefix = d.getVar('MLPREFIX')
557 d.setVar('LICENSE_EXCLUSION-' + mlprefix + pkg, 1) 557 d.setVar('LICENSE_EXCLUSION-' + mlprefix + pkg, ' '.join(skipped_pkgs[pkg]))
558 for pkg in unskipped_pkgs: 558 for pkg in unskipped_pkgs:
559 bb.debug(1, "INCLUDING the package " + pkg) 559 bb.debug(1, "Including the package %s" % pkg)
560 elif all_skipped or incompatible_license(d, bad_licenses): 560 else:
561 bb.debug(1, "SKIPPING recipe %s because it's %s" % (pn, license)) 561 incompatible_lic = incompatible_license(d, bad_licenses)
562 raise bb.parse.SkipRecipe("it has an incompatible license: %s" % license) 562 for pkg in skipped_pkgs:
563 incompatible_lic += skipped_pkgs[pkg]
564 incompatible_lic = sorted(list(set(incompatible_lic)))
565
566 if incompatible_lic:
567 bb.debug(1, "Skipping recipe %s because of incompatible license(s): %s" % (pn, ' '.join(incompatible_lic)))
568 raise bb.parse.SkipRecipe("it has incompatible license(s): %s" % ' '.join(incompatible_lic))
563 569
564 # Try to verify per-package (LICENSE_<pkg>) values. LICENSE should be a 570 # Try to verify per-package (LICENSE_<pkg>) values. LICENSE should be a
565 # superset of all per-package licenses. We do not do advanced (pattern) 571 # superset of all per-package licenses. We do not do advanced (pattern)