From mboxrd@z Thu Jan 1 00:00:00 1970 From: Joe Hershberger Date: Thu, 7 May 2015 16:22:58 -0500 Subject: [U-Boot] [PATCH 3/5] moveconfig: Continue moving even if one board fails In-Reply-To: <1431033780-2286-1-git-send-email-joe.hershberger@ni.com> References: <1421669542-7534-1-git-send-email-yamada.m@jp.panasonic.com> <1431033780-2286-1-git-send-email-joe.hershberger@ni.com> Message-ID: <1431033780-2286-3-git-send-email-joe.hershberger@ni.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Some compilers are hard to come by or have so few boards they are not worth messing with for this tool. Provide a list that need manual intervention and continue moving the bulk of boards. Signed-off-by: Joe Hershberger --- tools/moveconfig.py | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/tools/moveconfig.py b/tools/moveconfig.py index c81f32c..ab53476 100755 --- a/tools/moveconfig.py +++ b/tools/moveconfig.py @@ -17,6 +17,7 @@ import os import re import shutil import subprocess +from subprocess import PIPE import sys import tempfile import time @@ -277,6 +278,13 @@ class Slot: self.state = STATE_DEFCONFIG return True + def defconfig_error(self, errmsg): + output = self.defconfig[:-len('_defconfig')].ljust(37) + ': ' + print output + errmsg + + """Save a list of targets that have to be checked by hand""" + open('moveconfig.failed', 'a+').write("%s\n" % self.defconfig) + def poll(self): """Check if the subprocess is running and invoke the .config parser if the subprocess is terminated. @@ -291,7 +299,13 @@ class Slot: return False if self.ps.poll() != 0: - sys.exit("failed to process '%s'" % self.defconfig) + errmsg = 'ERROR - build error' + errout = self.ps.stderr.read() + if errout.find('gcc: command not found') != -1: + errmsg = 'ERROR - compiler not found' + self.defconfig_error(errmsg) + self.state = STATE_IDLE + return True if self.state == STATE_SILENTOLDCONFIG: self.parser.update_defconfig(self.defconfig) @@ -303,7 +317,7 @@ class Slot: if cross_compile: cmd.append('CROSS_COMPILE=%s' % cross_compile) cmd.append('include/autoconf.mk') - self.ps = subprocess.Popen(cmd, stdout=self.devnull) + self.ps = subprocess.Popen(cmd, stdout=self.devnull, stderr=PIPE) self.state = STATE_SILENTOLDCONFIG return False @@ -363,6 +377,11 @@ class Slots: def move_config(config_attr, jobs=1): check_top_directory() + + """Clean up any previous log of failed moves""" + if os.path.exists('moveconfig.failed'): + os.remove('moveconfig.failed') + print 'Moving %s (type: %s, default: %s, no_spl: %s) ... (jobs: %d)' % ( config_attr['config'], config_attr['type'], @@ -396,6 +415,12 @@ def move_config(config_attr, jobs=1): cleanup_headers(config_attr['config']) + if os.path.exists('moveconfig.failed'): + print '!!! Some boards were not processed; move the config manually.' + print '!!! The list of failed boards are saved in moveconfig.failed' + print + print open('moveconfig.failed', 'r').read() + def main(): try: cpu_count = multiprocessing.cpu_count() -- 1.7.11.5