From: "Zac Medico" <zmedico@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/portage:master commit in: pym/portage/, pym/_emerge/
Date: Mon, 11 Jun 2012 05:58:29 +0000 (UTC) [thread overview]
Message-ID: <1339394250.c0af31c9f216c86719486a8568aa07e6f32e4fc8.zmedico@gentoo> (raw)
commit: c0af31c9f216c86719486a8568aa07e6f32e4fc8
Author: Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Mon Jun 11 05:32:24 2012 +0000
Commit: Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Mon Jun 11 05:57:30 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=c0af31c9
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'] = self.root_config.settings.get('CHOST', '')
eapi_attrs = _get_eapi_attrs(self.metadata["EAPI"])
- slot = self.slot
- if _get_slot_re(eapi_attrs).match(slot) is None:
+ self.cpv = _pkg_str(self.cpv, slot=self.metadata["SLOT"],
+ repo=self.metadata.get('repository', ''),
+ eapi=self.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 = '0'
- self.cpv = _pkg_str(self.cpv, slot=slot,
- repo=self.metadata.get('repository', ''))
+ "SLOT: invalid value: '%s'" % self.metadata["SLOT"])
self.cp = self.cpv.cp
+ self.slot = self.cpv.slot
# sync metadata with validated repo (may be UNKNOWN_REPO)
self.metadata['repository'] = 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 = portage.dep.Atom("%s%s%s" % (self.cp, _slot_separator, slot))
+ self.slot_atom = Atom("%s%s%s" % (self.cp, _slot_separator, self.slot))
self.category, self.pf = portage.catsplit(self.cpv)
self.cpv_split = self.cpv.cpv_split
self.version = self.cpv.version
@@ -588,7 +586,7 @@ class _PackageMetadataWrapper(_PackageMetadataWrapperBase):
__slots__ = ("_pkg",)
_wrapped_keys = frozenset(
- ["COUNTER", "INHERITED", "IUSE", "SLOT", "USE", "_mtime_"])
+ ["COUNTER", "INHERITED", "IUSE", "USE", "_mtime_"])
_use_conditional_keys = frozenset(
['LICENSE', 'PROPERTIES', 'PROVIDE', 'RESTRICT',])
@@ -661,9 +659,6 @@ class _PackageMetadataWrapper(_PackageMetadataWrapperBase):
self._pkg.iuse = self._pkg._iuse(
v.split(), self._pkg.root_config.settings._iuse_implicit_match)
- def _set_slot(self, k, v):
- self._pkg.slot = 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:
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'] = self
if slot is not None:
- self.__dict__['slot'] = slot
+ slot_match = _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'] = '0'
+ self.__dict__['slot_invalid'] = slot
+ else:
+ self.__dict__['slot'] = slot
+
if repo is not None:
repo = _gen_valid_repo(repo)
if not repo:
next reply other threads:[~2012-06-11 5:58 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-06-11 5:58 Zac Medico [this message]
-- strict thread matches above, loose matches on Subject: below --
2013-08-12 21:25 [gentoo-commits] proj/portage:master commit in: pym/portage/, pym/_emerge/ Zac Medico
2013-07-22 22:32 Arfrever Frehtes Taifersar Arahesis
2012-09-26 2:15 Zac Medico
2012-09-21 18:40 Zac Medico
2012-06-11 5:32 Zac Medico
2012-06-11 0:58 Zac Medico
2011-10-27 3:13 Zac Medico
2011-10-25 8:25 Zac Medico
2011-10-15 6:11 Zac Medico
2011-07-12 23:21 Zac Medico
2011-07-07 4:36 Zac Medico
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1339394250.c0af31c9f216c86719486a8568aa07e6f32e4fc8.zmedico@gentoo \
--to=zmedico@gentoo.org \
--cc=gentoo-commits@lists.gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox