From: ChenQi <Qi.Chen@windriver.com>
To: <openembedded-core@lists.openembedded.org>
Subject: Re: [PATCH V2 1/1] sanity.bbclass: check for validity of TMPDIR
Date: Wed, 11 Dec 2013 17:09:17 +0800 [thread overview]
Message-ID: <52A82BBD.7000404@windriver.com> (raw)
In-Reply-To: <7fe218ee3e2062904b7172c185b813e9fe5127a8.1384483343.git.Qi.Chen@windriver.com>
Hi Richard,
What do you think of this one?
Best Regards,
Chen Qi
On 11/15/2013 10:46 AM, Qi.Chen@windriver.com wrote:
> From: Chen Qi <Qi.Chen@windriver.com>
>
> TMPDIR must be an absolute path, otherwise, the build will fail.
> Special characters in TMPDIR will also cause build failures.
>
> This patch enables checking for the validity of TMPDIR.
>
> The logic in sanity.bbclass has also been changed a little bit. For now,
> we only create the directory hierarch for TMPDIR if TMPDIR is valid. And
> also, we only handle ABI version change only if the TMPDIR directory hierarchy
> has been created.
>
> Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
> ---
> meta/classes/sanity.bbclass | 27 +++++++++++++++++++++++----
> 1 file changed, 23 insertions(+), 4 deletions(-)
>
> diff --git a/meta/classes/sanity.bbclass b/meta/classes/sanity.bbclass
> index 83378b0..f6292f4 100644
> --- a/meta/classes/sanity.bbclass
> +++ b/meta/classes/sanity.bbclass
> @@ -659,6 +659,16 @@ def check_sanity_everybuild(status, d):
> if oeroot.find(' ') != -1:
> status.addresult("Error, you have a space in your COREBASE directory path. Please move the installation to a directory which doesn't include a space since autotools doesn't support this.")
>
> + # Function to check if TMPDIR contains invalid characters, and check if it is an absolute path
> + def is_tmpdir_valid(path):
> + import re
> + valid_tmpdir_regexp = "^/[a-zA-Z0-9\-_/.~]+$"
> + valid_pattern = re.compile(valid_tmpdir_regexp)
> + if valid_pattern.match(path):
> + return True
> + else:
> + return False
> +
> # Check that TMPDIR hasn't changed location since the last time we were run
> tmpdir = d.getVar('TMPDIR', True)
> checkfile = os.path.join(tmpdir, "saved_tmpdir")
> @@ -667,10 +677,16 @@ def check_sanity_everybuild(status, d):
> saved_tmpdir = f.read().strip()
> if (saved_tmpdir != tmpdir):
> status.addresult("Error, TMPDIR has changed location. You need to either move it back to %s or rebuild\n" % saved_tmpdir)
> + if not is_tmpdir_valid(tmpdir):
> + status.addresult("Error, you have special characters in TMPDIR directory path or your TMPDIR is not an absolute path. The TMPDIR should match this regexp: ^/[a-zA-Z0-9\-_/.~]$")
> else:
> - bb.utils.mkdirhier(tmpdir)
> - with open(checkfile, "w") as f:
> - f.write(tmpdir)
> + if not is_tmpdir_valid(tmpdir):
> + status.addresult("Error, you have special characters in TMPDIR directory path or your TMPDIR is not an absolute path. The TMPDIR should match this regexp: ^/[a-zA-Z0-9\-_/.~]$")
> + else:
> + # Make directory hierarchy for TMPDIR only if TMPDIR is valid
> + bb.utils.mkdirhier(tmpdir)
> + with open(checkfile, "w") as f:
> + f.write(tmpdir)
>
> def check_sanity(sanity_data):
> import subprocess
> @@ -722,7 +738,10 @@ def check_sanity(sanity_data):
> f.write("TMPDIR %s\n" % tmpdir)
> f.write("SSTATE_DIR %s\n" % sstate_dir)
>
> - sanity_handle_abichanges(status, sanity_data)
> + # Handle ABI version change only if TMPDIR hierarchy has been created
> + saved_tmpdir = os.path.join(tmpdir, "saved_tmpdir")
> + if os.path.exists(saved_tmpdir):
> + sanity_handle_abichanges(status, sanity_data)
>
> if status.messages != "":
> raise_sanity_error(sanity_data.expand(status.messages), sanity_data, status.network_error)
next prev parent reply other threads:[~2013-12-11 9:08 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-15 2:46 [PATCH V2 0/1] sanity.bbclass: check for validity of TMPDIR Qi.Chen
2013-11-15 2:46 ` [PATCH V2 1/1] " Qi.Chen
2013-12-11 9:09 ` ChenQi [this message]
2013-11-25 3:04 ` [PATCH V2 0/1] " ChenQi
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=52A82BBD.7000404@windriver.com \
--to=qi.chen@windriver.com \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.