Gentoo Archives: gentoo-commits

From: "Zac Medico (zmedico)" <zmedico@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] portage r11308 - main/trunk/pym/portage/sets
Date: Fri, 01 Aug 2008 04:51:12
Message-Id: E1KOmbc-0006iy-Dr@stork.gentoo.org
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)