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