From ca5fff38066207f19d3c62b9140586c1209d311c Mon Sep 17 00:00:00 2001
From: Richard Purdie <rpurdie@linux.intel.com>
Date: Fri, 1 Oct 2010 14:07:18 +0100
Subject: sstate: Deal with a potential race when cleaning packages

Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
---
 meta/classes/sstate.bbclass | 19 ++++++++++++-------
 1 file changed, 12 insertions(+), 7 deletions(-)

diff --git a/meta/classes/sstate.bbclass b/meta/classes/sstate.bbclass
index bcac3638e..855f5a45a 100644
--- a/meta/classes/sstate.bbclass
+++ b/meta/classes/sstate.bbclass
@@ -169,13 +169,18 @@ def sstate_clean_manifest(manifest, d):
     for entry in entries:
         entry = entry.strip()
         bb.debug(2, "Removing manifest: %s" % entry)
-        if entry.endswith("/"):
-           if os.path.islink(entry[:-1]):
-              os.remove(entry[:-1])
-           elif os.path.exists(entry) and len(os.listdir(entry)) == 0:
-              os.rmdir(entry[:-1])
-        else:
-           oe.path.remove(entry)
+        # We can race against another package populating directories as we're removing them
+        # so we ignore errors here.
+        try:
+            if entry.endswith("/"):
+               if os.path.islink(entry[:-1]):
+                  os.remove(entry[:-1])
+               elif os.path.exists(entry) and len(os.listdir(entry)) == 0:
+                  os.rmdir(entry[:-1])
+            else:
+                oe.path.remove(entry)
+        except OSError:
+            pass
 
     oe.path.remove(manifest)
 
-- 
cgit v1.2.3