From: Daan De Meyer Date: Sun, 22 Oct 2023 13:35:16 +0000 (+0200) Subject: Make sure Presets= becomes immutable after we use it X-Git-Tag: v19~55^2~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=83aaa2e64f9de6b1afc851677ba8dd1c3870cdb5;p=thirdparty%2Fmkosi.git Make sure Presets= becomes immutable after we use it Presets= should not be modified anymore after we start parsing presets. Let's make sure we enforce that. --- diff --git a/mkosi/config.py b/mkosi/config.py index ba4ba371f..d375f2031 100644 --- a/mkosi/config.py +++ b/mkosi/config.py @@ -2103,6 +2103,7 @@ def resolve_deps(presets: Sequence[MkosiConfig], include: Sequence[str]) -> list def parse_config(argv: Sequence[str] = ()) -> tuple[MkosiArgs, tuple[MkosiConfig, ...]]: # Compare inodes instead of paths so we can't get tricked by bind mounts and such. parsed_includes: set[tuple[int, int]] = set() + immutable_settings: set[str] = set() def expand_specifiers(text: str, namespace: argparse.Namespace, defaults: argparse.Namespace) -> str: percent = False @@ -2290,6 +2291,8 @@ def parse_config(argv: Sequence[str] = ()) -> tuple[MkosiArgs, tuple[MkosiConfig if not (s := SETTINGS_LOOKUP_BY_NAME.get(name)): die(f"Unknown setting {k}") + if name in immutable_settings: + die(f"Setting {name} cannot be modified anymore at this point") if section != s.section: logging.warning(f"Setting {k} should be configured in [{s.section}], not [{section}].") @@ -2355,6 +2358,7 @@ def parse_config(argv: Sequence[str] = ()) -> tuple[MkosiArgs, tuple[MkosiConfig finalize_default(SETTINGS_LOOKUP_BY_DEST["presets"], namespace, defaults) include = getattr(namespace, "presets") + immutable_settings.add("Presets") if Path("mkosi.presets").exists(): for p in Path("mkosi.presets").iterdir():