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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.