88ab3b24b1d09df7f3ef30c029266865e87a0860
[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 BuildRequires:  spl-devel-kmod = %{version}-%{release}
34
35 %global KmodsBuildRequires spl-devel-kmod
36 %global KmodsRequires      kmod-spl
37
38 %{!?kernels:BuildRequires: buildsys-build-rpmfusion-kerneldevpkgs-%{?buildforkernels:%{buildforkernels}}%{!?buildforkernels:current}-%{_target_cpu} }
39
40 %if 0%{?fedora} >= 17
41 %define prefix  /usr
42 %endif
43
44 # Kmodtool does its magic here.  A patched version of kmodtool is shipped
45 # with the source rpm until kmod development packages are supported upstream.
46 # https://bugzilla.rpmfusion.org/show_bug.cgi?id=2714
47 %{expand:%(sh %{SOURCE10} --target %{_target_cpu} --repo %{repo} --kmodname %{name} --devel %{?prefix:--prefix "%{?prefix}"} %{?buildforkernels:--%{buildforkernels}} %{?kernels:--for-kernels "%{?kernels}"} %{?kernelbuildroot:--buildroot "%{?kernelbuildroot}"} 2>/dev/null) }
48
49
50 %description
51 This package contains the ZFS kernel modules.
52
53 %prep
54 # Error out if there was something wrong with kmodtool.
55 %{?kmodtool_check}
56
57 # Print kmodtool output for debugging purposes:
58 sh %{SOURCE10}  --target %{_target_cpu}  --repo %{repo} --kmodname %{name} --devel %{?buildforkernels:--%{buildforkernels}} %{?kernels:--for-kernels "%{?kernels}"} %{?kernelbuildroot:--buildroot "%{?kernelbuildroot}"} 2>/dev/null
59
60 %if %{with debug}
61     %define debug --enable-debug
62 %else
63     %define debug --disable-debug
64 %endif
65
66 %if %{with debug_dmu_tx}
67     %define debug_dmu_tx --enable-debug-dmu-tx
68 %else
69     %define debug_dmu_tx --disable-debug-dmu-tx
70 %endif
71
72 #
73 # Allow the overriding of spl locations
74 #
75 %if %{defined require_splver}
76 %define splver %{require_splver}
77 %else
78 %define splver %{version}
79 %endif
80
81 %if %{defined require_spldir}
82 %define spldir %{require_spldir}
83 %else
84 %define spldir %{_usrsrc}/spl-%{splver}
85 %endif
86
87 %if %{defined require_splobj}
88 %define splobj %{require_splobj}
89 %else
90 %define splobj %{spldir}/${kernel_version%%___*}
91 %endif
92
93
94 # Leverage VPATH from configure to avoid making multiple copies.
95 %define _configure ../%{module}-%{version}/configure
96
97 %setup -q -c -T -a 0
98
99 for kernel_version in %{?kernel_versions}; do
100     %{__mkdir} _kmod_build_${kernel_version%%___*}
101 done
102
103 %build
104 for kernel_version in %{?kernel_versions}; do
105     pushd _kmod_build_${kernel_version%%___*}
106     %configure \
107         --with-config=kernel \
108         --with-linux="${kernel_version##*___}" \
109         --with-linux-obj="${kernel_version##*___}" \
110         --with-spl="%{spldir}" \
111         --with-spl-obj="%{splobj}" \
112         %{debug} \
113         %{debug_dmu_tx}
114     make %{?_smp_mflags}
115     popd
116 done
117
118
119 %install
120 rm -rf ${RPM_BUILD_ROOT}
121
122 # Relies on the kernel 'modules_install' make target.
123 for kernel_version in %{?kernel_versions}; do
124     pushd _kmod_build_${kernel_version%%___*}
125     make install \
126         DESTDIR=${RPM_BUILD_ROOT} \
127         %{?prefix:INSTALL_MOD_PATH=%{?prefix}} \
128         INSTALL_MOD_DIR=%{kmodinstdir_postfix}
129     popd
130 done
131 chmod u+x ${RPM_BUILD_ROOT}%{kmodinstdir_prefix}/*/extra/*/*/*
132 %{?akmod_install}
133
134
135 %clean
136 rm -rf $RPM_BUILD_ROOT
137
138 %changelog
139 * Fri Mar 22 2013 Brian Behlendorf <behlendorf1@llnl.gov> - 0.6.1-1
140 - First official stable release.