1 |
Author: genone |
2 |
Date: 2008-09-28 17:27:44 +0000 (Sun, 28 Sep 2008) |
3 |
New Revision: 11584 |
4 |
|
5 |
Modified: |
6 |
main/trunk/pym/portage/sets/__init__.py |
7 |
Log: |
8 |
Add operator logic to sets.conf |
9 |
|
10 |
Modified: main/trunk/pym/portage/sets/__init__.py |
11 |
=================================================================== |
12 |
--- main/trunk/pym/portage/sets/__init__.py 2008-09-28 17:02:51 UTC (rev 11583) |
13 |
+++ main/trunk/pym/portage/sets/__init__.py 2008-09-28 17:27:44 UTC (rev 11584) |
14 |
@@ -123,14 +123,38 @@ |
15 |
def getSetAtoms(self, setname, ignorelist=None): |
16 |
myset = self.getSets()[setname] |
17 |
myatoms = myset.getAtoms() |
18 |
+ |
19 |
+ extend = set() |
20 |
+ remove = set() |
21 |
+ intersect = set() |
22 |
+ |
23 |
if ignorelist is None: |
24 |
ignorelist = set() |
25 |
+ if not setname in ignorelist: |
26 |
+ if self.has_option(myset.creator, "extend"): |
27 |
+ extend.update(self.get(myset.creator, "extend").split()) |
28 |
+ if self.has_option(myset.creator, "remove"): |
29 |
+ remove.update(self.get(myset.creator, "remove").split()) |
30 |
+ if self.has_option(myset.creator, "intersect"): |
31 |
+ intersect.update(self.get(myset.creator, "intersect").split()) |
32 |
+ |
33 |
ignorelist.add(setname) |
34 |
for n in myset.getNonAtoms(): |
35 |
- if n[0] == SETPREFIX and n[1:] in self.psets: |
36 |
- if n[1:] not in ignorelist: |
37 |
- myatoms.update(self.getSetAtoms(n[1:], |
38 |
- ignorelist=ignorelist)) |
39 |
+ if n.startswith(SETPREFIX) and n[len(SETPREFIX):] in self.psets: |
40 |
+ extend.add(n[len(SETPREFIX):]) |
41 |
+ |
42 |
+ for s in ignorelist: |
43 |
+ extend.discard(s) |
44 |
+ remove.discard(s) |
45 |
+ intersect.discard(s) |
46 |
+ |
47 |
+ for s in extend: |
48 |
+ myatoms.update(self.getSetAtoms(s, ignorelist=ignorelist)) |
49 |
+ for s in remove: |
50 |
+ myatoms.difference_update(self.getSetAtoms(s, ignorelist=None)) |
51 |
+ for s in intersect: |
52 |
+ myatoms.intersection_update(self.getSetAtoms(s, ignorelist=None)) |
53 |
+ |
54 |
return myatoms |
55 |
|
56 |
def load_default_config(settings, trees): |