[PATCH] More reliable kernel version detection when using RPM

On some distributions (openSUSE, for example), RPM version and kernel version
do not exactly match. Use the version from /boot/vmlinuz-* if such file is
present in one of RPMs, and fallback to a RPM version number otherwise.

Also, prefer /boot/vmlinuz-* and /boot/initrd-* files when updating bootloader
before the /boot/vmlinuz and /boot/initrd symlinks.

Signed-off-by: Jiri Benc <jbenc@suse.cz>



git-svn-id: http://test.kernel.org/svn/autotest/trunk@2872 592f7852-d20e-0410-864c-8624ca9c26a4
diff --git a/client/bin/kernel.py b/client/bin/kernel.py
index 7182bee..6b31501 100755
--- a/client/bin/kernel.py
+++ b/client/bin/kernel.py
@@ -638,8 +638,11 @@
         # search for vmlinuz
         for file in files:
             if file.startswith('/boot/vmlinuz'):
+                self.full_version = file[len('/boot/vmlinuz-'):]
                 self.image = file
-                break
+                # prefer /boot/kernel-version before /boot/kernel
+                if self.full_version:
+                    break
         else:
             errmsg = "%s doesn't contain /boot/vmlinuz"
             errmsg %= self.rpm_package
@@ -650,7 +653,9 @@
         for file in files:
             if file.startswith('/boot/initrd'):
                 self.initrd = file
-                break
+                # prefer /boot/initrd-version before /boot/initrd
+                if len(file) > len('/boot/initrd'):
+                    break
 
         # get version and release number
         self.version, self.release = utils.system_output(
@@ -697,9 +702,11 @@
             self.install()
 
         # If we can check the kernel identity do so.
-        expected_ident = '-'.join([self.version,
-                                   self.rpm_name.split('-')[1],
-                                   self.release])
+        expected_ident = self.full_version
+        if not expected_ident:
+            expected_ident = '-'.join([self.version,
+                                       self.rpm_name.split('-')[1],
+                                       self.release])
         if ident:
             when = int(time.time())
             args += " IDENT=%d" % (when)