commit:     cdac4e5844a929ccf999a0e1b023c8076e8d3d9e
Author:     André Erdmann <dywi <AT> mailerd <DOT> de>
AuthorDate: Fri Jul 18 02:26:56 2014 +0000
Commit:     André Erdmann <dywi <AT> mailerd <DOT> de>
CommitDate: Fri Jul 18 02:26:56 2014 +0000
URL:        
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=cdac4e58

add addition control to roverlay main script

add package rules to --print-package-rules, apply_rules, create

---
 roverlay/defaultscript.py |  4 ++++
 roverlay/runtime.py       | 51 +++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 55 insertions(+)

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()

Reply via email to