summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoshua Watt <JPEWhacker@gmail.com>2024-10-24 13:03:09 -0600
committerRichard Purdie <richard.purdie@linuxfoundation.org>2024-10-25 15:37:10 +0100
commit3cabb0e17082c0d2ee984d646d0951f9200b8e9c (patch)
tree57ceadd1a283683a8d473919f614bf2c6fef1c15
parentf8f7e53641955f6fc70dcb1d30777fc82060eb24 (diff)
downloadpoky-3cabb0e17082c0d2ee984d646d0951f9200b8e9c.tar.gz
lib/package: Check incompatible licenses at packaging time
Instead of checking for incompatible licenses in the anonymous python and setting '_exclude_incompatible-', (re)check all the packages in populate_packages(). This ensures that all packages are processed, even dynamically generated ones. The use of the '_exclude-incompatible-' variable set in base.bbclass has been the mechanism used for per-packages licenses since it was added as a feature (although with different names for the variable throughout history). However, since this misses dynamic packages, calling oe.license.skip_incompatible_package_licenses() a second time on the actual final package set is a better solution. (From OE-Core rev: 1816c5a5e724a7f907c9afe4a47b6699ea081ace) Signed-off-by: Joshua Watt <JPEWhacker@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/classes-global/base.bbclass1
-rw-r--r--meta/classes-global/package.bbclass4
-rw-r--r--meta/lib/oe/package.py6
3 files changed, 3 insertions, 8 deletions
diff --git a/meta/classes-global/base.bbclass b/meta/classes-global/base.bbclass
index 5b8663f454..b81e61fdb7 100644
--- a/meta/classes-global/base.bbclass
+++ b/meta/classes-global/base.bbclass
@@ -581,7 +581,6 @@ python () {
581 if unskipped_pkgs: 581 if unskipped_pkgs:
582 for pkg in skipped_pkgs: 582 for pkg in skipped_pkgs:
583 bb.debug(1, "Skipping the package %s at do_rootfs because of incompatible license(s): %s" % (pkg, ' '.join(skipped_pkgs[pkg]))) 583 bb.debug(1, "Skipping the package %s at do_rootfs because of incompatible license(s): %s" % (pkg, ' '.join(skipped_pkgs[pkg])))
584 d.setVar('_exclude_incompatible-' + pkg, ' '.join(skipped_pkgs[pkg]))
585 for pkg in unskipped_pkgs: 584 for pkg in unskipped_pkgs:
586 bb.debug(1, "Including the package %s" % pkg) 585 bb.debug(1, "Including the package %s" % pkg)
587 else: 586 else:
diff --git a/meta/classes-global/package.bbclass b/meta/classes-global/package.bbclass
index 6cd8c0140f..9be1d6a5b1 100644
--- a/meta/classes-global/package.bbclass
+++ b/meta/classes-global/package.bbclass
@@ -447,10 +447,6 @@ def gen_packagevar(d, pkgvars="PACKAGEVARS"):
447 for p in pkgs: 447 for p in pkgs:
448 for v in vars: 448 for v in vars:
449 ret.append(v + ":" + p) 449 ret.append(v + ":" + p)
450
451 # Ensure that changes to INCOMPATIBLE_LICENSE re-run do_package for
452 # affected recipes.
453 ret.append('_exclude_incompatible-%s' % p)
454 return " ".join(ret) 450 return " ".join(ret)
455 451
456 452
diff --git a/meta/lib/oe/package.py b/meta/lib/oe/package.py
index c213a9a3ca..104b880b9e 100644
--- a/meta/lib/oe/package.py
+++ b/meta/lib/oe/package.py
@@ -1447,10 +1447,10 @@ def populate_packages(d):
1447 1447
1448 # Handle excluding packages with incompatible licenses 1448 # Handle excluding packages with incompatible licenses
1449 package_list = [] 1449 package_list = []
1450 skipped_pkgs = oe.license.skip_incompatible_package_licenses(d, packages)
1450 for pkg in packages: 1451 for pkg in packages:
1451 licenses = d.getVar('_exclude_incompatible-' + pkg) 1452 if pkg in skipped_pkgs:
1452 if licenses: 1453 msg = "Excluding %s from packaging as it has incompatible license(s): %s" % (pkg, skipped_pkgs[pkg])
1453 msg = "Excluding %s from packaging as it has incompatible license(s): %s" % (pkg, licenses)
1454 oe.qa.handle_error("incompatible-license", msg, d) 1454 oe.qa.handle_error("incompatible-license", msg, d)
1455 else: 1455 else:
1456 package_list.append(pkg) 1456 package_list.append(pkg)