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 4369F1389E2 for ; Thu, 11 Dec 2014 08:42:12 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 70D6BE0BED; Thu, 11 Dec 2014 08:42:09 +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 11A77E0BED for ; Thu, 11 Dec 2014 08:42:09 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id D1CD6340278 for ; Thu, 11 Dec 2014 08:42:07 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id 61C85C225 for ; Thu, 11 Dec 2014 08:42:06 +0000 (UTC) From: "Zac Medico" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Zac Medico" Message-ID: <1418287282.84bc910631cce15780947a761b468a0bd40a786b.zmedico@gentoo> Subject: [gentoo-commits] proj/portage:master commit in: pym/_emerge/ X-VCS-Repository: proj/portage X-VCS-Files: pym/_emerge/search.py X-VCS-Directories: pym/_emerge/ X-VCS-Committer: zmedico X-VCS-Committer-Name: Zac Medico X-VCS-Revision: 84bc910631cce15780947a761b468a0bd40a786b X-VCS-Branch: master Date: Thu, 11 Dec 2014 08:42:06 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Archives-Salt: 2bf9cb2f-71fe-43a1-9d0a-b83e57c383e0 X-Archives-Hash: 408e4333e842c46e01babc36b1c53ad7 commit: 84bc910631cce15780947a761b468a0bd40a786b Author: Zac Medico gentoo org> AuthorDate: Thu Dec 11 07:40:34 2014 +0000 Commit: Zac Medico gentoo org> CommitDate: Thu Dec 11 08:41:22 2014 +0000 URL: http://sources.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=84bc9106 search._xmatch: handle aux_get KeyError (525718) 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 | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/pym/_emerge/search.py b/pym/_emerge/search.py index 90dbcec..e7f6f44 100644 --- a/pym/_emerge/search.py +++ b/pym/_emerge/search.py @@ -1,6 +1,8 @@ # Copyright 1999-2014 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 +from __future__ import unicode_literals + import re import portage from portage import os @@ -86,6 +88,11 @@ class search(object): pass raise KeyError(args[0]) + def _aux_get_error(self, cpv): + portage.writemsg("emerge: search: " + "aux_get('%s') failed, skipping\n" % cpv, + noiselevel=-1) + def _findname(self, *args, **kwargs): for db in self._dbs: if db is not self._portdb: @@ -166,8 +173,12 @@ 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: + self._aux_get_error(cpv) + continue if not self._visible(db, cpv, metadata): continue matches.add(cpv) @@ -197,8 +208,12 @@ 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: + self._aux_get_error(cpv) + continue if not self._visible(db, cpv, metadata): continue if not result or cpv == portage.best([cpv, result]): @@ -257,9 +272,7 @@ class search(object): full_desc = self._aux_get( full_package, ["DESCRIPTION"])[0] except KeyError: - portage.writemsg( - "emerge: search: aux_get() failed, skipping\n", - noiselevel=-1) + self._aux_get_error(full_package) continue if not self.searchre.search(full_desc): continue @@ -337,7 +350,7 @@ class search(object): metadata = dict(zip(metadata_keys, self._aux_get(full_package, metadata_keys))) except KeyError: - msg.append("emerge: search: aux_get() failed, skipping\n") + self._aux_get_error(full_package) continue desc = metadata["DESCRIPTION"]