If we fail to do so, we'll end up creating a bogus initramfs file. So look inside /lib/modules for directories that match that particular kernel version before we proceed to create the initramfs file. Also, in RHEL/Fedora systems, use dracut if available.
Changes from v1: Fix kernel_unittest.py Signed-off-by: Lucas Meneghel Rodrigues <[email protected]> --- client/bin/kernel.py | 22 +++++++++++++++++++++- client/bin/kernel_unittest.py | 1 + 2 files changed, 22 insertions(+), 1 deletions(-) diff --git a/client/bin/kernel.py b/client/bin/kernel.py index fd272b9..1b5f79c 100644 --- a/client/bin/kernel.py +++ b/client/bin/kernel.py @@ -429,8 +429,28 @@ class kernel(BootableKernel): if not args: args = '' + # It is important to match the version with a real directory inside + # /lib/modules + real_version_list = glob.glob('/lib/modules/%s*' % version) + rl = len(real_version_list) + if rl == 0: + logging.error("No directory %s found under /lib/modules. Initramfs" + "creation will most likely fail and your new kernel" + "will fail to build", version) + else: + if rl > 1: + logging.warning("Found more than one possible match for " + "kernel version %s under /lib/modules", version) + version = os.path.basename(real_version_list[0]) + if vendor in ['Red Hat', 'Fedora Core']: - utils.system('mkinitrd %s %s %s' % (args, initrd, version)) + try: + cmd = os_dep.command('dracut') + full_cmd = '%s -f %s %s' % (cmd, initrd, version) + except ValueError: + cmd = os_dep.command('mkinitrd') + full_cmd = '%s %s %s %s' % (cmd, args, initrd, version) + utils.system(full_cmd) elif vendor in ['SUSE']: utils.system('mkinitrd %s -k %s -i %s -M %s' % (args, image, initrd, system_map)) diff --git a/client/bin/kernel_unittest.py b/client/bin/kernel_unittest.py index 3adba6c..11b90f1 100755 --- a/client/bin/kernel_unittest.py +++ b/client/bin/kernel_unittest.py @@ -511,6 +511,7 @@ class TestKernel(unittest.TestCase): self.job.config_get.expect_call( 'kernel.mkinitrd_extra_args').and_return(None) args = '' + glob.glob.expect_call('/lib/modules/2.6.24*').and_return(['2.6.24']) os.path.isfile.expect_call('/usr/sbin/mkinitrd').and_return(True) cmd = '/usr/sbin/mkinitrd' utils.system.expect_call('%s %s -o initrd 2.6.24' % (cmd, args)) -- 1.7.2.3 _______________________________________________ Autotest mailing list [email protected] http://test.kernel.org/cgi-bin/mailman/listinfo/autotest
