tools: moveconfig: move log output code out of Kconfig Parser class
authorMasahiro Yamada <yamada.masahiro@socionext.com>
Thu, 19 May 2016 06:52:01 +0000 (15:52 +0900)
committerMasahiro Yamada <yamada.masahiro@socionext.com>
Sun, 12 Jun 2016 22:46:28 +0000 (07:46 +0900)
This will help further improvement/clean-up.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Reviewed-by: Joe Hershberger <joe.hershberger@ni.com>
tools/moveconfig.py

index 7dd9d8c..97d2faf 100755 (executable)
@@ -391,18 +391,16 @@ class KconfigParser:
     re_arch = re.compile(r'CONFIG_SYS_ARCH="(.*)"')
     re_cpu = re.compile(r'CONFIG_SYS_CPU="(.*)"')
 
-    def __init__(self, configs, options, progress, build_dir):
+    def __init__(self, configs, options, build_dir):
         """Create a new parser.
 
         Arguments:
           configs: A list of CONFIGs to move.
           options: option flags.
-          progress: A progress indicator
           build_dir: Build directory.
         """
         self.configs = configs
         self.options = options
-        self.progress = progress
         self.dotconfig = os.path.join(build_dir, '.config')
         self.autoconf = os.path.join(build_dir, 'include', 'autoconf.mk')
         self.config_autoconf = os.path.join(build_dir, 'include', 'config',
@@ -491,10 +489,12 @@ class KconfigParser:
         This function parses the generated .config and include/autoconf.mk
         searching the target options.
         Move the config option(s) to the .config as needed.
-        Also, display the log to show what happened to the .config.
 
         Arguments:
           defconfig: defconfig name.
+
+        Returns:
+          Return log string
         """
 
         results = []
@@ -528,11 +528,6 @@ class KconfigParser:
 
             log += log_msg(self.options.color, log_color, defconfig, actlog)
 
-        # Some threads are running in parallel.
-        # Print log in one shot to not mix up logs from different threads.
-        print log,
-        self.progress.show()
-
         with open(self.dotconfig, 'a') as f:
             for (action, value) in results:
                 if action == ACTION_MOVE:
@@ -541,6 +536,8 @@ class KconfigParser:
         os.remove(self.config_autoconf)
         os.remove(self.autoconf)
 
+        return log
+
 class Slot:
 
     """A slot to store a subprocess.
@@ -565,7 +562,7 @@ class Slot:
         self.build_dir = tempfile.mkdtemp()
         self.devnull = devnull
         self.make_cmd = (make_cmd, 'O=' + self.build_dir)
-        self.parser = KconfigParser(configs, options, progress, self.build_dir)
+        self.parser = KconfigParser(configs, options, self.build_dir)
         self.state = STATE_IDLE
         self.failed_boards = []
 
@@ -644,7 +641,7 @@ class Slot:
             return True
 
         if self.state == STATE_AUTOCONF:
-            self.parser.update_dotconfig(self.defconfig)
+            self.log = self.parser.update_dotconfig(self.defconfig)
 
             """Save off the defconfig in a consistent way"""
             cmd = list(self.make_cmd)
@@ -658,7 +655,11 @@ class Slot:
             if not self.options.dry_run:
                 shutil.move(os.path.join(self.build_dir, 'defconfig'),
                             os.path.join('configs', self.defconfig))
+            # Some threads are running in parallel.
+            # Print log in one shot to not mix up logs from different threads.
+            print self.log,
             self.progress.inc()
+            self.progress.show()
             self.state = STATE_IDLE
             return True
 
@@ -812,7 +813,6 @@ def move_config(configs, options):
     while not slots.empty():
         time.sleep(SLEEP_TIME)
 
-    progress.show()
     print ''
     slots.show_failed_boards()