Unslung: glibc.bb and unslung.conf - make Unslung build with bitbake 1.8
[openembedded.git] / packages / ipkg-utils / ipkg-utils / ipkg-py-sane-vercompare.patch
1 Only in ipkg-utils: ipkg-py-sane-vercompare.patch
2 diff -ur ipkg-utils.org/ipkg.py ipkg-utils/ipkg.py
3 --- ipkg-utils.org/ipkg.py      2005-01-08 18:08:52.000000000 +0000
4 +++ ipkg-utils/ipkg.py  2007-04-04 11:52:46.000000000 +0000
5 @@ -48,9 +48,9 @@
6          self.epoch = epoch
7          self.version = version
8  
9 -    def _versioncompare(self, ref):
10 -        selfversion = self.version
11 -        refversion = ref.version
12 +    def _versioncompare(self, selfversion, refversion):
13 +        if not selfversion: selfversion = ""
14 +        if not refversion: refversion = ""
15          while 1:
16              ## first look for non-numeric version component
17              selfm = re.match('([^0-9]*)(.*)', selfversion)
18 @@ -89,7 +89,18 @@
19          elif (self.epoch < ref.epoch):
20              return -1
21          else:
22 -            return self._versioncompare(ref)
23 +           self_ver_comps = re.match(r"(.+?)(-r.+)?$", self.version)
24 +           ref_ver_comps = re.match(r"(.+?)(-r.+)?$", ref.version)
25 +           #print (self_ver_comps.group(1), self_ver_comps.group(2))
26 +           #print (ref_ver_comps.group(1), ref_ver_comps.group(2))
27 +           r = self._versioncompare(self_ver_comps.group(1), ref_ver_comps.group(1))
28 +           if r == 0:
29 +               r = self._versioncompare(self_ver_comps.group(2), ref_ver_comps.group(2))
30 +           #print "compare: %s vs %s = %d" % (self, ref, r)
31 +           return r
32 +
33 +    def __str__(self):
34 +        return str(self.epoch) + ":" + self.version
35  
36  def parse_version(versionstr):
37      epoch = 0
38 @@ -445,6 +456,13 @@
39          return self.packages[key]
40  
41  if __name__ == "__main__":
42 +
43 +    assert Version(0, "1.2.2-r1").compare(Version(0, "1.2.3-r0")) == -1
44 +    assert Version(0, "1.2.2-r0").compare(Version(0, "1.2.2+cvs20070308-r0")) == -1
45 +    assert Version(0, "1.2.2+cvs20070308").compare(Version(0, "1.2.2-r0")) == 1
46 +    assert Version(0, "1.2.2-r0").compare(Version(0, "1.2.2-r0")) == 0
47 +    assert Version(0, "1.2.2-r5").compare(Version(0, "1.2.2-r0")) == 1
48 +
49      package = Package()
50  
51      package.set_package("FooBar")