1 |
commit: d686482b9be576f741d0eaa6e17f312dbf0e4e6b |
2 |
Author: André Erdmann <dywi <AT> mailerd <DOT> de> |
3 |
AuthorDate: Mon Sep 2 12:51:57 2013 +0000 |
4 |
Commit: André Erdmann <dywi <AT> mailerd <DOT> de> |
5 |
CommitDate: Mon Sep 2 12:51:57 2013 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=d686482b |
7 |
|
8 |
depres rule pools: accept dep_env, not mask |
9 |
|
10 |
This allows to take the whole dep environment into account when deciding whether |
11 |
it can be resolved by a specific rule pool or not. |
12 |
|
13 |
--- |
14 |
roverlay/depres/depresolver.py | 10 ++++------ |
15 |
roverlay/depres/deprule.py | 15 ++++++++++++++- |
16 |
roverlay/depres/simpledeprule/dynpool.py | 11 ++++------- |
17 |
3 files changed, 22 insertions(+), 14 deletions(-) |
18 |
|
19 |
diff --git a/roverlay/depres/depresolver.py b/roverlay/depres/depresolver.py |
20 |
index eeed396..b5ba075 100644 |
21 |
--- a/roverlay/depres/depresolver.py |
22 |
+++ b/roverlay/depres/depresolver.py |
23 |
@@ -390,8 +390,7 @@ class DependencyResolver ( object ): |
24 |
|
25 |
else: |
26 |
for rulepool in ( |
27 |
- p for p in self.dynamic_rule_pools \ |
28 |
- if p.accepts ( dep_env.deptype_mask, try_other=False ) |
29 |
+ p for p in self.dynamic_rule_pools if p.accepts ( dep_env ) |
30 |
): |
31 |
result = rulepool.matches ( dep_env ) |
32 |
if result: |
33 |
@@ -403,8 +402,7 @@ class DependencyResolver ( object ): |
34 |
|
35 |
# search for a match in the rule pools that accept the dep type |
36 |
for rulepool in ( |
37 |
- p for p in self.static_rule_pools \ |
38 |
- if p.accepts ( dep_env.deptype_mask, try_other=False ) |
39 |
+ p for p in self.static_rule_pools if p.accepts ( dep_env ) |
40 |
): |
41 |
result = rulepool.matches ( dep_env ) |
42 |
if result: |
43 |
@@ -417,8 +415,8 @@ class DependencyResolver ( object ): |
44 |
# search for a match in the rule pools |
45 |
# that (normally) don't accept the dep type |
46 |
for rulepool in ( |
47 |
- p for p in self.static_rule_pools \ |
48 |
- if p.accepts ( ~dep_env.deptype_mask, try_other=True ) |
49 |
+ p for p in self.static_rule_pools |
50 |
+ if p.accepts_other ( dep_env ) |
51 |
): |
52 |
result = rulepool.matches ( dep_env ) |
53 |
if result: |
54 |
|
55 |
diff --git a/roverlay/depres/deprule.py b/roverlay/depres/deprule.py |
56 |
index ed6084d..800d2af 100644 |
57 |
--- a/roverlay/depres/deprule.py |
58 |
+++ b/roverlay/depres/deprule.py |
59 |
@@ -92,11 +92,24 @@ class DependencyRulePool ( object ): |
60 |
return None |
61 |
# --- end of sort (...) --- |
62 |
|
63 |
- def accepts ( self, deptype_mask, try_other=False ): |
64 |
+ def accepts_mask ( self, deptype_mask ): |
65 |
"""Returns True if this pool accepts the given deptype_mask.""" |
66 |
return bool ( self.deptype_mask & deptype_mask ) |
67 |
+ # --- end of accepts_mask (...) --- |
68 |
+ |
69 |
+ def accepts ( self, dep_env ): |
70 |
+ """Returns True if this pool accepts the given dep env.""" |
71 |
+ return bool ( self.deptype_mask & dep_env.deptype_mask ) |
72 |
# --- end of accepts (...) --- |
73 |
|
74 |
+ def accepts_other ( self, dep_env ): |
75 |
+ """Returns True if this pool can be used to resolve a dep env whose |
76 |
+ deptype mask is rejected by this pool. |
77 |
+ (Not necessarily the inverse of accepts().) |
78 |
+ """ |
79 |
+ return not self.accepts ( dep_env ) |
80 |
+ # --- end of accepts_other (...) --- |
81 |
+ |
82 |
def add ( self, rule ): |
83 |
"""Adds a DependencyRule to this rule pool. |
84 |
|
85 |
|
86 |
diff --git a/roverlay/depres/simpledeprule/dynpool.py b/roverlay/depres/simpledeprule/dynpool.py |
87 |
index 8b6cf20..21e5a1b 100644 |
88 |
--- a/roverlay/depres/simpledeprule/dynpool.py |
89 |
+++ b/roverlay/depres/simpledeprule/dynpool.py |
90 |
@@ -36,13 +36,10 @@ class DynamicSelfdepRulePool ( SimpleDependencyRulePool ): |
91 |
self._rule_kw_function = rule_kw_function |
92 |
# --- end of __init__ (...) --- |
93 |
|
94 |
- def accepts ( self, deptype_mask, try_other=False ): |
95 |
- if try_other: |
96 |
- # never resolve external deps as selfdeps |
97 |
- return False |
98 |
- else: |
99 |
- return self.deptype_mask & deptype_mask |
100 |
- # --- end of accepts (...) --- |
101 |
+ def accepts_other ( self, dep_env ): |
102 |
+ # never resolve external deps as selfdeps |
103 |
+ return False |
104 |
+ # --- end of accepts_other (...) --- |
105 |
|
106 |
def reload ( self ): |
107 |
self.rules = list ( |