]> code.ossystems Code Review - openembedded-core.git/commitdiff
sstate: Fix mirror handling for file:// urls
authorRichard Purdie <rpurdie@linux.intel.com>
Fri, 22 Oct 2010 13:27:44 +0000 (14:27 +0100)
committerRichard Purdie <rpurdie@linux.intel.com>
Fri, 22 Oct 2010 13:48:54 +0000 (14:48 +0100)
The fetcher has special handling for file:// mirror urls, being efficient and
just providing an updated path. Unfortunately the sstate fetching code wasn't
able to handle this. This patch detects this and injects a symlink to ensure
everything works. It also fixes some datastore references to be correct and
ensures the sstate download directory exists if it doesn't already.

Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
meta/classes/sstate.bbclass

index fb30a18b726723c32b3b11c25faa9cdc5dcffcb2..3674a79060732932300ccd640465ee44e2ba3973 100644 (file)
@@ -278,6 +278,9 @@ def pstaging_fetch(sstatepkg, d):
 
         dldir = bb.data.expand("${SSTATE_DIR}", localdata)
         srcuri = "file://" + os.path.basename(sstatepkg)
+
+        bb.mkdirhier(dldir)
+
         bb.data.setVar('DL_DIR', dldir, localdata)
         bb.data.setVar('PREMIRRORS', mirrors, localdata)
         bb.data.setVar('SRC_URI', srcuri, localdata)
@@ -285,8 +288,12 @@ def pstaging_fetch(sstatepkg, d):
         # Try a fetch from the sstate mirror, if it fails just return and
         # we will build the package
         try:
-            bb.fetch.init([srcuri], pd)
-            bb.fetch.go(pd, [srcuri])
+            bb.fetch.init([srcuri], localdata)
+            bb.fetch.go(localdata, [srcuri])
+            # Need to optimise this, if using file:// urls, the fetcher just changes the local path
+            # For now work around by symlinking
+            if bb.data.expand(bb.fetch.localpath(srcuri, localdata), localdata) != sstatepkg:
+                os.symlink(bb.data.expand(bb.fetch.localpath(srcuri, localdata), localdata), sstatepkg)
         except:
             pass
 
@@ -377,10 +384,10 @@ def sstate_checkhashes(sq_fn, sq_task, sq_hash, sq_hashfn, d):
 
             srcuri = "file://" + os.path.basename(sstatefile)
             bb.data.setVar('SRC_URI', srcuri, localdata)
-            bb.note(str(srcuri))
+            #bb.note(str(srcuri))
 
             try:
-                bb.fetch.init(srcuri.split(), d)
+                bb.fetch.init(srcuri.split(), localdata)
                 bb.fetch.checkstatus(localdata)
                 ret.append(task)
             except: