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

Masahiro Yamada yamada.masahiro at socionext.com
Tue May 19 05:23:10 CEST 2015


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?


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





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


More information about the U-Boot mailing list