diff options
Diffstat (limited to 'roverlay')
-rw-r--r-- | roverlay/defaultscript.py | 4 | ||||
-rw-r--r-- | roverlay/runtime.py | 51 |
2 files changed, 55 insertions, 0 deletions
diff --git a/roverlay/defaultscript.py b/roverlay/defaultscript.py index 2c0d1f2..cd8d1ae 100644 --- a/roverlay/defaultscript.py +++ b/roverlay/defaultscript.py @@ -133,6 +133,8 @@ def run_early_commands ( env ): package_rules = ( roverlay.packagerules.rules.PackageRules.get_configured() ) + env.add_addition_control_rules ( package_rules ) + print ( env.HLINE ) print ( str ( package_rules ) ) print ( env.HLINE ) @@ -206,6 +208,7 @@ def run_overlay_create ( env ): try: repo_list = env.get_repo_list() overlay_creator = env.get_overlay_creator() + env.add_addition_control_to_overlay_creator() ebuild_import_nosync = env.option ( 'sync_imported' ) if ebuild_import_nosync is None: @@ -282,6 +285,7 @@ def run_apply_package_rules ( env ): FH = None prules = roverlay.packagerules.rules.PackageRules.get_configured() + env.add_addition_control_rules ( prules ) # track package rules prules.add_trace_actions() diff --git a/roverlay/runtime.py b/roverlay/runtime.py index 829940e..4d0e9c2 100644 --- a/roverlay/runtime.py +++ b/roverlay/runtime.py @@ -20,6 +20,10 @@ import roverlay.stats.collector import roverlay.util.objects import roverlay.recipe.easylogger +import roverlay.packagerules.generators.addition_control +from roverlay.packagerules.generators.addition_control import \ + create_addition_control_package_rule + import roverlay.config.tree import roverlay.config.const @@ -202,6 +206,53 @@ class RuntimeEnvironment ( RuntimeEnvironmentBase ): return self._overlay_creator # --- end of get_overlay_creator (...) --- + def create_addition_control_rules ( self, default_category=None ): + kwargs = {} + def add_key ( k, _kwargs=kwargs, _options=self.options ): + _kwargs [k] = _options [k] + + add_key ( "cmdline_package_revbump_on_collision" ) + add_key ( "cmdline_package_force_replace" ) + add_key ( "cmdline_package_replace_only" ) + + add_key ( "file_package_extended" ) + add_key ( "file_ebuild_extended" ) + + return create_addition_control_package_rule ( + ( + default_category + or self.config.get_or_fail ( 'OVERLAY.category' ) + ), + **kwargs + ) + # --- end of create_addition_control_rules (...) --- + + def add_addition_control_rules ( + self, package_rules, default_category=None + ): + add_control_rule = self.create_addition_control_rules ( + default_category = default_category + ) + package_rules.append_rule ( add_control_rule ) + # --- end of add_addition_control_rules (...) --- + + def add_addition_control_to_overlay_creator ( self ): + if not self._overlay_creator: + raise AssertionError ( "overlay creator not initialized." ) + elif not getattr ( self._overlay_creator, 'package_rules', None ): + raise AssertionError ( "overlay creator has no package rules." ) + # -- + + self.add_addition_control_rules ( + self._overlay_creator.package_rules, + self._overlay_creator.overlay.default_category, + ) + + # + add addition_control object [FUTURE] + + # --- end of add_addition_control_to_overlay_creator (...) --- + + def do_setup ( self ): self.do_setup_parser() self.do_setup_config() |