Patchworkβ [oe] utils.py: add special handling for version delimiters

login
register
about
Submitter Denys Dmytriyenko
Date 2009-10-06 04:00:47
Message ID <1254801647-27989-1-git-send-email-denis@denix.org>
Download mbox | patch
Permalink /patch/1095/
State Applied, archived
Headers show

Comments

Denys Dmytriyenko - 2009-10-06 04:00:47
Make version comparison work properly for pre-releases and release-candidates,
when there is an extra suffix in the field, such as:
PV = "2.6.29+2.6.30-rc5-${PR}+gitr${SRCREV}"

More details: http://thread.gmane.org/gmane.comp.handhelds.openembedded/26691

Signed-off-by: Denys Dmytriyenko <denis@denix.org>
---
 lib/bb/utils.py |   16 +++++++++++++++-
 1 files changed, 15 insertions(+), 1 deletions(-)

Patch

diff --git a/lib/bb/utils.py b/lib/bb/utils.py
index 2469bd7..e6664e2 100644
--- a/lib/bb/utils.py
+++ b/lib/bb/utils.py
@@ -21,8 +21,9 @@  BitBake Utility Functions
 
 digits = "0123456789"
 ascii_letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
+separators = ".-"
 
-import re, fcntl, os
+import re, fcntl, os, types
 
 def explode_version(s):
     r = []
@@ -39,12 +40,15 @@  def explode_version(s):
             r.append(m.group(1))
             s = m.group(2)
             continue
+        r.append(s[0])
         s = s[1:]
     return r
 
 def vercmp_part(a, b):
     va = explode_version(a)
     vb = explode_version(b)
+    sa = False
+    sb = False
     while True:
         if va == []:
             ca = None
@@ -56,6 +60,16 @@  def vercmp_part(a, b):
             cb = vb.pop(0)
         if ca == None and cb == None:
             return 0
+
+        if type(ca) is types.StringType:
+            sa = ca in separators
+        if type(cb) is types.StringType:
+            sb = cb in separators
+        if sa and not sb:
+            return -1
+        if not sa and sb:
+            return 1
+
         if ca > cb:
             return 1
         if ca < cb: