We really do not want our (external) source tree to be removed. There
might be multiple values in the 'cleandirs' varflag pointing to our
source tree - causing it to be wiped out. This patch improves the
filtering of 'cleandirs' by examining the expanded values inside it. Any
(expanded) values pointing to our source tree get removed.

Signed-off-by: Markus Lehtonen <markus.lehto...@linux.intel.com>
---
 meta/classes/externalsrc.bbclass | 18 +++++++-----------
 1 file changed, 7 insertions(+), 11 deletions(-)

diff --git a/meta/classes/externalsrc.bbclass b/meta/classes/externalsrc.bbclass
index 8f7f479..499688b 100644
--- a/meta/classes/externalsrc.bbclass
+++ b/meta/classes/externalsrc.bbclass
@@ -58,18 +58,14 @@ python () {
                 d.appendVarFlag(task, "lockfiles", " ${S}/singletask.lock")
 
             # We do not want our source to be wiped out, ever (kernel.bbclass 
does this for do_clean)
-            cleandirs = d.getVarFlag(task, 'cleandirs', False)
-            if cleandirs:
-                cleandirs = cleandirs.split()
-                setvalue = False
-                if '${S}' in cleandirs:
-                    cleandirs.remove('${S}')
+            cleandirs = (d.getVarFlag(task, 'cleandirs', False) or '').split()
+            setvalue = False
+            for cleandir in cleandirs[:]:
+                if d.expand(cleandir) == externalsrc:
+                    cleandirs.remove(cleandir)
                     setvalue = True
-                if externalsrcbuild == externalsrc and '${B}' in cleandirs:
-                    cleandirs.remove('${B}')
-                    setvalue = True
-                if setvalue:
-                    d.setVarFlag(task, 'cleandirs', ' '.join(cleandirs))
+            if setvalue:
+                d.setVarFlag(task, 'cleandirs', ' '.join(cleandirs))
 
         fetch_tasks = ['do_fetch', 'do_unpack']
         # If we deltask do_patch, there's no dependency to ensure do_unpack 
gets run, so add one
-- 
2.1.4

-- 
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Reply via email to