diff options
Diffstat (limited to 'meta/classes/src_distribute.bbclass')
-rw-r--r-- | meta/classes/src_distribute.bbclass | 54 |
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" | |||
2 | python do_distribute_sources () { | 2 | python 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 | ||
21 | addtask distribute_sources before do_build after do_fetch | 42 | addtask distribute_sources before do_build after do_fetch |
22 | 43 | ||
23 | addtask distsrcall after do_distribute_sources | 44 | addtask distribute_sources_all after do_distribute_sources |
24 | do_distall[recrdeptask] = "do_distribute_sources" | 45 | do_distribute_sources_all[recrdeptask] = "do_distribute_sources" |
25 | base_do_distsrcall() { | 46 | do_distribute_sources_all[nostamp] = "1" |
47 | do_distribute_sources_all () { | ||
26 | : | 48 | : |
27 | } | 49 | } |
28 | |||
29 | EXPORT_FUNCTIONS do_distsrcall | ||