From: "Lothar Waßmann" <LW@KARO-electronics.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v2] tools: buildman: Don't use the working dir as build dir
Date: Tue, 3 Apr 2018 10:16:27 +0200 [thread overview]
Message-ID: <20180403101627.590d375c@karo-electronics.de> (raw)
In-Reply-To: <20180402084312.252457-1-sjg@chromium.org>
Hi,
On Mon, 2 Apr 2018 02:43:12 -0600 Simon Glass wrote:
> From: Lothar Waßmann <LW@KARO-electronics.de>
>
> When the U-Boot base directory happens to have the same name as the branch
> that buildman is directed to use via the '-b' option and no output
> directory is specified with '-o', buildman happily starts removing the
> whole U-Boot sources eventually only stopped with the error message:
>
> OSError: [Errno 20] Not a directory: '../<branch-name>/boards.cfg
>
> Add a check to avoid this and also deal with the case where '-o' points
> to the source directory, or any subdirectory of it.
>
> Finally, tidy up the confusing logic for removing the old tree when using
> -b. This is only done when building a branch.
>
> Signed-off-by: Lothar Waßmann <LW@KARO-electronics.de>
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
>
> Changes in v2:
> - Updated to check directories on start-up as per comments on v1 patch
> - Added a test
> - Expanded check to handle subdirectories
>
> tools/buildman/builderthread.py | 4 ++++
> tools/buildman/control.py | 28 +++++++++++++++++++++++++---
> tools/buildman/func_test.py | 9 +++++++++
> 3 files changed, 38 insertions(+), 3 deletions(-)
>
[...]
> diff --git a/tools/buildman/control.py b/tools/buildman/control.py
> index 3cac9f7cf6..5bf128357d 100644
> --- a/tools/buildman/control.py
> +++ b/tools/buildman/control.py
> @@ -81,6 +81,28 @@ def ShowActions(series, why_selected, boards_selected, builder, options):
> print ('Total boards to build for each commit: %d\n' %
> len(why_selected['all']))
>
> +def CheckOutputDir(output_dir):
> + """Make sure that the output directory is not within the current directory
> +
> + If we try to use an output directory which is within the current directory
> + (which is assumed to hold the U-Boot source) we may end up deleting the
> + U-Boot source code. Detect this and print an error in this case.
> +
> + Args:
> + output_dir: Output directory path to check
> + """
> + path = os.path.realpath(output_dir)
> + cwd_path = os.path.realpath('.')
> + while True:
> + if os.path.realpath(path) == cwd_path:
> + Print("Cannot use output directory '%s' since it is within the "
> + "current directtory '%s'" % (path, cwd_path))
s/directtory/directory/
NB: IMO its a bad habit to split format strings across multiple lines,
since it makes it harder to grep the source code for a message
that was printed on the terminal.
Otherwise, looks good to me.
Tested-by: Lothar Waßmann <LW@KARO-electronics.de>
Lothar Waßmann
next prev parent reply other threads:[~2018-04-03 8:16 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-04-02 8:43 [U-Boot] [PATCH v2] tools: buildman: Don't use the working dir as build dir Simon Glass
2018-04-03 8:16 ` Lothar Waßmann [this message]
2018-04-08 11:15 ` Simon Glass
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=20180403101627.590d375c@karo-electronics.de \
--to=lw@karo-electronics.de \
--cc=u-boot@lists.denx.de \
/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.