Gentoo Archives: gentoo-commits

From: "Zac Medico (zmedico)" <zmedico@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] portage r11732 - in main/trunk/pym: _emerge portage/sets
Date: Tue, 28 Oct 2008 09:07:47
Message-Id: E1KukYD-0007cc-Gj@stork.gentoo.org
1 Author: zmedico
2 Date: 2008-10-28 09:07:39 +0000 (Tue, 28 Oct 2008)
3 New Revision: 11732
4
5 Modified:
6 main/trunk/pym/_emerge/__init__.py
7 main/trunk/pym/portage/sets/__init__.py
8 Log:
9 Make SetConfig.getSetAtoms() raise a PackageSetNotFound exception when
10 necessary and add handling code in emerge. This solves an unhandled
11 KeyError that was raise when a nested set did not exist. Thanks to
12 ABCD for reporting.
13
14
15 Modified: main/trunk/pym/_emerge/__init__.py
16 ===================================================================
17 --- main/trunk/pym/_emerge/__init__.py 2008-10-28 05:30:33 UTC (rev 11731)
18 +++ main/trunk/pym/_emerge/__init__.py 2008-10-28 09:07:39 UTC (rev 11732)
19 @@ -13698,15 +13698,22 @@
20 display_missing_pkg_set(root_config, s)
21 return (None, 1)
22 setconfig.active.append(s)
23 + try:
24 + set_atoms = setconfig.getSetAtoms(s)
25 + except portage.exception.PackageSetNotFound, e:
26 + writemsg_level(("emerge: the given set '%s' " + \
27 + "contains a non-existent set named '%s'.\n") % \
28 + (s, e), level=logging.ERROR, noiselevel=-1)
29 + return (None, 1)
30 if myaction in unmerge_actions and \
31 not sets[s].supportsOperation("unmerge"):
32 sys.stderr.write("emerge: the given set '%s' does " % s + \
33 "not support unmerge operations\n")
34 retval = 1
35 - elif not setconfig.getSetAtoms(s):
36 + elif not set_atoms:
37 print "emerge: '%s' is an empty set" % s
38 elif myaction not in do_not_expand:
39 - newargs.extend(setconfig.getSetAtoms(s))
40 + newargs.extend(set_atoms)
41 else:
42 newargs.append(SETPREFIX+s)
43 for e in sets[s].errors:
44
45 Modified: main/trunk/pym/portage/sets/__init__.py
46 ===================================================================
47 --- main/trunk/pym/portage/sets/__init__.py 2008-10-28 05:30:33 UTC (rev 11731)
48 +++ main/trunk/pym/portage/sets/__init__.py 2008-10-28 09:07:39 UTC (rev 11732)
49 @@ -2,10 +2,14 @@
50 # Distributed under the terms of the GNU General Public License v2
51 # $Id$
52
53 +__all__ = ["SETPREFIX", "get_boolean", "SetConfigError",
54 + "SetConfig", "load_default_config"]
55 +
56 import os
57 from ConfigParser import SafeConfigParser, NoOptionError
58 from portage import load_mod
59 from portage.const import USER_CONFIG_PATH, GLOBAL_CONFIG_PATH
60 +from portage.exception import PackageSetNotFound
61
62 SETPREFIX = "@"
63
64 @@ -131,7 +135,13 @@
65 return self.psets.copy()
66
67 def getSetAtoms(self, setname, ignorelist=None):
68 - myset = self.getSets()[setname]
69 + """
70 + This raises PackageSetNotFound if the give setname does not exist.
71 + """
72 + try:
73 + myset = self.getSets()[setname]
74 + except KeyError:
75 + raise PackageSetNotFound(setname)
76 myatoms = myset.getAtoms()
77 parser = self._parser
78 extend = set()
79 @@ -150,8 +160,12 @@
80
81 ignorelist.add(setname)
82 for n in myset.getNonAtoms():
83 - if n.startswith(SETPREFIX) and n[len(SETPREFIX):] in self.psets:
84 - extend.add(n[len(SETPREFIX):])
85 + if n.startswith(SETPREFIX):
86 + s = n[len(SETPREFIX):]
87 + if s in self.psets:
88 + extend.add(n[len(SETPREFIX):])
89 + else:
90 + raise PackageSetNotFound(s)
91
92 for s in ignorelist:
93 extend.discard(s)