summaryrefslogtreecommitdiffstats
path: root/meta/lib/oeqa/selftest
diff options
context:
space:
mode:
authorAlexander Kanavin <alex.kanavin@gmail.com>2019-10-10 13:18:48 +0200
committerRichard Purdie <richard.purdie@linuxfoundation.org>2019-10-15 14:16:10 +0100
commit25df405d4b019ba6444d03598e914ff2efdad4c9 (patch)
tree5c716fbd16cf71553014af461f6fc922aed01bcf /meta/lib/oeqa/selftest
parentf46b73658ee6697338d0431efa9cc33fd2c9b914 (diff)
downloadpoky-25df405d4b019ba6444d03598e914ff2efdad4c9.tar.gz
license_image.bbclass: check and reject packages which have incompatible licenses
The use case is setting INCOMPATIBLE_LICENSE per image, rather than as an awkward, and too strict global setting. This for example would allow building development images with gplv3 tools, but production images without them, and checking that nothing gpl3-licensed gets into the latter. Examples are provided via the selftest: four scenarios are tested: - bash is added to the image, with a default gpl3 license; this is rejected - bash is added to the image, with a "gpl3 & other" license; this is also rejected - bash is added to the image, with a "gpl3 | other" license; this is accepted, but only 'other' is added to the license manifest (this was already handled correctly previously). - bash is added to the image with a default gpl3 license, and is additionally whitelisted for that image; this is accepted. Eventually, this would allow deprecating the meta-gplv2 layer, while still enforcing the no-gpl3 rule where possible and needed. (From OE-Core rev: fd50395bc0783a3cce7b5b0d7398f22783ebbeca) Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/lib/oeqa/selftest')
-rw-r--r--meta/lib/oeqa/selftest/cases/incompatible_lic.py34
1 files changed, 34 insertions, 0 deletions
diff --git a/meta/lib/oeqa/selftest/cases/incompatible_lic.py b/meta/lib/oeqa/selftest/cases/incompatible_lic.py
index 8fb93af8a8..424a9e69c3 100644
--- a/meta/lib/oeqa/selftest/cases/incompatible_lic.py
+++ b/meta/lib/oeqa/selftest/cases/incompatible_lic.py
@@ -39,3 +39,37 @@ class IncompatibleLicenseTests(OESelftestTestCase):
39 # INCOMPATIBLE_LICENSE contains this license 39 # INCOMPATIBLE_LICENSE contains this license
40 def test_incompatible_nonspdx_license(self): 40 def test_incompatible_nonspdx_license(self):
41 self.lic_test('incompatible-nonspdx-license', 'FooLicense', 'FooLicense') 41 self.lic_test('incompatible-nonspdx-license', 'FooLicense', 'FooLicense')
42
43class IncompatibleLicensePerImageTests(OESelftestTestCase):
44 def default_config(self):
45 return """
46IMAGE_INSTALL_append = "bash"
47INCOMPATIBLE_LICENSE_pn-core-image-minimal = "GPL-3.0 LGPL-3.0"
48"""
49
50 def test_bash_default(self):
51 self.write_config(self.default_config())
52 error_msg = "ERROR: core-image-minimal-1.0-r0 do_rootfs: Package bash has an incompatible license GPLv3+ and cannot be installed into the image."
53
54 result = bitbake('core-image-minimal', ignore_status=True)
55 if error_msg not in result.output:
56 raise AssertionError(result.output)
57
58 def test_bash_and_license(self):
59 self.write_config(self.default_config() + '\nLICENSE_append_pn-bash = " & SomeLicense"')
60 error_msg = "ERROR: core-image-minimal-1.0-r0 do_rootfs: Package bash has an incompatible license GPLv3+ & SomeLicense and cannot be installed into the image."
61
62 result = bitbake('core-image-minimal', ignore_status=True)
63 if error_msg not in result.output:
64 raise AssertionError(result.output)
65
66 def test_bash_or_license(self):
67 self.write_config(self.default_config() + '\nLICENSE_append_pn-bash = " | SomeLicense"')
68
69 bitbake('core-image-minimal')
70
71 def test_bash_whitelist(self):
72 self.write_config(self.default_config() + '\nWHITELIST_GPL-3.0_pn-core-image-minimal = "bash"')
73
74 bitbake('core-image-minimal')
75