Skip to content

Commit 55996d5

Browse files
author
mhecko
committed
lib(kernel): iteratively query whatprovides
1 parent 4f02006 commit 55996d5

File tree

1 file changed

+16
-11
lines changed
  • repos/system_upgrade/common/libraries

1 file changed

+16
-11
lines changed

repos/system_upgrade/common/libraries/kernel.py

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -116,16 +116,21 @@ def get_kernel_pkg_info_for_uname_r(uname_r):
116116
:returns: Information about the kernel package providing given uname_r
117117
:rtype: KernelPkgInfo
118118
"""
119-
try:
120-
kernel_pkg_nevras = run(['rpm', '-q', '--whatprovides'] + KERNEL_UNAME_R_PROVIDES, split=True)['stdout']
121-
for kernel_pkg_nevra in kernel_pkg_nevras:
122-
provided_uname = get_uname_r_provided_by_kernel_pkg(kernel_pkg_nevra)
123-
if not provided_uname:
124-
api.current_logger().warning('Failed to obtain uname-r provided by %s', kernel_pkg_nevra)
125-
if provided_uname == uname_r:
126-
return get_kernel_pkg_info(kernel_pkg_nevra)
127-
except CalledProcessError as e:
128-
raise StopActorExecutionError(message='Unable to obtain kernel information of the booted kernel.',
129-
details={'details': str(e), 'stderr': e.stderr})
119+
kernel_pkg_nevras = []
120+
for kernel_uname_r_provide in KERNEL_UNAME_R_PROVIDES:
121+
try:
122+
kernel_pkg_nevras += run(['rpm', '-q', '--whatprovides', kernel_uname_r_provide], split=True)['stdout']
123+
except CalledProcessError: # There is nothing providing a particular provide, e.g, kernel-rt-uname-r
124+
continue # Nothing bad happened, continue
125+
126+
kernel_pkg_nevras = set(kernel_pkg_nevras)
127+
128+
for kernel_pkg_nevra in kernel_pkg_nevras:
129+
provided_uname = get_uname_r_provided_by_kernel_pkg(kernel_pkg_nevra) # We know all packages provide a uname
130+
if not provided_uname:
131+
api.current_logger().warning('Failed to obtain uname-r provided by %s', kernel_pkg_nevra)
132+
if provided_uname == uname_r:
133+
return get_kernel_pkg_info(kernel_pkg_nevra)
134+
130135
raise StopActorExecutionError(message='Unable to obtain kernel information of the booted kernel: no package is '
131136
'providing the booted kernel release returned by uname.')

0 commit comments

Comments
 (0)