From 92fb10a708a1d67fd3e57a5833b2efad5dd7770f Mon Sep 17 00:00:00 2001 From: Fabian Groffen Date: Thu, 5 Apr 2007 16:12:42 +0000 Subject: [PATCH] As Michael Haubenwallner pointed out, in interrevisions, 01.1 should be less than 01.10, which it is not if you interpret it as a float. Instead pick the both components as separate integer values and compare the sub-part if the main part is equal. Fix crash in emerge --info that occurs if an interrevision package is emerged which is listed. As far as I am aware this the cast to an int is pointless here (pym/emerge/__init__.py) as it is processed as string in portage.vercmp anyway. svn path=/main/branches/prefix/; revision=6335 --- pym/emerge/__init__.py | 2 +- pym/portage/versions.py | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/pym/emerge/__init__.py b/pym/emerge/__init__.py index ebf234991..8065a5a76 100644 --- a/pym/emerge/__init__.py +++ b/pym/emerge/__init__.py @@ -157,7 +157,7 @@ def sorted_versions(verlist): for ver in verlist: verparts = ver.split("-") if len(verparts) == 2: - verrev = int(verparts[1][1:]) + verrev = verparts[1][1:] else: verrev = 0 x = 0 diff --git a/pym/portage/versions.py b/pym/portage/versions.py index 561bc5cae..b3bae4126 100644 --- a/pym/portage/versions.py +++ b/pym/portage/versions.py @@ -153,18 +153,25 @@ def vercmp(ver1, ver2, silent=1): # while still staying in the main tree versioning scheme. if match1.group(10): if match1.group(10)[0] == '0': - r1 = float(match1.group(10)[1:]) + t = match1.group(10)[1:].split(".") + r1 = int(t[1]) + r3 = int(t[2]) else: r1 = int(match1.group(10)) else: r1 = 0 if match2.group(10): if match2.group(10)[0] == '0': - r2 = float(match2.group(10)[1:]) + t = match2.group(10)[1:].split(".") + r2 = int(t[1]) + r4 = int(t[2]) else: r2 = int(match2.group(10)) else: r2 = 0 + if r1 == r2 and (r3 != 0 or r4 != 0): + r1 = r3 + r2 = r4 vercmp_cache[mykey] = r1 - r2 return r1 - r2 -- 2.26.2