[U-Boot] [PATCH v3 10/10] moveconfig: Add a switch to only cleanup headers

Joe Hershberger joe.hershberger at gmail.com
Thu May 14 20:03:44 CEST 2015


Hi Masahiro-san,

On Thu, May 14, 2015 at 9:51 AM, Masahiro Yamada
<yamada.masahiro at socionext.com> wrote:
> 2015-05-14 7:28 GMT+09:00 Joe Hershberger <joe.hershberger at ni.com>:
>> In some case you may want to only cleanup the headers. Make it possible
>> without waiting for all boards to compile.
>>
>> Signed-off-by: Joe Hershberger <joe.hershberger at ni.com>
>>
>> ---
>>
>> Changes in v3:
>> -New for version 3
>>
>> Changes in v2: None
>>
>>  tools/moveconfig.py | 83 ++++++++++++++++++++++++++++-------------------------
>>  1 file changed, 44 insertions(+), 39 deletions(-)
>>
>> diff --git a/tools/moveconfig.py b/tools/moveconfig.py
>> index bb087d4..d63f47f 100755
>> --- a/tools/moveconfig.py
>> +++ b/tools/moveconfig.py
>> @@ -412,48 +412,50 @@ class Slots:
>>  def move_config(config_attrs, options):
>>      check_top_directory()
>>
>> -    for config_attr in config_attrs:
>> -        print 'Moving %s (type: %s, default: %s, no_spl: %s)' % (
>> -            config_attr['config'],
>> -            config_attr['type'],
>> -            config_attr['default'],
>> -            config_attr['no_spl_support'])
>> -    print '%d jobs...' % options.jobs
>> -
>> -    if options.defconfigs:
>> -        defconfigs = [line.strip() for line in open(options.defconfigs, 'r')]
>> -    else:
>> -        # All the defconfig files to be processed
>> -        defconfigs = []
>> -        for (dirpath, dirnames, filenames) in os.walk('configs'):
>> -            dirpath = dirpath[len('configs') + 1:]
>> -            for filename in fnmatch.filter(filenames, '*_defconfig'):
>> -                if fnmatch.fnmatch(filename, '.*'):
>> -                    continue
>> -                defconfigs.append(os.path.join(dirpath, filename))
>> -
>> -    """Clean up any previous log of failed moves"""
>> -    if os.path.exists('moveconfig.failed'):
>> -        os.remove('moveconfig.failed')
>> -
>> -    slots = Slots(config_attrs, options)
>> -
>> -    # Main loop to process defconfig files:
>> -    #  Add a new subprocess into a vacant slot.
>> -    #  Sleep if there is no available slot.
>> -    for i, defconfig in enumerate(defconfigs):
>> -        while not slots.add(defconfig, i, len(defconfigs)):
>> -            while not slots.available():
>> -                # No available slot: sleep for a while
>> -                time.sleep(SLEEP_TIME)
>> -
>> -    # wait until all the subprocesses finish
>> -    while not slots.empty():
>> -        time.sleep(SLEEP_TIME)
>> +    if not options.clean_only:
>> +        for config_attr in config_attrs:
>> +            print 'Moving %s (type: %s, default: %s, no_spl: %s)' % (
>> +                config_attr['config'],
>> +                config_attr['type'],
>> +                config_attr['default'],
>> +                config_attr['no_spl_support'])
>> +        print '%d jobs...' % options.jobs
>> +
>> +        if options.defconfigs:
>> +            defconfigs = [line.strip() for line in
>> +                open(options.defconfigs, 'r')]
>> +        else:
>> +            # All the defconfig files to be processed
>> +            defconfigs = []
>> +            for (dirpath, dirnames, filenames) in os.walk('configs'):
>> +                dirpath = dirpath[len('configs') + 1:]
>> +                for filename in fnmatch.filter(filenames, '*_defconfig'):
>> +                    if fnmatch.fnmatch(filename, '.*'):
>> +                        continue
>> +                    defconfigs.append(os.path.join(dirpath, filename))
>> +
>> +        """Clean up any previous log of failed moves"""
>> +        if os.path.exists('moveconfig.failed'):
>> +            os.remove('moveconfig.failed')
>> +
>> +        slots = Slots(config_attrs, options)
>> +
>> +        # Main loop to process defconfig files:
>> +        #  Add a new subprocess into a vacant slot.
>> +        #  Sleep if there is no available slot.
>> +        for i, defconfig in enumerate(defconfigs):
>> +            while not slots.add(defconfig, i, len(defconfigs)):
>> +                while not slots.available():
>> +                    # No available slot: sleep for a while
>> +                    time.sleep(SLEEP_TIME)
>> +
>> +        # wait until all the subprocesses finish
>> +        while not slots.empty():
>> +            time.sleep(SLEEP_TIME)
>>
>>      cleanup_headers(config_attrs)
>>
>> -    if os.path.exists('moveconfig.failed'):
>> +    if (not options.clean_only) & 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
>
>
> I am OK with this feature, but this 'if' statement ranges over many code lines.
>
> Perhaps, moving the cleanup_headers to the main function is simpler?
>
>
> def main():
>     [snip]
>
>     if not options.clean_only:
>           move_config(config_attrs, options)
>
>     cleanup_headers(config_attrs)

OK.

-Joe


More information about the U-Boot mailing list