[sdk/kde-builder] kde_builder_lib: refactor: Pass deferred options as OptionsBase objects to set_deferred_options()
Andrew Shark <[email protected]>
| Newsgroups | gmane.comp.kde.cvs |
|---|---|
| Message-ID | <[email protected]> |
Git commit 8835ad15b2ddc0959c8dc86bfc9eea3412965ae2 by Andrew Shark.
Committed on 29/07/2026 at 22:13.
Pushed by ashark into branch 'master'.
refactor: Pass deferred options as OptionsBase objects to set_deferred_options()
M +6 -12 kde_builder_lib/application.py
M +5 -4 kde_builder_lib/module_resolver.py
https://invent.kde.org/sdk/kde-builder/-/commit/8835ad15b2ddc0959c8dc86bfc9eea3412965ae2
diff --git a/kde_builder_lib/application.py b/kde_builder_lib/application.py
index d33fd6aa..ad0342f5 100644
--- a/kde_builder_lib/application.py
+++ b/kde_builder_lib/application.py
@@ -171,7 +171,7 @@ class Application:
# returned modules/sets have any such options stripped out. It will also add
# module-specific options to any returned modules/sets.
modules_and_sets_from_userconfig: list[Module | ModuleSet]
- overrides_from_userconfig: list[dict[str, str | dict]] # "override" nodes.
+ overrides_from_userconfig: list[OptionsBase] # "override" nodes.
modules_and_sets_from_userconfig, overrides_from_userconfig = self._process_configs_content(ctx, ctx.rc_file, cmdline_global_options)
ctx.load_persistent_options()
@@ -675,7 +675,7 @@ class Application:
exit(exitcode)
@staticmethod
- def _process_configs_content(ctx: BuildContext, config_path: str, cmdline_global_options: dict) -> tuple[list[Module | ModuleSet], list[dict[str, str | dict]]]:
+ def _process_configs_content(ctx: BuildContext, config_path: str, cmdline_global_options: dict) -> tuple[list[Module | ModuleSet], list[OptionsBase]]:
"""
Read in the settings from the configuration.
@@ -751,7 +751,7 @@ class Application:
seen_modules = {} # NOTE! *not* module-sets, *just* modules.
seen_module_sets = {} # and vice versa
# seen_module_set_items = {} # To track option override modules.
- deferred_options: list[dict[str, str | dict]] = []
+ deferred_options: list[OptionsBase] = []
for node_name, node, config_filename in config_nodes_list:
if node_name.startswith("group "):
@@ -806,17 +806,11 @@ class Application:
if node_name.startswith("override "):
options_name = node_name.split(" ", maxsplit=1)[1]
assert options_name # ensure the options has some name
- options: OptionsBase = OptionsBase(ctx)
+ options: OptionsBase = OptionsBase(ctx, options_name)
options.apply_config_options(ctx, node, config_filename)
- deferred_options.append({
- "name": options_name,
- "opts": options.options
- })
-
- # NOTE: There is no duplicate options block checking here, and we now currently rely on there being no duplicate checks to allow
- # for things like kf5-common-options.ksb to be included multiple times.
- continue # Don't add to module list
+ deferred_options.append(options)
+ continue
for name, module_set in seen_module_sets.items():
pass
diff --git a/kde_builder_lib/module_resolver.py b/kde_builder_lib/module_resolver.py
index d046bddb..19a60003 100644
--- a/kde_builder_lib/module_resolver.py
+++ b/kde_builder_lib/module_resolver.py
@@ -15,6 +15,7 @@ from .kb_exception import UnknownKdeProjectException
from .debug import KBLogger
from .module.module import Module
from .module_set.module_set import ModuleSet
+from .options_base import OptionsBase
if TYPE_CHECKING:
from build_context import BuildContext
@@ -69,7 +70,7 @@ class ModuleResolver:
self.explicit_group_selectors: list[str] = []
self.explicit_thirdparty_selectors: list[str] = []
- def set_deferred_options(self, deferred_options: list[dict[str, str | dict]]) -> None:
+ def set_deferred_options(self, deferred_options: list[OptionsBase]) -> None:
"""
Set options to apply later if a module set resolves to a named module, used for "override" nodes.
@@ -83,7 +84,7 @@ class ModuleResolver:
final_opts: dict[str, dict] = {}
for idx, deferred_entry in enumerate(deferred_options):
- opts = deferred_entry["opts"]
+ opts = deferred_entry.options
referenced_modules = opts.get("use-projects", None)
# Skip "override" nodes that don't reference module-sets
@@ -112,8 +113,8 @@ class ModuleResolver:
# and overlay any new options on
for idx, deferred_entry in enumerate(deferred_options):
- name = deferred_entry["name"]
- opts = deferred_entry["opts"]
+ name = deferred_entry.name
+ opts = deferred_entry.options
if name in final_opts:
final_opts[name].update(opts)