Make src_distribute to work
cover Make src_distribute to work
The following changes since commit f2dada2079b5f98e13d4888609368ba111967a60:
lsb: Change link of ${baselib} to lib64 for 64bits system (2011-10-17 13:42:03 +0100)are available in the git repository at:
git://github.com/OSSystems/oe-core master
https://github.com/OSSystems/oe-core/tree/HEAD
Otavio Salvador (1):
src_distribute.bbclass, src_distribute_local.bbclass: mostly
rewritten
meta/classes/src_distribute.bbclass | 54 ++++++++++++++++++++--------- meta/classes/src_distribute_local.bbclass | 28 ++++++++------- 2 files changed, 52 insertions(+), 30 deletions(-)
Signature · 1 line
1.7.2.5
PATCH 1/1 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.
--- meta/classes/src_distribute.bbclass | 54 ++++++++++++++++++++--------- meta/classes/src_distribute_local.bbclass | 28 ++++++++------- 2 files changed, 52 insertions(+), 30 deletions(-)
meta/classes/src_distribute.bbclass +37 -17
@@ -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
meta/classes/src_distribute_local.bbclass +15 -13
@@ -1,31 +1,33 @@ inherit src_distribute # SRC_DIST_LOCAL possible values: -# copy copies the files from ${A} to the distributedir -# symlink symlinks the files from ${A} to the distributedir +# copy copies the files to the distributedir +# symlink symlinks the files to the distributedir # move+symlink moves the files into distributedir, and symlinks them back SRC_DIST_LOCAL ?= "move+symlink" SRC_DISTRIBUTEDIR ?= "${DEPLOY_DIR}/sources" SRC_DISTRIBUTECOMMAND () { s="${SRC}" - if [ ! -L "$s" ] && (echo "$s"|grep "^${DL_DIR}"); then - : - else - exit 0; - fi + d="${DEST}" + mkdir -p ${SRC_DISTRIBUTEDIR} + + if echo $d | grep -q '/$'; then + mkdir -p ${SRC_DISTRIBUTEDIR}/$d + fi + case "${SRC_DIST_LOCAL}" in copy) - test -e $s.md5 && cp -f $s.md5 ${SRC_DISTRIBUTEDIR}/ - cp -f $s ${SRC_DISTRIBUTEDIR}/ + test -e $s.md5 && cp -f $s.md5 ${SRC_DISTRIBUTEDIR}/$d.md5 + cp -f $s ${SRC_DISTRIBUTEDIR}/$d ;; symlink) - test -e $s.md5 && ln -sf $s.md5 ${SRC_DISTRIBUTEDIR}/ - ln -sf $s ${SRC_DISTRIBUTEDIR}/ + test -e $s.md5 && ln -sf $s.md5 ${SRC_DISTRIBUTEDIR}/$d.md5 + ln -sf $s ${SRC_DISTRIBUTEDIR}/$d ;; move+symlink) - mv $s ${SRC_DISTRIBUTEDIR}/ - ln -sf ${SRC_DISTRIBUTEDIR}/`basename $s` $s + mv $s ${SRC_DISTRIBUTEDIR}/$d + ln -sf ${SRC_DISTRIBUTEDIR}/$d $s ;; esac }
Signature · 1 line
1.7.2.5
Saul Wold
AppliedQuoted 8 lines · Otavio Salvador
The following changes since commit
f2dada2079b5f98e13d4888609368ba111967a60:lsb: Change link of ${baselib} to lib64 for 64bits system (2011-10-17 13:42:03 +0100)are available in the git repository at:
git://github.com/OSSystems/oe-coremaster
https://github.com/OSSystems/oe-core/tree/HEAD
Quoted 8 lines
Otavio Salvador (1):
src_distribute.bbclass, src_distribute_local.bbclass: mostly
rewrittenmeta/classes/src_distribute.bbclass | 54 ++++++++++++++++++++--------- meta/classes/src_distribute_local.bbclass | 28 ++++++++------- 2 files changed, 52 insertions(+), 30 deletions(-)
Merged into OE-Core
Thanks
Sau!