Previous version comparsion in check_glibc_ver() and
check_kernel_ver() may think 2.11 is older than 2.5 so this patch
compare the versions by converting them into digit numbers through a
helper function.
---
 client/bin/base_utils.py |   20 ++++++++++++++++++--
 1 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/client/bin/base_utils.py b/client/bin/base_utils.py
index a3e989c..e0ffb9f 100644
--- a/client/bin/base_utils.py
+++ b/client/bin/base_utils.py
@@ -520,18 +520,34 @@ def cpu_online_map():
             cpus.append(line.split()[2]) # grab cpu number
     return cpus
 
+def check_ver(v1, v2):
+    """
+    Check whether version v1 is less or equal than version v2
+    """
+    v1s = v1.split('.')
+    v2s = v2.split('.')
+    while v1s:
+        v1 = int(v1s.pop(0))
+        if not v2s:
+            return False
+        v2 = int(v2s.pop(0))
+        if v1 < v2:
+            return True
+        elif v1 > v2:
+            return False
+    return True
 
 def check_glibc_ver(ver):
     glibc_ver = commands.getoutput('ldd --version').splitlines()[0]
     glibc_ver = re.search(r'(\d+\.\d+(\.\d+)?)', glibc_ver).group()
-    if glibc_ver.split('.') < ver.split('.'):
+    if not check_ver(ver, glibc_ver):
         raise error.TestError("Glibc too old (%s). Glibc >= %s is needed." % \
                                                 (glibc_ver, ver))
 
 def check_kernel_ver(ver):
     kernel_ver = utils.system_output('uname -r')
     kv_tmp = re.split(r'[-]', kernel_ver)[0:3]
-    if kv_tmp[0].split('.') < ver.split('.'):
+    if not check_ver(ver, kv_tmp[0]):
         raise error.TestError("Kernel too old (%s). Kernel > %s is needed." % \
                                                 (kernel_ver, ver))
 

_______________________________________________
Autotest mailing list
[email protected]
http://test.kernel.org/cgi-bin/mailman/listinfo/autotest

Reply via email to