[PATCH] moveconfig: Fix code relying on now-stripped newline characters

Simon Glass sjg at chromium.org
Mon Jan 31 00:14:24 CET 2022


Hi Alper,

On Sun, 30 Jan 2022 at 13:14, Alper Nebi Yasak <alpernebiyasak at gmail.com> wrote:
>
> On 30/01/2022 00:09, Simon Glass wrote:
> > On Sat, 29 Jan 2022 at 08:22, Alper Nebi Yasak <alpernebiyasak at gmail.com> wrote:
> >> Commit 37f815cad07d ("moveconfig: Use a function to read files") adds a
> >> helper function that can read a file as lines, but strips the newline
> >> characters. This change broke parts of moveconfig code that relied on
> >> their existence, resulting in a few issues
> >
> > I was a little worried about the subtleties here. Thanks for fixing
> > it! I almost got annoyed and wrote some tests, but I guess we can limp
> > on without them.
>
> Can't guarantee I found everything, just lucky I was trying a migration
> on REMAKE_ELF :)

Reviewed-by: Simon Glass <sjg at chromium.org>
Tested-by: Simon Glass <sjg at chromium.org>

>
> >>
> >> diff --git a/tools/moveconfig.py b/tools/moveconfig.py
> >> index 35fe6710d70a..1bcf58caf14c 100755
> >> --- a/tools/moveconfig.py
> >> +++ b/tools/moveconfig.py
> >> @@ -451,7 +451,7 @@ def cleanup_one_extra_option(defconfig_path, configs, args):
> >>      """
> >>
> >>      start = 'CONFIG_SYS_EXTRA_OPTIONS="'
> >> -    end = '"\n'
> >> +    end = '"'
> >
> > ''
>
> Looks to me like the double-quote character is necessary here, if I add
> CONFIG_SYS_EXTRA_OPTIONS="REMAKE_ELF" to chromebook_bob_defconfig and
> try migrating CONFIG_REMAKE_ELF the line doesn't get removed otherwise.

Yes you are right, ignore this. It is barely legible in the font I am
using here.

>
> Trying to add more lines of diff context below:
>
> >>
> >>      lines = read_file(defconfig_path)
> >>
>         for i, line in enumerate(lines):
>             if line.startswith(start) and line.endswith(end):
>                 break
>         else:
>             # CONFIG_SYS_EXTRA_OPTIONS was not found in this defconfig
>             return
>
>         old_tokens = line[len(start):-len(end)].split(',')
>         new_tokens = []
>
>         for token in old_tokens:
>             pos = token.find('=')
>             if not (token[:pos] if pos >= 0 else token) in configs:
>                 new_tokens.append(token)

Regards,
Simon


More information about the U-Boot mailing list