@@ -116,16 +116,21 @@ def get_kernel_pkg_info_for_uname_r(uname_r):
116
116
:returns: Information about the kernel package providing given uname_r
117
117
:rtype: KernelPkgInfo
118
118
"""
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
+
130
135
raise StopActorExecutionError (message = 'Unable to obtain kernel information of the booted kernel: no package is '
131
136
'providing the booted kernel release returned by uname.' )
0 commit comments