summaryrefslogtreecommitdiffstats
path: root/meta/classes/src_distribute.bbclass
diff options
context:
space:
mode:
Diffstat (limited to 'meta/classes/src_distribute.bbclass')
-rw-r--r--meta/classes/src_distribute.bbclass54
1 files changed, 37 insertions, 17 deletions
diff --git a/meta/classes/src_distribute.bbclass b/meta/classes/src_distribute.bbclass
index 17d6c09895..fbfbdf0094 100644
--- a/meta/classes/src_distribute.bbclass
+++ b/meta/classes/src_distribute.bbclass
@@ -2,28 +2,48 @@ SRC_DISTRIBUTECOMMAND[func] = "1"
2python do_distribute_sources () { 2python do_distribute_sources () {
3 l = bb.data.createCopy(d) 3 l = bb.data.createCopy(d)
4 bb.data.update_data(l) 4 bb.data.update_data(l)
5 licenses = (bb.data.getVar('LICENSE', d, 1) or "unknown").split()
6 5
7 sources_dir = bb.data.getVar('SRC_DISTRIBUTEDIR', d, 1) 6 sources_dir = bb.data.getVar('SRC_DISTRIBUTEDIR', d, 1)
8 import re 7 src_uri = bb.data.getVar('SRC_URI', d, 1).split()
9 for license in licenses: 8 fetcher = bb.fetch2.Fetch(src_uri, d)
10 for entry in license.split("|"): 9 ud = fetcher.ud
11 for s in (bb.data.getVar('A', d, 1) or "").split(): 10
12 s = re.sub(';.*$', '', s) 11 licenses = bb.data.getVar('LICENSE', d, 1).replace('&', '|')
13 cmd = bb.data.getVar('SRC_DISTRIBUTECOMMAND', d, 1) 12 licenses = licenses.replace('(', '').replace(')', '')
14 if not cmd: 13 clean_licenses = ""
15 raise bb.build.FuncFailed("Unable to distribute sources, SRC_DISTRIBUTECOMMAND not defined") 14 for x in licenses.split():
16 bb.data.setVar('SRC', s, d) 15 if x.strip() == '' or x == 'CLOSED':
17 bb.data.setVar('SRC_DISTRIBUTEDIR', "%s/%s" % (sources_dir, entry), d) 16 continue
18 bb.build.exec_func('SRC_DISTRIBUTECOMMAND', d) 17
18 if x != "|":
19 clean_licenses += x
20
21 for license in clean_licenses.split('|'):
22 for url in ud.values():
23 cmd = bb.data.getVar('SRC_DISTRIBUTECOMMAND', d, 1)
24 if not cmd:
25 raise bb.build.FuncFailed("Unable to distribute sources, SRC_DISTRIBUTECOMMAND not defined")
26 url.setup_localpath(d)
27 bb.data.setVar('SRC', url.localpath, d)
28 if url.type == 'file':
29 if url.basename == '*':
30 import os.path
31 dest_dir = os.path.basename(os.path.dirname(os.path.abspath(url.localpath)))
32 bb.data.setVar('DEST', "%s_%s/" % (bb.data.getVar('PF', d, 1), dest_dir), d)
33 else:
34 bb.data.setVar('DEST', "%s_%s" % (bb.data.getVar('PF', d, 1), url.basename), d)
35 else:
36 bb.data.setVar('DEST', '', d)
37
38 bb.data.setVar('SRC_DISTRIBUTEDIR', "%s/%s" % (sources_dir, license), d)
39 bb.build.exec_func('SRC_DISTRIBUTECOMMAND', d)
19} 40}
20 41
21addtask distribute_sources before do_build after do_fetch 42addtask distribute_sources before do_build after do_fetch
22 43
23addtask distsrcall after do_distribute_sources 44addtask distribute_sources_all after do_distribute_sources
24do_distall[recrdeptask] = "do_distribute_sources" 45do_distribute_sources_all[recrdeptask] = "do_distribute_sources"
25base_do_distsrcall() { 46do_distribute_sources_all[nostamp] = "1"
47do_distribute_sources_all () {
26 : 48 :
27} 49}
28
29EXPORT_FUNCTIONS do_distsrcall