[U-Boot] [PATCH v4 01/10] moveconfig: Always run savedefconfig on the moved config

Joe Hershberger joe.hershberger at gmail.com
Tue May 19 17:35:24 CEST 2015


Hi Masahiro-san,

On Mon, May 18, 2015 at 8:58 PM, Masahiro Yamada
<yamada.masahiro at socionext.com> wrote:
> Hi Joe,
>
> 2015-05-16 6:40 GMT+09:00 Joe Hershberger <joe.hershberger at 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 at ni.com>
>
>
> This feature expects the defconfigs are all clean.
> Otherwise, savedefconfig would make "git diff" noisier.
>
> It is safer to use "make menuconfig && make savedefconfig"
> for adding new options, but some people still try to
> edit the defconfig directly...
>
> Perhaps, should do the global cleanup periodically?
>
>
>> ---
>> This is based on https://patchwork.ozlabs.org/patch/472591/
>>
>> Changes in v4:
>> -Rebased series on Masahiro's v2
>>
>> Changes in v3: None
>> Changes in v2: None
>>
>>  tools/moveconfig.py | 35 ++++++++++++++++++++++++++---------
>>  1 file changed, 26 insertions(+), 9 deletions(-)
>>
>> diff --git a/tools/moveconfig.py b/tools/moveconfig.py
>> index c39ea95..544f6af 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
>
> Uh, I was doing in a different work-flow.
> (I edit the Kconfig after I move CONFIGs to defconfigs).
>
> But, the Kconfig must be edited beforehand
> to do savedefconfig.
>
> So, I am OK with this change.
>
>
>
>>    $ 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 = ''
>
>
> With the change of the work-flow above,
> we need not parse the .config, so this seems OK.
>
>
>
>> @@ -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,24 @@ 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')
>> +            if not os.path.exists(defconfig_path):
>> +                print >> sys.stderr, log_msg(self.options.color,
>> +                                             COLOR_LIGHT_RED,
>> +                                             self.defconfig,
>> +                                             'The defconfig was not updated')
>
> Is this warning message reachable?
>
> The missing defconfig means "make savedefconfig" failed.
>
> That case has been already caught by 'Failed to process.' above, I think.

OK... dropping that warning.

>> +            shutil.move(defconfig_path,
>> +                        os.path.join('configs', self.defconfig))
>>              self.state = STATE_IDLE
>>              return True
>
>
>
>
>
> --
> Best Regards
> Masahiro Yamada
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot


More information about the U-Boot mailing list