diff options
author | Brian Behlendorf <[email protected]> | 2013-07-27 04:42:57 -0700 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2013-08-01 09:48:07 -0700 |
commit | cb79a4e8bb19908235d3cb646506530457341b76 (patch) | |
tree | 88e54ce6c245bedf1af0e81b99a05eeeca663e21 /scripts | |
parent | 57b650b86f15793195f9bf2185e1161c7c67904d (diff) |
Add kmod repo integration
When the kmod packaging infrastructure was originally added the
dependency on the rpmfusion yum repositories was disabled. This
was done at the time in favour of getting local builds working.
Now the time has come to conditionally re-enable that functionality
so we can properly provide binary kmod packages.
./configure --with-config=srpm
make SRPM_DEFINE_KMOD='--define="repo rpmfusion"' srpm-kmod
mock rebuild zfs-kmod-x.y.z-r.el6.src.rpm
One nice benefit of finishing this work is that the generic and
fedora spl-kmod spec files can be merged again.
Signed-off-by: Brian Behlendorf <[email protected]>
Diffstat (limited to 'scripts')
-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 () |