Don't trust the vmlinux symlink to be present

This commit is contained in:
Marcus Schäfer 2018-12-10 12:34:53 +01:00
parent 164c8d24d4
commit ece8a511d9
No known key found for this signature in database
GPG Key ID: AD11DD02B44996EF
2 changed files with 16 additions and 6 deletions

View File

@ -56,10 +56,9 @@ class Kernel(object):
[self.root_dir, 'boot', kernel_name]
)
if os.path.exists(kernel_file):
kernel_file_for_version_check = os.sep.join(
[self.root_dir, 'boot', 'vmlinux.gz']
)
if not os.path.exists(kernel_file_for_version_check):
kernel_file_for_version_check = \
self._get_kernel_name_for_version_lookup()
if not kernel_file_for_version_check:
# The system does not provide a gzip compressed binary
# of the kernel. Thus we try to fetch the version from
# the arbitrary kernel image format. Please Note:
@ -181,3 +180,14 @@ class Kernel(object):
)
)
return kernel_names
def _get_kernel_name_for_version_lookup(self):
vmlinux_kernel_files = list(
filter(lambda kernel: 'vmlinux-' in kernel, self.kernel_names)
)
if vmlinux_kernel_files:
kernel_file_for_version_check = os.sep.join(
[self.root_dir, 'boot', vmlinux_kernel_files[0] + '.gz']
)
if os.path.exists(kernel_file_for_version_check):
return kernel_file_for_version_check

View File

@ -45,7 +45,7 @@ class TestKernel(object):
mock_realpath.return_value = 'vmlinux-realpath'
data = self.kernel.get_kernel()
mock_run.assert_called_once_with(
command=['kversion', 'root-dir/boot/vmlinux.gz'],
command=['kversion', 'root-dir/boot/vmlinux-1.2.3-default.gz'],
raise_on_error=False
)
assert data.filename == 'root-dir/boot/vmlinux'
@ -89,7 +89,7 @@ class TestKernel(object):
mock_run.return_value = result
data = self.kernel.get_kernel()
mock_run.assert_called_once_with(
command=['kversion', 'root-dir/boot/vmlinux.gz'],
command=['kversion', 'root-dir/boot/vmlinux-1.2.3-default.gz'],
raise_on_error=False
)
assert data.filename == 'root-dir/boot/vmlinux'