summaryrefslogtreecommitdiffstats
path: root/meta/classes
diff options
context:
space:
mode:
authorPeter Kjellerstedt <peter.kjellerstedt@axis.com>2021-03-12 04:18:52 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2021-03-14 16:33:03 +0000
commitdd2532279fb239e7f61396898a8aa44ee5104d1d (patch)
tree90775bc0223d84c884180163ea86ee154c89c1e9 /meta/classes
parent715a3860f728d08b0a9575690049553c7b8dd65a (diff)
downloadopenembedded-core-contrib-dd2532279fb239e7f61396898a8aa44ee5104d1d.tar.gz
license.bbclass: Improve parsing time when INCOMPATIBLE_LICENSES is big
The commit 08cbf1748 (licenses: Update INCOMPATIBLE_LICENSE for 'or-later' handling) increased the parsing time considerably if there are many licenses in INCOMPATIBLE_LICENSE. Reorganize the code to get almost all the time back. Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/classes')
-rw-r--r--meta/classes/license.bbclass9
1 files changed, 4 insertions, 5 deletions
diff --git a/meta/classes/license.bbclass b/meta/classes/license.bbclass
index bcea0b3cb5..f7978e266b 100644
--- a/meta/classes/license.bbclass
+++ b/meta/classes/license.bbclass
@@ -282,16 +282,15 @@ def expand_wildcard_licenses(d, wildcard_licenses):
"""
import fnmatch
- # Assume if we're passed "GPLv3" or "*GPLv3" it means -or-later as well
- for lic in wildcard_licenses[:]:
- if not lic.endswith(("-or-later", "-only", "*")):
- wildcard_licenses.append(lic + "+")
-
licenses = wildcard_licenses[:]
spdxmapkeys = d.getVarFlags('SPDXLICENSEMAP').keys()
for wld_lic in wildcard_licenses:
spdxflags = fnmatch.filter(spdxmapkeys, wld_lic)
licenses += [d.getVarFlag('SPDXLICENSEMAP', flag) for flag in spdxflags]
+ # Assume if we're passed "GPLv3" or "*GPLv3" it means -or-later as well
+ if not wld_lic.endswith(("-or-later", "-only", "*", "+")):
+ spdxflags = fnmatch.filter(spdxmapkeys, wld_lic + "+")
+ licenses += [d.getVarFlag('SPDXLICENSEMAP', flag) for flag in spdxflags]
spdx_lics = d.getVar('AVAILABLE_LICENSES').split()
for wld_lic in wildcard_licenses: