1 |
commit: 47fd2cbc28005be9fdf9707c2f64dd659a2b44a0 |
2 |
Author: Michał Górny <mgorny <AT> gentoo <DOT> org> |
3 |
AuthorDate: Sat Jul 30 08:14:05 2011 +0000 |
4 |
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org> |
5 |
CommitDate: Sat Jul 30 08:14:05 2011 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=47fd2cbc |
7 |
|
8 |
Support checking whether a USEflag is enabled. |
9 |
|
10 |
--- |
11 |
gentoopm/basepm/pkg.py | 11 ++++++++++- |
12 |
gentoopm/paludispm/pkg.py | 4 ++++ |
13 |
gentoopm/pkgcorepm/pkg.py | 19 +++++++++++++++++-- |
14 |
gentoopm/portagepm/pkg.py | 21 ++++++++++++++++++--- |
15 |
4 files changed, 49 insertions(+), 6 deletions(-) |
16 |
|
17 |
diff --git a/gentoopm/basepm/pkg.py b/gentoopm/basepm/pkg.py |
18 |
index efb80e7..b2e7581 100644 |
19 |
--- a/gentoopm/basepm/pkg.py |
20 |
+++ b/gentoopm/basepm/pkg.py |
21 |
@@ -93,6 +93,15 @@ class PMUseFlag(ABCObject, StringCompat): |
22 |
""" |
23 |
return self._name |
24 |
|
25 |
+ @abstractproperty |
26 |
+ def enabled(self): |
27 |
+ """ |
28 |
+ Whether the flag is enabled. |
29 |
+ |
30 |
+ @type: bool |
31 |
+ """ |
32 |
+ pass |
33 |
+ |
34 |
def __str__(self): |
35 |
return self.name |
36 |
|
37 |
@@ -298,7 +307,7 @@ class PMPackage(PMAtom, FillMissingComparisons): |
38 |
@abstractproperty |
39 |
def use(self): |
40 |
""" |
41 |
- Get the list of USE flags declared in the ebuild (C{IUSE}). |
42 |
+ Get the list of USE flags applying to the ebuild. |
43 |
|
44 |
@type: L{SpaceSepFrozenSet}(L{PMUseFlag}) |
45 |
""" |
46 |
|
47 |
diff --git a/gentoopm/paludispm/pkg.py b/gentoopm/paludispm/pkg.py |
48 |
index 0c5d567..7a9b244 100644 |
49 |
--- a/gentoopm/paludispm/pkg.py |
50 |
+++ b/gentoopm/paludispm/pkg.py |
51 |
@@ -48,6 +48,10 @@ class PaludisChoice(PMUseFlag): |
52 |
def name(self): |
53 |
return str(self._c.name_with_prefix) |
54 |
|
55 |
+ @property |
56 |
+ def enabled(self): |
57 |
+ return self._c.enabled |
58 |
+ |
59 |
class PaludisChoiceSet(SpaceSepFrozenSet): |
60 |
def __new__(self, choices): |
61 |
l = [] |
62 |
|
63 |
diff --git a/gentoopm/pkgcorepm/pkg.py b/gentoopm/pkgcorepm/pkg.py |
64 |
index da81888..757bc90 100644 |
65 |
--- a/gentoopm/pkgcorepm/pkg.py |
66 |
+++ b/gentoopm/pkgcorepm/pkg.py |
67 |
@@ -46,7 +46,22 @@ class PkgCorePackageDescription(PMPackageDescription): |
68 |
return None |
69 |
|
70 |
class PkgCoreUseFlag(PMUseFlag): |
71 |
- pass |
72 |
+ def __init__(self, s, enabled_use): |
73 |
+ PMUseFlag.__init__(self, s) |
74 |
+ self._enabled = self.name in enabled_use |
75 |
+ |
76 |
+ @property |
77 |
+ def enabled(self): |
78 |
+ return self._enabled |
79 |
+ |
80 |
+class PkgCoreUseSet(SpaceSepFrozenSet): |
81 |
+ def __new__(self, iuse, use): |
82 |
+ def _get_iuse(): |
83 |
+ for u in iuse: |
84 |
+ yield PkgCoreUseFlag(u, use) |
85 |
+ |
86 |
+ self._use = use |
87 |
+ return SpaceSepFrozenSet.__new__(self, _get_iuse()) |
88 |
|
89 |
class PkgCorePackage(PMPackage, PkgCoreAtom): |
90 |
def __init__(self, pkg, repo_index = 0): |
91 |
@@ -87,7 +102,7 @@ class PkgCorePackage(PMPackage, PkgCoreAtom): |
92 |
|
93 |
@property |
94 |
def use(self): |
95 |
- return SpaceSepFrozenSet([PkgCoreUseFlag(x) for x in self._pkg.iuse]) |
96 |
+ return PkgCoreUseSet(self._pkg.iuse, self._pkg.use) |
97 |
|
98 |
@property |
99 |
def slotted(self): |
100 |
|
101 |
diff --git a/gentoopm/portagepm/pkg.py b/gentoopm/portagepm/pkg.py |
102 |
index 9653262..9ced5ec 100644 |
103 |
--- a/gentoopm/portagepm/pkg.py |
104 |
+++ b/gentoopm/portagepm/pkg.py |
105 |
@@ -57,7 +57,22 @@ class PortagePackageDescription(PMPackageDescription): |
106 |
return None # XXX |
107 |
|
108 |
class PortageUseFlag(PMUseFlag): |
109 |
- pass |
110 |
+ def __init__(self, s, enabled_use): |
111 |
+ PMUseFlag.__init__(self, s) |
112 |
+ self._enabled = self.name in enabled_use |
113 |
+ |
114 |
+ @property |
115 |
+ def enabled(self): |
116 |
+ return self._enabled |
117 |
+ |
118 |
+class PortageUseSet(SpaceSepFrozenSet): |
119 |
+ def __new__(self, iuse, use): |
120 |
+ def _get_iuse(): |
121 |
+ for u in iuse: |
122 |
+ yield PortageUseFlag(u, use) |
123 |
+ |
124 |
+ self._use = use |
125 |
+ return SpaceSepFrozenSet.__new__(self, _get_iuse()) |
126 |
|
127 |
class PortageDBCPV(PMPackage, CompletePortageAtom): |
128 |
def __init__(self, cpv, dbapi): |
129 |
@@ -126,8 +141,8 @@ class PortageDBCPV(PMPackage, CompletePortageAtom): |
130 |
|
131 |
@property |
132 |
def use(self): |
133 |
- return SpaceSepFrozenSet([PortageUseFlag(x) for x \ |
134 |
- in self._aux_get('IUSE').split()]) |
135 |
+ return PortageUseSet(self._aux_get('IUSE').split(), |
136 |
+ self._applied_use) |
137 |
|
138 |
@property |
139 |
def slotted(self): |