Speed up 'zfs list -t snapshot -o name -s name'
[zfs.git] / zfs-modules.spec.in
1 # The following block is used to allow the source RPM to be rebuilt 
2 # against specific kernels.  It is preferable that rpmbuild define the
3 # require_kver, require_kdir, require_obj constants for us, but if it does not
4 # not we attempt to determine the correct values based on your distro.
5
6 # kdir:    Full path to the kernel source headers
7 # kobj:    Full path to the kernel build objects
8 # kver:    Kernel version
9 # kpkg:    Kernel package name
10 # kdevpkg: Kernel devel package name
11 # kverpkg: Kernel package version
12
13 %if %{defined require_kver}
14 %define kver %{require_kver}
15 %endif
16
17 %if %{defined require_kdir}
18 %define kdir %{require_kdir}
19 %endif
20
21 %if %{defined require_kobj}
22 %define kobj %{require_kobj}
23 %endif
24
25 # Set using 'rpmbuild ... --with debug ...', defaults to disabled.
26 %if %{defined _with_debug}
27  %define kdebug --enable-debug
28 %else
29  %if %{defined _without_debug}
30   %define kdebug --disable-debug
31  %else
32   %define kdebug --disable-debug
33  %endif
34 %endif
35
36 # Set using 'rpmbuild ... --with debug-dmu-tx ...', defaults to disabled.
37 %if %{defined _with_debug_dmu_tx}
38  %define kdebug_dmu_tx --enable-debug-dmu-tx
39 %else
40  %if %{defined _without_debug_dmu_tx}
41   %define kdebug_dmu_tx --disable-debug-dmu-tx
42  %else
43   %define kdebug_dmu_tx --disable-debug-dmu-tx
44  %endif
45 %endif
46
47 # SLES:
48 %if %{defined suse_version}
49  %if %{undefined kver}
50   %ifarch ppc64
51    %define kverextra     ppc64
52   %else
53    %define kverextra     default
54   %endif
55
56   %if %{suse_version} >= 1100
57    %define klnk          %{_usrsrc}/linux-obj/%{_target_cpu}/%{kverextra}
58    %define krelease      %{klnk}/include/config/kernel.release
59   %else
60    %define klnk          %{_usrsrc}/linux-obj/%{_target_cpu}/%{kverextra}
61    %define krelease      %{klnk}/.kernelrelease
62   %endif
63
64   %define kver           %((echo X; %{__cat} %{krelease} 2>/dev/null)|tail -1)
65  %endif
66
67  %if %{undefined kverextra}
68   %define kverextra      %(echo %{kver} | cut -f3 -d'-')
69  %endif
70
71  %define kpkg            kernel-%{kverextra}
72  %define kdevpkg         kernel-source
73  %define kverpkg         %(echo %{kver} | %{__sed} -e 's/-%{kverextra}//g')
74
75  # The kernel and rpm versions do not strictly match under SLES11
76  # e.g. kernel version 2.6.27.19-5 != rpm version 2.6.27.19-5.1
77  %if %{suse_version} >= 1100
78   %define koppkg         >=
79  %else
80   %define koppkg         =
81  %endif
82
83  %if %{undefined kdir}
84   %define kdir           %{_usrsrc}/linux-%{kverpkg}
85  %endif
86  %if %{undefined kobj}
87   %define kobj           %{kdir}-obj/%{_target_cpu}/%{kverextra}
88  %endif
89 %else
90
91 # CHAOS 4.x:
92 %if %{defined ch4}
93  %if %{undefined kver}
94   %define klnk           %{_usrsrc}/kernels/*/include/config
95   %define kver           %((echo X; %{__cat} %{klnk}/kernel.release
96                             2>/dev/null) | tail -1)
97  %endif
98  %define kpkg            chaos-kernel
99  %define kdevpkg         chaos-kernel-devel
100  %define kverpkg         %{kver}
101  %define koppkg          =
102  %if %{undefined kdir}
103   %define kdir %{_usrsrc}/kernels/%{kver}
104  %endif
105  %if %{undefined kobj}
106   %define kobj           %{kdir}
107  %endif
108 %else
109
110 # RHEL 5.x/6.x, CHAOS 5.x:
111 %if %{defined el5} || %{defined el6} || %{defined ch5}
112  %if %{undefined kver}
113   %define klnk           %{_usrsrc}/kernels/*/include/config
114   %define kver           %((echo X; %{__cat} %{klnk}/kernel.release
115                             2>/dev/null) | tail -1)
116  %endif
117  %define kpkg            kernel
118  %define kdevpkg         kernel-devel
119  %if %{defined el6} || %{defined ch5}
120   %define kverpkg        %(echo %{kver} | %{__sed} -e 's/.%{_target_cpu}//g')
121  %else
122   %define kverpkg        %{kver}
123  %endif
124  %define koppkg          =
125  %if %{undefined kdir}
126   %if %{defined el6} || %{defined ch5}
127    %define kdir           %{_usrsrc}/kernels/%{kver}
128   %else
129    %define kdir           %{_usrsrc}/kernels/%{kver}-%{_target_cpu}
130   %endif
131  %endif
132  %if %{undefined kobj}
133   %define kobj           %{kdir}
134  %endif
135 %else
136
137 # Fedora:
138 %if %{defined fedora}
139  %if %{undefined kver}
140   %define klnk           %{_usrsrc}/kernels/*/include/config
141   %define kver           %((echo X; %{__cat} %{klnk}/kernel.release
142                             2>/dev/null) | tail -1)
143  %endif
144  %define kpkg            kernel
145  %define kdevpkg         kernel-devel
146  %define kverpkg         %(echo %{kver} | %{__sed} -e 's/.%{_target_cpu}//g')
147  %define koppkg          =
148  %if %{undefined kdir}
149   %define kdir           %{_usrsrc}/kernels/%{kver}
150  %endif
151  %if %{undefined kobj}
152   %define kobj           %{kdir}
153  %endif
154 %else
155
156 # Unsupported distro:
157  %if %{undefined kver}
158   %define kver           %(uname -r)
159  %endif
160  %define kverpkg         %{kver}
161  %if %{undefined kdir}
162   %define kdir           /lib/modules/%{kver}/build
163  %endif
164  %if %{undefined kobj}
165   %define kobj           %{kdir}
166  %endif
167
168 %endif
169 %endif
170 %endif
171 %endif
172
173 # spldir:    Full path to the spl source headers
174 # splobj:    Full path to the spl build objects
175 # splver:    Spl version
176 # splpkg:    Spl package name
177 # spldevpkg: Spl devel package name
178 # splverpkg: Spl package version
179
180 %if %{defined require_splver}
181 %define splver %{require_splver}
182 %endif
183
184 %if %{defined require_spldir}
185 %define spldir %{require_spldir}
186 %endif
187
188 %if %{defined require_splobj}
189 %define splobj %{require_splobj}
190 %endif
191
192 %if %{undefined splver}
193  %define spllnk          %{_usrsrc}/spl-*/%{kver}
194  %define splver          %((echo X; %{__cat} %{spllnk}/spl.release
195                             2>/dev/null) | tail -1)
196 %endif
197 %define splpkg           spl-modules
198 %define spldevpkg        spl-modules-devel
199 %define splverpkg        %{splver}
200 %if %{undefined spldir}
201  %define spldir %{_usrsrc}/spl-%{splver}/%{kver}
202 %endif
203 %if %{undefined splobj}
204  %define splobj          %{spldir}
205 %endif
206
207
208 # Distro agnostic:
209 %define name             @PACKAGE@-modules
210 %define version          @VERSION@
211 %define debug_package    %{nil}
212
213 # The kernel version should only be appended to a binary RPM.  When
214 # building a source RPM it must be kernel version agnostic.  This means
215 # the source RPM must never specify a required kernel version, but the
216 # final RPM should be keyed to the kernel version it was built against.
217 %if %{defined build_src_rpm}
218 %define release          @ZFS_META_RELEASE@
219 %if %{defined kpkg}
220 %define krequires        %{kpkg}
221 %endif
222 %define splrequires      %{splpkg}
223 %define spldevrequires   %{spldevpkg}
224 %else
225 %define relext           %(echo %{kverpkg} | %{__sed} -e 's/-/_/g')
226 %define release          @ZFS_META_RELEASE@_%{relext}
227 %if %{defined kpkg}
228 %define krequires        %{kpkg} %{koppkg} %{kverpkg}
229 %endif
230 %define splrequires      %{splpkg} = %{splverpkg}_%{relext}
231 %define spldevrequires   %{spldevpkg} = %{splverpkg}_%{relext}
232 %endif
233
234 Summary:         ZFS File System
235 Group:           Utilities/System
236 Name:            %{name}
237 Version:         %{version}
238 Release:         %{release}
239 License:         @ZFS_META_LICENSE@
240 URL:             git://github.com/zfsonlinux/zfs.git
241 BuildRoot:       %{_tmppath}/%{name}-%{version}-%{release}-%(%{__id} -un)
242 Source:          @PACKAGE@-%{version}.tar.gz
243 %if %{defined krequires}
244 Requires:        %{krequires}
245 %endif
246 %if %{defined kdevpkg}
247 BuildRequires:   %{kdevpkg}
248 %endif
249 Requires:        %{splrequires}
250 BuildRequires:   %{spldevpkg}
251 Provides:        lustre-backend-fs
252
253 %description
254 The %{name} package contains kernel modules and support utilities for
255 the %{name} file system.
256
257 %package devel
258 Summary:         ZFS File System Headers and Symbols
259 Group:           Development/Libraries
260 %if %{defined krequires}
261 Requires:        %{krequires}
262 %endif
263 %if %{defined kdevpkg}
264 Requires:        %{kdevpkg}
265 %endif
266 Requires:        %{spldevrequires}
267
268 %description devel
269 The %{name}-devel package contains the kernel header files and 
270 Module.symvers symbols needed for building additional modules
271 which use %{name}.
272
273 %prep
274 %setup -n @PACKAGE@-%{version}
275 %build
276 %configure --with-linux=%{kdir} --with-linux-obj=%{kobj} \
277            --with-spl=%{spldir} --with-spl-obj=%{splobj} \
278            --with-config=kernel %{kdebug} %{kdebug_dmu_tx}
279 make
280
281 %install
282 rm -rf $RPM_BUILD_ROOT
283 make DESTDIR=$RPM_BUILD_ROOT install
284
285 %clean
286 rm -rf $RPM_BUILD_ROOT
287
288 %files
289 %defattr(-, root, root)
290 /lib/modules/*
291
292 %files devel
293 %defattr(-,root,root)
294 %{_prefix}/src/*
295
296 %post
297 if [ -f /boot/System.map-%{kver} ]; then
298         /sbin/depmod -ae -F /boot/System.map-%{kver} %{kver} || exit 0
299 else
300         /sbin/depmod -a || exit 0
301 fi
302
303 %postun
304 if [ -f /boot/System.map-%{kver} ]; then
305         /sbin/depmod -ae -F /boot/System.map-%{kver} %{kver} || exit 0
306 else
307         /sbin/depmod -a || exit 0
308 fi