summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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}