public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] proj/R_overlay:master commit in: roverlay/packagerules/generators/
  2014-07-17 20:12 [gentoo-commits] proj/R_overlay:wip/addition_control " André Erdmann
@ 2014-07-18 16:20 ` André Erdmann
  0 siblings, 0 replies; 9+ messages in thread
From: André Erdmann @ 2014-07-18 16:20 UTC (permalink / raw
  To: gentoo-commits

commit:     3a7fd984632e964003802b81456eb51ecbb97b10
Author:     André Erdmann <dywi <AT> mailerd <DOT> de>
AuthorDate: Thu Jul 17 16:38:09 2014 +0000
Commit:     André Erdmann <dywi <AT> mailerd <DOT> de>
CommitDate: Thu Jul 17 16:38:09 2014 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=3a7fd984

remove SillyAdditionControlPackageRuleGenerator

replaced by AdditionControlPackageRuleGenerator

---
 .../packagerules/generators/addition_control.py    | 27 +---------------------
 1 file changed, 1 insertion(+), 26 deletions(-)

diff --git a/roverlay/packagerules/generators/addition_control.py b/roverlay/packagerules/generators/addition_control.py
index 7f2cc95..0021817 100644
--- a/roverlay/packagerules/generators/addition_control.py
+++ b/roverlay/packagerules/generators/addition_control.py
@@ -333,37 +333,12 @@ class AdditionControlPackageRuleGenerator (
             return combined_acceptor
    # --- end of package_token_to_acceptor (...) ---
 
-
-class SillyAdditionControlPackageRuleGenerator (
-   roverlay.packagerules.generators.abstract.addition_control.\
-      AbstractAdditionControlPackageRuleGenerator
-):
-   """
-   An add-policy package rule generator that doesn't care about its tokens.
-
-   Not useful for productive usage - will be removed as soon as a proper
-   rule generator has been implemented.
-   """
-
-   def __init__ ( self ):
-      super ( SillyAdditionControlPackageRuleGenerator, self ).__init__()
-      self.namespace = roverlay.util.namespace.SimpleNamespace()
-
-   def _get_true_acceptor_from_namespace ( self, any_token, priority ):
-      return self.namespace.get_object_v (
-         roverlay.packagerules.acceptors.trivial.TrueAcceptor,
-         ( priority, ),
-         {}
-      )
-
-   category_token_to_acceptor = _get_true_acceptor_from_namespace
-   package_token_to_acceptor  = _get_true_acceptor_from_namespace
+# --- end of AdditionControlPackageRuleGenerator ---
 
 
 
 
 def temporary_demo_func():
-   #rule_generator             = SillyAdditionControlPackageRuleGenerator()
    ARES                       = AdditionControlResult
    rule_generator             = AdditionControlPackageRuleGenerator("sci-R")
    CTOKEN                     = rule_generator.create_category_token


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [gentoo-commits] proj/R_overlay:master commit in: roverlay/packagerules/generators/
  2014-07-17 20:12 [gentoo-commits] proj/R_overlay:wip/addition_control " André Erdmann
@ 2014-07-18 16:20 ` André Erdmann
  0 siblings, 0 replies; 9+ messages in thread
