src_distribute: simplify do_distribute_sources
authorChris Larson <chris_larson@mentor.com>
Mon, 22 Mar 2010 01:31:25 +0000 (18:31 -0700)
committerChris Larson <chris_larson@mentor.com>
Mon, 22 Mar 2010 01:31:40 +0000 (18:31 -0700)
Signed-off-by: Chris Larson <chris_larson@mentor.com>
classes/src_distribute.bbclass
classes/src_distribute_local.bbclass

index 2204475..795a5cf 100644 (file)
@@ -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
index 8cf0b42..7b1e7d7 100644 (file)
@@ -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
 }