diff options
Diffstat (limited to 'scripts/kmodtool')
-rwxr-xr-x | scripts/kmodtool | 73 |
1 files changed, 53 insertions, 20 deletions
diff --git a/scripts/kmodtool b/scripts/kmodtool index 6b7378098..852ade021 100755 --- a/scripts/kmodtool +++ b/scripts/kmodtool @@ -155,9 +155,6 @@ Provides: ${kmodname}-kmod = %{?epoch:%{epoch}:}%{version}-%{release} Requires: ${kmodname}-kmod-common >= %{?epoch:%{epoch}:}%{version} Requires(post): ${prefix}/sbin/depmod Requires(postun): ${prefix}/sbin/depmod -%{?KmodsRequires:Requires: %{KmodsRequires}-uname-r = ${kernel_uname_r}} -%{?KmodsBuildRequires:BuildRequires: %{KmodsBuildRequires}-uname-r = ${kernel_uname_r}} -%{?KmodsBuildRequires:BuildRequires: %{KmodsBuildRequires}} EOF if [[ ${obsolete_name} ]]; then @@ -170,6 +167,8 @@ EOF cat <<EOF Requires: kernel-uname-r = ${kernel_uname_r} BuildRequires: kernel-devel-uname-r = ${kernel_uname_r} +%{?KmodsRequires:Requires: %{KmodsRequires}-uname-r = ${kernel_uname_r}} +%{?KmodsRequires:BuildRequires: %{KmodsRequires}-uname-r = ${kernel_uname_r}} %post -n kmod-${kmodname}-${kernel_uname_r} ${prefix}/sbin/depmod -aeF /boot/System.map-${kernel_uname_r} ${kernel_uname_r} > /dev/null || : %postun -n kmod-${kmodname}-${kernel_uname_r} @@ -202,15 +201,38 @@ EOF print_rpmtemplate_kmoddevelpkg () { + if [[ "${1}" == "--custom" ]]; then + shift + local customkernel=true + elif [[ "${1}" == "--redhat" ]]; then + shift + local redhatkernel=true + fi + + local kernel_uname_r=${1} + cat <<EOF %package -n kmod-${kmodname}-devel Summary: ${kmodname} kernel module(s) devel common Group: System Environment/Kernel -Provides: ${kmodname}-devel-kmod-common = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: ${kmodname}-devel-kmod = %{?epoch:%{epoch}:}%{version}-%{release} +EOF + + if [[ ! ${customkernel} ]] && [[ ! ${redhatkernel} ]]; then + echo "Requires: kmod-${kmodname}-devel-${kernel_uname_r} >= %{?epoch:%{epoch}:}%{version}-%{release}" + fi + if [[ ${obsolete_name} ]]; then + echo "Provides: kmod-${obsolete_name}-devel = ${obsolete_version}" + echo "Obsoletes: kmod-${obsolete_name}-devel < ${obsolete_version}" + fi + + cat <<EOF %description -n kmod-${kmodname}-devel This package provides the common header files to build kernel modules -which depend on the ${kmodname} kernel module. +which depend on the ${kmodname} kernel module. It may optionally require +the ${kmodname}-devel-<kernel> objects for the newest kernel. + %files -n kmod-${kmodname}-devel %defattr(644,root,root,755) %{_usrsrc}/${kmodname}-%{version} @@ -239,23 +261,32 @@ print_rpmtemplate_per_kmoddevelpkg () local kernel_uname_r=${1} local kernel_variant="${2:+-${2}}" + # first part cat <<EOF %package -n kmod-${kmodname}-devel-${kernel_uname_r} Summary: ${kmodname} kernel module(s) devel for ${kernel_uname_r} Group: System Environment/Kernel -Requires: ${kmodname}-devel-kmod-common = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: kernel-objects-for-kernel = ${kernel_uname_r} Provides: ${kmodname}-devel-kmod = %{?epoch:%{epoch}:}%{version}-%{release} -Provides: ${kmodname}-devel-kmod-uname-r = ${kernel_uname_r} +Provides: kmod-${kmodname}-devel-uname-r = ${kernel_uname_r} EOF + if [[ ${obsolete_name} ]]; then + echo "Provides: kmod-${obsolete_name}-devel-${kernel_uname_r} = ${obsolete_version}" + echo "Obsoletes: kmod-${obsolete_name}-devel-${kernel_uname_r} < ${obsolete_version}" + fi + # second part if [[ ! "${customkernel}" ]]; then cat <<EOF -Requires: kernel-uname-r = ${kernel_uname_r} +Requires: kernel-devel-uname-r = ${kernel_uname_r} BuildRequires: kernel-devel-uname-r = ${kernel_uname_r} +%{?KmodsDevelRequires:Requires: %{KmodsDevelRequires}-uname-r = ${kernel_uname_r}} +%{?KmodsDevelRequires:BuildRequires: %{KmodsDevelRequires}-uname-r = ${kernel_uname_r}} EOF fi + # third part cat <<EOF %description -n kmod-${kmodname}-devel-${kernel_uname_r} This package provides objects and symbols required to build kernel modules @@ -281,8 +312,9 @@ Group: System Environment/Kernel Provides: ${kmodname}-kmod = %{?epoch:%{epoch}:}%{version}-%{release} Requires: kmod-${kmodname}-${kernel_uname_r} >= %{?epoch:%{epoch}:}%{version}-%{release} +%{?KmodsMetaRequires:Requires: %{?KmodsMetaRequires}} EOF - + if [[ ${obsolete_name} ]]; then echo "Provides: kmod-${obsolete_name}${kernel_variant} = ${obsolete_version}" echo "Obsoletes: kmod-${obsolete_name}${kernel_variant} < ${obsolete_version}" @@ -316,6 +348,10 @@ print_customrpmtemplate () # create development package if [[ "${devel}" ]]; then + # create devel package including common headers + print_rpmtemplate_kmoddevelpkg --redhat ${kernel} ${kernel##${kernel_verrelarch}} + + # create devel package print_rpmtemplate_per_kmoddevelpkg --redhat ${kernel} ${kernel##${kernel_verrelarch}} fi elif [[ -e ${prefix}/lib/modules/"${kernel}"/build/Makefile ]] ; then @@ -327,6 +363,10 @@ print_customrpmtemplate () # create development package if [[ "${devel}" ]]; then + # create devel package including common headers + print_rpmtemplate_kmoddevelpkg --custom "${kernel}" + + # create devel package print_rpmtemplate_per_kmoddevelpkg --custom "${kernel}" fi else @@ -334,11 +374,6 @@ print_customrpmtemplate () fi done - # create common development package - if [[ "${devel}" ]]; then - print_rpmtemplate_kmoddevelpkg "${1}" - fi - # well, it's no header anymore, but who cares ;-) print_rpmtemplate_header } @@ -366,16 +401,14 @@ print_rpmtemplate () # create package print_rpmtemplate_per_kmodpkg ${kernel} ${kernel##${kernel_verrelarch}} - # create development package if [[ "${devel}" ]]; then + # create devel package including common headers + print_rpmtemplate_kmoddevelpkg ${kernel} ${kernel##${kernel_verrelarch}} + + # create devel package print_rpmtemplate_per_kmoddevelpkg ${kernel} ${kernel##${kernel_verrelarch}} fi done - - # create common development package - if [[ "${devel}" ]]; then - print_rpmtemplate_kmoddevelpkg "${1}" - fi } myprog_help () |