summaryrefslogtreecommitdiff
path: root/classes
diff options
context:
space:
mode:
Diffstat (limited to 'classes')
-rw-r--r--classes/src_distribute.oeclass24
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():