menu plugin: handle common KConfig errors

This patch handles common Kconfig errors (file not found, invalid
config) and reports them as user errors. By that, the root cause of the
error is easier to spot by the user.

Signed-off-by: Felix Moessbauer <felix.moessbauer@siemens.com>
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
This commit is contained in:
Felix Moessbauer 2023-05-04 04:50:19 +02:00 committed by Jan Kiszka
parent 222f07de69
commit 2503ab39cd

View File

@ -70,8 +70,8 @@ import logging
import os import os
import pprint import pprint
import yaml import yaml
from kconfiglib import Kconfig, Symbol, Choice, expr_value, TYPE_TO_STR, \ from kconfiglib import Kconfig, Symbol, Choice, KconfigError, \
MENU, COMMENT, STRING, BOOL, INT, HEX, UNKNOWN expr_value, TYPE_TO_STR, MENU, COMMENT, STRING, BOOL, INT, HEX, UNKNOWN
from kas import __version__, __file_version__ from kas import __version__, __file_version__
from kas.context import create_global_context from kas.context import create_global_context
from kas.config import CONFIG_YAML_FILE from kas.config import CONFIG_YAML_FILE
@ -100,6 +100,13 @@ class MissingModuleError(KasUserError):
pass pass
class KConfigLoadError(KasUserError):
"""
The KConfig file could not be found or is invalid
"""
pass
def check_sym_is_string(sym): def check_sym_is_string(sym):
if sym.type != STRING: if sym.type != STRING:
raise VariableTypeError('Variable {} must be of string type' raise VariableTypeError('Variable {} must be of string type'
@ -253,7 +260,10 @@ class Menu:
ctx = create_global_context(args) ctx = create_global_context(args)
self.kconf = Kconfig(args.kconfig, warn_to_stderr=False) try:
self.kconf = Kconfig(args.kconfig, warn_to_stderr=False)
except (KconfigError, FileNotFoundError) as err:
raise KConfigLoadError(str(err))
config_filename = os.path.join(ctx.kas_work_dir, CONFIG_YAML_FILE) config_filename = os.path.join(ctx.kas_work_dir, CONFIG_YAML_FILE)