Refresh RPM packaging
[zfs.git] / rpm / fedora / zfs-kmod.spec.in
1 %define module  @PACKAGE@
2 %define repo    rpmfusion
3
4 %define buildforkernels newest
5 #define buildforkernels current
6 #define buildforkernels akmod
7
8 %bcond_with     debug
9 %bcond_with     debug_dmu_tx
10
11
12 Name:           %{module}-kmod
13
14 Version:        @VERSION@
15 Release:        @RELEASE@%{?dist}
16 Summary:        Kernel module(s)
17
18 Group:          System Environment/Kernel
19 License:        @ZFS_META_LICENSE@
20 URL:            http://zfsonlinux.org/
21 Source0:        %{module}-%{version}.tar.gz
22 Source10:       kmodtool
23 BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
24 ExclusiveArch:  i586 i686 x86_64
25
26 # Likely compiles but is not supported.
27 ExcludeArch:    ppc ppc64
28
29 # The developments headers will conflict with the dkms packages.
30 Conflicts:      %{module}-dkms
31
32 BuildRequires:  %{_bindir}/kmodtool
33
34 %global KmodsBuildRequires kmod-spl-devel
35 %global KmodsRequires      kmod-spl
36
37 %{!?kernels:BuildRequires: buildsys-build-rpmfusion-kerneldevpkgs-%{?buildforkernels:%{buildforkernels}}%{!?buildforkernels:current}-%{_target_cpu} }
38
39 %if 0%{?fedora} >= 17
40 %define prefix  /usr
41 %endif
42
43 # Kmodtool does its magic here.  A patched version of kmodtool is shipped
44 # with the source rpm until kmod development packages are supported upstream.
45 # https://bugzilla.rpmfusion.org/show_bug.cgi?id=2714
46 %{expand:%(sh %{SOURCE10} --target %{_target_cpu} --repo %{repo} --kmodname %{name} --devel %{?prefix:--prefix "%{?prefix}"} %{?buildforkernels:--%{buildforkernels}} %{?kernels:--for-kernels "%{?kernels}"} 2>/dev/null) }
47
48
49 %description
50 This package contains the ZFS kernel modules.
51
52 %prep
53 # Error out if there was something wrong with kmodtool.
54 %{?kmodtool_check}
55
56 # Print kmodtool output for debugging purposes:
57 sh %{SOURCE10}  --target %{_target_cpu}  --repo %{repo} --kmodname %{name} --devel %{?buildforkernels:--%{buildforkernels}} %{?kernels:--for-kernels "%{?kernels}"} 2>/dev/null
58
59 %if %{with debug}
60     %define debug --enable-debug
61 %else
62     %define debug --disable-debug
63 %endif
64
65 %if %{with debug_dmu_tx}
66     %define debug_dmu_tx --enable-debug-dmu-tx
67 %else
68     %define debug_dmu_tx --disable-debug-dmu-tx
69 %endif
70
71 # Leverage VPATH from configure to avoid making multiple copies.
72 %define _configure ../%{module}-%{version}/configure
73
74 %setup -q -c -T -a 0
75
76 for kernel_version in %{?kernel_versions}; do
77     %{__mkdir} _kmod_build_${kernel_version%%___*}
78 done
79
80 %build
81 for kernel_version in %{?kernel_versions}; do
82     pushd _kmod_build_${kernel_version%%___*}
83     %configure \
84         --with-config=kernel \
85         --with-linux="${kernel_version##*___}" \
86         --with-linux-obj="${kernel_version##*___}" \
87         --with-spl="/usr/src/spl-%{version}" \
88         --with-spl-obj="/usr/src/spl-%{version}/${kernel_version%%___*}" \
89         %{debug} \
90         %{debug_dmu_tx}
91     make %{?_smp_mflags}
92     popd
93 done
94
95
96 %install
97 rm -rf ${RPM_BUILD_ROOT}
98
99 # Relies on the kernel 'modules_install' make target.
100 for kernel_version in %{?kernel_versions}; do
101     pushd _kmod_build_${kernel_version%%___*}
102     make install \
103         DESTDIR=${RPM_BUILD_ROOT} \
104         %{?prefix:INSTALL_MOD_PATH=%{?prefix}} \
105         INSTALL_MOD_DIR=%{kmodinstdir_postfix}
106     popd
107 done
108 chmod u+x ${RPM_BUILD_ROOT}%{kmodinstdir_prefix}/*/extra/*/*/*
109 %{?akmod_install}
110
111
112 %clean
113 rm -rf $RPM_BUILD_ROOT
114
115 %changelog
116 * Tue Mar 12 2013 Brian Behlendorf <behlendorf1@llnl.gov> - 0.6.0-1
117 - Initial kmods2 packaging.