diff options
Diffstat (limited to 'meta/classes')
-rw-r--r-- | meta/classes/src_distribute.bbclass | 54 | ||||
-rw-r--r-- | meta/classes/src_distribute_local.bbclass | 28 |
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" | |||
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 | ||
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 @@ | |||
1 | inherit src_distribute | 1 | inherit 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 |
7 | SRC_DIST_LOCAL ?= "move+symlink" | 7 | SRC_DIST_LOCAL ?= "move+symlink" |
8 | SRC_DISTRIBUTEDIR ?= "${DEPLOY_DIR}/sources" | 8 | SRC_DISTRIBUTEDIR ?= "${DEPLOY_DIR}/sources" |
9 | SRC_DISTRIBUTECOMMAND () { | 9 | SRC_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 | } |