[sdk/kde-builder] /: refactor: Move check for ignored modules post-expansion to function
Andrew Shark <[email protected]>
| Newsgroups | gmane.comp.kde.cvs |
|---|---|
| Message-ID | <[email protected]> |
Git commit f680f98cdb30a1f076995fa1c90b2cedcea0dcb2 by Andrew Shark.
Committed on 19/07/2026 at 17:19.
Pushed by ashark into branch 'master'.
refactor: Move check for ignored modules post-expansion to function
M +6 -0 data/kde-builder-logging.yaml
M +2 -13 kde_builder_lib/application.py
M +17 -0 kde_builder_lib/module_resolver.py
https://invent.kde.org/sdk/kde-builder/-/commit/f680f98cdb30a1f076995fa1c90b2cedcea0dcb2
diff --git a/data/kde-builder-logging.yaml b/data/kde-builder-logging.yaml
index 06c5c382..a33df409 100644
--- a/data/kde-builder-logging.yaml
+++ b/data/kde-builder-logging.yaml
@@ -82,6 +82,12 @@ loggers:
handlers: [console]
propagate: no
+ module-resolver:
+ level: INFO
+# level: DEBUG
+ handlers: [console]
+ propagate: no
+
module-set:
level: INFO
# level: DEBUG
diff --git a/kde_builder_lib/application.py b/kde_builder_lib/application.py
index 3da12519..f6eb0aea 100644
--- a/kde_builder_lib/application.py
+++ b/kde_builder_lib/application.py
@@ -216,7 +216,7 @@ class Application:
exit(0)
ignored_in_global_section: set[str] = set(ctx.options["ignore-projects"])
- ignored_in_global_section.discard("") # do not place empty string element, there is a check with empty string element of module's module_set later (in post-expansion ignored-selectors check).
+ ignored_in_global_section.discard("") # do not place empty string element, there is a check with empty string element of module's module_set later in filter_out_unneeded_modules().
ctx.options["ignore-projects"] = []
ignored_in_metadata: set[str] = {item.rsplit("/", 1)[-1] for item in ctx.metadata.ignored_projects}
@@ -338,18 +338,7 @@ class Application:
modules = self._slice_resume_and_stop_points(modules)
- # Check for ignored modules (post-expansion)
- filtered_modules: list[Module] = []
- for module in modules:
- module_set_name = module.module_set.name if module.module_set else ""
- if module.name not in ignored_selectors and module_set_name not in ignored_selectors:
- filtered_modules.append(module)
- else:
- if module.name in [*module_resolver.explicit_kdeproject_selectors, *module_resolver.explicit_thirdparty_selectors]:
- logger_app.warning(f" y[*] Project y[{module.name}] was explicitly selected in command line, but removed due to being ignored.")
- else:
- logger_app.debug(f"Project y[{module.name}] was removed due to being ignored.")
- modules = filtered_modules
+ modules = module_resolver.filter_out_unneeded_modules(modules)
for module in modules:
module.set_resolved_repository()
diff --git a/kde_builder_lib/module_resolver.py b/kde_builder_lib/module_resolver.py
index ab9a575a..9b6d931b 100644
--- a/kde_builder_lib/module_resolver.py
+++ b/kde_builder_lib/module_resolver.py
@@ -12,6 +12,7 @@ from .kb_exception import KBException
from .kb_exception import KBRuntimeError
from .kb_exception import NoKDEProjectsFound
from .kb_exception import UnknownKdeProjectException
+from .debug import KBLogger
from .module.module import Module
from .module_set.module_set import ModuleSet
@@ -19,6 +20,8 @@ if TYPE_CHECKING:
from build_context import BuildContext
from .metadata.kde_projects_reader import KDEProjectsReader
+logger_modres = KBLogger.getLogger("module-resolver")
+
class ModuleResolver:
"""
@@ -313,6 +316,20 @@ class ModuleResolver:
ret: Module | None = self.defined_projects.get(module_name, None)
return ret
+ def filter_out_unneeded_modules(self, modules: list[Module]) -> list[Module]:
+ ignored_selectors = self.ignored_selectors
+ filtered_modules: list[Module] = []
+ for module in modules:
+ module_set_name = module.module_set.name if module.module_set else ""
+ if module.name not in ignored_selectors and module_set_name not in ignored_selectors:
+ filtered_modules.append(module)
+ else:
+ if module.name in [*self.explicit_kdeproject_selectors, *self.explicit_thirdparty_selectors]:
+ logger_modres.warning(f" y[*] Project y[{module.name}] was explicitly selected in command line, but removed due to being ignored.")
+ else:
+ logger_modres.debug(f"Project y[{module.name}] was removed due to being ignored.")
+ return filtered_modules
+
"""
This class uses a multi-pass option resolving system, in accordance with
the way kde-builder handles options. Consider a simple kde-builder.yaml: