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-0000kC-Kt 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 B31F521C130; 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 7667021C12D 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 EBF7B2AC008 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 0CB4C80042 for ; Wed, 6 Jul 2011 20:54:19 +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: <92537be60a116b1633c55b34df3c69a9cb8f5629.mgorny@gentoo> Subject: [gentoo-commits] proj/gentoopm:master commit in: gentoopm/paludispm/ X-VCS-Repository: proj/gentoopm X-VCS-Files: gentoopm/paludispm/__init__.py gentoopm/paludispm/pkg.py gentoopm/paludispm/repo.py X-VCS-Directories: gentoopm/paludispm/ X-VCS-Committer: mgorny X-VCS-Committer-Name: Michał Górny X-VCS-Revision: 92537be60a116b1633c55b34df3c69a9cb8f5629 Date: Wed, 6 Jul 2011 20:54:19 +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: 22d6fb4dda6acc086c98b82c6d9c7847 commit: 92537be60a116b1633c55b34df3c69a9cb8f5629 Author: Micha=C5=82 G=C3=B3rny gentoo org> AuthorDate: Wed Jul 6 20:12:23 2011 +0000 Commit: Micha=C5=82 G=C3=B3rny gentoo org> CommitDate: Wed Jul 6 20:13:20 2011 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=3Dproj/gentoopm.git;= a=3Dcommit;h=3D92537be6 paludis: support sorting ebuilds. --- gentoopm/paludispm/__init__.py | 7 ++++++- gentoopm/paludispm/pkg.py | 10 ++++++---- gentoopm/paludispm/repo.py | 22 +++++++++++++++++++--- 3 files changed, 31 insertions(+), 8 deletions(-) diff --git a/gentoopm/paludispm/__init__.py b/gentoopm/paludispm/__init__= .py index 4e62095..e06b5aa 100644 --- a/gentoopm/paludispm/__init__.py +++ b/gentoopm/paludispm/__init__.py @@ -6,7 +6,8 @@ import paludis =20 from gentoopm.basepm import PackageManager -from gentoopm.paludispm.repo import PaludisRepoDict, PaludisInstalledRep= o +from gentoopm.paludispm.repo import PaludisRepoDict, PaludisInstalledRep= o, \ + PaludisStackRepo =20 class PaludisPM(PackageManager): name =3D 'paludis' @@ -21,3 +22,7 @@ class PaludisPM(PackageManager): @property def installed(self): return PaludisInstalledRepo(self._env) + + @property + def stack(self): + return PaludisStackRepo(self._env) diff --git a/gentoopm/paludispm/pkg.py b/gentoopm/paludispm/pkg.py index c816f96..99fc707 100644 --- a/gentoopm/paludispm/pkg.py +++ b/gentoopm/paludispm/pkg.py @@ -9,8 +9,10 @@ from gentoopm.basepm.metadata import PMPackageMetadata from gentoopm.basepm.pkg import PMPackage =20 class PaludisID(PMPackage): - def __init__(self, pkg): + def __init__(self, pkg, num =3D 0, enum_id =3D None): self._pkg =3D pkg + self._num =3D num + self._enum_id =3D enum_id =20 @property def metadata(self): @@ -24,9 +26,9 @@ class PaludisID(PMPackage): if not isinstance(other, PaludisID): raise TypeError('Unable to compare %s against %s' % \ self, other) - if self._pkg.name !=3D other._pkg.name: - raise TypeError('Unable to compare IDs with different PNs') - return self._pkg.version.__cmp__(other._pkg.version) + if self._enum_id !=3D other._enum_id: + raise TypeError('Unable to compare results of two enumerations') + return cmp(self._num, other._num) =20 class PaludisMetadata(PMPackageMetadata): def __init__(self, pkg): diff --git a/gentoopm/paludispm/repo.py b/gentoopm/paludispm/repo.py index 71214de..cd8cc16 100644 --- a/gentoopm/paludispm/repo.py +++ b/gentoopm/paludispm/repo.py @@ -18,13 +18,29 @@ class PaludisRepoDict(PMRepositoryDict): def __init__(self, env): self._env =3D env =20 +class PaludisEnumID(object): + pass + class PaludisRepository(PMRepository): + def __init__(self, env): + self._env =3D env + def __iter__(self): - for p in self._env[paludis.Selection.AllVersionsSorted( + enum =3D PaludisEnumID() + for i, p in enumerate(self._env[paludis.Selection.AllVersionsSorted( paludis.FilteredGenerator( paludis.Generator.InRepository(self._repo.name), - paludis.Filter.All()))]: - yield PaludisID(p) + paludis.Filter.All()))]): + yield PaludisID(p, i, enum) + +class PaludisStackRepo(PaludisRepository): + def __iter__(self): + enum =3D PaludisEnumID() + for i, p in enumerate(self._env[paludis.Selection.AllVersionsSorted( + paludis.FilteredGenerator( + paludis.Generator.All(), + paludis.Filter.SupportsInstallAction()))]): + yield PaludisID(p, i, enum) =20 class PaludisLivefsRepository(PaludisRepository, PMEbuildRepository): def __init__(self, repo_obj, env):