As Michael Haubenwallner pointed out, in interrevisions, 01.1 should be
authorFabian Groffen <grobian@gentoo.org>
Thu, 5 Apr 2007 16:12:42 +0000 (16:12 -0000)
committerFabian Groffen <grobian@gentoo.org>
Thu, 5 Apr 2007 16:12:42 +0000 (16:12 -0000)
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
pym/portage/versions.py

index ebf234991d61a09a7b8a4abea0275963b7d68dae..8065a5a76617bf7789c2d2a64455ba9a4c63c01c 100644 (file)
@@ -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
index 561bc5cae4a99e95412a75697500ad01d81a012f..b3bae4126166ec7a30ab704463395a850b6e6752 100644 (file)
@@ -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