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
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 = ""
16 ## first look for non-numeric version component
17 selfm = re.match('([^0-9]*)(.*)', selfversion)
19 elif (self.epoch < ref.epoch):
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))
29 + r = self._versioncompare(self_ver_comps.group(2), ref_ver_comps.group(2))
30 + #print "compare: %s vs %s = %d" % (self, ref, r)
34 + return str(self.epoch) + ":" + self.version
36 def parse_version(versionstr):
39 return self.packages[key]
41 if __name__ == "__main__":
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
51 package.set_package("FooBar")