summaryrefslogtreecommitdiffstats
path: root/meta/classes/src_distribute.bbclass
diff options
context:
space:
mode:
authorOtavio Salvador <otavio@ossystems.com.br>2011-10-17 13:04:43 +0000
committerSaul Wold <sgw@linux.intel.com>2011-10-19 19:58:45 -0700
commit6b6e0667871fb5f43b68440954c3ad629dfc92e7 (patch)
treebea9f145350895c9b067d9e7acb92c39af051153 /meta/classes/src_distribute.bbclass
parent9ef39459383f38cd45203e1f9be046d6100268b8 (diff)
downloadopenembedded-core-contrib-6b6e0667871fb5f43b68440954c3ad629dfc92e7.tar.gz
src_distribute.bbclass, src_distribute_local.bbclass: mostly rewritten
The code used to reference unavailable variables and mistakenly define the tasks so fully demonstrating this have not been in use for a while. During the code rewrite, it was extended to copy also the patches into the source distribution directory but using the PF as prefix to avoid name colision among other recipes. As 'distsrcall' task was not properly defined and noone noticed it, until now, it got renamed to 'distribute_sources_all' as it is a better and more meanful name for the task. Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
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"
python do_distribute_sources () {
l = bb.data.createCopy(d)
bb.data.update_data(l)
- licenses = (bb.data.getVar('LICENSE', d, 1) or "unknown").split()
sources_dir = bb.data.getVar('SRC_DISTRIBUTEDIR', d, 1)
- import re
- for license in licenses:
- for entry in license.split("|"):
- for s in (bb.data.getVar('A', d, 1) or "").split():
- s = re.sub(';.*$', '', s)
- cmd = bb.data.getVar('SRC_DISTRIBUTECOMMAND', d, 1)
- if not cmd:
- raise bb.build.FuncFailed("Unable to distribute sources, SRC_DISTRIBUTECOMMAND not defined")
- bb.data.setVar('SRC', s, d)
- bb.data.setVar('SRC_DISTRIBUTEDIR', "%s/%s" % (sources_dir, entry), d)
- bb.build.exec_func('SRC_DISTRIBUTECOMMAND', d)
+ src_uri = bb.data.getVar('SRC_URI', d, 1).split()
+ fetcher = bb.fetch2.Fetch(src_uri, d)
+ ud = fetcher.ud
+
+ licenses = bb.data.getVar('LICENSE', d, 1).replace('&', '|')
+ licenses = licenses.replace('(', '').replace(')', '')
+ clean_licenses = ""
+ for x in licenses.split():
+ if x.strip() == '' or x == 'CLOSED':
+ continue
+
+ if x != "|":
+ clean_licenses += x
+
+ for license in clean_licenses.split('|'):
+ for url in ud.values():
+ cmd = bb.data.getVar('SRC_DISTRIBUTECOMMAND', d, 1)
+ if not cmd:
+ raise bb.build.FuncFailed("Unable to distribute sources, SRC_DISTRIBUTECOMMAND not defined")
+ url.setup_localpath(d)
+ bb.data.setVar('SRC', url.localpath, d)
+ if url.type == 'file':
+ if url.basename == '*':
+ import os.path
+ dest_dir = os.path.basename(os.path.dirname(os.path.abspath(url.localpath)))
+ bb.data.setVar('DEST', "%s_%s/" % (bb.data.getVar('PF', d, 1), dest_dir), d)
+ else:
+ bb.data.setVar('DEST', "%s_%s" % (bb.data.getVar('PF', d, 1), url.basename), d)
+ else:
+ bb.data.setVar('DEST', '', d)
+
+ bb.data.setVar('SRC_DISTRIBUTEDIR', "%s/%s" % (sources_dir, license), d)
+ bb.build.exec_func('SRC_DISTRIBUTECOMMAND', d)
}
addtask distribute_sources before do_build after do_fetch
-addtask distsrcall after do_distribute_sources
-do_distall[recrdeptask] = "do_distribute_sources"
-base_do_distsrcall() {
+addtask distribute_sources_all after do_distribute_sources
+do_distribute_sources_all[recrdeptask] = "do_distribute_sources"
+do_distribute_sources_all[nostamp] = "1"
+do_distribute_sources_all () {
:
}
-
-EXPORT_FUNCTIONS do_distsrcall