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.

(From OE-Core rev: 87ec0fb470274d980f8553a85f778809c269c5d7)

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Paul Eggleton
2018-04-04 23:02:36 +12:00
committed by Richard Purdie
parent eb37cdd890
commit 5e6ffb2adb

View File

@@ -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: