diff mbox

[U-Boot,v5,1/9] moveconfig: Always run savedefconfig on the moved config

Message ID 1432059685-3018-1-git-send-email-joe.hershberger@ni.com
State Accepted
Delegated to: Masahiro Yamada
Headers show

Commit Message

Joe Hershberger May 19, 2015, 6:21 p.m. UTC
This will ensure that the order of the defconfig entries will always
match that of the Kconfig files. After one slightly painful (but
still early in the process) pass over all boards, this should keep
the defconfigs clean from here on.

Users must edit the Kconfig first to add the menu entries and then run
moveconfig.py to update the defconfig files and the include configs.

As such, moveconfig.py cannot compare against the '.config' contents.

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
---
This is based on https://patchwork.ozlabs.org/patch/472591/

Changes in v5:
-Removed warning that may never be reached

Changes in v4:
-Rebased series on Masahiro's v2

Changes in v3: None
Changes in v2: None

 tools/moveconfig.py | 30 +++++++++++++++++++++---------
 1 file changed, 21 insertions(+), 9 deletions(-)

Comments

Masahiro Yamada May 20, 2015, 4:48 a.m. UTC | #1
Hi Joe,



2015-05-20 3:21 GMT+09:00 Joe Hershberger <joe.hershberger@ni.com>:
> This will ensure that the order of the defconfig entries will always
> match that of the Kconfig files. After one slightly painful (but
> still early in the process) pass over all boards, this should keep
> the defconfigs clean from here on.
>
> Users must edit the Kconfig first to add the menu entries and then run
> moveconfig.py to update the defconfig files and the include configs.
>
> As such, moveconfig.py cannot compare against the '.config' contents.
>
> Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
> ---
> This is based on https://patchwork.ozlabs.org/patch/472591/
>
> Changes in v5:
> -Removed warning that may never be reached


The whole series of v5 looks good to me.


Tom,
looks like this series is delegated to me.

Shall I apply my base patch and Joe's great improvements and then send
a pull-req?
Or would you do it?
Masahiro Yamada May 26, 2015, 11:43 p.m. UTC | #2
2015-05-20 3:21 GMT+09:00 Joe Hershberger <joe.hershberger@ni.com>:
> This will ensure that the order of the defconfig entries will always
> match that of the Kconfig files. After one slightly painful (but
> still early in the process) pass over all boards, this should keep
> the defconfigs clean from here on.
>
> Users must edit the Kconfig first to add the menu entries and then run
> moveconfig.py to update the defconfig files and the include configs.
>
> As such, moveconfig.py cannot compare against the '.config' contents.
>
> Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
> ---
> This is based on https://patchwork.ozlabs.org/patch/472591/
>
> Changes in v5:
> -Removed warning that may never be reached


The series, applied to u-boot-uniphier/misc with my Acked-by.
Thanks!
diff mbox

Patch

diff --git a/tools/moveconfig.py b/tools/moveconfig.py
index c39ea95..c9984b4 100755
--- a/tools/moveconfig.py
+++ b/tools/moveconfig.py
@@ -46,6 +46,9 @@  should look like this:
   CONFIG_CMD_USB bool n
   CONFIG_SYS_TEXT_BASE hex 0x00000000
 
+Next you must edit the Kconfig to add the menu entries for the configs
+you are moving.
+
 And then run this tool giving the file name of the recipe
 
   $ tools/moveconfig.py recipe
@@ -192,6 +195,7 @@  CROSS_COMPILE = {
 STATE_IDLE = 0
 STATE_DEFCONFIG = 1
 STATE_AUTOCONF = 2
+STATE_SAVEDEFCONFIG = 3
 
 ACTION_MOVE = 0
 ACTION_DEFAULT_VALUE = 1
@@ -390,8 +394,7 @@  class KconfigParser:
 
         return CROSS_COMPILE.get(arch, '')
 
-    def parse_one_config(self, config_attr, defconfig_lines,
-                         dotconfig_lines, autoconf_lines):
+    def parse_one_config(self, config_attr, defconfig_lines, autoconf_lines):
         """Parse .config, defconfig, include/autoconf.mk for one config.
 
         This function looks for the config options in the lines from
@@ -402,7 +405,6 @@  class KconfigParser:
           config_attr: A dictionary including the name, the type,
                        and the default value of the target config.
           defconfig_lines: lines from the original defconfig file.
-          dotconfig_lines: lines from the .config file.
           autoconf_lines: lines from the include/autoconf.mk file.
 
         Returns:
@@ -418,7 +420,7 @@  class KconfigParser:
         else:
             default = config + '=' + config_attr['default']
 
-        for line in defconfig_lines + dotconfig_lines:
+        for line in defconfig_lines:
             line = line.rstrip()
             if line.startswith(config + '=') or line == not_set:
                 return (ACTION_ALREADY_EXIST, line)
@@ -463,15 +465,12 @@  class KconfigParser:
         with open(defconfig_path) as f:
             defconfig_lines = f.readlines()
 
-        with open(dotconfig_path) as f:
-            dotconfig_lines = f.readlines()
-
         with open(autoconf_path) as f:
             autoconf_lines = f.readlines()
 
         for config_attr in self.config_attrs:
             result = self.parse_one_config(config_attr, defconfig_lines,
-                                           dotconfig_lines, autoconf_lines)
+                                           autoconf_lines)
             results.append(result)
 
         log = ''
@@ -499,7 +498,7 @@  class KconfigParser:
         print log,
 
         if not self.options.dry_run:
-            with open(defconfig_path, 'a') as f:
+            with open(dotconfig_path, 'a') as f:
                 for (action, value) in results:
                     if action == ACTION_MOVE:
                         f.write(value + '\n')
@@ -608,6 +607,19 @@  class Slot:
 
         if self.state == STATE_AUTOCONF:
             self.parser.update_defconfig(self.defconfig)
+
+            """Save off the defconfig in a consistent way"""
+            cmd = list(self.make_cmd)
+            cmd.append('savedefconfig')
+            self.ps = subprocess.Popen(cmd, stdout=self.devnull,
+                                       stderr=self.devnull)
+            self.state = STATE_SAVEDEFCONFIG
+            return False
+
+        if self.state == STATE_SAVEDEFCONFIG:
+            defconfig_path = os.path.join(self.build_dir, 'defconfig')
+            shutil.move(defconfig_path,
+                        os.path.join('configs', self.defconfig))
             self.state = STATE_IDLE
             return True