aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorTimothy Day <tday141@gmail.com>2023-03-22 16:22:52 +0000
committerGitHub <noreply@github.com>2023-03-22 16:22:52 +0000
commit1eca40f3ade7ffc1847c66dd5cad67c94ba8fd35 (patch)
treeb8ba4d3801ffa816ada39cffff5e91a249a965a3 /scripts
parent0f9e7354145ca3196f77b18b3d02858121ece31c (diff)
downloadsrc-1eca40f3ade7ffc1847c66dd5cad67c94ba8fd35.tar.gz
src-1eca40f3ade7ffc1847c66dd5cad67c94ba8fd35.zip
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 <behlendorf1@llnl.gov> Signed-off-by: Timothy Day <timday@amazon.com> Closes #14617
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/kmodtool30
1 files changed, 15 insertions, 15 deletions
diff --git a/scripts/kmodtool b/scripts/kmodtool
index 6eea8fe50f31..0d6af2c7f1d1 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"