mirror of
https://git.yoctoproject.org/poky
synced 2026-05-31 00:39:46 +00:00
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:
committed by
Richard Purdie
parent
eb37cdd890
commit
5e6ffb2adb
@@ -54,6 +54,7 @@ python () {
|
|||||||
|
|
||||||
if externalsrc:
|
if externalsrc:
|
||||||
import oe.recipeutils
|
import oe.recipeutils
|
||||||
|
import oe.path
|
||||||
|
|
||||||
d.setVar('S', externalsrc)
|
d.setVar('S', externalsrc)
|
||||||
if externalsrcbuild:
|
if externalsrcbuild:
|
||||||
@@ -90,7 +91,7 @@ python () {
|
|||||||
cleandirs = oe.recipeutils.split_var_value(d.getVarFlag(task, 'cleandirs', False) or '')
|
cleandirs = oe.recipeutils.split_var_value(d.getVarFlag(task, 'cleandirs', False) or '')
|
||||||
setvalue = False
|
setvalue = False
|
||||||
for cleandir in cleandirs[:]:
|
for cleandir in cleandirs[:]:
|
||||||
if d.expand(cleandir) == externalsrc:
|
if oe.path.is_path_parent(externalsrc, d.expand(cleandir)):
|
||||||
cleandirs.remove(cleandir)
|
cleandirs.remove(cleandir)
|
||||||
setvalue = True
|
setvalue = True
|
||||||
if setvalue:
|
if setvalue:
|
||||||
|
|||||||
Reference in New Issue
Block a user