summaryrefslogtreecommitdiffstats
path: root/meta/classes/license.bbclass
diff options
context:
space:
mode:
Diffstat (limited to 'meta/classes/license.bbclass')
-rw-r--r--meta/classes/license.bbclass45
1 files changed, 45 insertions, 0 deletions
diff --git a/meta/classes/license.bbclass b/meta/classes/license.bbclass
index d351b5aaed..4b98e29916 100644
--- a/meta/classes/license.bbclass
+++ b/meta/classes/license.bbclass
@@ -237,6 +237,51 @@ python do_populate_lic() {
237 237
238} 238}
239 239
240def incompatible_license(d,dont_want_license):
241 """
242 This function checks if a package has only incompatible licenses. It also take into consideration 'or'
243 operand.
244 """
245 import re
246 import oe.license
247 from fnmatch import fnmatchcase as fnmatch
248
249 dont_want_licenses = []
250 dont_want_licenses.append(d.getVar('INCOMPATIBLE_LICENSE', 1))
251 if d.getVarFlag('SPDXLICENSEMAP', dont_want_license):
252 dont_want_licenses.append(d.getVarFlag('SPDXLICENSEMAP', dont_want_license))
253
254 def include_license(license):
255 if any(fnmatch(license, pattern) for pattern in dont_want_licenses):
256 return False
257 else:
258 spdx_license = d.getVarFlag('SPDXLICENSEMAP', license)
259 if spdx_license and any(fnmatch(spdx_license, pattern) for pattern in dont_want_licenses):
260 return False
261 else:
262 return True
263
264 def choose_licenses(a, b):
265 if all(include_license(lic) for lic in a):
266 return a
267 else:
268 return b
269
270 """
271 If you want to exlude license named generically 'X', we surely want to exlude 'X+' as well.
272 In consequence, we will exclude the '+' character from LICENSE in case INCOMPATIBLE_LICENSE
273 is not a 'X+' license.
274 """
275 if not re.search(r'[+]',dont_want_license):
276 licenses=oe.license.flattened_licenses(re.sub(r'[+]', '', d.getVar('LICENSE', True)), choose_licenses)
277 else:
278 licenses=oe.license.flattened_licenses(d.getVar('LICENSE', True), choose_licenses)
279
280 for onelicense in licenses:
281 if not include_license(onelicense):
282 return True
283 return False
284
240SSTATETASKS += "do_populate_lic" 285SSTATETASKS += "do_populate_lic"
241do_populate_lic[sstate-name] = "populate-lic" 286do_populate_lic[sstate-name] = "populate-lic"
242do_populate_lic[sstate-inputdirs] = "${LICSSTATEDIR}" 287do_populate_lic[sstate-inputdirs] = "${LICSSTATEDIR}"