mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2025-08-04 14:07:41 +03:00

In order to ensure that yum-builddep pulls in all the build requirements a generic ${kmodname}-devel-kmod provides line is added. This allows a version of the development headers to be included without requiring knowledge of the kernel version. This is important because unlike rpmbuild which does correctly expand the source rpm spec file, yum-builddep does not. Without this generic provides line mock which relies on yum-builddep is unable to automatically satisfy the dependency. Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
132 lines
3.8 KiB
RPMSpec
132 lines
3.8 KiB
RPMSpec
%define module @PACKAGE@
|
|
|
|
%bcond_with debug
|
|
%bcond_with debug_dmu_tx
|
|
|
|
|
|
Name: %{module}-kmod
|
|
|
|
Version: @VERSION@
|
|
Release: @RELEASE@%{?dist}
|
|
Summary: Kernel module(s)
|
|
|
|
Group: System Environment/Kernel
|
|
License: @ZFS_META_LICENSE@
|
|
URL: http://zfsonlinux.org/
|
|
Source0: %{module}-%{version}.tar.gz
|
|
Source10: kmodtool
|
|
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
|
|
|
# The developments headers will conflict with the dkms packages.
|
|
Conflicts: %{module}-dkms
|
|
|
|
# Source packages minimally require a kernel-devel dependency.
|
|
%{?rhel:BuildRequires: kernel-devel}
|
|
%{?fedora:BuildRequires: kernel-devel}
|
|
%{?suse_version:BuildRequires: kernel-source}
|
|
|
|
%if 0%{?rhel}%{?fedora}%{?suse_version}
|
|
BuildRequires: spl-devel-kmod = %{version}-%{release}
|
|
%global KmodsBuildRequires spl-devel-kmod
|
|
%global KmodsRequires kmod-spl
|
|
%endif
|
|
|
|
# Binary packages build against all installed kernels by default.
|
|
%if !%{defined kernels} && !%{defined build_src_rpm}
|
|
%if 0%{?rhel}%{?fedora}%{?suse_version}
|
|
%define kernels %(ls -1 /usr/src/kernels)
|
|
%else
|
|
%define kernels %(ls -1 /lib/modules)
|
|
%endif
|
|
%endif
|
|
|
|
%if 0%{?fedora} >= 17
|
|
%define prefix /usr
|
|
%endif
|
|
|
|
# Kmodtool does its magic here. A patched version of kmodtool is shipped
|
|
# with the source rpm until kmod development packages are supported upstream.
|
|
# 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) }
|
|
|
|
|
|
%description
|
|
This package contains the ZFS kernel modules.
|
|
|
|
%prep
|
|
# Error out if there was something wrong with kmodtool.
|
|
%{?kmodtool_check}
|
|
|
|
# Print kmodtool output for debugging purposes:
|
|
bash %{SOURCE10} --target %{_target_cpu} --repo %{repo} --kmodname %{name} --devel %{?prefix:--prefix "%{?prefix}"} %{?kernels:--for-kernels "%{?kernels}"} 2>/dev/null
|
|
|
|
%if %{with debug}
|
|
%define debug --enable-debug
|
|
%else
|
|
%define debug --disable-debug
|
|
%endif
|
|
|
|
%if %{with debug_dmu_tx}
|
|
%define debug_dmu_tx --enable-debug-dmu-tx
|
|
%else
|
|
%define debug_dmu_tx --disable-debug-dmu-tx
|
|
%endif
|
|
|
|
# Leverage VPATH from configure to avoid making multiple copies.
|
|
%define _configure ../%{module}-%{version}/configure
|
|
|
|
%setup -q -c -T -a 0
|
|
|
|
for kernel_version in %{?kernel_versions}; do
|
|
%{__mkdir} _kmod_build_${kernel_version%%___*}
|
|
done
|
|
|
|
%build
|
|
for kernel_version in %{?kernel_versions}; do
|
|
cd _kmod_build_${kernel_version%%___*}
|
|
%configure \
|
|
--with-config=kernel \
|
|
%if 0%{?rhel}%{?fedora}
|
|
--with-linux="${kernel_version##*___}" \
|
|
--with-linux-obj="${kernel_version##*___}" \
|
|
%else
|
|
--with-linux=\
|
|
%(if [ -e /lib/modules/${kernel_version%%___*}/source ]; then \
|
|
echo "/lib/modules/${kernel_version%%___*}/source" \
|
|
else \
|
|
echo "/lib/modules/${kernel_version%%___*}/build" \
|
|
fi) \
|
|
--with-linux-obj="/lib/modules/${kernel_version%%___*}/build" \
|
|
%endif
|
|
--with-spl="/usr/src/spl-%{version}" \
|
|
--with-spl-obj="/usr/src/spl-%{version}/${kernel_version%%___*}" \
|
|
%{debug} \
|
|
%{debug_dmu_tx}
|
|
make %{?_smp_mflags}
|
|
cd ..
|
|
done
|
|
|
|
|
|
%install
|
|
rm -rf ${RPM_BUILD_ROOT}
|
|
|
|
# Relies on the kernel 'modules_install' make target.
|
|
for kernel_version in %{?kernel_versions}; do
|
|
cd _kmod_build_${kernel_version%%___*}
|
|
make install \
|
|
DESTDIR=${RPM_BUILD_ROOT} \
|
|
%{?prefix:INSTALL_MOD_PATH=%{?prefix}} \
|
|
INSTALL_MOD_DIR=%{kmodinstdir_postfix}
|
|
cd ..
|
|
done
|
|
chmod u+x ${RPM_BUILD_ROOT}%{kmodinstdir_prefix}/*/extra/*/*/*
|
|
%{?akmod_install}
|
|
|
|
|
|
%clean
|
|
rm -rf $RPM_BUILD_ROOT
|
|
|
|
%changelog
|
|
* Tue Mar 12 2013 Brian Behlendorf <behlendorf1@llnl.gov> - 0.6.0-1
|
|
- Initial kmods2 packaging.
|