[oe-commits] org.oe.dev ipkg-utils-native 1.6+cvs20050404: Fix version comparision algorithm, now
pfalcon commit
openembedded-commits at lists.openembedded.org
Wed Apr 4 12:58:16 UTC 2007
ipkg-utils-native 1.6+cvs20050404: Fix version comparision algorithm, now
it treats version as structured notion, and compares it component by component
(epoch (was before), then upstream version, then package revision).
* Closes #2061.
Author: pfalcon at openembedded.org
Branch: org.openembedded.dev
Revision: b8bba4b97a026963b3ae921131c5cf1fdd076d84
ViewMTN: http://monotone.openembedded.org/revision.psp?id=b8bba4b97a026963b3ae921131c5cf1fdd076d84
Files:
1
packages/ipkg-utils/ipkg-utils-native/ipkg-py-sane-vercompare.patch
packages/ipkg-utils/ipkg-utils-native_1.6+cvs20050404.bb
Diffs:
#
# mt diff -r364a5bb4a79f979977f5363cd75f27498a054d5e -rb8bba4b97a026963b3ae921131c5cf1fdd076d84
#
#
#
# add_file "packages/ipkg-utils/ipkg-utils-native/ipkg-py-sane-vercompare.patch"
# content [a533f3484b87031c12b00510830579d719f4f898]
#
# patch "packages/ipkg-utils/ipkg-utils-native_1.6+cvs20050404.bb"
# from [d164cf193dee3b1357f485d440fecbaaf250ccf5]
# to [bd4992d548728ae583c7011fd8d2c7c0ffdd3866]
#
============================================================
--- packages/ipkg-utils/ipkg-utils-native/ipkg-py-sane-vercompare.patch a533f3484b87031c12b00510830579d719f4f898
+++ packages/ipkg-utils/ipkg-utils-native/ipkg-py-sane-vercompare.patch a533f3484b87031c12b00510830579d719f4f898
@@ -0,0 +1,51 @@
+Only in ipkg-utils: ipkg-py-sane-vercompare.patch
+diff -ur ipkg-utils.org/ipkg.py ipkg-utils/ipkg.py
+--- ipkg-utils.org/ipkg.py 2005-01-08 18:08:52.000000000 +0000
++++ ipkg-utils/ipkg.py 2007-04-04 11:52:46.000000000 +0000
+@@ -48,9 +48,9 @@
+ self.epoch = epoch
+ self.version = version
+
+- def _versioncompare(self, ref):
+- selfversion = self.version
+- refversion = ref.version
++ def _versioncompare(self, selfversion, refversion):
++ if not selfversion: selfversion = ""
++ if not refversion: refversion = ""
+ while 1:
+ ## first look for non-numeric version component
+ selfm = re.match('([^0-9]*)(.*)', selfversion)
+@@ -89,7 +89,18 @@
+ elif (self.epoch < ref.epoch):
+ return -1
+ else:
+- return self._versioncompare(ref)
++ self_ver_comps = re.match(r"(.+?)(-r.+)?$", self.version)
++ ref_ver_comps = re.match(r"(.+?)(-r.+)?$", ref.version)
++ #print (self_ver_comps.group(1), self_ver_comps.group(2))
++ #print (ref_ver_comps.group(1), ref_ver_comps.group(2))
++ r = self._versioncompare(self_ver_comps.group(1), ref_ver_comps.group(1))
++ if r == 0:
++ r = self._versioncompare(self_ver_comps.group(2), ref_ver_comps.group(2))
++ #print "compare: %s vs %s = %d" % (self, ref, r)
++ return r
++
++ def __str__(self):
++ return str(self.epoch) + ":" + self.version
+
+ def parse_version(versionstr):
+ epoch = 0
+@@ -445,6 +456,13 @@
+ return self.packages[key]
+
+ if __name__ == "__main__":
++
++ assert Version(0, "1.2.2-r1").compare(Version(0, "1.2.3-r0")) == -1
++ assert Version(0, "1.2.2-r0").compare(Version(0, "1.2.2+cvs20070308-r0")) == -1
++ assert Version(0, "1.2.2+cvs20070308").compare(Version(0, "1.2.2-r0")) == 1
++ assert Version(0, "1.2.2-r0").compare(Version(0, "1.2.2-r0")) == 0
++ assert Version(0, "1.2.2-r5").compare(Version(0, "1.2.2-r0")) == 1
++
+ package = Package()
+
+ package.set_package("FooBar")
============================================================
--- packages/ipkg-utils/ipkg-utils-native_1.6+cvs20050404.bb d164cf193dee3b1357f485d440fecbaaf250ccf5
+++ packages/ipkg-utils/ipkg-utils-native_1.6+cvs20050404.bb bd4992d548728ae583c7011fd8d2c7c0ffdd3866
@@ -1,8 +1,9 @@ require ipkg-utils_${PV}.bb
require ipkg-utils_${PV}.bb
-SRC_URI += "file://ipkg-utils-fix.patch;patch=1"
+SRC_URI += "file://ipkg-utils-fix.patch;patch=1 \
+ file://ipkg-py-sane-vercompare.patch;patch=1"
RDEPENDS = ""
-PR = "r8"
+PR = "r9"
inherit native
More information about the Openembedded-commits
mailing list