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 1SdxeM-0006H9-32 for garchives@archives.gentoo.org; Mon, 11 Jun 2012 05:58:52 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 569D9E0602; Mon, 11 Jun 2012 05:58:31 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id 10792E0602 for ; Mon, 11 Jun 2012 05:58:30 +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 4C09D1B4016 for ; Mon, 11 Jun 2012 05:58:30 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by hornbill.gentoo.org (Postfix) with ESMTP id 14F90E5430 for ; Mon, 11 Jun 2012 05:58:29 +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: <1339394250.c0af31c9f216c86719486a8568aa07e6f32e4fc8.zmedico@gentoo> Subject: [gentoo-commits] proj/portage:master commit in: pym/portage/, pym/_emerge/ X-VCS-Repository: proj/portage X-VCS-Files: pym/_emerge/Package.py pym/portage/versions.py X-VCS-Directories: pym/portage/ pym/_emerge/ X-VCS-Committer: zmedico X-VCS-Committer-Name: Zac Medico X-VCS-Revision: c0af31c9f216c86719486a8568aa07e6f32e4fc8 X-VCS-Branch: master Date: Mon, 11 Jun 2012 05:58:29 +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: b92106b4-15b2-4655-8081-b7f922f65161 X-Archives-Hash: 494f316f7df74b5328d71e972370e6cc commit: c0af31c9f216c86719486a8568aa07e6f32e4fc8 Author: Zac Medico gentoo org> AuthorDate: Mon Jun 11 05:32:24 2012 +0000 Commit: Zac Medico gentoo org> CommitDate: Mon Jun 11 05:57:30 2012 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=3Dproj/portage.git;a= =3Dcommit;h=3Dc0af31c9 Package: move SLOT validation to _pkg_str --- pym/_emerge/Package.py | 23 +++++++++-------------- pym/portage/versions.py | 10 +++++++++- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/pym/_emerge/Package.py b/pym/_emerge/Package.py index 91d7606..18bc201 100644 --- a/pym/_emerge/Package.py +++ b/pym/_emerge/Package.py @@ -8,7 +8,7 @@ from portage import _encodings, _unicode_decode, _unicode= _encode from portage.cache.mappings import slot_dict_class from portage.const import EBUILD_PHASES from portage.dep import Atom, check_required_use, use_reduce, \ - paren_enclose, _get_slot_re, _slot_separator, _repo_separator + paren_enclose, _slot_separator, _repo_separator from portage.versions import _pkg_str, _unknown_repo from portage.eapi import _get_eapi_attrs from portage.exception import InvalidDependString @@ -50,16 +50,14 @@ class Package(Task): if not self.built: self.metadata['CHOST'] =3D self.root_config.settings.get('CHOST', '') eapi_attrs =3D _get_eapi_attrs(self.metadata["EAPI"]) - slot =3D self.slot - if _get_slot_re(eapi_attrs).match(slot) is None: + self.cpv =3D _pkg_str(self.cpv, slot=3Dself.metadata["SLOT"], + repo=3Dself.metadata.get('repository', ''), + eapi=3Dself.metadata["EAPI"]) + if hasattr(self.cpv, 'slot_invalid'): self._invalid_metadata('SLOT.invalid', - "SLOT: invalid value: '%s'" % slot) - # Avoid an InvalidAtom exception when creating slot_atom. - # This package instance will be masked due to empty SLOT. - slot =3D '0' - self.cpv =3D _pkg_str(self.cpv, slot=3Dslot, - repo=3Dself.metadata.get('repository', '')) + "SLOT: invalid value: '%s'" % self.metadata["SLOT"]) self.cp =3D self.cpv.cp + self.slot =3D self.cpv.slot # sync metadata with validated repo (may be UNKNOWN_REPO) self.metadata['repository'] =3D self.cpv.repo if (self.iuse.enabled or self.iuse.disabled) and \ @@ -67,7 +65,7 @@ class Package(Task): if not self.installed: self._invalid_metadata('EAPI.incompatible', "IUSE contains defaults, but EAPI doesn't allow them") - self.slot_atom =3D portage.dep.Atom("%s%s%s" % (self.cp, _slot_separat= or, slot)) + self.slot_atom =3D Atom("%s%s%s" % (self.cp, _slot_separator, self.slo= t)) self.category, self.pf =3D portage.catsplit(self.cpv) self.cpv_split =3D self.cpv.cpv_split self.version =3D self.cpv.version @@ -588,7 +586,7 @@ class _PackageMetadataWrapper(_PackageMetadataWrapper= Base): =20 __slots__ =3D ("_pkg",) _wrapped_keys =3D frozenset( - ["COUNTER", "INHERITED", "IUSE", "SLOT", "USE", "_mtime_"]) + ["COUNTER", "INHERITED", "IUSE", "USE", "_mtime_"]) _use_conditional_keys =3D frozenset( ['LICENSE', 'PROPERTIES', 'PROVIDE', 'RESTRICT',]) =20 @@ -661,9 +659,6 @@ class _PackageMetadataWrapper(_PackageMetadataWrapper= Base): self._pkg.iuse =3D self._pkg._iuse( v.split(), self._pkg.root_config.settings._iuse_implicit_match) =20 - def _set_slot(self, k, v): - self._pkg.slot =3D v - def _set_counter(self, k, v): if isinstance(v, basestring): try: diff --git a/pym/portage/versions.py b/pym/portage/versions.py index a838800..a1ded67 100644 --- a/pym/portage/versions.py +++ b/pym/portage/versions.py @@ -19,6 +19,7 @@ else: =20 import portage portage.proxy.lazyimport.lazyimport(globals(), + 'portage.dep:_get_slot_re', 'portage.repository.config:_gen_valid_repo', 'portage.util:cmp_sort_key', ) @@ -355,7 +356,14 @@ class _pkg_str(_unicode): # for match_from_list introspection self.__dict__['cpv'] =3D self if slot is not None: - self.__dict__['slot'] =3D slot + slot_match =3D _get_slot_re(_get_eapi_attrs(eapi)).match(slot) + if slot_match is None: + # Avoid an InvalidAtom exception when creating SLOT atoms + self.__dict__['slot'] =3D '0' + self.__dict__['slot_invalid'] =3D slot + else: + self.__dict__['slot'] =3D slot + if repo is not None: repo =3D _gen_valid_repo(repo) if not repo: