tools: moveconfig: skip savedefconfig if .config was not updated
authorMasahiro Yamada <yamada.masahiro@socionext.com>
Thu, 19 May 2016 06:52:04 +0000 (15:52 +0900)
committerMasahiro Yamada <yamada.masahiro@socionext.com>
Sun, 12 Jun 2016 22:46:28 +0000 (07:46 +0900)
If no CONFIG option is moved to the .config, no need to sync the
defconfig file.  This accelerates the processing by skipping
needless "make savedefconfig".

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

index 84ad16d87637f2ed11660bd4cc9c3374710102cc..e32104412e14e0b1c1f97a032be74f7aa6ac09dd 100755 (executable)
@@ -496,10 +496,13 @@ class KconfigParser:
           defconfig: defconfig name.
 
         Returns:
-          Return log string
+          Return a tuple of (updated flag, log string).
+          The "updated flag" is True if the .config was updated, False
+          otherwise.  The "log string" shows what happend to the .config.
         """
 
         results = []
+        updated = False
 
         with open(self.dotconfig) as f:
             dotconfig_lines = f.readlines()
@@ -534,11 +537,12 @@ class KconfigParser:
             for (action, value) in results:
                 if action == ACTION_MOVE:
                     f.write(value + '\n')
+                    updated = True
 
         os.remove(self.config_autoconf)
         os.remove(self.autoconf)
 
-        return log
+        return (updated, log)
 
 class Slot:
 
@@ -614,8 +618,11 @@ class Slot:
         If the configuration is successfully finished, assign a new
         subprocess to build include/autoconf.mk.
         If include/autoconf.mk is generated, invoke the parser to
-        parse the .config and the include/autoconf.mk, and then set the
-        slot back to the idle state.
+        parse the .config and the include/autoconf.mk, moving
+        config options to the .config as needed.
+        If the .config was updated, run "make savedefconfig" to sync
+        it, update the original defconfig, and then set the slot back
+        to the idle state.
 
         Returns:
           Return True if the subprocess is terminated, False otherwise
@@ -636,8 +643,12 @@ class Slot:
             return True
 
         if self.state == STATE_AUTOCONF:
-            self.log += self.parser.update_dotconfig()
+            (updated, log) = self.parser.update_dotconfig()
+            self.log += log
 
+            if not updated:
+                self.finish(True)
+                return True
             """Save off the defconfig in a consistent way"""
             cmd = list(self.make_cmd)
             cmd.append('savedefconfig')