From mboxrd@z Thu Jan  1 00:00:00 1970
Received: from pigeon.gentoo.org ([208.92.234.80] helo=lists.gentoo.org)
	by finch.gentoo.org with esmtp (Exim 4.60)
	(envelope-from <gentoo-commits+bounces-384336-garchives=archives.gentoo.org@lists.gentoo.org>)
	id 1R6usv-0004aV-RP
	for garchives@archives.gentoo.org; Fri, 23 Sep 2011 01:49:02 +0000
Received: from pigeon.gentoo.org (localhost [127.0.0.1])
	by pigeon.gentoo.org (Postfix) with SMTP id 975D921C020;
	Fri, 23 Sep 2011 01:48:52 +0000 (UTC)
Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183])
	by pigeon.gentoo.org (Postfix) with ESMTP id 5245521C020
	for <gentoo-commits@lists.gentoo.org>; Fri, 23 Sep 2011 01:48:52 +0000 (UTC)
Received: from pelican.gentoo.org (unknown [66.219.59.40])
	(using TLSv1 with cipher ADH-AES256-SHA (256/256 bits))
	(No client certificate requested)
	by smtp.gentoo.org (Postfix) with ESMTPS id B02AC1B4017
	for <gentoo-commits@lists.gentoo.org>; Fri, 23 Sep 2011 01:48:51 +0000 (UTC)
Received: from localhost.localdomain (localhost [127.0.0.1])
	by pelican.gentoo.org (Postfix) with ESMTP id D1D1A80042
	for <gentoo-commits@lists.gentoo.org>; Fri, 23 Sep 2011 01:48:50 +0000 (UTC)
From: "Zac Medico" <zmedico@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Content-type: text/plain; charset=UTF-8
Reply-To: gentoo-dev@lists.gentoo.org, "Zac Medico" <zmedico@gentoo.org>
Message-ID: <1b4ee4f4c5c01c49b91f1618f4b2ab6305f28eca.zmedico@gentoo>
Subject: [gentoo-commits] proj/portage:master commit in: pym/portage/dbapi/
X-VCS-Repository: proj/portage
X-VCS-Files: pym/portage/dbapi/porttree.py
X-VCS-Directories: pym/portage/dbapi/
X-VCS-Committer: zmedico
X-VCS-Committer-Name: Zac Medico
X-VCS-Revision: 1b4ee4f4c5c01c49b91f1618f4b2ab6305f28eca
Date: Fri, 23 Sep 2011 01:48:50 +0000 (UTC)
Precedence: bulk
List-Post: <mailto:gentoo-commits@lists.gentoo.org>
List-Help: <mailto:gentoo-commits+help@lists.gentoo.org>
List-Unsubscribe: <mailto:gentoo-commits+unsubscribe@lists.gentoo.org>
List-Subscribe: <mailto:gentoo-commits+subscribe@lists.gentoo.org>
List-Id: Gentoo Linux mail <gentoo-commits.gentoo.org>
X-BeenThere: gentoo-commits@lists.gentoo.org
Content-Transfer-Encoding: quoted-printable
X-Archives-Salt: 
X-Archives-Hash: 178a0d22288eaba6b3fa1b839af69d7b

commit:     1b4ee4f4c5c01c49b91f1618f4b2ab6305f28eca
Author:     Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 23 01:47:04 2011 +0000
Commit:     Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Fri Sep 23 01:47:04 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=3Dproj/portage.git;a=
=3Dcommit;h=3D1b4ee4f4

Fix minimum/bestmatch-visible for multi-repo.

---
 pym/portage/dbapi/porttree.py |   83 +++++++++++++++++++++++++----------=
-----
 1 files changed, 52 insertions(+), 31 deletions(-)

diff --git a/pym/portage/dbapi/porttree.py b/pym/portage/dbapi/porttree.p=
y
index 7f1bbf0..4f5dc78 100644
--- a/pym/portage/dbapi/porttree.py
+++ b/pym/portage/dbapi/porttree.py
@@ -898,41 +898,62 @@ class portdbapi(dbapi):
 				iterfunc =3D iter
 			else:
 				iterfunc =3D reversed
+
+			if mydep.repo is not None or len(self.porttrees) =3D=3D 1:
+				repos =3D [mydep.repo]
+			else:
+				# We iterate over self.porttrees, since it's common to
+				# tweak this attribute in order to adjust match behavior.
+				repos =3D []
+				for tree in reversed(self.porttrees):
+					repos.append(self.repositories.get_name_for_location(tree))
+
 			for cpv in iterfunc(mylist):
-				try:
-					metadata =3D dict(zip(aux_keys,
-						self.aux_get(cpv, aux_keys)))
-				except KeyError:
-					# ebuild masked by corruption
-					continue
-				if not eapi_is_supported(metadata["EAPI"]):
-					continue
-				if mydep.slot and mydep.slot !=3D metadata["SLOT"]:
-					continue
-				if settings._getMissingKeywords(cpv, metadata):
-					continue
-				if settings._getMaskAtom(cpv, metadata):
-					continue
-				if local_config:
-					metadata["USE"] =3D ""
-					if "?" in metadata["LICENSE"] or "?" in metadata["PROPERTIES"]:
-						self.doebuild_settings.setcpv(cpv, mydb=3Dmetadata)
-						metadata["USE"] =3D self.doebuild_settings.get("USE", "")
+				for repo in repos:
 					try:
-						if settings._getMissingLicenses(cpv, metadata):
-							continue
-						if settings._getMissingProperties(cpv, metadata):
-							continue
-					except InvalidDependString:
+						metadata =3D dict(zip(aux_keys,
+							self.aux_get(cpv, aux_keys, myrepo=3Drepo)))
+					except KeyError:
+						# ebuild not in this repo, or masked by corruption
 						continue
-				if mydep.use:
-					has_iuse =3D False
-					for has_iuse in self._iter_match_use(mydep, [cpv]):
-						break
-					if not has_iuse:
+					if not eapi_is_supported(metadata["EAPI"]):
 						continue
-				myval =3D cpv
-				break
+					if mydep.slot is not None and \
+						mydep.slot !=3D metadata["SLOT"]:
+						continue
+					if settings._getMissingKeywords(cpv, metadata):
+						continue
+					if settings._getMaskAtom(cpv, metadata):
+						continue
+					if local_config:
+						metadata["USE"] =3D ""
+						if "?" in metadata["LICENSE"] or \
+							"?" in metadata["PROPERTIES"]:
+							self.doebuild_settings.setcpv(cpv, mydb=3Dmetadata)
+							metadata["USE"] =3D \
+								self.doebuild_settings.get("PORTAGE_USE", "")
+						try:
+							if settings._getMissingLicenses(cpv, metadata):
+								continue
+							if settings._getMissingProperties(cpv, metadata):
+								continue
+						except InvalidDependString:
+							continue
+					if mydep.use is not None:
+						mydep_with_repo =3D mydep
+						if repo is not None and mydep.repo is None:
+							mydep_with_repo =3D mydep.with_repo(repo)
+						has_iuse =3D False
+						for has_iuse in self._iter_match_use(
+							mydep_with_repo, [cpv]):
+							break
+						if has_iuse is False:
+							continue
+					myval =3D cpv
+					break
+				if myval:
+					break
+
 		elif level =3D=3D "bestmatch-list":
 			#dep match -- find best match but restrict search to sublist
 			#no point in calling xmatch again since we're not caching list deps