Gentoo Archives: gentoo-portage-dev

From: Zac Medico <zmedico@g.o>
To: gentoo-portage-dev@l.g.o
Cc: Zac Medico <zmedico@g.o>
Subject: [gentoo-portage-dev] [PATCH] search._xmatch: handle aux_get KeyError (525718)
Date: Thu, 11 Dec 2014 07:52:43
Message-Id: 1418284304-10683-1-git-send-email-zmedico@gentoo.org
1 Since commit 55c8c8bc7a781e3f71ce92922eea64ad4cafce3c, emerge --search
2 can raise an unhandled KeyError if a pkg_desc_index contains a stale
3 package. Handle it with the same error message used for other aux_get
4 failures.
5
6 Fixes: 55c8c8bc7a78 ("Add emerge --search-index option.")
7 X-Gentoo-Bug: 525718
8 X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=525718
9 ---
10 pym/_emerge/search.py | 20 ++++++++++++++++----
11 1 file changed, 16 insertions(+), 4 deletions(-)
12
13 diff --git a/pym/_emerge/search.py b/pym/_emerge/search.py
14 index 90dbcec..76adcea 100644
15 --- a/pym/_emerge/search.py
16 +++ b/pym/_emerge/search.py
17 @@ -166,8 +166,14 @@ class search(object):
18 else:
19 db_keys = list(db._aux_cache_keys)
20 for cpv in db.match(atom):
21 - metadata = zip(db_keys,
22 - db.aux_get(cpv, db_keys))
23 + try:
24 + metadata = zip(db_keys,
25 + db.aux_get(cpv, db_keys))
26 + except KeyError:
27 + portage.writemsg("emerge: search: "
28 + "aux_get() failed, skipping\n",
29 + noiselevel=-1)
30 + continue
31 if not self._visible(db, cpv, metadata):
32 continue
33 matches.add(cpv)
34 @@ -197,8 +203,14 @@ class search(object):
35 for cpv in reversed(matches):
36 if portage.cpv_getkey(cpv) != cp:
37 continue
38 - metadata = zip(db_keys,
39 - db.aux_get(cpv, db_keys))
40 + try:
41 + metadata = zip(db_keys,
42 + db.aux_get(cpv, db_keys))
43 + except KeyError:
44 + portage.writemsg("emerge: search: "
45 + "aux_get() failed, skipping\n",
46 + noiselevel=-1)
47 + continue
48 if not self._visible(db, cpv, metadata):
49 continue
50 if not result or cpv == portage.best([cpv, result]):
51 --
52 2.0.4

Replies