From b7c956a8e21f3de178b35c9a70ce60c7900e9bf7 Mon Sep 17 00:00:00 2001 From: Paul Eggleton Date: Wed, 4 Apr 2018 17:06:29 +1200 Subject: classes/externalsrc: ensure cleandirs code handles non-absolute paths It's possible that a trailing or extra slash somewhere in the external source path could result in the directory not being removed from cleandirs; it's also possible that a cleandirs entry is somewhere underneath the source tree and that tree should never have parts of it deleted by the build system. Use oe.path.is_path_parent() (which makes paths absolute before checking them) to find out if any path in cleandirs is anywhere underneath the external source path, and drop it if it is. Signed-off-by: Paul Eggleton --- meta/classes/externalsrc.bbclass | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/meta/classes/externalsrc.bbclass b/meta/classes/externalsrc.bbclass index ce8517c58b..c9f5cf767d 100644 --- a/meta/classes/externalsrc.bbclass +++ b/meta/classes/externalsrc.bbclass @@ -54,6 +54,7 @@ python () { if externalsrc: import oe.recipeutils + import oe.path d.setVar('S', externalsrc) if externalsrcbuild: @@ -90,7 +91,7 @@ python () { cleandirs = oe.recipeutils.split_var_value(d.getVarFlag(task, 'cleandirs', False) or '') setvalue = False for cleandir in cleandirs[:]: - if d.expand(cleandir) == externalsrc: + if oe.path.is_path_parent(externalsrc, d.expand(cleandir)): cleandirs.remove(cleandir) setvalue = True if setvalue: -- cgit 1.2.3-korg