Tag zfs-0.6.2
[zfs.git] / rpm / generic / zfs-kmod.spec.in
1 %define module  @PACKAGE@
2 #define repo    rpmfusion
3 #define repo    chaos
4
5 # (un)define the next line to either build for the newest or all current kernels
6 %define buildforkernels newest
7 #define buildforkernels current
8 #define buildforkernels akmod
9
10 %bcond_with     debug
11 %bcond_with     debug_dmu_tx
12
13
14 Name:           %{module}-kmod
15
16 Version:        @VERSION@
17 Release:        @RELEASE@%{?dist}
18 Summary:        Kernel module(s)
19
20 Group:          System Environment/Kernel
21 License:        @ZFS_META_LICENSE@
22 URL:            http://zfsonlinux.org/
23 Source0:        %{module}-%{version}.tar.gz
24 Source10:       kmodtool
25 BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id} -u -n)
26
27 # The developments headers will conflict with the dkms packages.
28 Conflicts:      %{module}-dkms
29
30 %if %{defined repo}
31
32 # Building for a repository use the proper build-sysbuild package
33 # to determine which kernel-devel packages should be installed.
34 BuildRequires:  %{_bindir}/kmodtool
35 %{!?kernels:BuildRequires: buildsys-build-%{repo}-kerneldevpkgs-%{?buildforkernels:%{buildforkernels}}%{!?buildforkernels:current}-%{_target_cpu}}
36
37 %else
38
39 # Building local packages attempt to to use the installed kernel.
40 %{?rhel:BuildRequires: kernel-devel}
41 %{?fedora:BuildRequires: kernel-devel}
42 %{?suse_version:BuildRequires: kernel-source}
43
44 %if !%{defined kernels} && !%{defined build_src_rpm}
45     %if 0%{?rhel}%{?fedora}%{?suse_version}
46         %define kernels %(ls -1 /usr/src/kernels)
47     %else
48         %define kernels %(ls -1 /lib/modules)
49     %endif
50 %endif
51 %endif
52
53 %if 0%{?rhel}%{?fedora}%{?suse_version}
54 BuildRequires:             kmod-spl-devel = %{version}
55 %global KmodsRequires      kmod-spl
56 %global KmodsDevelRequires kmod-spl-devel
57 %global KmodsMetaRequires  spl-kmod
58 %endif
59
60 %if 0%{?fedora} >= 17
61 %define prefix  /usr
62 %endif
63
64 # Kmodtool does its magic here.  A patched version of kmodtool is shipped
65 # with the source rpm until kmod development packages are supported upstream.
66 # https://bugzilla.rpmfusion.org/show_bug.cgi?id=2714
67 %{expand:%(bash %{SOURCE10} --target %{_target_cpu} %{?repo:--repo %{?repo}} --kmodname %{name} %{?buildforkernels:--%{buildforkernels}} --devel %{?prefix:--prefix "%{?prefix}"} %{?kernels:--for-kernels "%{?kernels}"} %{?kernelbuildroot:--buildroot "%{?kernelbuildroot}"} 2>/dev/null) }
68
69
70 %description
71 This package contains the ZFS kernel modules.
72
73 %prep
74 # Error out if there was something wrong with kmodtool.
75 %{?kmodtool_check}
76
77 # Print kmodtool output for debugging purposes:
78 bash %{SOURCE10}  --target %{_target_cpu} %{?repo:--repo %{?repo}} --kmodname %{name} %{?buildforkernels:--%{buildforkernels}} --devel %{?prefix:--prefix "%{?prefix}"} %{?kernels:--for-kernels "%{?kernels}"} %{?kernelbuildroot:--buildroot "%{?kernelbuildroot}"} 2>/dev/null
79
80 %if %{with debug}
81     %define debug --enable-debug
82 %else
83     %define debug --disable-debug
84 %endif
85
86 %if %{with debug_dmu_tx}
87     %define debug_dmu_tx --enable-debug-dmu-tx
88 %else
89     %define debug_dmu_tx --disable-debug-dmu-tx
90 %endif
91
92 #
93 # Allow the overriding of spl locations
94 #
95 %if %{defined require_splver}
96 %define splver %{require_splver}
97 %else
98 %define splver %{version}
99 %endif
100
101 %if %{defined require_spldir}
102 %define spldir %{require_spldir}
103 %else
104 %define spldir %{_usrsrc}/spl-%{splver}
105 %endif
106
107 %if %{defined require_splobj}
108 %define splobj %{require_splobj}
109 %else
110 %define splobj %{spldir}/${kernel_version%%___*}
111 %endif
112
113
114 # Leverage VPATH from configure to avoid making multiple copies.
115 %define _configure ../%{module}-%{version}/configure
116
117 %setup -q -c -T -a 0
118
119 for kernel_version in %{?kernel_versions}; do
120     %{__mkdir} _kmod_build_${kernel_version%%___*}
121 done
122
123 %build
124 for kernel_version in %{?kernel_versions}; do
125     cd _kmod_build_${kernel_version%%___*}
126     %configure \
127         --with-config=kernel \
128 %if 0%{?rhel}%{?fedora}
129         --with-linux="${kernel_version##*___}" \
130         --with-linux-obj="${kernel_version##*___}" \
131 %else
132         --with-linux="$( \
133         if [ -e "/lib/modules/${kernel_version%%___*}/source" ]; then \
134             echo "/lib/modules/${kernel_version%%___*}/source"; \
135         else \
136             echo "/lib/modules/${kernel_version%%___*}/build"; \
137         fi)" \
138         --with-linux-obj="/lib/modules/${kernel_version%%___*}/build" \
139 %endif
140         --with-spl="%{spldir}" \
141         --with-spl-obj="%{splobj}" \
142         %{debug} \
143         %{debug_dmu_tx}
144     make %{?_smp_mflags}
145     cd ..
146 done
147
148
149 %install
150 rm -rf ${RPM_BUILD_ROOT}
151
152 # Relies on the kernel 'modules_install' make target.
153 for kernel_version in %{?kernel_versions}; do
154     cd _kmod_build_${kernel_version%%___*}
155     make install \
156         DESTDIR=${RPM_BUILD_ROOT} \
157         %{?prefix:INSTALL_MOD_PATH=%{?prefix}} \
158         INSTALL_MOD_DIR=%{kmodinstdir_postfix}
159     cd ..
160 done
161 chmod u+x ${RPM_BUILD_ROOT}%{kmodinstdir_prefix}/*/extra/*/*/*
162 %{?akmod_install}
163
164
165 %clean
166 rm -rf $RPM_BUILD_ROOT
167
168 %changelog
169 * Wed Aug 21 2013 Brian Behlendorf <behlendorf1@llnl.gov> - 0.6.2-1
170 - Released 0.6.2-1
171 * Fri Mar 22 2013 Brian Behlendorf <behlendorf1@llnl.gov> - 0.6.1-1
172 - First official stable release.