Until now, checkkonfigsymbols.py did not check default statements for
references on missing Kconfig symbols (i.e., undefined Kconfig options).
Hence, add support to parse and check the Kconfig default statement.
Signed-off-by: Valentin Rothberg <[email protected]>
---
scripts/checkkconfigsymbols.py | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/scripts/checkkconfigsymbols.py b/scripts/checkkconfigsymbols.py
index c89fdcaf06e8..1ba171b97e02 100755
--- a/scripts/checkkconfigsymbols.py
+++ b/scripts/checkkconfigsymbols.py
@@ -20,18 +20,21 @@ OPERATORS = r"&|\(|\)|\||\!"
FEATURE = r"(?:\w*[A-Z0-9]\w*){2,}"
DEF = r"^\s*(?:menu){,1}config\s+(" + FEATURE + r")\s*"
EXPR = r"(?:" + OPERATORS + r"|\s|" + FEATURE + r")+"
-STMT = r"^\s*(?:if|select|depends\s+on)\s+" + EXPR
+DEFAULT = r"default\s+.*?(?:if\s.+){,1}"
+STMT = r"^\s*(?:if|select|depends\s+on|(?:" + DEFAULT + r"))\s+" + EXPR
SOURCE_FEATURE = r"(?:\W|\b)+[D]{,1}CONFIG_(" + FEATURE + r")"
+
# regex objects
REGEX_FILE_KCONFIG = re.compile(r".*Kconfig[\.\w+\-]*$")
-REGEX_FEATURE = re.compile(r"(" + FEATURE + r")")
+REGEX_FEATURE = re.compile(r'(?!\B"[^"]*)' + FEATURE + r'(?![^"]*"\B)')
REGEX_SOURCE_FEATURE = re.compile(SOURCE_FEATURE)
REGEX_KCONFIG_DEF = re.compile(DEF)
REGEX_KCONFIG_EXPR = re.compile(EXPR)
REGEX_KCONFIG_STMT = re.compile(STMT)
REGEX_KCONFIG_HELP = re.compile(r"^\s+(help|---help---)\s*$")
REGEX_FILTER_FEATURES = re.compile(r"[A-Za-z0-9]$")
+REGEX_NUMERIC = re.compile(r"0x[0-9a-f]+|[0-9]+")
def parse_options():
@@ -279,6 +282,9 @@ def parse_kconfig_file(kfile, defined_features, referenced_features):
line = line.strip('\n')
features.extend(get_features_in_line(line))
for feature in set(features):
+ if REGEX_NUMERIC.match(feature):
+ # ignore numeric values
+ continue
paths = referenced_features.get(feature, set())
paths.add(kfile)
referenced_features[feature] = paths
--
1.9.1
Until now, checkkonfigsymbols.py did not check default statements for
references on missing Kconfig symbols (i.e., undefined Kconfig options).
Hence, add support to parse and check the Kconfig default statement.
Signed-off-by: Valentin Rothberg <[email protected]>
---
Changelog:
v2 (thanks to Stefan Hengelein):
- update NUMERIC regex (Kconfig accepts 'X' and 'A-F')
- remove mistakenly added blank line from v1
scripts/checkkconfigsymbols.py | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/scripts/checkkconfigsymbols.py b/scripts/checkkconfigsymbols.py
index c89fdcaf06e8..4ce00fbede94 100755
--- a/scripts/checkkconfigsymbols.py
+++ b/scripts/checkkconfigsymbols.py
@@ -20,18 +20,20 @@ OPERATORS = r"&|\(|\)|\||\!"
FEATURE = r"(?:\w*[A-Z0-9]\w*){2,}"
DEF = r"^\s*(?:menu){,1}config\s+(" + FEATURE + r")\s*"
EXPR = r"(?:" + OPERATORS + r"|\s|" + FEATURE + r")+"
-STMT = r"^\s*(?:if|select|depends\s+on)\s+" + EXPR
+DEFAULT = r"default\s+.*?(?:if\s.+){,1}"
+STMT = r"^\s*(?:if|select|depends\s+on|(?:" + DEFAULT + r"))\s+" + EXPR
SOURCE_FEATURE = r"(?:\W|\b)+[D]{,1}CONFIG_(" + FEATURE + r")"
# regex objects
REGEX_FILE_KCONFIG = re.compile(r".*Kconfig[\.\w+\-]*$")
-REGEX_FEATURE = re.compile(r"(" + FEATURE + r")")
+REGEX_FEATURE = re.compile(r'(?!\B"[^"]*)' + FEATURE + r'(?![^"]*"\B)')
REGEX_SOURCE_FEATURE = re.compile(SOURCE_FEATURE)
REGEX_KCONFIG_DEF = re.compile(DEF)
REGEX_KCONFIG_EXPR = re.compile(EXPR)
REGEX_KCONFIG_STMT = re.compile(STMT)
REGEX_KCONFIG_HELP = re.compile(r"^\s+(help|---help---)\s*$")
REGEX_FILTER_FEATURES = re.compile(r"[A-Za-z0-9]$")
+REGEX_NUMERIC = re.compile(r"0[xX][0-9a-fA-F]+|[0-9]+")
def parse_options():
@@ -279,6 +281,9 @@ def parse_kconfig_file(kfile, defined_features, referenced_features):
line = line.strip('\n')
features.extend(get_features_in_line(line))
for feature in set(features):
+ if REGEX_NUMERIC.match(feature):
+ # ignore numeric values
+ continue
paths = referenced_features.get(feature, set())
paths.add(kfile)
referenced_features[feature] = paths
--
1.9.1
On 2015-07-27 12:33, Valentin Rothberg wrote:
> Until now, checkkonfigsymbols.py did not check default statements for
> references on missing Kconfig symbols (i.e., undefined Kconfig options).
> Hence, add support to parse and check the Kconfig default statement.
>
> Signed-off-by: Valentin Rothberg <[email protected]>
> ---
> Changelog:
> v2 (thanks to Stefan Hengelein):
> - update NUMERIC regex (Kconfig accepts 'X' and 'A-F')
> - remove mistakenly added blank line from v1
>
> scripts/checkkconfigsymbols.py | 9 +++++++--
> 1 file changed, 7 insertions(+), 2 deletions(-)
Applied to kbuild.git#kconfig.
Michal
Hi Michal,
On Mon, Aug 24, 2015 at 4:49 PM, Michal Marek <[email protected]> wrote:
> On 2015-07-27 12:33, Valentin Rothberg wrote:
>> Until now, checkkonfigsymbols.py did not check default statements for
>> references on missing Kconfig symbols (i.e., undefined Kconfig options).
>> Hence, add support to parse and check the Kconfig default statement.
>>
>> Signed-off-by: Valentin Rothberg <[email protected]>
>> ---
>> Changelog:
>> v2 (thanks to Stefan Hengelein):
>> - update NUMERIC regex (Kconfig accepts 'X' and 'A-F')
>> - remove mistakenly added blank line from v1
>>
>> scripts/checkkconfigsymbols.py | 9 +++++++--
>> 1 file changed, 7 insertions(+), 2 deletions(-)
>
> Applied to kbuild.git#kconfig.
>
> Michal
>
The patch above already went through Greg's tree to linux-next (see
commit 0bd38ae35522).
Kind regards,
Valentin
On 2015-08-24 16:52, Valentin Rothberg wrote:
> Hi Michal,
>
> On Mon, Aug 24, 2015 at 4:49 PM, Michal Marek <[email protected]> wrote:
>> On 2015-07-27 12:33, Valentin Rothberg wrote:
>>> Until now, checkkonfigsymbols.py did not check default statements for
>>> references on missing Kconfig symbols (i.e., undefined Kconfig options).
>>> Hence, add support to parse and check the Kconfig default statement.
>>>
>>> Signed-off-by: Valentin Rothberg <[email protected]>
>>> ---
>>> Changelog:
>>> v2 (thanks to Stefan Hengelein):
>>> - update NUMERIC regex (Kconfig accepts 'X' and 'A-F')
>>> - remove mistakenly added blank line from v1
>>>
>>> scripts/checkkconfigsymbols.py | 9 +++++++--
>>> 1 file changed, 7 insertions(+), 2 deletions(-)
>>
>> Applied to kbuild.git#kconfig.
>>
>> Michal
>>
>
> The patch above already went through Greg's tree to linux-next (see
> commit 0bd38ae35522).
Thanks for the information. I'll undo the change in my tree (I haven't
pushed yet).
Michal