[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)