1 |
commit: 35ccdf9b9c1ccef8482e8d2f2ed1dac3d50849d6 |
2 |
Author: Michał Górny <mgorny <AT> gentoo <DOT> org> |
3 |
AuthorDate: Thu Jul 28 19:25:57 2011 +0000 |
4 |
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org> |
5 |
CommitDate: Thu Jul 28 19:25:57 2011 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=35ccdf9b |
7 |
|
8 |
Paludis: support passing more args to depspecs. |
9 |
|
10 |
--- |
11 |
gentoopm/paludispm/depend.py | 24 ++++++++++++++---------- |
12 |
1 files changed, 14 insertions(+), 10 deletions(-) |
13 |
|
14 |
diff --git a/gentoopm/paludispm/depend.py b/gentoopm/paludispm/depend.py |
15 |
index ee5ad4c..9084f3d 100644 |
16 |
--- a/gentoopm/paludispm/depend.py |
17 |
+++ b/gentoopm/paludispm/depend.py |
18 |
@@ -4,6 +4,7 @@ |
19 |
# Released under the terms of the 2-clause BSD license. |
20 |
|
21 |
import paludis, re |
22 |
+from collections import namedtuple |
23 |
|
24 |
from gentoopm.basepm.depend import PMPackageDepSet, PMConditionalDep, \ |
25 |
PMAnyOfDep, PMAllOfDep, PMExactlyOneOfDep, PMBaseDep |
26 |
@@ -12,25 +13,25 @@ from gentoopm.paludispm.atom import PaludisAtom |
27 |
_block_re = re.compile('^!*') |
28 |
|
29 |
class PaludisBaseDep(PMBaseDep): |
30 |
- def __init__(self, deps, pkg): |
31 |
+ def __init__(self, deps, args): |
32 |
self._deps = deps |
33 |
- self._pkg = pkg |
34 |
+ self._args = args |
35 |
|
36 |
def __iter__(self): |
37 |
for d in self._deps: |
38 |
if isinstance(d, paludis.PackageDepSpec): |
39 |
- yield PaludisAtom(d, self._pkg._env) |
40 |
+ yield PaludisAtom(d, self._args.env) |
41 |
elif isinstance(d, paludis.BlockDepSpec): |
42 |
- yield PaludisAtom(d.blocking, self._pkg._env, |
43 |
+ yield PaludisAtom(d.blocking, self._args.env, |
44 |
block = _block_re.match(d.text).group(0)) |
45 |
elif isinstance(d, paludis.AnyDepSpec): |
46 |
- yield PaludisAnyOfDep(d, self._pkg) |
47 |
+ yield PaludisAnyOfDep(d, self._args) |
48 |
elif isinstance(d, paludis.AllDepSpec): |
49 |
- yield PaludisAllOfDep(d, self._pkg) |
50 |
+ yield PaludisAllOfDep(d, self._args) |
51 |
elif isinstance(d, paludis.ExactlyOneDepSpec): |
52 |
- yield PaludisExactlyOneOfDep(d, self._pkg) |
53 |
+ yield PaludisExactlyOneOfDep(d, self._args) |
54 |
elif isinstance(d, paludis.ConditionalDepSpec): |
55 |
- yield PaludisConditionalDep(d, self._pkg) |
56 |
+ yield PaludisConditionalDep(d, self._args) |
57 |
elif isinstance(d, paludis.PlainTextDepSpec): |
58 |
# XXX: this is in REQUIRED_USE as well |
59 |
yield str(d) |
60 |
@@ -49,7 +50,10 @@ class PaludisExactlyOneOfDep(PMExactlyOneOfDep, PaludisBaseDep): |
61 |
class PaludisConditionalDep(PMConditionalDep, PaludisBaseDep): |
62 |
@property |
63 |
def enabled(self): |
64 |
- return self._deps.condition_met(self._pkg._env, self._pkg._pkg) |
65 |
+ return self._deps.condition_met(self._args.env, self._args.pkg) |
66 |
+ |
67 |
+_argtuple = namedtuple('PaludisDepArgTuple', ('env', 'pkg', 'cls')) |
68 |
|
69 |
class PaludisPackageDepSet(PMPackageDepSet, PaludisAllOfDep): |
70 |
- pass |
71 |
+ def __init__(self, deps, pkg, cls = None): |
72 |
+ PaludisAllOfDep.__init__(self, deps, _argtuple(pkg._env, pkg._pkg, cls)) |