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 1QmTNa-0007kq-Js for garchives@archives.gentoo.org; Thu, 28 Jul 2011 16:24:10 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id CCD6E21C21C; Thu, 28 Jul 2011 16:24:02 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id 9009421C1A8 for ; Thu, 28 Jul 2011 16:24:02 +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 026641B401C for ; Thu, 28 Jul 2011 16:24:02 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by pelican.gentoo.org (Postfix) with ESMTP id D98338004C for ; Thu, 28 Jul 2011 16:24:00 +0000 (UTC) From: "Michał Górny" To: gentoo-commits@lists.gentoo.org Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Michał Górny" Message-ID: <61f625081294e1948bfa23da71ace43f332cd4ce.mgorny@gentoo> Subject: [gentoo-commits] proj/gentoopm:master commit in: gentoopm/portagepm/ X-VCS-Repository: proj/gentoopm X-VCS-Files: gentoopm/portagepm/depend.py gentoopm/portagepm/pkg.py X-VCS-Directories: gentoopm/portagepm/ X-VCS-Committer: mgorny X-VCS-Committer-Name: Michał Górny X-VCS-Revision: 61f625081294e1948bfa23da71ace43f332cd4ce Date: Thu, 28 Jul 2011 16:24:00 +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: 5afde7e3b66733b09353138d5e9d4682 commit: 61f625081294e1948bfa23da71ace43f332cd4ce Author: Micha=C5=82 G=C3=B3rny gentoo org> AuthorDate: Thu Jul 28 14:53:28 2011 +0000 Commit: Micha=C5=82 G=C3=B3rny gentoo org> CommitDate: Thu Jul 28 14:53:28 2011 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=3Dproj/gentoopm.git;= a=3Dcommit;h=3D61f62508 Portage: support '^^' in depstrings (using a hack). --- gentoopm/portagepm/depend.py | 22 ++++++++++++++++++---- gentoopm/portagepm/pkg.py | 5 +++++ 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/gentoopm/portagepm/depend.py b/gentoopm/portagepm/depend.py index d4f3c33..f33fd5c 100644 --- a/gentoopm/portagepm/depend.py +++ b/gentoopm/portagepm/depend.py @@ -6,7 +6,7 @@ from portage.dep import paren_reduce, use_reduce =20 from gentoopm.basepm.depend import PMPackageDepSet, PMConditionalDep, \ - PMAnyOfDep, PMAllOfDep, PMBaseDep + PMAnyOfDep, PMAllOfDep, PMExactlyOneOfDep, PMBaseDep from gentoopm.portagepm.atom import PortageAtom =20 class PortageBaseDep(PMBaseDep): @@ -21,6 +21,8 @@ class PortageBaseDep(PMBaseDep): yield PortageAnyOfDep(next(it), self._puse) elif d =3D=3D '&&': yield PortageAllOfDep(next(it), self._puse) + elif d =3D=3D '__xor__?': + yield PortageExactlyOneOfDep(next(it), self._puse) elif d.endswith('?'): yield PortageConditionalUseDep(next(it), self._puse, d.rstrip('?')) @@ -33,6 +35,9 @@ class PortageAnyOfDep(PMAnyOfDep, PortageBaseDep): class PortageAllOfDep(PMAllOfDep, PortageBaseDep): pass =20 +class PortageExactlyOneOfDep(PMExactlyOneOfDep, PortageBaseDep): + pass + class PortageConditionalUseDep(PMConditionalDep, PortageBaseDep): def __init__(self, deps, puse, flag): PortageBaseDep.__init__(self, deps, puse) @@ -44,7 +49,11 @@ class PortageConditionalUseDep(PMConditionalDep, Porta= geBaseDep): =20 class PortagePackageDepSet(PMPackageDepSet, PortageBaseDep): def __init__(self, s, puse): - self._depstr =3D s + self._use_reducable =3D not '^^' in s + if not self._use_reducable: + # ARGV, paren_reduce() doesn't handle ^^ + # so we hack it to a __xor__?, UGLY! + self._depstr =3D s.replace('^^', '__xor__?') PortageBaseDep.__init__(self, None, puse) =20 def __iter__(self): @@ -54,8 +63,10 @@ class PortagePackageDepSet(PMPackageDepSet, PortageBas= eDep): =20 @property def without_conditionals(self): - return PortageUncondAllOfDep( - use_reduce(self._depstr, self._puse)) + if self._use_reducable: + return PortageUncondAllOfDep( + use_reduce(self._depstr, self._puse)) + return PMPackageDepSet.without_conditionals.fget(self) =20 class PortageUncondDep(PortageBaseDep): def __init__(self, deps): @@ -80,3 +91,6 @@ class PortageUncondAnyOfDep(PMAnyOfDep, PortageUncondDe= p): =20 class PortageUncondAllOfDep(PMAllOfDep, PortageUncondDep): pass + +class PortageUncondExactlyOneOfDep(PMExactlyOneOfDep, PortageUncondDep): + pass diff --git a/gentoopm/portagepm/pkg.py b/gentoopm/portagepm/pkg.py index ed4c80c..221e728 100644 --- a/gentoopm/portagepm/pkg.py +++ b/gentoopm/portagepm/pkg.py @@ -183,6 +183,11 @@ class PortageDBCPV(PMPackage, CompletePortageAtom): return PortagePackageDepSet(self._aux_get('PDEPEND'), self._applied_use) =20 + @property + def required_use(self): + return PortagePackageDepSet(self._aux_get('REQUIRED_USE'), + self._applied_use) + def __str__(self): return '=3D%s' % self._cpv =20