diff options
author | René 'Necoro' Neumann <necoro@necoro.net> | 2009-10-05 15:25:22 +0200 |
---|---|---|
committer | René 'Necoro' Neumann <necoro@necoro.net> | 2009-10-05 15:25:22 +0200 |
commit | ce9f4821e2238ca2961002ad3f872e8432267ee2 (patch) | |
tree | e79dd48001e5a54d863ae0c43ab84ecc71e5e976 /portato/backend/portage/system.py | |
parent | 7a38fcc10c89f401cdd2acb716f5200ad906fd9c (diff) | |
download | portato-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/system.py')
-rw-r--r-- | portato/backend/portage/system.py | 21 |
1 files changed, 19 insertions, 2 deletions
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): |