summaryrefslogtreecommitdiffstats
path: root/meta
diff options
context:
space:
mode:
authorOtavio Salvador <otavio@ossystems.com.br>2011-10-17 13:04:43 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2011-10-20 17:13:36 +0100
commit6c0bf212b5f30342dddc169d9f730917671e649c (patch)
tree7f4c79f2c657b3e33d194c66598aa18fe5bac482 /meta
parentf9257c39904fee1f4a4bcb9d2503e81bb83a95c2 (diff)
downloadpoky-6c0bf212b5f30342dddc169d9f730917671e649c.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. (From OE-Core rev: 6b6e0667871fb5f43b68440954c3ad629dfc92e7) Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta')
-rw-r--r--meta/classes/src_distribute.bbclass54
-rw-r--r--meta/classes/src_distribute_local.bbclass28
2 files changed, 52 insertions, 30 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
diff --git a/meta/classes/src_distribute_local.bbclass b/meta/classes/src_distribute_local.bbclass
index 5f0cef5bec..17b67e3d16 100644
--- a/meta/classes/src_distribute_local.bbclass
+++ b/meta/classes/src_distribute_local.bbclass
@@ -1,31 +1,33 @@
1inherit src_distribute 1inherit src_distribute
2 2
3# SRC_DIST_LOCAL possible values: 3# SRC_DIST_LOCAL possible values:
4# copy copies the files from ${A} to the distributedir 4# copy copies the files to the distributedir
5# symlink symlinks the files from ${A} to the distributedir 5# symlink symlinks the files to the distributedir
6# move+symlink moves the files into distributedir, and symlinks them back 6# move+symlink moves the files into distributedir, and symlinks them back
7SRC_DIST_LOCAL ?= "move+symlink" 7SRC_DIST_LOCAL ?= "move+symlink"
8SRC_DISTRIBUTEDIR ?= "${DEPLOY_DIR}/sources" 8SRC_DISTRIBUTEDIR ?= "${DEPLOY_DIR}/sources"
9SRC_DISTRIBUTECOMMAND () { 9SRC_DISTRIBUTECOMMAND () {
10 s="${SRC}" 10 s="${SRC}"
11 if [ ! -L "$s" ] && (echo "$s"|grep "^${DL_DIR}"); then 11 d="${DEST}"
12 : 12
13 else
14 exit 0;
15 fi
16 mkdir -p ${SRC_DISTRIBUTEDIR} 13 mkdir -p ${SRC_DISTRIBUTEDIR}
14
15 if echo $d | grep -q '/$'; then
16 mkdir -p ${SRC_DISTRIBUTEDIR}/$d
17 fi
18
17 case "${SRC_DIST_LOCAL}" in 19 case "${SRC_DIST_LOCAL}" in
18 copy) 20 copy)
19 test -e $s.md5 && cp -f $s.md5 ${SRC_DISTRIBUTEDIR}/ 21 test -e $s.md5 && cp -f $s.md5 ${SRC_DISTRIBUTEDIR}/$d.md5
20 cp -f $s ${SRC_DISTRIBUTEDIR}/ 22 cp -f $s ${SRC_DISTRIBUTEDIR}/$d
21 ;; 23 ;;
22 symlink) 24 symlink)
23 test -e $s.md5 && ln -sf $s.md5 ${SRC_DISTRIBUTEDIR}/ 25 test -e $s.md5 && ln -sf $s.md5 ${SRC_DISTRIBUTEDIR}/$d.md5
24 ln -sf $s ${SRC_DISTRIBUTEDIR}/ 26 ln -sf $s ${SRC_DISTRIBUTEDIR}/$d
25 ;; 27 ;;
26 move+symlink) 28 move+symlink)
27 mv $s ${SRC_DISTRIBUTEDIR}/ 29 mv $s ${SRC_DISTRIBUTEDIR}/$d
28 ln -sf ${SRC_DISTRIBUTEDIR}/`basename $s` $s 30 ln -sf ${SRC_DISTRIBUTEDIR}/$d $s
29 ;; 31 ;;
30 esac 32 esac
31} 33}