diff options
author | Timothy Day <[email protected]> | 2023-03-22 12:22:52 -0400 |
---|---|---|
committer | GitHub <[email protected]> | 2023-03-22 09:22:52 -0700 |
commit | 1eca40f3ade7ffc1847c66dd5cad67c94ba8fd35 (patch) | |
tree | b8ba4d3801ffa816ada39cffff5e91a249a965a3 /scripts | |
parent | 0f9e7354145ca3196f77b18b3d02858121ece31c (diff) |
Fix kmodtool for packaging mainline Linux
kmodtool currently incorrectly identifies official
RHEL kernels, as opposed to custom kernels. This
can cause the openZFS kmod RPM build to break.
The issue can be reproduced by building a set of
mainline Linux RPMs, installing them, and then
attempting to build the openZFS kmod package
against them.
Reviewed-by: Brian Behlendorf <[email protected]>
Signed-off-by: Timothy Day <[email protected]>
Closes #14617
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/kmodtool | 30 |
1 files changed, 15 insertions, 15 deletions
diff --git a/scripts/kmodtool b/scripts/kmodtool index 6eea8fe50..0d6af2c7f 100755 --- a/scripts/kmodtool +++ b/scripts/kmodtool @@ -333,36 +333,36 @@ print_customrpmtemplate () { for kernel in ${1} do - if [[ -e "${buildroot}/usr/src/kernels/${kernel}" ]] ; then - # this looks like a Fedora/RH kernel -- print a normal template (which includes the proper BR) and be happy :) - kernel_versions="${kernel_versions}${kernel}___${buildroot}%{_usrsrc}/kernels/${kernel} " + if [[ -e "${prefix}/lib/modules/${kernel}/build/Makefile" ]]; then + # likely a user-build-kernel with available buildfiles + # fixme: we should check if uname from Makefile is the same as ${kernel} - # parse kernel versions string and print template - local kernel_verrelarch=${kernel%%${kernels_known_variants}} - print_rpmtemplate_per_kmodpkg --redhat ${kernel} ${kernel##${kernel_verrelarch}} + kernel_versions="${kernel_versions}${kernel}___${prefix}/lib/modules/${kernel}/build/ " + print_rpmtemplate_per_kmodpkg --custom "${kernel}" # create development package if [[ -n "${devel}" ]]; then # create devel package including common headers - print_rpmtemplate_kmoddevelpkg --redhat ${kernel} ${kernel##${kernel_verrelarch}} + print_rpmtemplate_kmoddevelpkg --custom "${kernel}" # create devel package - print_rpmtemplate_per_kmoddevelpkg --redhat ${kernel} ${kernel##${kernel_verrelarch}} + print_rpmtemplate_per_kmoddevelpkg --custom "${kernel}" fi - elif [[ -e "${prefix}/lib/modules/${kernel}/build/Makefile" ]]; then - # likely a user-build-kernel with available buildfiles - # fixme: we should check if uname from Makefile is the same as ${kernel} + elif [[ -e "${buildroot}/usr/src/kernels/${kernel}" ]]; then + # this looks like a Fedora/RH kernel -- print a normal template (which includes the proper BR) and be happy :) + kernel_versions="${kernel_versions}${kernel}___${buildroot}%{_usrsrc}/kernels/${kernel} " - kernel_versions="${kernel_versions}${kernel}___${prefix}/lib/modules/${kernel}/build/ " - print_rpmtemplate_per_kmodpkg --custom "${kernel}" + # parse kernel versions string and print template + local kernel_verrelarch=${kernel%%${kernels_known_variants}} + print_rpmtemplate_per_kmodpkg --redhat ${kernel} ${kernel##${kernel_verrelarch}} # create development package if [[ -n "${devel}" ]]; then # create devel package including common headers - print_rpmtemplate_kmoddevelpkg --custom "${kernel}" + print_rpmtemplate_kmoddevelpkg --redhat ${kernel} ${kernel##${kernel_verrelarch}} # create devel package - print_rpmtemplate_per_kmoddevelpkg --custom "${kernel}" + print_rpmtemplate_per_kmoddevelpkg --redhat ${kernel} ${kernel##${kernel_verrelarch}} fi else error_out 2 "Don't know how to handle ${kernel} -- ${prefix}/lib/modules/${kernel}/build/Makefile not found" |