1 |
commit: 169dbd47cc0795101f25304e709f7f0045d7f364 |
2 |
Author: André Erdmann <dywi <AT> mailerd <DOT> de> |
3 |
AuthorDate: Mon Jul 2 16:45:40 2012 +0000 |
4 |
Commit: André Erdmann <dywi <AT> mailerd <DOT> de> |
5 |
CommitDate: Mon Jul 2 16:45:40 2012 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=169dbd47 |
7 |
|
8 |
fix export_rule for simple dep rules |
9 |
|
10 |
modified: roverlay/depres/abstractsimpledeprule.py |
11 |
modified: roverlay/depres/simpledeprule.py |
12 |
|
13 |
--- |
14 |
roverlay/depres/abstractsimpledeprule.py | 60 +++++++++++++---------------- |
15 |
roverlay/depres/simpledeprule.py | 26 ++++++------- |
16 |
2 files changed, 39 insertions(+), 47 deletions(-) |
17 |
|
18 |
diff --git a/roverlay/depres/abstractsimpledeprule.py b/roverlay/depres/abstractsimpledeprule.py |
19 |
index b03ce63..811f88e 100644 |
20 |
--- a/roverlay/depres/abstractsimpledeprule.py |
21 |
+++ b/roverlay/depres/abstractsimpledeprule.py |
22 |
@@ -1,5 +1,6 @@ |
23 |
import logging |
24 |
|
25 |
+from roverlay import config |
26 |
from roverlay.depres import deprule |
27 |
|
28 |
TMP_LOGGER = logging.getLogger ('simpledeps') |
29 |
@@ -29,8 +30,6 @@ class SimpleRule ( deprule.DependencyRule ): |
30 |
if not dep_str is None: |
31 |
self.dep_alias.append ( dep_str ) |
32 |
|
33 |
- self.logger.debug ( "new rule (%s) for %s" % ( self.__class__.__name__, self.resolving_package ) ) |
34 |
- |
35 |
# --- end of __init__ (...) --- |
36 |
|
37 |
def done_reading ( self ): |
38 |
@@ -80,45 +79,40 @@ class SimpleRule ( deprule.DependencyRule ): |
39 |
return None |
40 |
# --- end of matches (...) --- |
41 |
|
42 |
- def export_rule ( self, resolving_to=None ): |
43 |
- """Returns this rule as a list of text lines that can be written into |
44 |
- a file. |
45 |
- An empty list will be returned if dep_alias has zero length. |
46 |
- |
47 |
- arguments: |
48 |
- * resolving_to -- portage package that the exported rule should |
49 |
- resolve to, defaults to self.resolving_package or |
50 |
- an ignore keyword such as '!'. |
51 |
+ def export_rule ( self ): |
52 |
+ """Generates text lines for this rule that can later be read using |
53 |
+ the SimpleDependencyRuleReader. |
54 |
""" |
55 |
+ # todo hardcoded rule format here |
56 |
+ if self.resolving_package is None: |
57 |
+ resolving = '' |
58 |
+ else: |
59 |
+ resolving = self.resolving_package |
60 |
|
61 |
- alias_count = len ( self.dep_alias ) |
62 |
+ cat = config.get ( 'OVERLAY.category', None ) |
63 |
|
64 |
- retlist = [] |
65 |
+ if cat is not None: |
66 |
+ resolving = resolving.replace ( cat + '/', '') |
67 |
|
68 |
- if alias_count: |
69 |
- if resolving_to is None: |
70 |
- if hasattr ( self, 'resolving_package'): |
71 |
- resolving_package = self.resolving_package |
72 |
- else: |
73 |
- resolving_package = '!' |
74 |
- else: |
75 |
- resolving_package = resolving_to |
76 |
+ if hasattr ( self.__class__, 'RULE_PREFIX' ): |
77 |
+ resolving = self.__class__.RULE_PREFIX + resolving |
78 |
|
79 |
- # todo hardcoded rule format here |
80 |
- if alias_count > 1: |
81 |
+ if len ( self.dep_alias ) == 0: |
82 |
+ pass |
83 |
|
84 |
- retlist = [ resolving_package + ' {\n' ] + \ |
85 |
- [ "\t%s\n" % alias for alias in self.dep_alias ] + \ |
86 |
- [ '}\n' ] |
87 |
- else: |
88 |
- retlist = [ |
89 |
- "%s :: %s\n" % ( resolving_package, self.dep_alias [0] ) |
90 |
- ] |
91 |
+ elif len ( self.dep_alias ) == 1: |
92 |
+ yield "%s :: %s\n" % ( resolving, iter ( self.dep_alias ).next() ) |
93 |
+ |
94 |
+ else: |
95 |
+ yield resolving + ' {' |
96 |
+ for alias in self.dep_alias: |
97 |
+ yield "\t" + alias |
98 |
+ yield '}' |
99 |
+ |
100 |
+ def __str__ ( self ): |
101 |
+ return '\n'.join ( self.export_rule() ) |
102 |
|
103 |
- # -- if |
104 |
|
105 |
- return retlist |
106 |
- # --- end of export_rule (...) --- |
107 |
|
108 |
class FuzzySimpleRule ( SimpleRule ): |
109 |
|
110 |
|
111 |
diff --git a/roverlay/depres/simpledeprule.py b/roverlay/depres/simpledeprule.py |
112 |
index ce4ba10..04a47a6 100644 |
113 |
--- a/roverlay/depres/simpledeprule.py |
114 |
+++ b/roverlay/depres/simpledeprule.py |
115 |
@@ -13,6 +13,8 @@ TMP_LOGGER = logging.getLogger ('simpledeps') |
116 |
|
117 |
class SimpleIgnoreDependencyRule ( SimpleRule ): |
118 |
|
119 |
+ RULE_PREFIX = '!' |
120 |
+ |
121 |
def __init__ ( self, dep_str=None, priority=50, resolving_package=None ): |
122 |
super ( SimpleIgnoreDependencyRule, self ) . __init__ ( |
123 |
dep_str=dep_str, |
124 |
@@ -43,6 +45,8 @@ class SimpleDependencyRule ( SimpleRule ): |
125 |
|
126 |
class SimpleFuzzyIgnoreDependencyRule ( FuzzySimpleRule ): |
127 |
|
128 |
+ RULE_PREFIX = '%' |
129 |
+ |
130 |
def __init__ ( self, dep_str=None, priority=51, resolving_package=None ): |
131 |
super ( SimpleFuzzyIgnoreDependencyRule, self ) . __init__ ( |
132 |
dep_str=dep_str, |
133 |
@@ -52,6 +56,9 @@ class SimpleFuzzyIgnoreDependencyRule ( FuzzySimpleRule ): |
134 |
) |
135 |
|
136 |
class SimpleFuzzyDependencyRule ( FuzzySimpleRule ): |
137 |
+ |
138 |
+ RULE_PREFIX = '~' |
139 |
+ |
140 |
def __init__ ( self, resolving_package, dep_str=None, priority=71 ): |
141 |
super ( SimpleFuzzyDependencyRule, self ) . __init__ ( |
142 |
dep_str=dep_str, |
143 |
@@ -117,11 +124,8 @@ class SimpleDependencyRulePool ( deprule.DependencyRulePool ): |
144 |
raises: IOError (fh) |
145 |
""" |
146 |
for rule in self.rules: |
147 |
- to_write = fh.export_rule() |
148 |
- if isinstance ( to_write, str ): |
149 |
- fh.write ( to_write ) |
150 |
- else: |
151 |
- fh.writelines ( to_write ) |
152 |
+ fh.write ( str ( rule ) ) |
153 |
+ fh.write ( '\n' ) |
154 |
|
155 |
# --- end of export_rules (...) --- |
156 |
|
157 |
@@ -134,9 +138,9 @@ class SimpleDependencyRuleReader ( object ): |
158 |
comment_chars = "#;" |
159 |
|
160 |
# todo: const/config? |
161 |
- package_ignore = '!' |
162 |
- fuzzy = '~' |
163 |
- fuzzy_ignore = '%' |
164 |
+ package_ignore = SimpleIgnoreDependencyRule.RULE_PREFIX |
165 |
+ fuzzy = SimpleFuzzyDependencyRule.RULE_PREFIX |
166 |
+ fuzzy_ignore = SimpleFuzzyIgnoreDependencyRule.RULE_PREFIX |
167 |
|
168 |
BREAK_PARSING = frozenset (( '#! NOPARSE', '#! BREAK' )) |
169 |
|
170 |
@@ -146,12 +150,6 @@ class SimpleDependencyRuleReader ( object ): |
171 |
pass |
172 |
# --- end of __init__ (...) --- |
173 |
|
174 |
- |
175 |
- def _make_rule ( self, rule_str ): |
176 |
- CLS = self.__class__ |
177 |
- |
178 |
- |
179 |
- |
180 |
def read_file ( self, filepath ): |
181 |
"""Reads a file that contains simple dependency rules |
182 |
(SimpleIgnoreDependencyRules/SimpleDependencyRules). |