Add --buildroot option to kmod build

This allows rpmbuild to define buildroot to point to where kernel
data is located.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #242
This commit is contained in:
Nathaniel Clark 2013-05-03 08:23:20 -04:00 committed by Brian Behlendorf
parent 991857cac5
commit 485b471eb2
3 changed files with 13 additions and 7 deletions

View File

@ -44,7 +44,7 @@ BuildRequires: %{_bindir}/kmodtool
# Kmodtool does its magic here. A patched version of kmodtool is shipped # Kmodtool does its magic here. A patched version of kmodtool is shipped
# with the source rpm until kmod development packages are supported upstream. # with the source rpm until kmod development packages are supported upstream.
# https://bugzilla.rpmfusion.org/show_bug.cgi?id=2714 # https://bugzilla.rpmfusion.org/show_bug.cgi?id=2714
%{expand:%(sh %{SOURCE10} --target %{_target_cpu} --repo %{repo} --kmodname %{name} --devel %{?prefix:--prefix "%{?prefix}"} %{?buildforkernels:--%{buildforkernels}} %{?kernels:--for-kernels "%{?kernels}"} 2>/dev/null) } %{expand:%(sh %{SOURCE10} --target %{_target_cpu} --repo %{repo} --kmodname %{name} --devel %{?prefix:--prefix "%{?prefix}"} %{?buildforkernels:--%{buildforkernels}} %{?kernels:--for-kernels "%{?kernels}"} %{?kernelbuildroot:--buildroot "%{?kernelbuildroot}"} 2>/dev/null) }
%description %description
@ -56,7 +56,7 @@ several interfaces provided by the Solaris kernel.
%{?kmodtool_check} %{?kmodtool_check}
# Print kmodtool output for debugging purposes: # Print kmodtool output for debugging purposes:
sh %{SOURCE10} --target %{_target_cpu} --repo %{repo} --kmodname %{name} --devel %{?buildforkernels:--%{buildforkernels}} %{?kernels:--for-kernels "%{?kernels}"} 2>/dev/null sh %{SOURCE10} --target %{_target_cpu} --repo %{repo} --kmodname %{name} --devel %{?buildforkernels:--%{buildforkernels}} %{?kernels:--for-kernels "%{?kernels}"} %{?kernelbuildroot:--buildroot "%{?kernelbuildroot}"} 2>/dev/null
%if %{with debug} %if %{with debug}
%define debug --enable-debug %define debug --enable-debug

View File

@ -44,7 +44,7 @@ Conflicts: %{module}-dkms
# Kmodtool does its magic here. A patched version of kmodtool is shipped # Kmodtool does its magic here. A patched version of kmodtool is shipped
# because the latest versions may not be available for your distribution. # because the latest versions may not be available for your distribution.
# https://bugzilla.rpmfusion.org/show_bug.cgi?id=2714 # https://bugzilla.rpmfusion.org/show_bug.cgi?id=2714
%{expand:%(bash %{SOURCE10} --target %{_target_cpu} --kmodname %{name} --devel %{?prefix:--prefix "%{?prefix}"} %{?kernels:--for-kernels "%{?kernels}"} 2>/dev/null) } %{expand:%(bash %{SOURCE10} --target %{_target_cpu} --kmodname %{name} --devel %{?prefix:--prefix "%{?prefix}"} %{?kernels:--for-kernels "%{?kernels}"} %{?kernelbuildroot:--buildroot "%{?kernelbuildroot}"} 2>/dev/null) }
%description %description
@ -56,7 +56,7 @@ several interfaces provided by the Solaris kernel.
%{?kmodtool_check} %{?kmodtool_check}
# Print kmodtool output for debugging purposes: # Print kmodtool output for debugging purposes:
bash %{SOURCE10} --target %{_target_cpu} --kmodname %{name} --devel %{?prefix:--prefix "%{?prefix}"} %{?kernels:--for-kernels "%{?kernels}"} 2>/dev/null bash %{SOURCE10} --target %{_target_cpu} --kmodname %{name} --devel %{?prefix:--prefix "%{?prefix}"} %{?kernels:--for-kernels "%{?kernels}"} %{?kernelbuildroot:--buildroot "%{?kernelbuildroot}"} 2>/dev/null
%if %{with debug} %if %{with debug}
%define debug --enable-debug %define debug --enable-debug

12
scripts/kmodtool Executable file → Normal file
View File

@ -37,6 +37,7 @@ kernel_versions_to_build_for=
prefix= prefix=
filterfile= filterfile=
target= target=
buildroot=
error_out() error_out()
{ {
@ -305,9 +306,9 @@ print_customrpmtemplate ()
{ {
for kernel in ${1} for kernel in ${1}
do do
if [[ -e "/usr/src/kernels/${kernel}" ]] ; then 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 :) # this looks like a Fedora/RH kernel -- print a normal template (which includes the proper BR) and be happy :)
kernel_versions="${kernel_versions}${kernel}___%{_usrsrc}/kernels/${kernel} " kernel_versions="${kernel_versions}${kernel}___${buildroot}%{_usrsrc}/kernels/${kernel} "
# parse kernel versions string and print template # parse kernel versions string and print template
local kernel_verrelarch=${kernel%%${kernels_known_variants}} local kernel_verrelarch=${kernel%%${kernels_known_variants}}
@ -382,7 +383,6 @@ myprog_help ()
echo "Usage: $(basename ${0}) [OPTIONS]" echo "Usage: $(basename ${0}) [OPTIONS]"
echo $'\n'"Creates a template to be used during kmod building" echo $'\n'"Creates a template to be used during kmod building"
echo $'\n'"Available options:" echo $'\n'"Available options:"
# FIXME echo " --datadir <dir> -- look for our shared files in <dir>"
echo " --filterfile <file> -- filter the results with grep --file <file>" echo " --filterfile <file> -- filter the results with grep --file <file>"
echo " --for-kernels <list> -- created templates only for these kernels" echo " --for-kernels <list> -- created templates only for these kernels"
echo " --kmodname <file> -- name of the kmod (required)" echo " --kmodname <file> -- name of the kmod (required)"
@ -390,6 +390,7 @@ myprog_help ()
echo " --noakmod -- no akmod package" echo " --noakmod -- no akmod package"
echo " --repo <name> -- use buildsys-build-<name>-kerneldevpkgs" echo " --repo <name> -- use buildsys-build-<name>-kerneldevpkgs"
echo " --target <arch> -- target-arch (required)" echo " --target <arch> -- target-arch (required)"
echo " --buildroot <dir> -- Build root (place to look for build files)"
} }
while [ "${1}" ] ; do while [ "${1}" ] ; do
@ -478,6 +479,11 @@ while [ "${1}" ] ; do
shift shift
build_kernels="current" build_kernels="current"
;; ;;
--buildroot)
shift
buildroot="${1}"
shift
;;
--help) --help)
myprog_help myprog_help
exit 0 exit 0