[oe-commits] Chris Larson : src_distribute: simplify do_distribute_sources

git version control git at git.openembedded.org
Mon Mar 22 01:33:01 UTC 2010


Module: openembedded.git
Branch: org.openembedded.dev
Commit: d91b6bc42319db7799cf9188f7150f807ed41163
URL:    http://gitweb.openembedded.net/?p=openembedded.git&a=commit;h=d91b6bc42319db7799cf9188f7150f807ed41163

Author: Chris Larson <chris_larson at mentor.com>
Date:   Sun Mar 21 18:31:25 2010 -0700

src_distribute: simplify do_distribute_sources

Signed-off-by: Chris Larson <chris_larson at mentor.com>

---

 classes/src_distribute.bbclass       |   52 +++++++++++++++------------------
 classes/src_distribute_local.bbclass |    5 ++-
 2 files changed, 27 insertions(+), 30 deletions(-)

diff --git a/classes/src_distribute.bbclass b/classes/src_distribute.bbclass
index 2204475..795a5cf 100644
--- a/classes/src_distribute.bbclass
+++ b/classes/src_distribute.bbclass
@@ -3,38 +3,34 @@ SRC_DISTRIBUTECOMMAND[func] = "1"
 
 addtask distribute_sources before do_build after do_fetch
 python do_distribute_sources () {
-	import re
-
 	bb.build.exec_func("do_fetch", d)
 
-	l = bb.data.createCopy(d)
-	bb.data.update_data(l)
+	cmd = bb.data.getVar('SRC_DISTRIBUTECOMMAND', d, 1)
+	if not cmd:
+		raise bb.build.FuncFailed("Unable to distribute sources, SRC_DISTRIBUTECOMMAND not set")
+
+	try:
+		dlonly = int(d.getVar("SRC_DISTRIBUTE_DLONLY", 1))
+	except ValueError:
+		raise bb.build.FuncFailed("Invalid value for SRC_DISTRIBUTE_DLONLY: expected integer.")
+	dldir = os.path.realpath(d.getVar("DL_DIR", 1) or "")
 
 	licenses = (bb.data.getVar('LICENSE', d, 1) or "unknown").split()
-	for license in licenses:
-		for entry in license.split("|"):
-			for url in ((bb.data.getVar('SRC_URI', d, 1) or '').split()):
-				bb.fetch.init([url], d)
-				s = bb.fetch.localpath(url, d)
-				s = re.sub(';.*$', '', s)
-
-				try:
-					dlonly = int(d.getVar("SRC_DISTRIBUTE_DLONLY", 1))
-				except ValueError:
-					raise bb.build.FuncFailed("Invalid value for SRC_DISTRIBUTE_DLONLY: expected integer.")
-				if dlonly:
-					dldir = os.path.realpath(d.getVar("DL_DIR", 1) or "")
-					if dldir and not \
-					   os.path.realpath(s).startswith(dldir + os.path.sep):
-							continue
-
-				cmd = bb.data.getVar('SRC_DISTRIBUTECOMMAND', d, 1)
-				if not cmd:
-					raise bb.build.FuncFailed("Unable to distribute sources, SRC_DISTRIBUTECOMMAND not set")
-				bb.debug(2, "srcdist: running %s" % cmd)
-				bb.data.setVar('SRC', os.path.normpath(s), l)
-				bb.data.setVar('LIC', entry, l)
-				bb.build.exec_func('SRC_DISTRIBUTECOMMAND', l)
+	urldatadict = bb.fetch.init(d.getVar("SRC_URI", True).split(), d, True)
+	for url, urldata in urldatadict.iteritems():
+		if not urldata.setup:
+			urldata.setup_localpath(d)
+
+		local = urldata.localpath
+		if dlonly and dldir and not \
+		   os.path.realpath(local).startswith(dldir + os.path.sep):
+			continue
+
+		bb.data.setVar('SRC', os.path.abspath(local), d)
+		for license in licenses:
+			for entry in license.split("|"):
+				bb.data.setVar('LIC', entry, d)
+				bb.build.exec_func('SRC_DISTRIBUTECOMMAND', d)
 }
 
 addtask distribute_sources_all after do_distribute_sources
diff --git a/classes/src_distribute_local.bbclass b/classes/src_distribute_local.bbclass
index 8cf0b42..7b1e7d7 100644
--- a/classes/src_distribute_local.bbclass
+++ b/classes/src_distribute_local.bbclass
@@ -19,11 +19,12 @@ SRC_DISTRIBUTECOMMAND-copy () {
 # moves the files to the SRC_DISTRIBUTEDIR and symlinks them back
 SRC_DISTRIBUTECOMMAND-move+symlink () {
     if ! [ -L ${SRC} ]; then
+        src=`basename "${SRC}"`
         mv ${SRC} .
-        ln -sf $PWD/`basename "${SRC}"` "${SRC}"
+        ln -sf $src "${SRC}"
         if [ -e ${SRC}.md5 ]; then
             mv ${SRC}.md5 .
-            ln -sf $PWD/`basename "${SRC}.md5"` "${SRC}.md5"
+            ln -sf $src "${SRC}.md5"
         fi
     fi
 }





More information about the Openembedded-commits mailing list