From: André Erdmann @ 2014-07-18 16:20 UTC (permalink / raw
  To: gentoo-commits

commit:     12380781282c45e9bb6ed6d56af08b2382738841
Author:     André Erdmann <dywi <AT> mailerd <DOT> de>
AuthorDate: Thu Jul 17 20:06:48 2014 +0000
Commit:     André Erdmann <dywi <AT> mailerd <DOT> de>
CommitDate: Thu Jul 17 20:06:48 2014 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=12380781

add-policy rule gen: BitmaskMapCreator

creates a "bitmask" -> "acceptor chain" map, which means that the addition
control pkgrule generator is mostly done now, except for some cleanup.
All steps have been implemented, what remains to be done is integrating it
in the package rule system and roverlay.defaultscript (+argparser etc.).

---
 .../packagerules/generators/addition_control.py    | 289 ++++++++++++++++-----
 1 file changed, 225 insertions(+), 64 deletions(-)

diff --git a/roverlay/packagerules/generators/addition_control.py b/roverlay/packagerules/generators/addition_control.py
index 0021817..1591ecd 100644
--- a/roverlay/packagerules/generators/addition_control.py
+++ b/roverlay/packagerules/generators/addition_control.py
@@ -5,6 +5,7 @@
 # either version 2 of the License, or (at your option) any later version.
 
 from __future__ import absolute_import
+from __future__ import print_function
 
 
 import abc
@@ -13,12 +14,16 @@ import fnmatch
 import re
 
 
+
 import roverlay.packagerules.generators.abstract.addition_control
 
 import roverlay.packagerules.abstract.acceptors
 import roverlay.packagerules.acceptors.stringmatch
 import roverlay.packagerules.acceptors.util
 
+import roverlay.overlay.abccontrol
+from roverlay.overlay.abccontrol import AdditionControlResult
+
 
 from roverlay.packagerules.abstract.acceptors import Acceptor_AND
 
@@ -30,7 +35,7 @@ from roverlay.packagerules.acceptors.util import (
    get_category, get_ebuild_name, get_ebuild_version_tuple,
 )
 
-#import roverlay.util.fileio
+import roverlay.util.fileio
 import roverlay.util.namespace
 
 import roverlay.util.portage_regex.default
@@ -43,12 +48,6 @@ from roverlay.util.portage_regex.wildcard import (
 
 
 
-
-
-
-
-
-
 class TokenValueError ( ValueError ):
    pass
 
@@ -59,7 +58,18 @@ class TokenItemNotSupported ( TokenValueError ):
    pass
 
 
+def _read_list_file (
+   filepath,
+   _read_text_file=roverlay.util.fileio.read_text_file
+):
+   def strip_line ( s ):
+      return s.strip()
 
+   if filepath:
+      for line in _read_text_file ( filepath, preparse=strip_line ):
+         # skip line if <>
+         yield line
+# --- end of _read_list_file (...) ---
 
 
 class AdditionControlPackageRuleGenerator (
@@ -90,6 +100,13 @@ class AdditionControlPackageRuleGenerator (
    #
    CategoryToken = collections.namedtuple ( 'CategoryToken', 'name' )
 
+   DEFAULT_CATEGORY_TOKEN = CategoryToken (
+      TokenItemTuple (
+         TOKEN_ITEM_IS_STR,
+         roverlay.packagerules.acceptors.util.DEFAULT_CATEGORY_REPLACEMENT
+      )
+   )
+
 
    def create_token_item_from_str ( self, s ):
       get_obj = self.namespace.get_object_v
@@ -162,12 +179,16 @@ class AdditionControlPackageRuleGenerator (
    # --- end of _create_package_token (...) ---
 
    def _create_category_token ( self, category_str ):
-      category_token = self.namespace.get_object_v (
-         self.__class__.CategoryToken,
-         (
-            self.create_token_item_from_str ( category_str ),
+      if category_str == self.default_category:
+         # validate_token() not necessary (assumption)
+         return self.DEFAULT_CATEGORY_TOKEN
+      else:
+         category_token = self.namespace.get_object_v (
+            self.__class__.CategoryToken,
+            (
+               self.create_token_item_from_str ( category_str ),
+            )
          )
-      )
 
       return self.validate_token ( category_token )
    # --- end of _create_category_token (...) ---
@@ -253,7 +274,9 @@ class AdditionControlPackageRuleGenerator (
 
    def __init__ ( self, default_category ):
       super ( AdditionControlPackageRuleGenerator, self ).__init__()
-      self.namespace = roverlay.util.namespace.SimpleNamespace()
+      self.namespace        = roverlay.util.namespace.SimpleNamespace()
+      self.default_category = default_category
+   # --- end of __init__ (...) ---
 
    def clear_object_cache ( self ):
       if self.namespace:
@@ -290,9 +313,7 @@ class AdditionControlPackageRuleGenerator (
    # --- end of token_item_to_acceptor (...) ---
 
    def category_token_to_acceptor ( self, category_token, priority ):
-      if category_token is True:
-         raise Exception ( "C-TRUE" )
-
+      assert category_token and category_token is not True
 
       return self.token_item_to_acceptor (
          category_token.name, get_category, priority
@@ -300,40 +321,176 @@ class AdditionControlPackageRuleGenerator (
    # --- end of category_token_to_acceptor (...) ---
 
    def package_token_to_acceptor ( self, package_token, priority ):
-      if package_token is True:
-         raise Exception ( "P-TRUE" )
+      assert package_token and package_token is not True
+
+      relevant_items = [
+         item_and_getter for item_and_getter in zip (
+            package_token,
+            (
+               get_ebuild_name,
+               get_ebuild_version_tuple
+            )
+         ) if item_and_getter[0] and item_and_getter[0] is not True
+      ]
+
+      if not relevant_items:
+         raise TokenValueError ( package_token )
+
+      elif len(relevant_items) == 1:
+         return self.token_item_to_acceptor (
+            relevant_items[0][0], relevant_items[0][1], priority
+         )
       else:
-         relevant_items = [
-            item_and_getter for item_and_getter in zip (
-               package_token,
-               (
-                  get_ebuild_name,
-                  get_ebuild_version_tuple
-               )
-            ) if item_and_getter[0] and item_and_getter[0] is not True
+         sub_acceptors = [
+            self.token_item_to_acceptor ( item, getter, 0 )
+            for item, getter in relevant_items
          ]
 
-         if not relevant_items:
-            raise TokenValueError ( package_token )
+         combined_acceptor = Acceptor_AND ( priority=priority )
+         for sub_acceptor in sub_acceptors:
+            combined_acceptor.add_acceptor ( sub_acceptor )
 
-         elif len(relevant_items) == 1:
-            return self.token_item_to_acceptor (
-               relevant_items[0][0], relevant_items[0][1], priority
-            )
+         return combined_acceptor
+   # --- end of package_token_to_acceptor (...) ---
+
+# --- end of AdditionControlPackageRuleGenerator ---
+
+
+class BitmaskMapCreator ( object ):
+   """creates a "bitmask" => "acceptor chain" map"""
+
+   def __init__ ( self, rule_generator ):
+      super ( BitmaskMapCreator, self ).__init__()
+      self.rule_generator = rule_generator
+      self.data           = rule_generator.create_new_bitmask_map()
+
+   def get_bitmask ( self ):
+      return self.data
+
+   def get_bitmask_copy ( self ):
+      return self.data.copy()
+
+   def _insert_package ( self, bitmask_arg, package_str, package_regex ):
+      category_token, package_token = self.rule_generator.create_token (
+         package_str, with_category=True, package_regex=package_regex
+      )
+
+      if isinstance ( bitmask_arg, str ):
+         bitmask_int = AdditionControlResult.convert_str ( bitmask_arg )
+      else:
+         bitmask_int = int ( bitmask_arg )
+
+
+      try:
+         cat_entry = self.data [category_token]
+      except KeyError:
+         self.data [category_token] = { package_token: bitmask_int }
+      else:
+         try:
+            pkg_entry = cat_entry [package_token]
+         except KeyError:
+            cat_entry [package_token] = bitmask_int
          else:
-            sub_acceptors = [
-               self.token_item_to_acceptor ( item, getter, 0 )
-               for item, getter in relevant_items
-            ]
+            pkg_entry |= bitmask_int
+         # -- end try <package entry exists>
+      # -- end try <category entry exists>
+   # --- end of _insert_package (...) ---
 
-            combined_acceptor = Acceptor_AND ( priority=priority )
-            for sub_acceptor in sub_acceptors:
-               combined_acceptor.add_acceptor ( sub_acceptor )
+   def _split_bitmask_line ( self, line, default_bitmask ):
+      # str<[bitmask,]arg> => ( bitmask||default_bitmask, arg )
+      args = line.split ( None, 1 )
+
+      if len(args) == 2:
+         # convert bitmask str now
+         return ( AdditionControlResult.convert_str(args[0]), args[1] )
+
+      elif default_bitmask or (
+         default_bitmask == 0 and default_bitmask is not False
+         # ? or default_bitmask is 0
+      ):
+         return ( default_bitmask, args[0] )
+
+      else:
+         raise ValueError ( line )
+   # --- end of _split_bitmask_line (...) ---
+
+   def _insert_packages_v (
+      self, bitmask, arglist, package_regex, extended_format
+   ):
+      insert_package = self._insert_package
+
+      if extended_format:
+         split_bitmask_line = self._split_bitmask_line
+
+         for arg in arglist:
+            call_args = split_bitmask_line ( arg, bitmask )
+            insert_package ( call_args[0], call_args[1], package_regex )
+
+      else:
+         for arg in arglist:
+            insert_package ( bitmask, arg, package_regex )
+   # --- end of _insert_packages_v (...) ---
+
+   def insert_packages_v ( self, bitmask, packages, extended_format=False ):
+      self._insert_packages_v (
+         bitmask, packages, RE_WILDCARD_PACKAGE, extended_format
+      )
+   # --- end of insert_packages_v (...) ---
+
+   def insert_package ( self, bitmask, package, *args, **kwargs ):
+      self.insert_packages_v ( bitmask, ( package, ), *args, **kwargs )
+
+   def insert_packages ( self, bitmask, *packages, **kwargs ):
+      self.insert_packages_v ( bitmask, packages, **kwargs )
+
+   def insert_ebuild_files_v (
+      self, bitmask, ebuild_files, extended_format=False
+   ):
+      self._insert_packages_v (
+         bitmask, ebuild_files, RE_PACKAGE_EBUILD_FILE, extended_format
+      )
+   # --- end of insert_ebuild_files_v (...) ---
+
+   def insert_ebuild_file ( self, bitmask, ebuild_file, *args, **kwargs ):
+      self.insert_ebuild_files_v (
+         bitmask, ( ebuild_file, ), *args, **kwargs
+      )
+
+   def insert_ebuild_files ( self, bitmask, *ebuild_files, **kwargs ):
+      self.insert_ebuild_files_v ( bitmask, ebuild_files, **kwargs )
+
+
+   def feed ( self,
+      bitmask, package_list=None, ebuild_file_list=None,
+      extended_format=False
+   ):
+      if package_list:
+         self.insert_packages_v ( bitmask, package_list, extended_format )
+
+
+      if ebuild_file_list:
+         self.insert_ebuild_files_v (
+            bitmask, ebuild_file_list, extended_format
+         )
+
+   # --- end of feed (...) ---
+
+   def feed_from_file (
+      self, bitmask, package_list_file=None, ebuild_list_file=None, **kw
+   ):
+      # or ebuild_file_list_file
+
+      self.feed (
+         bitmask,
+         _read_list_file ( package_list_file ),
+         _read_list_file ( ebuild_list_file ),
+         **kw
+      )
+   # --- end of feed_from_file (...) ---
+
+# --- end of BitmaskMapCreator ---
 
-            return combined_acceptor
-   # --- end of package_token_to_acceptor (...) ---
 
-# --- end of AdditionControlPackageRuleGenerator ---
 
 
 
@@ -341,29 +498,27 @@ class AdditionControlPackageRuleGenerator (
 def temporary_demo_func():
    ARES                       = AdditionControlResult
    rule_generator             = AdditionControlPackageRuleGenerator("sci-R")
-   CTOKEN                     = rule_generator.create_category_token
-   PTOKEN                     = rule_generator.create_package_token
+   bmap_creator               = BitmaskMapCreator(rule_generator)
+   P                          = bmap_creator.insert_package
    add_control_rule           = None
    bitmask_acceptor_chain_map = None
-   acceptor_chain_bitmask_map = {
-      CTOKEN ( "sys-*" ): {
-         PTOKEN ( "a*-2" ): ARES.PKG_FORCE_DENY,
-      },
-      CTOKEN ( "*" ): {
-         PTOKEN ( "?*" ): ARES.PKG_REVBUMP_ON_COLLISION,
-         PTOKEN ( 'p0' ): ARES.PKG_FORCE_DENY|ARES.PKG_FORCE_REPLACE,
-      },
-      CTOKEN ( 'c' ): {
-         PTOKEN ( "***?****" ): ARES.PKG_FORCE_DENY,
-      },
-      CTOKEN ( 'd' ): {
-         PTOKEN ( "*" ): ARES.PKG_REPLACE_ONLY,
-      },
-      CTOKEN ( 'f' ): {
-         PTOKEN ( 'p1' ): ARES.PKG_REPLACE_ONLY,
-         PTOKEN ( 'p1-5.0' ): ARES.PKG_REPLACE_ONLY,
-      },
-   }
+   # ref
+   acceptor_chain_bitmask_map = bmap_creator.data
+
+   bmap_creator.feed_from_file (
+      "force-replace",
+      "/tmp/ML"
+   )
+
+
+   P  (  "force-deny",                    "sys-*/a*-2",     True      )
+   P  (  ARES.PKG_REVBUMP_ON_COLLISION,   "*/?*"            )
+   P  (  "force-deny,force-replace",      "*/p0"            )
+   P  (  ARES.PKG_FORCE_DENY,             "c/***?****"      )
+   P  (  "replace-only",                  "d/*"             )
+   P  (  "replace-only",                  "f/p1"            )
+   P  (  ARES.PKG_REPLACE_ONLY,           "f/p1-5.0"        )
+   P  (  ARES.PKG_FORCE_REPLACE,          "sci-R/*"         )
 
 
    print ( "** initial acceptor_chain -> raw_bitmask map" )
@@ -402,6 +557,13 @@ def temporary_demo_func():
 
    print ( "** content of the rule generator\'s namespace" )
    print ( rule_generator.namespace._objects )
+   for cls in rule_generator.namespace._objects:
+      if type(cls) != type(object):
+         continue
+
+
+      if issubclass ( cls, roverlay.packagerules.abstract.acceptors._AcceptorCompound ):
+         raise Exception(cls)
 
    print ( "** content of the rule generator\'s namespace after clear-cache" )
    rule_generator.clear_object_cache()
@@ -413,7 +575,6 @@ def temporary_demo_func():
 if __name__ == '__main__':
    import sys
    import os
-   from roverlay.overlay.abccontrol import AdditionControlResult
 
    try:
       temporary_demo_func()


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [gentoo-commits] proj/R_overlay:master commit in: roverlay/packagerules/generators/
  2014-07-18  2:28 [gentoo-commits] proj/R_overlay:wip/addition_control " André Erdmann
@ 2014-07-18 16:20 ` André Erdmann
  0 siblings, 0 replies; 9+ messages in thread
From: André Erdmann @ 2014-07-18 16:20 UTC (permalink / raw
  To: gentoo-commits

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

create_addition_control_package_rule()

Accepts a _huge_ number of parameters, creates a bitmask map and "compiles" it.
The result is a single package rule (or None).

---
 .../packagerules/generators/addition_control.py    | 185 ++++++++++++++-------
 1 file changed, 121 insertions(+), 64 deletions(-)

diff --git a/roverlay/packagerules/generators/addition_control.py b/roverlay/packagerules/generators/addition_control.py
index 1591ecd..03e4b71 100644
--- a/roverlay/packagerules/generators/addition_control.py
+++ b/roverlay/packagerules/generators/addition_control.py
@@ -7,6 +7,11 @@
 from __future__ import absolute_import
 from __future__ import print_function
 
+# TODO: cleanup:
+#   BitmaskMapCreator / AdditionControlPackageRuleGenerator naming
+#   ...
+#
+
 
 import abc
 import collections
@@ -364,10 +369,10 @@ class BitmaskMapCreator ( object ):
       self.rule_generator = rule_generator
       self.data           = rule_generator.create_new_bitmask_map()
 
-   def get_bitmask ( self ):
+   def get_bitmask_map ( self ):
       return self.data
 
-   def get_bitmask_copy ( self ):
+   def get_bitmask_map_copy ( self ):
       return self.data.copy()
 
    def _insert_package ( self, bitmask_arg, package_str, package_regex ):
@@ -476,7 +481,8 @@ class BitmaskMapCreator ( object ):
    # --- end of feed (...) ---
 
    def feed_from_file (
-      self, bitmask, package_list_file=None, ebuild_list_file=None, **kw
+      self, bitmask, package_list_file=None, ebuild_list_file=None,
+      extended_format=False,
    ):
       # or ebuild_file_list_file
 
@@ -484,7 +490,7 @@ class BitmaskMapCreator ( object ):
          bitmask,
          _read_list_file ( package_list_file ),
          _read_list_file ( ebuild_list_file ),
-         **kw
+         extended_format = extended_format,
       )
    # --- end of feed_from_file (...) ---
 
@@ -492,83 +498,134 @@ class BitmaskMapCreator ( object ):
 
 
 
+def create_addition_control_package_rule (
+   default_category,
+
+   cmdline_package_default              = None,
+   cmdline_package_force_deny           = None,
+   cmdline_package_deny_replace         = None,
+   cmdline_package_force_replace        = None,
+   cmdline_package_replace_only         = None,
+   cmdline_package_revbump_on_collision = None,
+
+   cmdline_ebuild_default               = None,
+   cmdline_ebuild_force_deny            = None,
+   cmdline_ebuild_deny_replace          = None,
+   cmdline_ebuild_force_replace         = None,
+   cmdline_ebuild_replace_only          = None,
+   cmdline_ebuild_revbump_on_collision  = None,
+
+   file_package_default                 = None,
+   file_package_force_deny              = None,
+   file_package_deny_replace            = None,
+   file_package_force_replace           = None,
+   file_package_replace_only            = None,
+   file_package_revbump_on_collision    = None,
+
+   file_ebuild_default                  = None,
+   file_ebuild_force_deny               = None,
+   file_ebuild_deny_replace             = None,
+   file_ebuild_force_replace            = None,
+   file_ebuild_replace_only             = None,
+   file_ebuild_revbump_on_collision     = None,
+
+   file_package_extended                = None,
+   file_ebuild_extended                 = None,
+):
+   """All-in-one function that takes lists of packages, ebuild paths, list
+   files, ... as input, creates a "bitmask" -> "acceptor chain" map and
+   converts it into a single, nested package rule object or None.
+
+   *** SLOW ***
+
+   Returns: package rule or None
+
+   Note: the returned has to be prepared manually (rule.prepare()),
+         which is usually done by the PackagRules top-level rule
+
+   arguments:
+   * default_category         -- name of the default overlay category
+                                  Mandatory argument.
+   * cmdline_package_<policy> -- list of packages [None]
+   * cmdline_ebuild_<policy>  -- list of ebuilds  [None]
+   * file_package_<policy>    -- package list file[s] [None]
+   * file_ebuild_<policy>     -- ebuild  list file[s] [None]
+   * file_package_extended    -- package list file[s] in extended format [None]
+   * file_ebuild_extended     -- ebuild  list file[s] in extended format [None]
+
+   Note: file_* parameters support only a single input file, currently.
+   """
+   argv_locals = locals().copy()
+   get_args    = lambda pre, attr_name: (
+      argv_locals [pre + '_package_' + attr_name],
+      argv_locals [pre + '_ebuild_'  + attr_name]
+   )
+##   argv_locals = {
+##      k: v for locals().items()
+##         if ( k.startswith("cmdline_") or k.startswith("file_") )
+##   }
 
+   if not default_category:
+      raise ValueError ( "no default category given (or empty)." )
 
+   rule_generator    = AdditionControlPackageRuleGenerator ( default_category )
+   bitmask_mapgen    = BitmaskMapCreator ( rule_generator )
+   feed_bitmask      = bitmask_mapgen.feed
+   filefeed_bitmask  = bitmask_mapgen.feed_from_file
 
-def temporary_demo_func():
-   ARES                       = AdditionControlResult
-   rule_generator             = AdditionControlPackageRuleGenerator("sci-R")
-   bmap_creator               = BitmaskMapCreator(rule_generator)
-   P                          = bmap_creator.insert_package
-   add_control_rule           = None
-   bitmask_acceptor_chain_map = None
-   # ref
-   acceptor_chain_bitmask_map = bmap_creator.data
-
-   bmap_creator.feed_from_file (
-      "force-replace",
-      "/tmp/ML"
-   )
 
+   for bitmask, desc in AdditionControlResult.PKG_DESCRIPTION_MAP.items():
+      attr_name = desc.replace ( '-', '_' )
+      # any() not strictly necessary here
 
-   P  (  "force-deny",                    "sys-*/a*-2",     True      )
-   P  (  ARES.PKG_REVBUMP_ON_COLLISION,   "*/?*"            )
-   P  (  "force-deny,force-replace",      "*/p0"            )
-   P  (  ARES.PKG_FORCE_DENY,             "c/***?****"      )
-   P  (  "replace-only",                  "d/*"             )
-   P  (  "replace-only",                  "f/p1"            )
-   P  (  ARES.PKG_REPLACE_ONLY,           "f/p1-5.0"        )
-   P  (  ARES.PKG_FORCE_REPLACE,          "sci-R/*"         )
+      args = get_args ( "cmdline", attr_name )
 
+      if any ( args ):
+         feed_bitmask ( bitmask, args[0], args[1] )
 
-   print ( "** initial acceptor_chain -> raw_bitmask map" )
-   print ( acceptor_chain_bitmask_map )
-   print()
 
-   roverlay.packagerules.generators.abstract.addition_control.\
-   expand_acceptor_chain_bitmasks ( acceptor_chain_bitmask_map )
-   print ( "** expanded acceptor_chain -> effective_bitmask map" )
-   print ( acceptor_chain_bitmask_map )
-   print()
-
-   bitmask_acceptor_chain_map = (
-      roverlay.packagerules.generators.abstract.addition_control.\
-      create_bitmask_acceptor_chain_map ( acceptor_chain_bitmask_map )
-   )
-   print ( "** initial effective_bitmask -> acceptor_chain map" )
-   print(bitmask_acceptor_chain_map)
-   print()
+      args = get_args ( "file", attr_name )
 
-   roverlay.packagerules.generators.abstract.addition_control.\
-   reduce_bitmask_acceptor_chain_map ( bitmask_acceptor_chain_map )
-   print ( "** reduced effective_bitmask -> acceptor_chain map" )
-   print(bitmask_acceptor_chain_map)
-   print()
+      if any ( args ):
+         filefeed_bitmask ( bitmask, args[0], args[1] )
+   # --
 
-   add_control_rule = (
-      rule_generator.create_package_rules ( bitmask_acceptor_chain_map )
+   if file_package_extended or file_ebuild_extended:
+      filefeed_bitmask (
+         None, file_package_extended, file_ebuild_extended,
+         extended_format=True
+      )
+   # --
+
+   add_control_rule = rule_generator.compile_bitmask_map (
+      bitmask_mapgen.get_bitmask_map()
    )
-   add_control_rule.priority = -1
-   add_control_rule.prepare()
 
-   print ( "** created package rule (sorted)" )
-   print(add_control_rule)
-   print()
+   # not necessary (GC)
+   rule_generator.clear_object_cache()
+   bitmask_mapgen.data.clear()
+   del bitmask_mapgen
+   del rule_generator
 
-   print ( "** content of the rule generator\'s namespace" )
-   print ( rule_generator.namespace._objects )
-   for cls in rule_generator.namespace._objects:
-      if type(cls) != type(object):
-         continue
+   return add_control_rule
+# --- end of create_addition_control_package_rule (...) ---
 
 
-      if issubclass ( cls, roverlay.packagerules.abstract.acceptors._AcceptorCompound ):
-         raise Exception(cls)
 
-   print ( "** content of the rule generator\'s namespace after clear-cache" )
-   rule_generator.clear_object_cache()
-   print ( rule_generator.namespace._objects )
+def temporary_demo_func():
+   rule = create_addition_control_package_rule (
+      "sci-R",
+      cmdline_package_force_deny = [ "sys-*/a*-2", "c/***?****", "*/p0", ],
+      cmdline_package_revbump_on_collision = [ "*/?*", ],
+      cmdline_package_force_replace = [ "*/p0", "sci-R/*", ],
+      cmdline_package_replace_only = [ "d/*", "f/p1", "f/p1-5.0", ],
+   )
+
+   assert rule
+   rule.priority = -1
+   rule.prepare()
 
+   print(rule)
 # --- end of temporary_demo_func (...) ---
 
 


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [gentoo-commits] proj/R_overlay:master commit in: roverlay/packagerules/generators/
@ 2014-07-18 16:20 André Erdmann
  0 siblings, 0 replies; 9+ messages in thread
From: André Erdmann @ 2014-07-18 16:20 UTC (permalink / raw
  To: gentoo-commits

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

create_addition_control_package_rule(): add params

cmdline_{package,ebuild}_extended

---
 roverlay/packagerules/generators/addition_control.py | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/roverlay/packagerules/generators/addition_control.py b/roverlay/packagerules/generators/addition_control.py
index 03e4b71..2fbf4a1 100644
--- a/roverlay/packagerules/generators/addition_control.py
+++ b/roverlay/packagerules/generators/addition_control.py
@@ -515,6 +515,10 @@ def create_addition_control_package_rule (
    cmdline_ebuild_replace_only          = None,
    cmdline_ebuild_revbump_on_collision  = None,
 
+   cmdline_package_extended             = None,
+   cmdline_ebuild_extended              = None,
+
+
    file_package_default                 = None,
    file_package_force_deny              = None,
    file_package_deny_replace            = None,
@@ -590,6 +594,13 @@ def create_addition_control_package_rule (
          filefeed_bitmask ( bitmask, args[0], args[1] )
    # --
 
+   if cmdline_package_extended or cmdline_ebuild_extended:
+      feed_bitmask (
+         None, cmdline_package_extended, cmdline_ebuild_extended,
+         extended_format=True
+      )
+   # --
+
    if file_package_extended or file_ebuild_extended:
       filefeed_bitmask (
          None, file_package_extended, file_ebuild_extended,


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [gentoo-commits] proj/R_overlay:master commit in: roverlay/packagerules/generators/
  2014-07-18  2:50 [gentoo-commits] proj/R_overlay:wip/addition_control " André Erdmann
@ 2014-07-18 16:20 ` André Erdmann
  0 siblings, 0 replies; 9+ messages in thread
From: André Erdmann @ 2014-07-18 16:20 UTC (permalink / raw
  To: gentoo-commits

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

remove dev-testing code

---
 .../packagerules/generators/addition_control.py    | 33 ----------------------
 1 file changed, 33 deletions(-)

diff --git a/roverlay/packagerules/generators/addition_control.py b/roverlay/packagerules/generators/addition_control.py
index 2fbf4a1..db6f244 100644
--- a/roverlay/packagerules/generators/addition_control.py
+++ b/roverlay/packagerules/generators/addition_control.py
@@ -5,7 +5,6 @@
 # either version 2 of the License, or (at your option) any later version.
 
 from __future__ import absolute_import
-from __future__ import print_function
 
 # TODO: cleanup:
 #   BitmaskMapCreator / AdditionControlPackageRuleGenerator naming
@@ -620,35 +619,3 @@ def create_addition_control_package_rule (
 
    return add_control_rule
 # --- end of create_addition_control_package_rule (...) ---
-
-
-
-def temporary_demo_func():
-   rule = create_addition_control_package_rule (
-      "sci-R",
-      cmdline_package_force_deny = [ "sys-*/a*-2", "c/***?****", "*/p0", ],
-      cmdline_package_revbump_on_collision = [ "*/?*", ],
-      cmdline_package_force_replace = [ "*/p0", "sci-R/*", ],
-      cmdline_package_replace_only = [ "d/*", "f/p1", "f/p1-5.0", ],
-   )
-
-   assert rule
-   rule.priority = -1
-   rule.prepare()
-
-   print(rule)
-# --- end of temporary_demo_func (...) ---
-
-
-if __name__ == '__main__':
-   import sys
-   import os
-
-   try:
-      temporary_demo_func()
-   except KeyboardInterrupt:
-      excode = os.EX_OK ^ 130
-   else:
-      excode = os.EX_OK
-
-   sys.exit ( excode )


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [gentoo-commits] proj/R_overlay:master commit in: roverlay/packagerules/generators/
@ 2014-07-29 18:29 André Erdmann
  2014-08-23 19:03 ` André Erdmann
  0 siblings, 1 reply; 9+ messages in thread
From: André Erdmann @ 2014-07-29 18:29 UTC (permalink / raw
  To: gentoo-commits

commit:     733f401dafd7cf55ee939e2fff9fdc57d0670bdc
Author:     André Erdmann <dywi <AT> mailerd <DOT> de>
AuthorDate: Tue Jul 29 18:23:32 2014 +0000
Commit:     André Erdmann <dywi <AT> mailerd <DOT> de>
CommitDate: Tue Jul 29 18:24:37 2014 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=733f401d

packagerules/generators/addition_control: fix

Cannot compare str to version tuple -- use str on both sides, which means that
the addition control rule generator has to create acceptors with
get_ebuild_version() as value getter and not get_ebuild_version_tuple().

---
 roverlay/packagerules/generators/addition_control.py | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/roverlay/packagerules/generators/addition_control.py b/roverlay/packagerules/generators/addition_control.py
index 9aeada3..50b16a7 100644
--- a/roverlay/packagerules/generators/addition_control.py
+++ b/roverlay/packagerules/generators/addition_control.py
@@ -36,7 +36,7 @@ from roverlay.packagerules.acceptors.stringmatch import (
 )
 
 from roverlay.packagerules.acceptors.util import (
-   get_category, get_ebuild_name, get_ebuild_version_tuple,
+   get_category, get_ebuild_name, get_ebuild_version,
 )
 
 import roverlay.util.fileio
@@ -474,7 +474,8 @@ class AdditionControlPackageRuleGenerator (
             package_token,
             (
                get_ebuild_name,
-               get_ebuild_version_tuple
+               # FIXME: use get_ebuild_version_tuple()
+               get_ebuild_version
             )
          ) if item_and_getter[0] and item_and_getter[0] is not True
       ]


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [gentoo-commits] proj/R_overlay:master commit in: roverlay/packagerules/generators/
  2014-08-23 19:03 André Erdmann
@ 2014-07-29 19:21 ` André Erdmann
  0 siblings, 0 replies; 9+ messages in thread
From: André Erdmann @ 2014-07-29 19:21 UTC (permalink / raw
  To: gentoo-commits

commit:     142c037fa2ad4e50aeb0636036bbe0ef5c68b381
Author:     André Erdmann <dywi <AT> mailerd <DOT> de>
AuthorDate: Tue Jul 29 19:19:21 2014 +0000
Commit:     André Erdmann <dywi <AT> mailerd <DOT> de>
CommitDate: Tue Jul 29 19:19:21 2014 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=142c037f

addition control pkg rule gen: fix

correctly handle extended_default_bitmask and call _splitmask_line().

---
 roverlay/packagerules/generators/addition_control.py | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/roverlay/packagerules/generators/addition_control.py b/roverlay/packagerules/generators/addition_control.py
index 50b16a7..6d5a5c5 100644
--- a/roverlay/packagerules/generators/addition_control.py
+++ b/roverlay/packagerules/generators/addition_control.py
@@ -610,7 +610,10 @@ class BitmaskMapCreator ( object ):
       insert_package = self._insert_package
 
       if extended_format:
-         for call_args in map ( self._split_bitmask_line, arglist ):
+         split_bitmask_line = self._split_bitmask_line
+
+         for arg in arglist:
+            call_args = split_bitmask_line ( arg, bitmask )
             insert_package ( call_args[0], call_args[1], package_regex )
 
       else:
@@ -834,14 +837,16 @@ def create_addition_control_package_rule (
 
    if cmdline_package_extended or cmdline_ebuild_extended:
       feed_bitmask (
-         None, cmdline_package_extended, cmdline_ebuild_extended,
+         extended_default_bitmask,
+         cmdline_package_extended, cmdline_ebuild_extended,
          extended_format=True
       )
    # --
 
    if file_package_extended or file_ebuild_extended:
       filefeed_bitmask (
-         None, file_package_extended, file_ebuild_extended,
+         extended_default_bitmask,
+         file_package_extended, file_ebuild_extended,
          extended_format=True
       )
    # --


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [gentoo-commits] proj/R_overlay:master commit in: roverlay/packagerules/generators/
  2014-07-29 18:29 [gentoo-commits] proj/R_overlay:master commit in: roverlay/packagerules/generators/ André Erdmann
@ 2014-08-23 19:03 ` André Erdmann
  0 siblings, 0 replies; 9+ messages in thread
From: André Erdmann @ 2014-08-23 19:03 UTC (permalink / raw
  To: gentoo-commits

commit:     733f401dafd7cf55ee939e2fff9fdc57d0670bdc
Author:     André Erdmann <dywi <AT> mailerd <DOT> de>
AuthorDate: Tue Jul 29 18:23:32 2014 +0000
Commit:     André Erdmann <dywi <AT> mailerd <DOT> de>
CommitDate: Tue Jul 29 18:24:37 2014 +0000
URL:        http://sources.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=733f401d

packagerules/generators/addition_control: fix

Cannot compare str to version tuple -- use str on both sides, which means that
the addition control rule generator has to create acceptors with
get_ebuild_version() as value getter and not get_ebuild_version_tuple().

---
 roverlay/packagerules/generators/addition_control.py | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/roverlay/packagerules/generators/addition_control.py b/roverlay/packagerules/generators/addition_control.py
index 9aeada3..50b16a7 100644
--- a/roverlay/packagerules/generators/addition_control.py
+++ b/roverlay/packagerules/generators/addition_control.py
@@ -36,7 +36,7 @@ from roverlay.packagerules.acceptors.stringmatch import (
 )
 
 from roverlay.packagerules.acceptors.util import (
-   get_category, get_ebuild_name, get_ebuild_version_tuple,
+   get_category, get_ebuild_name, get_ebuild_version,
 )
 
 import roverlay.util.fileio
@@ -474,7 +474,8 @@ class AdditionControlPackageRuleGenerator (
             package_token,
             (
                get_ebuild_name,
-               get_ebuild_version_tuple
+               # FIXME: use get_ebuild_version_tuple()
+               get_ebuild_version
             )
          ) if item_and_getter[0] and item_and_getter[0] is not True
       ]


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [gentoo-commits] proj/R_overlay:master commit in: roverlay/packagerules/generators/
@ 2014-08-23 19:03 André Erdmann
  2014-07-29 19:21 ` André Erdmann
  0 siblings, 1 reply; 9+ messages in thread
From: André Erdmann @ 2014-08-23 19:03 UTC (permalink / raw
  To: gentoo-commits

commit:     142c037fa2ad4e50aeb0636036bbe0ef5c68b381
Author:     André Erdmann <dywi <AT> mailerd <DOT> de>
AuthorDate: Tue Jul 29 19:19:21 2014 +0000
Commit:     André Erdmann <dywi <AT> mailerd <DOT> de>
CommitDate: Tue Jul 29 19:19:21 2014 +0000
URL:        http://sources.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=142c037f

addition control pkg rule gen: fix

correctly handle extended_default_bitmask and call _splitmask_line().

---
 roverlay/packagerules/generators/addition_control.py | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/roverlay/packagerules/generators/addition_control.py b/roverlay/packagerules/generators/addition_control.py
index 50b16a7..6d5a5c5 100644
--- a/roverlay/packagerules/generators/addition_control.py
+++ b/roverlay/packagerules/generators/addition_control.py
@@ -610,7 +610,10 @@ class BitmaskMapCreator ( object ):
       insert_package = self._insert_package
 
       if extended_format:
-         for call_args in map ( self._split_bitmask_line, arglist ):
+         split_bitmask_line = self._split_bitmask_line
+
+         for arg in arglist:
+            call_args = split_bitmask_line ( arg, bitmask )
             insert_package ( call_args[0], call_args[1], package_regex )
 
       else:
@@ -834,14 +837,16 @@ def create_addition_control_package_rule (
 
    if cmdline_package_extended or cmdline_ebuild_extended:
       feed_bitmask (
-         None, cmdline_package_extended, cmdline_ebuild_extended,
+         extended_default_bitmask,
+         cmdline_package_extended, cmdline_ebuild_extended,
          extended_format=True
       )
    # --
 
    if file_package_extended or file_ebuild_extended:
       filefeed_bitmask (
-         None, file_package_extended, file_ebuild_extended,
+         extended_default_bitmask,
+         file_package_extended, file_ebuild_extended,
          extended_format=True
       )
    # --


^ permalink raw reply related	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2014-08-23 19:03 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-07-29 18:29 [gentoo-commits] proj/R_overlay:master commit in: roverlay/packagerules/generators/ André Erdmann
2014-08-23 19:03 ` André Erdmann
  -- strict thread matches above, loose matches on Subject: below --
2014-08-23 19:03 André Erdmann
2014-07-29 19:21 ` André Erdmann
2014-07-18 16:20 André Erdmann
2014-07-18  2:50 [gentoo-commits] proj/R_overlay:wip/addition_control " André Erdmann
2014-07-18 16:20 ` [gentoo-commits] proj/R_overlay:master " André Erdmann
2014-07-18  2:28 [gentoo-commits] proj/R_overlay:wip/addition_control " André Erdmann
2014-07-18 16:20 ` [gentoo-commits] proj/R_overlay:master " André Erdmann
2014-07-17 20:12 [gentoo-commits] proj/R_overlay:wip/addition_control " André Erdmann
2014-07-18 16:20 ` [gentoo-commits] proj/R_overlay:master " André Erdmann
2014-07-17 20:12 [gentoo-commits] proj/R_overlay:wip/addition_control " André Erdmann
2014-07-18 16:20 ` [gentoo-commits] proj/R_overlay:master " André Erdmann

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox