diff options
Diffstat (limited to 'portato/backend/portage')
-rw-r--r-- | portato/backend/portage/package.py | 14 | ||||
-rw-r--r-- | portato/backend/portage/system.py | 21 |
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 94553c6..620ab73 100644 --- a/portato/backend/portage/system.py +++ b/portato/backend/portage/system.py @@ -125,6 +125,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. @@ -223,8 +237,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): |