mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
d237fab620
This removes the existing hack, in which we wrote the configuration to /dev/null to trigger its evaluation. Instead a function for this specific purpose is added.
72 lines
2.4 KiB
Python
72 lines
2.4 KiB
Python
""" RIOT customization of Kconfig """
|
|
import argparse
|
|
import sys
|
|
|
|
from kconfiglib import Kconfig, KconfigError
|
|
|
|
|
|
class RiotKconfig(Kconfig):
|
|
""" RIOT adaption of Kconfig class """
|
|
def _parse_help(self, node):
|
|
""" Parses the help section of a node, removing Doxygen markers """
|
|
doxygen_markers = ["@ref ", "@see "]
|
|
|
|
# call default parsing
|
|
super(RiotKconfig, self)._parse_help(node)
|
|
|
|
# remove Doxygen markers
|
|
for marker in doxygen_markers:
|
|
node.help = node.help.replace(marker, "")
|
|
|
|
def write_autoconf(self, filename=None, header="/* RIOT Configuration File */\n"):
|
|
""" Override to convert - to _ when writing autoconf.h """
|
|
tmp_unique_defined_syms = self.unique_defined_syms.copy()
|
|
for sym in self.unique_defined_syms:
|
|
if not sym._write_to_conf:
|
|
continue
|
|
sym.name = sym.name.replace('-', '_')
|
|
super(RiotKconfig, self).write_autoconf(filename, header)
|
|
self.unique_defined_syms = tmp_unique_defined_syms
|
|
|
|
def evaluate_config(self):
|
|
"""Evaluate the current configuration.
|
|
|
|
Useful to catch warnings (such as out-of-range integers) before writing
|
|
the configuration to a file.
|
|
"""
|
|
self._config_contents(None)
|
|
|
|
|
|
def standard_riot_kconfig(description=None):
|
|
"""
|
|
Argument parsing helper for tools that take a single optional Kconfig file
|
|
argument (default: Kconfig). Returns the RiotKconfig instance for the parsed
|
|
configuration. Uses argparse internally.
|
|
|
|
Exits with sys.exit() (which raises SystemExit) on errors.
|
|
|
|
description (default: None):
|
|
The 'description' passed to argparse.ArgumentParser().
|
|
argparse.RawDescriptionHelpFormatter is used, so formatting is preserved.
|
|
"""
|
|
parser = argparse.ArgumentParser(
|
|
formatter_class=argparse.RawDescriptionHelpFormatter,
|
|
description=description)
|
|
|
|
parser.add_argument(
|
|
"kconfig",
|
|
metavar="KCONFIG",
|
|
default="Kconfig",
|
|
nargs="?",
|
|
help="Kconfig file (default: Kconfig)")
|
|
|
|
args = parser.parse_args()
|
|
|
|
# Suppress backtraces for expected exceptions
|
|
try:
|
|
return RiotKconfig(args.kconfig)
|
|
except (EnvironmentError, KconfigError) as e:
|
|
# Some long exception messages have extra newlines for better
|
|
# formatting when reported as an unhandled exception. Strip them here.
|
|
sys.exit(str(e).strip())
|