diff options
author | Benda Xu <heroxbd@gentoo.org> | 2018-05-30 13:25:20 +0800 |
---|---|---|
committer | Benda Xu <heroxbd@gentoo.org> | 2018-05-30 13:25:20 +0800 |
commit | 3f7c507a97b62ef814517adf3e9fae935db4ad04 (patch) | |
tree | f7c75a48ba82805ea0e18a576d3b935f21fb90a3 /roverlay | |
parent | const.py: do not split on ',' inside a pair of '()'. (diff) | |
download | R_overlay-3f7c507a97b62ef814517adf3e9fae935db4ad04.tar.gz R_overlay-3f7c507a97b62ef814517adf3e9fae935db4ad04.tar.bz2 R_overlay-3f7c507a97b62ef814517adf3e9fae935db4ad04.zip |
Use regex in dep string matches.
Ignore rules should come later than positive rules.
Closes: https://bugs.gentoo.org/653694
Diffstat (limited to 'roverlay')
-rw-r--r-- | roverlay/depres/simpledeprule/abstractrules.py | 10 | ||||
-rw-r--r-- | roverlay/depres/simpledeprule/rules.py | 6 |
2 files changed, 10 insertions, 6 deletions
diff --git a/roverlay/depres/simpledeprule/abstractrules.py b/roverlay/depres/simpledeprule/abstractrules.py index d31ffbe..a1d8522 100644 --- a/roverlay/depres/simpledeprule/abstractrules.py +++ b/roverlay/depres/simpledeprule/abstractrules.py @@ -8,7 +8,7 @@ __all__ = [ 'FuzzySimpleRule', 'SimpleRule', ] -import logging +import logging, re from roverlay import config from roverlay.depres import deprule @@ -21,7 +21,7 @@ class SimpleRule ( deprule.DependencyRule ): INDENT = 3 * ' ' def __init__ ( self, - dep_str=None, priority=50, resolving_package=None, + dep_str=None, priority=80, resolving_package=None, is_selfdep=0, logger_name='simple_rule', selfdep_package_names=None, finalize=False, ): @@ -67,6 +67,10 @@ class SimpleRule ( deprule.DependencyRule ): self.dep_alias = frozenset ( self.dep_alias ) if self.prepare_lowercase_alias: self.dep_alias_low = frozenset ( x.lower() for x in self.dep_alias ) + temp_set = self.dep_alias_low + if self.is_selfdep: + temp_set = ("^{}$".format(x) for x in self.dep_alias_low) + self.dep_regex = re.compile('|'.join(x for x in temp_set)) def add_resolved ( self, dep_str ): """Adds an dependency string that should be matched by this rule. @@ -80,7 +84,7 @@ class SimpleRule ( deprule.DependencyRule ): def _find ( self, dep_str, lowercase ): if lowercase: if hasattr ( self, 'dep_alias_low' ): - if dep_str in self.dep_alias_low: + if self.dep_regex.search(dep_str): return True elif dep_str in ( alias.lower() for alias in self.dep_alias ): diff --git a/roverlay/depres/simpledeprule/rules.py b/roverlay/depres/simpledeprule/rules.py index 869c5aa..12c6520 100644 --- a/roverlay/depres/simpledeprule/rules.py +++ b/roverlay/depres/simpledeprule/rules.py @@ -151,11 +151,11 @@ class SimpleIgnoreDependencyRule ( SimpleRule ): RULE_PREFIX = '!' - def __init__ ( self, priority=50, resolving_package=None, **kw ): + def __init__ ( self, priority=80, resolving_package=None, **kw ): super ( SimpleIgnoreDependencyRule, self ) . __init__ ( logger_name = 'IGNORE_DEPS', resolving_package=None, - priority=50, + priority=80, **kw ) # --- end of SimpleIgnoreDependencyRule --- @@ -187,7 +187,7 @@ class SimpleFuzzyIgnoreDependencyRule ( FuzzySimpleRule ): RULE_PREFIX = '%' - def __init__ ( self, priority=51, resolving_package=None, **kw ): + def __init__ ( self, priority=81, resolving_package=None, **kw ): super ( SimpleFuzzyIgnoreDependencyRule, self ) . __init__ ( priority=priority, resolving_package=resolving_package, |