]> git.proxmox.com Git - mirror_spl-debian.git/blob - spl-modules.spec.in
Reimplement mutexs for Linux lock profiling/analysis
[mirror_spl-debian.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 10, SLES 11:
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:
89 %if %{defined el5}
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 %define kverpkg %{kver}
98 %define koppkg =
99 %if %{undefined kdir}
100 %define kdir %{_usrsrc}/kernels/%{kver}-%{_target_cpu}
101 %endif
102 %if %{undefined kobj}
103 %define kobj %{kdir}
104 %endif
105 %else
106
107 # Fedora 11:
108 %if %{defined fedora}
109 %if %{undefined kver}
110 %define klnk %{_usrsrc}/kernels/*/include/config
111 %define kver %((echo X; %{__cat} %{klnk}/kernel.release
112 2>/dev/null) | tail -1)
113 %endif
114 %define kpkg kernel
115 %define kdevpkg kernel-devel
116 %define kverpkg %(echo %{kver} | %{__sed} -e 's/.%{_target_cpu}//g')
117 %define koppkg =
118 %if %{undefined kdir}
119 %define kdir %{_usrsrc}/kernels/%{kver}
120 %endif
121 %if %{undefined kobj}
122 %define kobj %{kdir}
123 %endif
124 %else
125
126 # Unsupported distro:
127 %if %{undefined kver}
128 %define kver X
129 %endif
130 %define kpkg kernel
131 %define kdevpkg kernel-devel
132 %define kverpkg %{kver}
133 %define koppkg =
134 %if %{undefined kdir}
135 %define kdir %{_usrsrc}/kernels/%{kver}
136 %endif
137 %if %{undefined kobj}
138 %define kobj %{kdir}
139 %endif
140
141 %endif
142 %endif
143 %endif
144 %endif
145
146 # Distro agnostic:
147 %define name @PACKAGE@-modules
148 %define version @VERSION@
149 %define debug_package %{nil}
150
151 # The kernel version should only be appended to a binary RPM. When
152 # building a source RPM it must be kernel version agnostic. This means
153 # the source RPM must never specify a required kernel version, but the
154 # final RPM should be keyed to the kernel version it was built against.
155 %if %{defined build_src_rpm}
156 %define release @SPL_META_RELEASE@
157 %define requires %{kpkg}
158 %else
159 %define relext %(echo %{kverpkg} | %{__sed} -e 's/-/_/g')
160 %define release @SPL_META_RELEASE@_%{relext}
161 %define requires %{kpkg} %{koppkg} %{kverpkg}
162 %endif
163
164 Summary: Solaris Porting Layer Modules
165 Group: Utilities/System
166 Name: %{name}
167 Version: %{version}
168 Release: %{release}
169 License: @LICENSE@
170 URL: git://eris.llnl.gov/spl.git
171 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-%(%{__id_u} -n)
172 Source: @PACKAGE@-%{version}.tar.gz
173 Requires: %{requires}
174 BuildRequires: %{kdevpkg}
175
176 %description
177 The %{name} package contains kernel modules for emulating Solaris style
178 primatives in the linux kernel. These include, but are not limited to:
179 atomic, condvar, debug, error, memory, kobject, kstat, mutex, rwlock,
180 taskq, thread, time, and vnode APIs.
181
182 %package devel
183 Summary: Solaris Porting Layer Headers and Symbols
184 Group: Development/Libraries
185 Requires: %{requires}
186 BuildRequires: %{kdevpkg}
187
188 %description devel
189 The %{name}-devel package contains the header files and Module{s}.symvers
190 symbols needed for building additional modules which use %{name}.
191
192 %prep
193 %setup -n @PACKAGE@-%{version}
194 %build
195 %configure --with-linux=%{kdir} --with-linux-obj=%{kobj} \
196 --with-config=kernel
197 make
198
199 %install
200 rm -rf $RPM_BUILD_ROOT
201 make DESTDIR=$RPM_BUILD_ROOT install
202
203 %clean
204 rm -rf $RPM_BUILD_ROOT
205
206 %files
207 %defattr(-, root, root)
208 /lib/modules/*
209
210 %files devel
211 %defattr(-,root,root)
212 %{_prefix}/src/*
213
214 %post
215 if [ -f /boot/System.map-%{kver} ]; then
216 depmod -ae -F /boot/System.map-%{kver} %{kver} || exit 0
217 else
218 depmod -ae %{kver} || exit 0
219 fi
220
221 %postun
222 if [ -f /boot/System.map-%{kver} ]; then
223 depmod -ae -F /boot/System.map-%{kver} %{kver} || exit 0
224 else
225 depmod -ae %{kver} || exit 0
226 fi