* [gentoo-commits] proj/R_overlay:wip/addition_control commit in: roverlay/packagerules/generators/
@ 2014-07-17 20:12 André Erdmann
2014-07-18 16:20 ` [gentoo-commits] proj/R_overlay:master " André Erdmann
0 siblings, 1 reply; 10+ messages in thread
From: André Erdmann @ 2014-07-17 20:12 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] 10+ 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; 10+ 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] 10+ 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 commit in: roverlay/packagerules/generators/ André Erdmann
@ 2014-07-18 16:20 ` André Erdmann
0 siblings, 0 replies; 10+ 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] 10+ 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; 10+ 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] 10+ 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; 10+ 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] 10+ 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; 10+ 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] 10+ 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; 10+ 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] 10+ 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; 10+ 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] 10+ 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, 0 replies; 10+ 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] 10+ 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; 10+ 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] 10+ messages in thread
end of thread, other threads:[~2014-08-23 19:03 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-07-17 20:12 [gentoo-commits] proj/R_overlay:wip/addition_control commit in: roverlay/packagerules/generators/ André Erdmann
2014-07-18 16:20 ` [gentoo-commits] proj/R_overlay:master " 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-29 18:29 André Erdmann
2014-08-23 19:03 ` 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
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox