From: Paul Eggleton <paul.eggleton@linux.intel.com>
To: openembedded-core@lists.openembedded.org
Cc: Enrico Jorns <ejo@pengutronix.de>
Subject: [PATCH 2/2] classes/externalsrc: ensure cleandirs code handles non-absolute paths
Date: Wed, 4 Apr 2018 23:02:36 +1200 [thread overview]
Message-ID: <b7c956a8e21f3de178b35c9a70ce60c7900e9bf7.1522839599.git.paul.eggleton@linux.intel.com> (raw)
In-Reply-To: <cover.1522839599.git.paul.eggleton@linux.intel.com>
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>
---
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 ce8517c58b7..c9f5cf767d0 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:
--
2.14.3
prev parent reply other threads:[~2018-04-04 11:03 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-04-04 11:02 [PATCH 0/2] classes/externalsrc: improve robustness of cleandirs handling Paul Eggleton
2018-04-04 11:02 ` [PATCH 1/2] classes/externalsrc: handle if cleandirs contains python expressions Paul Eggleton
2018-04-04 11:02 ` Paul Eggleton [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=b7c956a8e21f3de178b35c9a70ce60c7900e9bf7.1522839599.git.paul.eggleton@linux.intel.com \
--to=paul.eggleton@linux.intel.com \
--cc=ejo@pengutronix.de \
--cc=openembedded-core@lists.openembedded.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox