summaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorBrian Behlendorf <[email protected]>2013-07-27 04:42:57 -0700
committerBrian Behlendorf <[email protected]>2013-08-01 09:48:07 -0700
commitcb79a4e8bb19908235d3cb646506530457341b76 (patch)
tree88e54ce6c245bedf1af0e81b99a05eeeca663e21 /scripts
parent57b650b86f15793195f9bf2185e1161c7c67904d (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-xscripts/kmodtool73
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 ()