Re: backports Kconfig processing
Johannes Berg <[email protected]>
| Newsgroups | org.kernel.vger.backports |
|---|---|
| Message-ID | <[email protected]> |
On Thu, 2021-02-25 at 09:31 +0100, Arend van Spriel wrote:
>
> On 24-02-2021 15:32, Johannes Berg wrote:
> > Hi Arend,
> >
> > > I was made aware that the select line in brcm80211 Kconfig is not
> > > working in backports:
> > >
> > > select WANT_DEV_COREDUMP if BRCMFMAC
> > >
> > > Is this something that can be fixed in backports?
> >
> > I guess it can be, but what do you mean by "not working"?
> >
> > It should be rewritten to
> >
> > select BPAUTO_WANT_DEV_COREDUMP if BRCMFMAC
> >
> > but quite possibly the parser doesn't understand the " if BRCMFMAC" part
> > there.
>
> That exactly what is being reported. Things were working fine until I
> added the "if BRCMFMAC" part.
Yeah, so lib/kconfig.py has this
sel_line = re.compile(r'^(?P<spc>\s+)select\s+(?P<sym>[^\s]*)\s*$')
which doesn't cover the case of "if ..." on the select line.
I guess you could either look at that and fix it - need to fix the regex
to allow all_selects() to find it, and modify_selects() to preserve the
"if ..." part.
Probably something like
diff --git a/lib/kconfig.py b/lib/kconfig.py
index a77f8a54eea7..46df636d7594 100644
--- a/lib/kconfig.py
+++ b/lib/kconfig.py
@@ -8,7 +8,7 @@ src_line_rel = re.compile(r'^\s*source\s+(?P<src>[^\s"]*)"?\s*$')
tri_line = re.compile(r'^(?P<spc>\s+)tristate')
bool_line = re.compile(r'^(?P<spc>\s+)bool')
cfg_line = re.compile(r'^(?P<opt>config|menuconfig)\s+(?P<sym>[^\s]*)')
-sel_line = re.compile(r'^(?P<spc>\s+)select\s+(?P<sym>[^\s]*)\s*$')
+sel_line = re.compile(r'^(?P<spc>\s+)select\s+(?P<sym>[^\s]*)(?P<ifexpr>.*)$')
backport_line = re.compile(r'^\s+#(?P<key>[ch]-file|module-name)\s*(?P<name>.*)')
class ConfigTree(object):
@@ -230,9 +230,9 @@ class ConfigTree(object):
m = sel_line.match(l)
if m and not m.group('sym') in syms:
if 'BPAUTO_' + m.group('sym') in syms:
- out += m.group('spc') + "select BPAUTO_" + m.group('sym') + '\n'
+ out += m.group('spc') + "select BPAUTO_" + m.group('sym') + m.group('ifexpr') + '\n'
else:
- out += m.group('spc') + "depends on " + m.group('sym') + '\n'
+ out += m.group('spc') + "depends on " + m.group('sym') + m.group('ifexpr') + '\n'
else:
out += l
outf = open(os.path.join(self.bpid.target_dir, nf), 'w')
johannes
--
To unsubscribe from this list: send the line "unsubscribe backports" in