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 1SbLxS-00084H-1Z for garchives@archives.gentoo.org; Mon, 04 Jun 2012 01:19:46 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 0CE1FE0574; Mon, 4 Jun 2012 01:19:32 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id C132EE0574 for ; Mon, 4 Jun 2012 01:19:32 +0000 (UTC) Received: from hornbill.gentoo.org (hornbill.gentoo.org [94.100.119.163]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id D39DA1B400C for ; Mon, 4 Jun 2012 01:19:31 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by hornbill.gentoo.org (Postfix) with ESMTP id 5F259E5404 for ; Mon, 4 Jun 2012 01:19:30 +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: <1338772750.5b723290dfc9b643fec3c437fb5f39ee2ece1a6f.zmedico@gentoo> Subject: [gentoo-commits] proj/portage:master commit in: pym/_emerge/ X-VCS-Repository: proj/portage X-VCS-Files: pym/_emerge/Package.py X-VCS-Directories: pym/_emerge/ X-VCS-Committer: zmedico X-VCS-Committer-Name: Zac Medico X-VCS-Revision: 5b723290dfc9b643fec3c437fb5f39ee2ece1a6f X-VCS-Branch: master Date: Mon, 4 Jun 2012 01:19:30 +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: 035c686f-ef2d-421d-b274-e3aeea7f8850 X-Archives-Hash: 9e18625e1a2a263ae2a381e36e126305 commit: 5b723290dfc9b643fec3c437fb5f39ee2ece1a6f Author: Zac Medico gentoo org> AuthorDate: Mon Jun 4 01:19:10 2012 +0000 Commit: Zac Medico gentoo org> CommitDate: Mon Jun 4 01:19:10 2012 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=3Dproj/portage.git;a= =3Dcommit;h=3D5b723290 Package: calc visiblity on demand This delays visiblity calculations until after FakeVartree applies its metadata tweaks, so commit 650c960be3170bade8bb63ddedcd4796c75ec374 will work as intended. --- pym/_emerge/Package.py | 49 +++++++++++++++++++++++++++++++++---------= ----- 1 files changed, 34 insertions(+), 15 deletions(-) diff --git a/pym/_emerge/Package.py b/pym/_emerge/Package.py index c04fa1f..bdd4bc7 100644 --- a/pym/_emerge/Package.py +++ b/pym/_emerge/Package.py @@ -25,9 +25,9 @@ class Package(Task): "installed", "metadata", "onlydeps", "operation", "root_config", "type_name", "category", "counter", "cp", "cpv_split", - "inherited", "invalid", "iuse", "masks", "mtime", - "pf", "root", "slot", "slot_atom", "version", "visible",) + \ - ("_raw_metadata", "_use",) + "inherited", "iuse", "mtime", + "pf", "root", "slot", "slot_atom", "version") + \ + ("_invalid", "_raw_metadata", "_masks", "_use", "_visible") =20 metadata_keys =3D [ "BUILD_TIME", "CHOST", "COUNTER", "DEPEND", "EAPI", @@ -73,9 +73,6 @@ class Package(Task): if self.inherited is None: self.inherited =3D frozenset() =20 - self._validate_deps() - self.masks =3D self._masks() - self.visible =3D self._visible(self.masks) if self.operation is None: if self.onlydeps or self.installed: self.operation =3D "nomerge" @@ -89,6 +86,28 @@ class Package(Task): type_name=3Dself.type_name) self._hash_value =3D hash(self._hash_key) =20 + # These are calculated on-demand, so that they are calculated + # after FakeVartree applies its metadata tweaks. + @property + def invalid(self): + if self._invalid is None: + self._validate_deps() + if self._invalid is None: + self._invalid =3D False + return self._invalid + + @property + def masks(self): + if self._masks is None: + self._masks =3D self._eval_masks() + return self._masks + + @property + def visible(self): + if self._visible is None: + self._visible =3D self._eval_visiblity(self.masks) + return self._visible + @classmethod def _gen_hash_key(cls, cpv=3DNone, installed=3DNone, onlydeps=3DNone, operation=3DNone, repo_name=3DNone, root_config=3DNone, @@ -205,11 +224,11 @@ class Package(Task): onlydeps=3Dself.onlydeps, operation=3Dself.operation, root_config=3Dself.root_config, type_name=3Dself.type_name) =20 - def _masks(self): + def _eval_masks(self): masks =3D {} settings =3D self.root_config.settings =20 - if self.invalid is not None: + if self.invalid is not False: masks['invalid'] =3D self.invalid =20 if not settings._accept_chost(self.cpv, self.metadata): @@ -249,13 +268,13 @@ class Package(Task): pass =20 if not masks: - masks =3D None + masks =3D False =20 return masks =20 - def _visible(self, masks): + def _eval_visiblity(self, masks): =20 - if masks is not None: + if masks is not False: =20 if 'EAPI.unsupported' in masks: return False @@ -338,12 +357,12 @@ class Package(Task): _unicode_decode("%s: %s in '%s'") % (k, e, path)) =20 def _invalid_metadata(self, msg_type, msg): - if self.invalid is None: - self.invalid =3D {} - msgs =3D self.invalid.get(msg_type) + if self._invalid is None: + self._invalid =3D {} + msgs =3D self._invalid.get(msg_type) if msgs is None: msgs =3D [] - self.invalid[msg_type] =3D msgs + self._invalid[msg_type] =3D msgs msgs.append(msg) =20 def __str__(self):