diff options
Diffstat (limited to 'meta/packages/ipkg-utils/ipkg-utils/ipkg-py-sane-vercompare.patch')
-rw-r--r-- | meta/packages/ipkg-utils/ipkg-utils/ipkg-py-sane-vercompare.patch | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/meta/packages/ipkg-utils/ipkg-utils/ipkg-py-sane-vercompare.patch b/meta/packages/ipkg-utils/ipkg-utils/ipkg-py-sane-vercompare.patch new file mode 100644 index 0000000000..00ee391405 --- /dev/null +++ b/meta/packages/ipkg-utils/ipkg-utils/ipkg-py-sane-vercompare.patch | |||
@@ -0,0 +1,51 @@ | |||
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") | ||