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 ) 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 ; 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 ; 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 ; Fri, 23 Sep 2011 01:48:50 +0000 (UTC) From: "Zac Medico" To: gentoo-commits@lists.gentoo.org Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Zac Medico" 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: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: quoted-printable X-Archives-Salt: X-Archives-Hash: 178a0d22288eaba6b3fa1b839af69d7b commit: 1b4ee4f4c5c01c49b91f1618f4b2ab6305f28eca Author: Zac Medico gentoo org> AuthorDate: Fri Sep 23 01:47:04 2011 +0000 Commit: Zac Medico gentoo 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