1 |
Author: zmedico |
2 |
Date: 2008-08-01 04:51:07 +0000 (Fri, 01 Aug 2008) |
3 |
New Revision: 11308 |
4 |
|
5 |
Modified: |
6 |
main/trunk/pym/portage/sets/dbapi.py |
7 |
Log: |
8 |
Make InheritSet more like DowngradeSet, and check INHERITED from the highest |
9 |
visible ebuild in the portage tree rather than from the installed package |
10 |
itself. |
11 |
|
12 |
|
13 |
Modified: main/trunk/pym/portage/sets/dbapi.py |
14 |
=================================================================== |
15 |
--- main/trunk/pym/portage/sets/dbapi.py 2008-08-01 04:13:23 UTC (rev 11307) |
16 |
+++ main/trunk/pym/portage/sets/dbapi.py 2008-08-01 04:51:07 UTC (rev 11308) |
17 |
@@ -75,23 +75,32 @@ |
18 |
description = "Package set which contains all packages " + \ |
19 |
"that inherit one or more specific eclasses." |
20 |
|
21 |
- def __init__(self, vardb=None, inherits=None): |
22 |
+ def __init__(self, portdb=None, vardb=None, inherits=None): |
23 |
super(InheritSet, self).__init__() |
24 |
+ self._portdb = portdb |
25 |
self._db = vardb |
26 |
self._inherits = inherits |
27 |
|
28 |
def load(self): |
29 |
atoms = [] |
30 |
inherits = self._inherits |
31 |
+ xmatch = self._portdb.xmatch |
32 |
+ xmatch_level = "bestmatch-visible" |
33 |
cp_list = self._db.cp_list |
34 |
aux_get = self._db.aux_get |
35 |
- aux_keys = ["INHERITED", "SLOT"] |
36 |
+ portdb_aux_get = self._portdb.aux_get |
37 |
+ vardb_keys = ["SLOT"] |
38 |
+ portdb_keys = ["INHERITED"] |
39 |
for cp in self._db.cp_all(): |
40 |
for cpv in cp_list(cp): |
41 |
- inherited, slot = aux_get(cpv, aux_keys) |
42 |
- inherited = inherited.split() |
43 |
- if inherits.intersection(inherited): |
44 |
- atoms.append("%s:%s" % (cp, slot)) |
45 |
+ slot, = aux_get(cpv, vardb_keys) |
46 |
+ slot_atom = "%s:%s" % (cp, slot) |
47 |
+ ebuild = xmatch(xmatch_level, slot_atom) |
48 |
+ if not ebuild: |
49 |
+ continue |
50 |
+ inherited, = portdb_aux_get(ebuild, portdb_keys) |
51 |
+ if inherits.intersection(inherited.split()): |
52 |
+ atoms.append(slot_atom) |
53 |
|
54 |
self._setAtoms(atoms) |
55 |
|
56 |
@@ -100,7 +109,8 @@ |
57 |
raise SetConfigError("no inherits given") |
58 |
|
59 |
inherits = options["inherits"] |
60 |
- return cls(vardb=trees["vartree"].dbapi, |
61 |
+ return cls(portdb=trees["porttree"].dbapi, |
62 |
+ vardb=trees["vartree"].dbapi, |
63 |
inherits=frozenset(inherits.split())) |
64 |
|
65 |
singleBuilder = classmethod(singleBuilder) |