From mboxrd@z Thu Jan 1 00:00:00 1970 From: Masahiro Yamada Date: Tue, 19 May 2015 12:23:10 +0900 Subject: [U-Boot] [PATCH v4 08/10] moveconfig: Print a message for missing compiler In-Reply-To: <1431726052-6519-8-git-send-email-joe.hershberger@ni.com> References: <1431556137-8426-1-git-send-email-joe.hershberger@ni.com> <1431726052-6519-1-git-send-email-joe.hershberger@ni.com> <1431726052-6519-8-git-send-email-joe.hershberger@ni.com> Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de 2015-05-16 6:40 GMT+09:00 Joe Hershberger : > A common case for failed builds is a missing compiler. Print a message > for that case to tell the user concisely which compiler was expected > that was not found. > > This patch also has the effect of not printing build errors any longer. > The next patch will add a switch to optionally bring that back. > > Signed-off-by: Joe Hershberger > --- > > Changes in v4: None > Changes in v3: None > Changes in v2: None > > tools/moveconfig.py | 16 ++++++++++------ > 1 file changed, 10 insertions(+), 6 deletions(-) > > diff --git a/tools/moveconfig.py b/tools/moveconfig.py > index 9e923da..f986f55 100755 > --- a/tools/moveconfig.py > +++ b/tools/moveconfig.py > @@ -166,6 +166,7 @@ import os > import re > import shutil > import subprocess > +from subprocess import PIPE Personally I do not prefer from ... import because it disturbs the naming space. Could you use subprocess.PIPE instead? > import sys > import tempfile > import time > @@ -606,11 +607,14 @@ class Slot: > return False > > if self.ps.poll() != 0: > - > + errmsg = 'Failed to process.' > + errout = self.ps.stderr.read() This throws exception if "make *_defconfig" or "make savedefconfig" fail. Traceback (most recent call last): File "tools/moveconfig.py", line 924, in main() File "tools/moveconfig.py", line 919, in main move_config(config_attrs, options) File "tools/moveconfig.py", line 794, in move_config while not slots.available(): File "tools/moveconfig.py", line 717, in available if slot.poll(): File "tools/moveconfig.py", line 616, in poll errout = self.ps.stderr.read() AttributeError: 'NoneType' object has no attribute 'read' Seems better to add PIPE for all the call of subprocess.Popen() > + if errout.find('gcc: command not found') != -1: > + errmsg = 'Compiler not found (%s)' % self.cross_compile If you do this, should the locale be changed? Without LANG=C, "command not found" is displayed in Japanese on my computer. If --verbose is given, we will be able to know the cause of erorr. "missing compiler" is a special case error? > print >> sys.stderr, log_msg(self.options.color, > COLOR_LIGHT_RED, > self.defconfig, > - "failed to process.") > + errmsg), > if self.options.exit_on_error: > sys.exit("Exit on error.") > else: > @@ -644,13 +648,13 @@ class Slot: > self.state = STATE_IDLE > return True > > - cross_compile = self.parser.get_cross_compile() > + self.cross_compile = self.parser.get_cross_compile() > cmd = list(self.make_cmd) > - if cross_compile: > - cmd.append('CROSS_COMPILE=%s' % cross_compile) > + if self.cross_compile: > + cmd.append('CROSS_COMPILE=%s' % self.cross_compile) > cmd.append('KCONFIG_IGNORE_DUPLICATES=1') > cmd.append('include/config/auto.conf') > - self.ps = subprocess.Popen(cmd, stdout=self.devnull) > + self.ps = subprocess.Popen(cmd, stdout=self.devnull, stderr=PIPE) > self.state = STATE_AUTOCONF > return False > -- Best Regards Masahiro Yamada