]> git.proxmox.com Git - mirror_zfs.git/blob - zfs-modules.spec.in
Add build system
[mirror_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/5.x:
70 %if %{defined ch4} || %{defined ch5}
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:
89 %if %{defined el5} || %{defined el6}
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}
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 %define kdir %{_usrsrc}/kernels/%{kver}-%{_target_cpu}
105 %endif
106 %if %{undefined kobj}
107 %define kobj %{kdir}
108 %endif
109 %else
110
111 # Fedora:
112 %if %{defined fedora}
113 %if %{undefined kver}
114 %define klnk %{_usrsrc}/kernels/*/include/config
115 %define kver %((echo X; %{__cat} %{klnk}/kernel.release
116 2>/dev/null) | tail -1)
117 %endif
118 %define kpkg kernel
119 %define kdevpkg kernel-devel
120 %define kverpkg %(echo %{kver} | %{__sed} -e 's/.%{_target_cpu}//g')
121 %define koppkg =
122 %if %{undefined kdir}
123 %define kdir %{_usrsrc}/kernels/%{kver}
124 %endif
125 %if %{undefined kobj}
126 %define kobj %{kdir}
127 %endif
128 %else
129
130 # Unsupported distro:
131 %if %{undefined kver}
132 %define kver %(uname -r)
133 %endif
134 %define kverpkg %{kver}
135 %if %{undefined kdir}
136 %define kdir /lib/modules/%{kver}/build
137 %endif
138 %if %{undefined kobj}
139 %define kobj %{kdir}
140 %endif
141
142 %endif
143 %endif
144 %endif
145 %endif
146
147 # spldir: Full path to the spl source headers
148 # splobj: Full path to the spl build objects
149 # splver: Spl version
150 # splpkg: Spl package name
151 # spldevpkg: Spl devel package name
152 # splverpkg: Spl package version
153
154 %if %{defined require_splver}
155 %define splver %{require_splver}
156 %endif
157
158 %if %{defined require_spldir}
159 %define spldir %{require_spldir}
160 %endif
161
162 %if %{defined require_splobj}
163 %define splobj %{require_splobj}
164 %endif
165
166 %if %{undefined splver}
167 %define spllnk %{_usrsrc}/spl-*/%{kver}
168 %define splver %((echo X; %{__cat} %{spllnk}/spl.release
169 2>/dev/null) | tail -1)
170 %endif
171 %define splpkg spl-modules
172 %define spldevpkg spl-modules-devel
173 %define splverpkg %{splver}
174 %if %{undefined spldir}
175 %define spldir %{_usrsrc}/spl-%{splver}/%{kver}
176 %endif
177 %if %{undefined splobj}
178 %define splobj %{spldir}/module
179 %endif
180
181
182 # Distro agnostic:
183 %define name @PACKAGE@-modules
184 %define version @VERSION@
185 %define debug_package %{nil}
186
187 # The kernel version should only be appended to a binary RPM. When
188 # building a source RPM it must be kernel version agnostic. This means
189 # the source RPM must never specify a required kernel version, but the
190 # final RPM should be keyed to the kernel version it was built against.
191 %if %{defined build_src_rpm}
192 %define release @ZFS_META_RELEASE@
193 %if %{defined kpkg}
194 %define krequires %{kpkg}
195 %endif
196 %define splrequires %{splpkg}
197 %else
198 %define relext %(echo %{kverpkg} | %{__sed} -e 's/-/_/g')
199 %define release @ZFS_META_RELEASE@_%{relext}
200 %if %{defined kpkg}
201 %define krequires %{kpkg} %{koppkg} %{kverpkg}
202 %endif
203 %define splrequires %{splpkg} = %{splverpkg}
204 %endif
205
206 Summary: ZFS File System
207 Group: Utilities/System
208 Name: %{name}
209 Version: %{version}
210 Release: %{release}
211 License: @LICENSE@
212 URL: git://eris.llnl.gov/zfs.git
213 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-%(%{__id} -un)
214 Source: @PACKAGE@-%{version}.tar.gz
215 %if %{defined krequires}
216 Requires: %{krequires}
217 %endif
218 %if %{defined kdevpkg}
219 BuildRequires: %{kdevpkg}
220 %endif
221 Requires: %{splrequires}
222 BuildRequires: %{spldevpkg}
223
224 %description
225 The %{name} package contains kernel modules and support utilities for
226 the %{name} file system.
227
228 %package devel
229 Summary: ZFS File System Headers and Symbols
230 Group: Development/Libraries
231 %if %{defined krequires}
232 Requires: %{krequires}
233 %endif
234 Requires: %{splrequires}
235 %if %{defined kdevpkg}
236 BuildRequires: %{kdevpkg}
237 %endif
238 BuildRequires: %{spldevpkg}
239
240 %description devel
241 The %{name}-devel package contains the kernel header files and
242 Module.symvers symbols needed for building additional modules
243 which use %{name}.
244
245 %prep
246 %setup -n @PACKAGE@-%{version}
247 %build
248 %configure --with-linux=%{kdir} --with-linux-obj=%{kobj} \
249 --with-spl=%{spldir} --with-spl-obj=%{splobj} \
250 --with-config=kernel
251 make
252
253 %install
254 rm -rf $RPM_BUILD_ROOT
255 make DESTDIR=$RPM_BUILD_ROOT install
256
257 %clean
258 rm -rf $RPM_BUILD_ROOT
259
260 %files
261 %defattr(-, root, root)
262 /lib/modules/*
263
264 %files devel
265 %defattr(-,root,root)
266 %{_prefix}/src/*
267
268 %post
269 if [ -f /boot/System.map-%{kver} ]; then
270 depmod -ae -F /boot/System.map-%{kver} %{kver} || exit 0
271 else
272 depmod -ae %{kver} || exit 0
273 fi
274
275 %postun
276 if [ -f /boot/System.map-%{kver} ]; then
277 depmod -ae -F /boot/System.map-%{kver} %{kver} || exit 0
278 else
279 depmod -ae %{kver} || exit 0
280 fi