diff options
author | Denys Dmytriyenko <denis@denix.org> | 2009-10-12 04:00:47 +0000 |
---|---|---|
committer | Richard Purdie <rpurdie@rpsys.net> | 2009-11-08 19:19:54 +0000 |
commit | 727ce6ffe33a119cb17f7d91b173f11a055eea3c (patch) | |
tree | 0d4251e886c4064f8cfe47182d2ae3ac76f11cc3 | |
parent | 44949581e9a0ba19d11fc13f253948274b223088 (diff) | |
download | bitbake-727ce6ffe33a119cb17f7d91b173f11a055eea3c.tar.gz |
utils.py: add special handling for version delimiters
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>
Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
-rw-r--r-- | lib/bb/utils.py | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/lib/bb/utils.py b/lib/bb/utils.py index 603c92642..5b0aaba4a 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: |