diff options
Diffstat (limited to 'classes')
-rw-r--r-- | classes/src_distribute.oeclass | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/classes/src_distribute.oeclass b/classes/src_distribute.oeclass index 72c4a722ed..8fe329c105 100644 --- a/classes/src_distribute.oeclass +++ b/classes/src_distribute.oeclass @@ -5,10 +5,28 @@ python do_distribute_sources () { import copy l = copy.deepcopy(d) oe.data.update_data(l) - license = oe.data.getVar('LICENSE', d, 1) + licenses = (oe.data.getVar('LICENSE', d, 1) or "").split() + if not licenses: + oe.note("LICENSE not defined") src_distribute_licenses = (oe.data.getVar('SRC_DISTRIBUTE_LICENSES', d, 1) or "").split() - if not oe.data.getVar('LICENSE', d, 1) in src_distribute_licenses: - oe.note("LICENSE not listed in SRC_DISTRIBUTE_LICENSES, skipping source distribution") + # Explanation: + # Space seperated items in LICENSE must *all* be distributable + # Each space seperated item may be used under any number of | seperated licenses. + # If any of those | seperated licenses are distributable, then that component is. + # i.e. LICENSE = "GPL LGPL" + # In this case, both components are distributable. + # LICENSE = "GPL|QPL|Proprietary" + # In this case, GPL is distributable, so the component is. + valid = 1 + for l in licenses: + lvalid = 0 + for i in l.split("|"): + if i in src_distribute_licenses: + lvalid = 1 + if lvalid != 1: + valid = 0 + if valid == 0: + oe.note("Licenses in LICENSE are not all listed in SRC_DISTRIBUTE_LICENSES, skipping source distribution") return import re for s in (oe.data.getVar('A', d, 1) or "").split(): |