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 | ||
