]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - spl-modules.spec.in
Minor spec file cleanup for RHEL6 package dependency.
[FreeBSD/FreeBSD.git] / spl-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 # Distro agnostic:
148 %define name             @PACKAGE@-modules
149 %define version          @VERSION@
150 %define debug_package    %{nil}
151
152 # The kernel version should only be appended to a binary RPM.  When
153 # building a source RPM it must be kernel version agnostic.  This means
154 # the source RPM must never specify a required kernel version, but the
155 # final RPM should be keyed to the kernel version it was built against.
156 %if %{defined build_src_rpm}
157 %define release          @SPL_META_RELEASE@
158 %define requires         %{kpkg}
159 %if %{defined kdevpkg}
160 %define devel_requires   %{kdevpkg}
161 %endif
162 %else
163 %define relext           %(echo %{kverpkg} | %{__sed} -e 's/-/_/g')
164 %define release          @SPL_META_RELEASE@_%{relext}
165 %if %{defined kpkg}
166 %define krequires        %{kpkg} %{koppkg} %{kverpkg}
167 %endif
168 %if %{defined kdevpkg}
169 %define devel_requires   %{kdevpkg} %{koppkg} %{kverpkg}
170 %endif
171 %endif
172
173 Summary:         Solaris Porting Layer Modules
174 Group:           Utilities/System
175 Name:            %{name}
176 Version:         %{version}
177 Release:         %{release}
178 License:         @LICENSE@
179 URL:             git://eris.llnl.gov/spl.git
180 BuildRoot:       %{_tmppath}/%{name}-%{version}-%{release}-%(%{__id} -un)
181 Source:          @PACKAGE@-%{version}.tar.gz
182 %if %{defined krequires}
183 Requires:        %{krequires}
184 %endif
185 %if %{defined kdevpkg}
186 BuildRequires:   %{kdevpkg}
187 %endif
188
189 %description
190 The %{name} package contains kernel modules for emulating Solaris style
191 primatives in the linux kernel. These include, but are not limited to:
192 atomic, condvar, debug, error, memory, kobject, kstat, mutex, rwlock,
193 taskq, thread, time, and vnode APIs.
194
195 %package devel
196 Summary:         Solaris Porting Layer Headers and Symbols
197 Group:           Development/Libraries
198 %if %{defined devel_requires}
199 Requires:        %{devel_requires}
200 %endif
201 %if %{defined kdevpkg}
202 BuildRequires:   %{kdevpkg}
203 %endif
204
205 %description devel
206 The %{name}-devel package contains the header files and Module{s}.symvers
207 symbols needed for building additional modules which use %{name}.
208
209 %prep
210 %setup -n @PACKAGE@-%{version}
211 %build
212 %configure --with-linux=%{kdir} --with-linux-obj=%{kobj} \
213            --with-config=kernel
214 make
215
216 %install
217 rm -rf $RPM_BUILD_ROOT
218 make DESTDIR=$RPM_BUILD_ROOT install
219
220 %clean
221 rm -rf $RPM_BUILD_ROOT
222
223 %files
224 %defattr(-, root, root)
225 /lib/modules/*
226
227 %files devel
228 %defattr(-,root,root)
229 %{_prefix}/src/*
230
231 %post
232 if [ -f /boot/System.map-%{kver} ]; then
233         depmod -ae -F /boot/System.map-%{kver} %{kver} || exit 0
234 else
235         depmod -ae %{kver} || exit 0
236 fi
237
238 %postun
239 if [ -f /boot/System.map-%{kver} ]; then
240         depmod -ae -F /boot/System.map-%{kver} %{kver} || exit 0
241 else
242         depmod -ae %{kver} || exit 0
243 fi