summaryrefslogtreecommitdiff
path: root/portato/backend/portage
diff options
context:
space:
mode:
authorRené 'Necoro' Neumann <necoro@necoro.net>2009-10-05 15:25:22 +0200
committerRené 'Necoro' Neumann <necoro@necoro.net>2009-10-05 15:25:22 +0200
commitce9f4821e2238ca2961002ad3f872e8432267ee2 (patch)
treee79dd48001e5a54d863ae0c43ab84ecc71e5e976 /portato/backend/portage
parent7a38fcc10c89f401cdd2acb716f5200ad906fd9c (diff)
downloadportato-ce9f4821e2238ca2961002ad3f872e8432267ee2.tar.gz
portato-ce9f4821e2238ca2961002ad3f872e8432267ee2.tar.bz2
portato-ce9f4821e2238ca2961002ad3f872e8432267ee2.zip
Enhanced system.sort_package_list to also sort CPVs
Diffstat (limited to 'portato/backend/portage')
-rw-r--r--portato/backend/portage/package.py14
-rw-r--r--portato/backend/portage/system.py21
2 files changed, 21 insertions, 14 deletions
diff --git a/portato/backend/portage/package.py b/portato/backend/portage/package.py
index 2b40e41..79af79b 100644
--- a/portato/backend/portage/package.py
+++ b/portato/backend/portage/package.py
@@ -294,18 +294,8 @@ class PortagePackage (Package):
return self.get_package_settings("USE", installed = True).split()
else: return []
- def compare_version(self,other):
- v1 = self._scpv
- v2 = portage.catpkgsplit(other.get_cpv())
- # if category is different
- if v1[0] != v2[0]:
- return cmp(v1[0],v2[0])
- # if name is different
- elif v1[1] != v2[1]:
- return cmp(v1[1],v2[1])
- # Compare versions
- else:
- return portage.pkgcmp(v1[1:],v2[1:])
+ def __cmp__ (self, other):
+ return system.compare_versions(self.get_cpv(), other.get_cpv())
def matches (self, criterion):
# cpv_matches needs explicit slot info
diff --git a/portato/backend/portage/system.py b/portato/backend/portage/system.py
index d7c7806..83eb37a 100644
--- a/portato/backend/portage/system.py
+++ b/portato/backend/portage/system.py
@@ -120,6 +120,20 @@ class PortageSystem (SystemInterface):
else:
return True
+ def compare_versions(self, v1, v2):
+ v1 = self.split_cpv(v1)
+ v2 = self.split_cpv(v2)
+
+ # if category is different
+ if v1[0] != v2[0]:
+ return cmp(v1[0],v2[0])
+ # if name is different
+ elif v1[1] != v2[1]:
+ return cmp(v1[1],v2[1])
+ # Compare versions
+ else:
+ return portage.pkgcmp(v1[1:],v2[1:])
+
def with_bdeps(self):
"""Returns whether the "--with-bdeps" option is set to true.
@@ -218,8 +232,11 @@ class PortageSystem (SystemInterface):
cpv = portage.dep_getcpv(cpv)
return portage.catpkgsplit(cpv)
- def sort_package_list(self, pkglist):
- pkglist.sort(PortagePackage.compare_version) # XXX: waaah ... direct package naming... =/
+ def sort_package_list(self, pkglist, only_cpv = False):
+ if only_cpv:
+ pkglist.sort(self.compare_versions)
+ else:
+ pkglist.sort()
return pkglist
def reload_settings (self):