[U-Boot] [PATCH v4 08/10] moveconfig: Print a message for missing compiler

Joe Hershberger joe.hershberger at gmail.com
Tue May 19 19:51:24 CEST 2015


Hi Masahiro-san,

On Mon, May 18, 2015 at 10:23 PM, Masahiro Yamada
<yamada.masahiro at socionext.com> wrote:
> 2015-05-16 6:40 GMT+09:00 Joe Hershberger <joe.hershberger at ni.com>:
>> 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 <joe.hershberger at ni.com>
>> ---
>>
>> 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?

OK.

>>  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 <module>
>     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()

OK

>> +            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?

That's true, but at least for my use-case before I spent several days
getting all tool-chains working, it was nice to know what the build
was trying to use for a cross tool-chain in a concise one-liner
instead of parsing a bunch of error prints. That's part of why I added
the -v flag. It's also helpful (naturally) in getting the compilers
all working.

>>              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
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot


More information about the U-Boot mailing list