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 1QeZ7F-0000k3-Bv for garchives@archives.gentoo.org; Wed, 06 Jul 2011 20:54:37 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 8AC4621C12E; Wed, 6 Jul 2011 20:54:20 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id 491A221C12D for ; Wed, 6 Jul 2011 20:54:20 +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 B10EA2AC00F for ; Wed, 6 Jul 2011 20:54:19 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by pelican.gentoo.org (Postfix) with ESMTP id D57FF8003F for ; Wed, 6 Jul 2011 20:54:18 +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: <12de332e8e4c16255a8353fce52e58a309c9847e.mgorny@gentoo> Subject: [gentoo-commits] proj/gentoopm:master commit in: gentoopm/portagepm/ X-VCS-Repository: proj/gentoopm X-VCS-Files: gentoopm/portagepm/pkg.py gentoopm/portagepm/repo.py X-VCS-Directories: gentoopm/portagepm/ X-VCS-Committer: mgorny X-VCS-Committer-Name: Michał Górny X-VCS-Revision: 12de332e8e4c16255a8353fce52e58a309c9847e Date: Wed, 6 Jul 2011 20:54:18 +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: f02413b62b42811fa2cf60d748e9e3b8 commit: 12de332e8e4c16255a8353fce52e58a309c9847e Author: Micha=C5=82 G=C3=B3rny gentoo org> AuthorDate: Wed Jul 6 18:15:47 2011 +0000 Commit: Micha=C5=82 G=C3=B3rny gentoo org> CommitDate: Wed Jul 6 18:15:47 2011 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=3Dproj/gentoopm.git;= a=3Dcommit;h=3D12de332e portage: reimplement complete package sorting. --- gentoopm/portagepm/pkg.py | 27 ++++++++++++--------------- gentoopm/portagepm/repo.py | 3 ++- 2 files changed, 14 insertions(+), 16 deletions(-) diff --git a/gentoopm/portagepm/pkg.py b/gentoopm/portagepm/pkg.py index a92af4e..e5e9469 100644 --- a/gentoopm/portagepm/pkg.py +++ b/gentoopm/portagepm/pkg.py @@ -3,13 +3,12 @@ # (c) 2011 Micha=C5=82 G=C3=B3rny # Released under the terms of the 2-clause BSD license. =20 -import portage.versions +from portage.versions import cpv_getkey, cpv_getversion, vercmp, \ + catsplit, catpkgsplit, pkgsplit =20 from gentoopm.basepm.metadata import PMPackageMetadata from gentoopm.basepm.pkg import PMPackage =20 -# XXX: cleanup all this mess! - class PortageDBCPV(PMPackage): def __init__(self, cpv, dbapi): self._cpv =3D cpv @@ -25,9 +24,10 @@ class PortageDBCPV(PMPackage): return self._dbapi.getpath(self._cpv) =20 class PortageCPV(PortageDBCPV): - def __init__(self, cpv, dbapi, tree =3D None): + def __init__(self, cpv, dbapi, tree, repo_prio): PortageDBCPV.__init__(self, cpv, dbapi) self._tree =3D tree + self._repo_prio =3D repo_prio =20 @property def metadata(self): @@ -41,12 +41,9 @@ class PortageCPV(PortageDBCPV): if not isinstance(other, PortageCPV): raise TypeError('Unable to compare %s against %s' % \ self, other) - if portage.versions.cpv_getkey(self._cpv) !=3D \ - portage.versions.cpv_getkey(other._cpv): - raise TypeError('Unable to compare CPVs with different PNs') - return portage.versions.vercmp( - portage.versions.cpv_getversion(self._cpv), - portage.versions.cpv_getversion(other._cpv)) + return cmp(cpv_getkey(self._cpv), cpv_getkey(other._cpv)) \ + or vercmp(cpv_getversion(self._cpv), cpv_getversion(other._cpv)) \ + or cmp(self._repo_prio, other._repo_prio) =20 class PortageDBMetadata(PMPackageMetadata): def __init__(self, cpv, dbapi): @@ -60,23 +57,23 @@ class PortageDBMetadata(PMPackageMetadata): =20 @property def CATEGORY(self): - return portage.versions.catsplit(self._cpv)[0] + return catsplit(self._cpv)[0] =20 @property def PN(self): - return portage.versions.catpkgsplit(self._cpv)[1] + return catpkgsplit(self._cpv)[1] =20 @property def PV(self): - return portage.versions.pkgsplit(self._cpv)[1] + return pkgsplit(self._cpv)[1] =20 @property def PR(self): - return portage.versions.pkgsplit(self._cpv)[2] + return pkgsplit(self._cpv)[2] =20 @property def PVR(self): - return portage.versions.cpv_getversion(self._cpv) + return cpv_getversion(self._cpv) =20 class PortageMetadata(PortageDBMetadata): def __init__(self, cpv, dbapi, tree): diff --git a/gentoopm/portagepm/repo.py b/gentoopm/portagepm/repo.py index aece5f6..7f4590d 100644 --- a/gentoopm/portagepm/repo.py +++ b/gentoopm/portagepm/repo.py @@ -44,9 +44,10 @@ class PortageRepository(PortDBRepository, PMEbuildRepo= sitory): =20 def __iter__(self): path =3D self.path + prio =3D self._repo.priority for cp in self._dbapi.cp_all(trees =3D (path,)): for p in self._dbapi.cp_list(cp, mytree =3D path): - yield PortageCPV(p, self._dbapi, path) + yield PortageCPV(p, self._dbapi, path, prio) =20 @property def name(self):