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 1Pm4U9-0007q5-44 for garchives@archives.gentoo.org; Sun, 06 Feb 2011 13:17:01 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 4851BE0B40; Sun, 6 Feb 2011 13:09:49 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id 04D01E0B40 for ; Sun, 6 Feb 2011 13:09:48 +0000 (UTC) Received: from pelican.gentoo.org (unknown [66.219.59.40]) (using TLSv1 with cipher ADH-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id A5E4B1B41B5 for ; Sun, 6 Feb 2011 13:09:48 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by pelican.gentoo.org (Postfix) with ESMTP id 13F048006E for ; Sun, 6 Feb 2011 13:09:48 +0000 (UTC) From: "Thomas Sachau" To: gentoo-commits@lists.gentoo.org Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Thomas Sachau" Message-ID: <6fbb1c1c70ba82a2a06531e69b9851bf01c42e12.tommy@gentoo> Subject: [gentoo-commits] proj/portage:multilib commit in: pym/_emerge/resolver/, pym/_emerge/ X-VCS-Repository: proj/portage X-VCS-Files: pym/_emerge/Package.py pym/_emerge/resolver/output.py X-VCS-Directories: pym/_emerge/resolver/ pym/_emerge/ X-VCS-Committer: tommy X-VCS-Committer-Name: Thomas Sachau X-VCS-Revision: 6fbb1c1c70ba82a2a06531e69b9851bf01c42e12 Date: Sun, 6 Feb 2011 13:09:48 +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: d3f56957b7c0219019b54fbbcde536b6 commit: 6fbb1c1c70ba82a2a06531e69b9851bf01c42e12 Author: Brian Dolbec gmail com> AuthorDate: Sat Jan 29 09:53:36 2011 +0000 Commit: Thomas Sachau gentoo org> CommitDate: Sun Jan 30 09:11:58 2011 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=3Dproj/portage.git;a= =3Dcommit;h=3D6fbb1c1c Move most of the code to _emerge's Package object. Refine the hardmasking= code, optimizing as much as possible. --- pym/_emerge/Package.py | 45 ++++++++++++++++++++++++++++++++++= ++++++ pym/_emerge/resolver/output.py | 25 ++------------------- 2 files changed, 48 insertions(+), 22 deletions(-) diff --git a/pym/_emerge/Package.py b/pym/_emerge/Package.py index c80bad3..e7302b3 100644 --- a/pym/_emerge/Package.py +++ b/pym/_emerge/Package.py @@ -41,6 +41,8 @@ class Package(Task): =20 def __init__(self, **kwargs): Task.__init__(self, **kwargs) + # the SlotObject constructor assigns self.root_config from keyword arg= s + # and is an instance of a '_emerge.RootConfig.RootConfig class self.root =3D self.root_config.root self._raw_metadata =3D _PackageMetadataWrapperBase(self.metadata) self.metadata =3D _PackageMetadataWrapper(self, self._raw_metadata) @@ -235,6 +237,49 @@ class Package(Task): =20 return True =20 + def accepted_keyword(self): + """returns the keyword used from the ebuild's KEYWORDS string""" + =09 + keywords =3D set(self.metadata.get('KEYWORDS').split()) + accept_keywords =3D set(self.root_config.settings['ACCEPT_KEYWORDS'].s= plit()) + used_keyword =3D list(set.intersection(keywords, accept_keywords)) + if used_keyword and len(used_keyword) =3D=3D 1: + used_keyword =3D used_keyword[0] + elif len(used_keyword) > 1: + # you can raise an error here if you prefer, remove it, or set the co= rrect levels + writemsg_level( "_emerge.output.resolver.Display(), too many keywords= recieved for pkg: %s, %s" + % (pkg.cpv, used_keyword)) + used_keyword =3D used_keyword[0] + #print "pmaskdict", self.root_config.settings.pmaskdict + return used_keyword + + def isHardMasked(self): + """returns a bool if the cpv is in the list of=20 + expanded pmaskdict[cp] availble ebuilds""" + try: + # returns a list of mask atoms + pmask =3D self.root_config.settings.pmaskdict[self.cp] + except KeyError: + pmask =3D [] + if pmask: + # narrow pmask atoms down to the relevant repo + n=3D[x for x in pmask if x.split('::')[-1] in [self.repo]] + # hopefully it is down to only 1 mask atom + #print "n =3D", n + #count =3D 0 + hardmasked =3D set() + for x in n: + #expand the atom to matching available ebuilds + m =3D self.root_config.trees['porttree'].dbapi.xmatch("match-all",x) + #print "m =3D", m + for n in m: + hardmasked.update([n]) + #count +=3D 1 + #print "for x in n: loop count =3D", count, hardmasked + return self.cpv in hardmasked + return False + + def _metadata_exception(self, k, e): =20 # For unicode safety with python-2.x we need to avoid diff --git a/pym/_emerge/resolver/output.py b/pym/_emerge/resolver/output= .py index 4b90e9d..f1af30b 100644 --- a/pym/_emerge/resolver/output.py +++ b/pym/_emerge/resolver/output.py @@ -163,39 +163,20 @@ class Display(object): @param pkg: _emerge.Package instance Modifies self.verboseadd """ - accept_keywords =3D set(self.portdb.settings['ACCEPT_KEYWORDS'].split(= )) - keywords =3D set(self.portdb.aux_get(pkg.cpv, ["KEYWORDS"])[0].split()= ) - used_keyword =3D list(set.intersection(keywords, accept_keywords)) - if used_keyword and len(used_keyword) =3D=3D 1: - used_keyword =3D used_keyword[0] - elif len(used_keyword) > 1: - # you can raise an error here if you prefer, remove it, or set the co= rrect levels - writemsg_level( "_emerge.output.resolver.Display(), too many keywords= recieved for pkg: %s, %s" - % (pkg.cpv, used_keyword)) - try: - pmask =3D self.portdb.settings.pmaskdict[pkg.cp] - except KeyError: - pmask =3D [] - hardmasked =3D [] - for x in pmask: - m =3D self.portdb.xmatch("match-all",x) - for n in m: - if n not in hardmasked: - hardmasked.append(n) - + used_keyword =3D pkg.accepted_keyword() + hardmasked =3D pkg.isHardMasked() text =3D '' if '~' in used_keyword: text =3D used_keyword elif not used_keyword: text =3D '**' if text: - if pkg.cpv in hardmasked: + if hardmasked: self.verboseadd +=3D red('%s ' % text) else: self.verboseadd +=3D yellow('%s ' % text) return =20 - def map_to_use_expand(self, myvals, forced_flags=3DFalse, remove_hidden=3DTrue): """Map use expand variables