[OE-core] [PATCH] license.bbclass: canonicalise the licenses named with 'X+'

jackie.huang at windriver.com jackie.huang at windriver.com
Mon Oct 27 07:37:41 UTC 2014


From: Jackie Huang <jackie.huang at windriver.com>

If INCOMPATIBLE_LICENSE=GPLv3, GPLv3+ should be excluded
as well but not now since there is no SPDXLICENSEMAP for
licenses named with 'X+', we can add all the SPDXLICENSEMAP
settings for licenses named with 'X+' in licenses.conf,
but it's more like a duplication, so improve the canonical_license
function to auto map for 'X+' if SPDXLICENSEMAP for 'X' is
available, so GPLv3+ becomes GPL-3.0+.

Signed-off-by: Jackie Huang <jackie.huang at windriver.com>
---
 meta/classes/license.bbclass | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/meta/classes/license.bbclass b/meta/classes/license.bbclass
index a34ea39..14d3107 100644
--- a/meta/classes/license.bbclass
+++ b/meta/classes/license.bbclass
@@ -274,9 +274,16 @@ def return_spdx(d, license):
 def canonical_license(d, license):
     """
     Return the canonical (SPDX) form of the license if available (so GPLv3
-    becomes GPL-3.0), or the passed license if there is no canonical form.
+    becomes GPL-3.0), for the license named 'X+', return canonical form of
+    'X' if availabel and the tailing '+' (so GPLv3+ becomes GPL-3.0+), 
+    or the passed license if there is no canonical form.
     """
-    return d.getVarFlag('SPDXLICENSEMAP', license, True) or license
+    lic = d.getVarFlag('SPDXLICENSEMAP', license, True) or ""
+    if not lic and license.endswith('+'):
+        lic = d.getVarFlag('SPDXLICENSEMAP', license.rstrip('+'), True)
+        if lic:
+            lic += '+'
+    return lic or license
 
 def incompatible_license(d, dont_want_licenses, package=None):
     """
-- 
2.0.0




More information about the Openembedded-core mailing list