diff options
author | Paul Eggleton <paul.eggleton@linux.intel.com> | 2018-04-04 23:02:36 +1200 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2018-04-05 14:48:58 +0100 |
commit | 87ec0fb470274d980f8553a85f778809c269c5d7 (patch) | |
tree | ede0eb8896d97026be3588dc0efd742949b5452a | |
parent | 611cee69d7300a4746edd752c9557af60e7beecc (diff) | |
download | openembedded-core-87ec0fb470274d980f8553a85f778809c269c5d7.tar.gz openembedded-core-87ec0fb470274d980f8553a85f778809c269c5d7.tar.bz2 openembedded-core-87ec0fb470274d980f8553a85f778809c269c5d7.zip |
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 <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r-- | meta/classes/externalsrc.bbclass | 3 |
1 files changed, 2 insertions, 1 deletions
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: |