From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id 7E1D51389E2 for ; Thu, 11 Dec 2014 07:52:43 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 0986BE0B77; Thu, 11 Dec 2014 07:52:43 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 9A2BEE0B76 for ; Thu, 11 Dec 2014 07:52:42 +0000 (UTC) Received: from x200ma.gaikai.int (ip70-181-96-121.oc.oc.cox.net [70.181.96.121]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) (Authenticated sender: zmedico) by smtp.gentoo.org (Postfix) with ESMTPSA id B2E893404A4; Thu, 11 Dec 2014 07:52:41 +0000 (UTC) From: Zac Medico To: gentoo-portage-dev@lists.gentoo.org Cc: Zac Medico Subject: [gentoo-portage-dev] [PATCH] search._xmatch: handle aux_get KeyError (525718) Date: Wed, 10 Dec 2014 23:51:44 -0800 Message-Id: <1418284304-10683-1-git-send-email-zmedico@gentoo.org> X-Mailer: git-send-email 2.0.4 Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-portage-dev@lists.gentoo.org Reply-to: gentoo-portage-dev@lists.gentoo.org X-Archives-Salt: 1cdcda01-6283-447f-974c-7c42ec4627a9 X-Archives-Hash: 559e4600ff99e53dd331570123ac54db Since commit 55c8c8bc7a781e3f71ce92922eea64ad4cafce3c, emerge --search can raise an unhandled KeyError if a pkg_desc_index contains a stale package. Handle it with the same error message used for other aux_get failures. Fixes: 55c8c8bc7a78 ("Add emerge --search-index option.") X-Gentoo-Bug: 525718 X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=525718 --- pym/_emerge/search.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/pym/_emerge/search.py b/pym/_emerge/search.py index 90dbcec..76adcea 100644 --- a/pym/_emerge/search.py +++ b/pym/_emerge/search.py @@ -166,8 +166,14 @@ class search(object): else: db_keys = list(db._aux_cache_keys) for cpv in db.match(atom): - metadata = zip(db_keys, - db.aux_get(cpv, db_keys)) + try: + metadata = zip(db_keys, + db.aux_get(cpv, db_keys)) + except KeyError: + portage.writemsg("emerge: search: " + "aux_get() failed, skipping\n", + noiselevel=-1) + continue if not self._visible(db, cpv, metadata): continue matches.add(cpv) @@ -197,8 +203,14 @@ class search(object): for cpv in reversed(matches): if portage.cpv_getkey(cpv) != cp: continue - metadata = zip(db_keys, - db.aux_get(cpv, db_keys)) + try: + metadata = zip(db_keys, + db.aux_get(cpv, db_keys)) + except KeyError: + portage.writemsg("emerge: search: " + "aux_get() failed, skipping\n", + noiselevel=-1) + continue if not self._visible(db, cpv, metadata): continue if not result or cpv == portage.best([cpv, result]): -- 2.0.4