1 |
|
2 |
%define kernelversion 2 |
3 |
%define patchlevel 6 |
4 |
%define sublevel 38 |
5 |
|
6 |
# kernel Makefile extraversion is substituted by |
7 |
# kpatch/kgit/kstable wich are either 0 (empty), rc (kpatch), git (kgit) |
8 |
# or stable release (kstable) |
9 |
%define kpatch 0 |
10 |
%define kstable 4 |
11 |
|
12 |
# kernel.org -gitX patch (only the number after "git") |
13 |
%define kgit 0 |
14 |
|
15 |
# this is the releaseversion |
16 |
%define mgarelease 1 |
17 |
|
18 |
# This is only to make life easier for people that creates derivated kernels |
19 |
# a.k.a name it kernel-tmb :) |
20 |
%define ktag vserver |
21 |
%define kname kernel-%{ktag} |
22 |
|
23 |
%define rpmtag %distsuffix |
24 |
%if %kpatch |
25 |
%if %kgit |
26 |
%define rpmrel %mkrel 0.%{kpatch}.%{kgit}.%{mgarelease} |
27 |
%else |
28 |
%define rpmrel %mkrel 0.%{kpatch}.%{mgarelease} |
29 |
%endif |
30 |
%else |
31 |
%define rpmrel %mkrel %{mgarelease} |
32 |
%endif |
33 |
|
34 |
# theese two never change, they are used to fool rpm/urpmi/smart |
35 |
%define fakever 1 |
36 |
%define fakerel %mkrel 1 |
37 |
|
38 |
# When we are using a pre/rc patch, the tarball is a sublevel -1 |
39 |
%if %kpatch |
40 |
%define kversion %{kernelversion}.%{patchlevel}.%{sublevel} |
41 |
%define tar_ver %{kernelversion}.%{patchlevel}.%(expr %{sublevel} - 1) |
42 |
%else |
43 |
%if %kstable |
44 |
%define kversion %{kernelversion}.%{patchlevel}.%{sublevel}.%{kstable} |
45 |
%define tar_ver %{kernelversion}.%{patchlevel}.%{sublevel} |
46 |
%else |
47 |
%define kversion %{kernelversion}.%{patchlevel}.%{sublevel} |
48 |
%define tar_ver %{kversion} |
49 |
%endif |
50 |
%endif |
51 |
%define kverrel %{kversion}-%{rpmrel} |
52 |
|
53 |
# used for not making too long names for rpms or search paths |
54 |
%if %kpatch |
55 |
%if %kgit |
56 |
%define buildrpmrel 0.%{kpatch}.%{kgit}.%{mgarelease}%{rpmtag} |
57 |
%else |
58 |
%define buildrpmrel 0.%{kpatch}.%{mgarelease}%{rpmtag} |
59 |
%endif |
60 |
%else |
61 |
%define buildrpmrel %{mgarelease}%{rpmtag} |
62 |
%endif |
63 |
|
64 |
%define buildrel %{kversion}-%{buildrpmrel} |
65 |
|
66 |
%define kvsersver_notice NOTE: This kernel is only patched with vserver patch. |
67 |
|
68 |
# having different top level names for packges means that you have to remove them by hard :( |
69 |
%define top_dir_name %{kname}-%{_arch} |
70 |
|
71 |
%define build_dir ${RPM_BUILD_DIR}/%{top_dir_name} |
72 |
%define src_dir %{build_dir}/linux-%{tar_ver} |
73 |
|
74 |
# disable useless debug rpms... |
75 |
%define _enable_debug_packages %{nil} |
76 |
%define debug_package %{nil} |
77 |
|
78 |
# build defines |
79 |
%define build_doc 1 |
80 |
%define build_source 1 |
81 |
%define build_devel 1 |
82 |
|
83 |
%define build_kernel 1 |
84 |
|
85 |
# End of user definitions |
86 |
%{?_without_kernel: %global build_kernel 0} |
87 |
%{?_without_doc: %global build_doc 0} |
88 |
%{?_without_source: %global build_source 0} |
89 |
%{?_without_devel: %global build_devel 0} |
90 |
|
91 |
%{?_with_kernel: %global build_kernel 1} |
92 |
%{?_with_doc: %global build_doc 1} |
93 |
%{?_with_source: %global build_source 1} |
94 |
%{?_with_devel: %global build_devel 1} |
95 |
|
96 |
%if %(if [ -z "$CC" ] ; then echo 0; else echo 1; fi) |
97 |
%define kmake %make CC="$CC" |
98 |
%else |
99 |
%define kmake %make |
100 |
%endif |
101 |
# there are places where parallel make don't work |
102 |
%define smake make |
103 |
|
104 |
# Parallelize xargs invocations on smp machines |
105 |
%define kxargs xargs %([ -z "$RPM_BUILD_NCPUS" ] \\\ |
106 |
&& RPM_BUILD_NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`"; \\\ |
107 |
[ "$RPM_BUILD_NCPUS" -gt 1 ] && echo "-P $RPM_BUILD_NCPUS") |
108 |
|
109 |
# Aliases for amd64 builds (better make source links?) |
110 |
%define target_cpu %(echo %{_target_cpu} | sed -e "s/amd64/x86_64/") |
111 |
%define target_arch %(echo %{_arch} | sed -e "s/amd64/x86_64/") |
112 |
|
113 |
# src.rpm description |
114 |
Summary: The Linux kernel (the core of the Linux operating system) |
115 |
Name: %{kname} |
116 |
Version: %{kversion} |
117 |
Release: %{rpmrel} |
118 |
License: GPLv2 |
119 |
Group: System/Kernel and hardware |
120 |
ExclusiveArch: %{ix86} x86_64 |
121 |
ExclusiveOS: Linux |
122 |
URL: http://www.kernel.org/ |
123 |
|
124 |
#################################################################### |
125 |
# |
126 |
# Sources |
127 |
# |
128 |
### This is for full SRC RPM |
129 |
Source0: ftp://ftp.kernel.org/pub/linux/kernel/v%{kernelversion}.%{patchlevel}/linux-%{tar_ver}.tar.bz2 |
130 |
Source1: ftp://ftp.kernel.org/pub/linux/kernel/v%{kernelversion}.%{patchlevel}/linux-%{tar_ver}.tar.bz2.sign |
131 |
|
132 |
# This is for disabling mrproper and other targets on -devel rpms |
133 |
Source2: disable-mrproper-in-devel-rpms.patch |
134 |
|
135 |
Source4: README.kernel-sources |
136 |
|
137 |
# Kernel defconfigs |
138 |
Source20: i386_defconfig |
139 |
Source21: x86_64_defconfig |
140 |
|
141 |
|
142 |
#################################################################### |
143 |
# |
144 |
# Patches |
145 |
|
146 |
# |
147 |
# Patch0 to Patch100 are for core kernel upgrades. |
148 |
# |
149 |
|
150 |
# Pre linus patch: ftp://ftp.kernel.org/pub/linux/kernel/v%{kernelversion}.%{patchlevel}/testing |
151 |
|
152 |
%if %kpatch |
153 |
Patch1: ftp://ftp.kernel.org/pub/linux/kernel/v%{kernelversion}.%{patchlevel}/testing/patch-%{kernelversion}.%{patchlevel}.%{sublevel}-%{kpatch}.bz2 |
154 |
Source10: ftp://ftp.kernel.org/pub/linux/kernel/v%{kernelversion}.%{patchlevel}/testing/patch-%{kernelversion}.%{patchlevel}.%{sublevel}-%{kpatch}.bz2.sign |
155 |
%endif |
156 |
%if %kstable |
157 |
Patch1: ftp://ftp.kernel.org/pub/linux/kernel/v%{kernelversion}.%{patchlevel}/patch-%{kversion}.bz2 |
158 |
Source10: ftp://ftp.kernel.org/pub/linux/kernel/v%{kernelversion}.%{patchlevel}/patch-%{kversion}.bz2.sign |
159 |
%endif |
160 |
# kernel.org -git |
161 |
%if %kgit |
162 |
Patch2: ftp://ftp.kernel.org/pub/linux/kernel/v%{kernelversion}.%{patchlevel}/snapshots/patch-%{kernelversion}.%{patchlevel}.%{sublevel}-%{kpatch}-git%{kgit}.bz2 |
163 |
Source11: ftp://ftp.kernel.org/pub/linux/kernel/v%{kernelversion}.%{patchlevel}/snapshots/patch-%{kernelversion}.%{patchlevel}.%{sublevel}-%{kpatch}-git%{kgit}.bz2.sign |
164 |
%endif |
165 |
|
166 |
Patch3: http://vserver.13thfloor.at/Experimental/patch-2.6.38.4-vs2.3.0.37-rc15.diff |
167 |
|
168 |
#END |
169 |
#################################################################### |
170 |
|
171 |
# Defines for the things that are needed for all the kernels |
172 |
%define requires1 module-init-tools >= 3.6-10 |
173 |
%define requires2 mkinitrd >= 3.4.43-10 |
174 |
%define requires3 bootloader-utils >= 1.9 |
175 |
%define requires4 sysfsutils |
176 |
%define requires5 kernel-firmware >= 20101024 |
177 |
|
178 |
%define kprovides kernel = %{tar_ver}, alsa |
179 |
|
180 |
BuildRoot: %{_tmppath}/%{name}-%{kversion}-build-%{_arch} |
181 |
Autoreqprov: no |
182 |
BuildRequires: gcc module-init-tools >= 0.9.15 |
183 |
|
184 |
%description |
185 |
Source package to build the Linux-VServer kernel. |
186 |
|
187 |
%{kvserver_notice} |
188 |
|
189 |
|
190 |
# |
191 |
# kernel: Symmetric MultiProcessing kernel |
192 |
# |
193 |
%if %build_kernel |
194 |
%package -n %{kname}-%{buildrel} |
195 |
Version: %{fakever} |
196 |
Release: %{fakerel} |
197 |
%ifarch %{ix86} |
198 |
Summary: Linux Kernel for vserver use with i586 & 4GB RAM |
199 |
%else |
200 |
Summary: Linux Kernel for vserver use with %{_arch} |
201 |
%endif |
202 |
Group: System/Kernel and hardware |
203 |
Provides: %kprovides |
204 |
Provides: should-restart = system |
205 |
Requires: %requires1 |
206 |
Requires: %requires2 |
207 |
Requires: %requires3 |
208 |
Requires: %requires4 |
209 |
Requires: %requires5 |
210 |
|
211 |
%ifarch %{ix86} |
212 |
Conflicts: arch(x86_64) |
213 |
%endif |
214 |
|
215 |
%description -n %{kname}-%{buildrel} |
216 |
%ifarch %{ix86} |
217 |
This kernel is compiled for vserver use, single or multiple i586 |
218 |
processor(s)/core(s) and a maximum of 3GB RAM, using HZ_1000, no |
219 |
preempt, CFS cpu scheduler and cfq i/o scheduler. |
220 |
This kernel relies on in-kernel smp alternatives to switch between |
221 |
up & smp mode depending on detected hardware. To force the kernel |
222 |
to boot in single processor mode, use the "nosmp" boot parameter. |
223 |
%else |
224 |
This kernel is compiled for vserver use, single or multiple %{_arch} |
225 |
processor(s)/core(s), using HZ_1000, no preempt, CFS cpu |
226 |
scheduler and cfq i/o scheduler. |
227 |
This kernel relies on in-kernel smp alternatives to switch between |
228 |
up & smp mode depending on detected hardware. To force the kernel |
229 |
to boot in single processor mode, use the "nosmp" boot parameter. |
230 |
%endif |
231 |
|
232 |
%{kvserver_notice} |
233 |
%endif # build_kernel |
234 |
|
235 |
|
236 |
# |
237 |
# kernel-source: kernel sources |
238 |
# |
239 |
%if %build_source |
240 |
%package -n %{kname}-source-%{buildrel} |
241 |
Version: %{fakever} |
242 |
Release: %{fakerel} |
243 |
Provides: %{kname}-source, kernel-source = %{kverrel}, kernel-devel = %{kverrel} |
244 |
Provides: %{kname}-source-%{kernelversion}.%{patchlevel} |
245 |
Requires: glibc-devel, ncurses-devel, make, gcc, perl, diffutils |
246 |
Summary: The source code for %{kname} |
247 |
Group: Development/Kernel |
248 |
Autoreqprov: no |
249 |
%ifarch %{ix86} |
250 |
Conflicts: arch(x86_64) |
251 |
%endif |
252 |
|
253 |
%description -n %{kname}-source-%{buildrel} |
254 |
The %{kname}-source package contains the source code files for the |
255 |
Linux-VServer kernel. Theese source files are only needed if you want to |
256 |
build your own custom kernel that is better tuned to your particular hardware. |
257 |
|
258 |
If you only want the files needed to build 3rdparty (nVidia, Ati, dkms-*,...) |
259 |
drivers against, install the *-devel-* rpm that is matching your kernel. |
260 |
|
261 |
%{kvserver_notice} |
262 |
%endif #build_source |
263 |
|
264 |
|
265 |
# |
266 |
# kernel-devel: stripped kernel sources |
267 |
# |
268 |
%if %build_devel |
269 |
%package -n %{kname}-devel-%{buildrel} |
270 |
Version: %{fakever} |
271 |
Release: %{fakerel} |
272 |
Provides: kernel-devel = %{kverrel} |
273 |
Summary: The %{kname} devel files for 3rdparty modules build |
274 |
Group: Development/Kernel |
275 |
Autoreqprov: no |
276 |
Requires: glibc-devel, ncurses-devel, make, gcc, perl |
277 |
%ifarch %{ix86} |
278 |
Conflicts: arch(x86_64) |
279 |
%endif |
280 |
|
281 |
%description -n %{kname}-devel-%{buildrel} |
282 |
This package contains the kernel-devel files that should be enough to build |
283 |
3rdparty drivers against for use with the %{kname}-%{buildrel}. |
284 |
|
285 |
If you want to build your own kernel, you need to install the full |
286 |
%{kname}-source-%{buildrel} rpm. |
287 |
|
288 |
%{kvserver_notice} |
289 |
%endif #build_devel |
290 |
|
291 |
|
292 |
# |
293 |
# kernel-doc: documentation for the Linux kernel |
294 |
# |
295 |
%if %build_doc |
296 |
%package -n %{kname}-doc |
297 |
Version: %{kversion} |
298 |
Release: %{rpmrel} |
299 |
Summary: Various documentation bits found in the kernel source |
300 |
Group: Books/Computer books |
301 |
Buildarch: noarch |
302 |
|
303 |
%description -n %{kname}-doc |
304 |
This package contains documentation files form the kernel source. Various |
305 |
bits of information about the Linux-VServer kernel and the device drivers |
306 |
shipped with it are documented in these files. You also might want install |
307 |
this package if you need a reference to the options that can be passed to |
308 |
Linux kernel modules at load time. |
309 |
|
310 |
%{kvserver_notice} |
311 |
%endif #build_doc |
312 |
|
313 |
|
314 |
# |
315 |
# kernel-latest: virtual rpm |
316 |
# |
317 |
%if %build_kernel |
318 |
%package -n %{kname}-latest |
319 |
Version: %{kversion} |
320 |
Release: %{rpmrel} |
321 |
Summary: Virtual rpm for latest %{kname} |
322 |
Group: System/Kernel and hardware |
323 |
Requires: %{kname}-%{buildrel} |
324 |
Obsoletes: %{kname}-smp-latest |
325 |
%ifarch %{ix86} |
326 |
Conflicts: arch(x86_64) |
327 |
%endif |
328 |
|
329 |
%description -n %{kname}-latest |
330 |
This package is a virtual rpm that aims to make sure you always have the |
331 |
latest %{kname} installed... |
332 |
|
333 |
%{kvserver_notice} |
334 |
%endif #build_kernel |
335 |
|
336 |
|
337 |
# |
338 |
# kernel-source-latest: virtual rpm |
339 |
# |
340 |
%if %build_source |
341 |
%package -n %{kname}-source-latest |
342 |
Version: %{kversion} |
343 |
Release: %{rpmrel} |
344 |
Summary: Virtual rpm for latest %{kname}-source |
345 |
Group: System/Kernel and hardware |
346 |
Requires: %{kname}-source-%{buildrel} |
347 |
%ifarch %{ix86} |
348 |
Conflicts: arch(x86_64) |
349 |
%endif |
350 |
|
351 |
%description -n %{kname}-source-latest |
352 |
This package is a virtual rpm that aims to make sure you always have the |
353 |
latest %{kname}-source installed... |
354 |
|
355 |
%{kvserver_notice} |
356 |
%endif #build_source |
357 |
|
358 |
|
359 |
# |
360 |
# kernel-devel-latest: virtual rpm |
361 |
# |
362 |
%if %build_devel |
363 |
%package -n %{kname}-devel-latest |
364 |
Version: %{kversion} |
365 |
Release: %{rpmrel} |
366 |
Summary: Virtual rpm for latest %{kname}-devel |
367 |
Group: System/Kernel and hardware |
368 |
Requires: %{kname}-devel-%{buildrel} |
369 |
Obsoletes: %{kname}-smp-devel-latest |
370 |
Obsoletes: %{kname}-smp-headers-latest |
371 |
%ifarch %{ix86} |
372 |
Conflicts: arch(x86_64) |
373 |
%endif |
374 |
|
375 |
%description -n %{kname}-devel-latest |
376 |
This package is a virtual rpm that aims to make sure you always have the |
377 |
latest %{kname}-devel installed... |
378 |
|
379 |
%{kvserver_notice} |
380 |
%endif #build_devel |
381 |
|
382 |
|
383 |
# |
384 |
# End packages - here begins build stage |
385 |
# |
386 |
%prep |
387 |
%setup -q -n %top_dir_name -c |
388 |
|
389 |
pushd %src_dir |
390 |
%if %kpatch |
391 |
%patch1 -p1 |
392 |
%endif |
393 |
%if %kstable |
394 |
%patch1 -p1 |
395 |
%endif |
396 |
%if %kgit |
397 |
%patch2 -p1 |
398 |
%endif |
399 |
%patch3 -p1 |
400 |
popd |
401 |
|
402 |
# PATCH END |
403 |
|
404 |
|
405 |
# |
406 |
# Setup Begin |
407 |
# |
408 |
|
409 |
|
410 |
# Install defconfigs... |
411 |
install %{SOURCE20} %{build_dir}/linux-%{tar_ver}/arch/x86/configs/ |
412 |
install %{SOURCE21} %{build_dir}/linux-%{tar_ver}/arch/x86/configs/ |
413 |
|
414 |
# make sure the kernel has the sublevel we know it has... |
415 |
LC_ALL=C perl -p -i -e "s/^SUBLEVEL.*/SUBLEVEL = %{sublevel}/" Makefile |
416 |
|
417 |
|
418 |
%build |
419 |
# Common target directories |
420 |
%define _bootdir /boot |
421 |
%define _modulesdir /lib/modules |
422 |
%define _kerneldir /usr/src/linux-%{kversion}-%{ktag}-%{buildrpmrel} |
423 |
%define _develdir /usr/src/linux-%{kversion}-%{ktag}-devel-%{buildrpmrel} |
424 |
|
425 |
|
426 |
# Directories definition needed for building |
427 |
%define temp_root %{build_dir}/temp-root |
428 |
%define temp_boot %{temp_root}%{_bootdir} |
429 |
%define temp_modules %{temp_root}%{_modulesdir} |
430 |
%define temp_source %{temp_root}%{_kerneldir} |
431 |
%define temp_devel %{temp_root}%{_develdir} |
432 |
|
433 |
|
434 |
# Create a simulacro of buildroot |
435 |
rm -rf %{temp_root} |
436 |
install -d %{temp_root} |
437 |
|
438 |
|
439 |
# make sure we are in the directory |
440 |
cd %{src_dir} |
441 |
|
442 |
# make sure EXTRAVERSION says what we want it to say |
443 |
%if %kstable |
444 |
LC_ALL=C perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = .%{kstable}-%{ktag}-%{buildrpmrel}/" Makefile |
445 |
%else |
446 |
LC_ALL=C perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = -%{ktag}-%{buildrpmrel}/" Makefile |
447 |
%endif |
448 |
|
449 |
# Prepare the kernel |
450 |
%smake -s mrproper |
451 |
%ifarch %{ix86} x86_64 |
452 |
cp arch/x86/configs/%{target_arch}_defconfig .config |
453 |
%else |
454 |
cp arch/%{target_arch}/defconfig .config |
455 |
%endif |
456 |
%smake oldconfig |
457 |
|
458 |
# Build the kernel |
459 |
%kmake all |
460 |
|
461 |
# Install kernel |
462 |
install -d %{temp_boot} |
463 |
install -m 644 System.map \ |
464 |
%{temp_boot}/System.map-%{kversion}-%{ktag}-%{buildrpmrel} |
465 |
install -m 644 .config %{temp_boot}/config-%{kversion}-%{ktag}-%{buildrpmrel} |
466 |
cp -f arch/%{target_arch}/boot/bzImage \ |
467 |
%{temp_boot}/vmlinuz-%{kversion}-%{ktag}-%{buildrpmrel} |
468 |
|
469 |
# Install modules |
470 |
install -d %{temp_modules}/%{kversion}-%{ktag}-%{buildrpmrel} |
471 |
%smake INSTALL_MOD_PATH=%{temp_root} \ |
472 |
KERNELRELEASE=%{kversion}-%{ktag}-%{buildrpmrel} \ |
473 |
modules_install |
474 |
|
475 |
# remove /lib/firmware, we use a separate kernel-firmware |
476 |
rm -rf %{temp_root}/lib/firmware |
477 |
|
478 |
# Save devel tree |
479 |
%if %build_devel |
480 |
mkdir -p %{temp_devel} |
481 |
for i in $(find . -name 'Makefile*'); do cp -R --parents $i %{temp_devel};done |
482 |
for i in $(find . -name 'Kconfig*' -o -name 'Kbuild*' -o -name config.mk); do cp -R --parents $i %{temp_devel};done |
483 |
cp -fR include %{temp_devel} |
484 |
cp -fR scripts %{temp_devel} |
485 |
%ifarch %{ix86} x86_64 |
486 |
cp -fR arch/x86/kernel/asm-offsets.{c,s} %{temp_devel}/arch/x86/kernel/ |
487 |
cp -fR arch/x86/kernel/asm-offsets_{32,64}.c %{temp_devel}/arch/x86/kernel/ |
488 |
cp -fR arch/x86/include %{temp_devel}/arch/x86/ |
489 |
%else |
490 |
cp -fR arch/%{target_arch}/kernel/asm-offsets.{c,s} %{temp_devel}/arch/%{target_arch}/kernel/ |
491 |
cp -fR arch/%{target_arch}/include %{temp_devel}/arch/%{target_arch}/ |
492 |
%endif |
493 |
|
494 |
# Needed for generation of kernel/bounds.s |
495 |
cp -fR kernel/bounds.c %{temp_devel}/kernel/ |
496 |
|
497 |
# Needed for lguest |
498 |
cp -fR drivers/lguest/lg.h %{temp_devel}/drivers/lguest/ |
499 |
|
500 |
cp -fR .config Module.symvers %{temp_devel} |
501 |
|
502 |
# Needed for truecrypt build (Danny) |
503 |
cp -fR drivers/md/dm.h %{temp_devel}/drivers/md/ |
504 |
|
505 |
# Needed for external dvb tree (#41418) |
506 |
cp -fR drivers/media/dvb/dvb-core/*.h %{temp_devel}/drivers/media/dvb/dvb-core/ |
507 |
cp -fR drivers/media/dvb/frontends/lgdt330x.h %{temp_devel}/drivers/media/dvb/frontends/ |
508 |
|
509 |
# add acpica header files, needed for fglrx build |
510 |
cp -fR drivers/acpi/acpica/*.h %{temp_devel}/drivers/acpi/acpica/ |
511 |
|
512 |
# Check and clean the -devel tree |
513 |
pushd %{temp_devel} >/dev/null |
514 |
%smake -s prepare scripts clean |
515 |
rm -f .config.old |
516 |
popd >/dev/null |
517 |
|
518 |
# Disable mrproper and other targets |
519 |
patch -p1 -d %{temp_devel} -i %{SOURCE2} |
520 |
|
521 |
# Fix permissions |
522 |
chmod -R a+rX %{temp_devel} |
523 |
%endif # build_devel |
524 |
|
525 |
#make sure we are in the directory |
526 |
cd %src_dir |
527 |
|
528 |
# kernel-source is shipped as an unprepared tree |
529 |
%smake -s mrproper |
530 |
|
531 |
|
532 |
### |
533 |
### Install |
534 |
### |
535 |
%install |
536 |
install -m 644 %{SOURCE4} . |
537 |
|
538 |
cd %src_dir |
539 |
# Directories definition needed for installing |
540 |
%define target_source %{buildroot}/%{_kerneldir} |
541 |
%define target_boot %{buildroot}%{_bootdir} |
542 |
%define target_modules %{buildroot}%{_modulesdir} |
543 |
%define target_devel %{buildroot}%{_develdir} |
544 |
|
545 |
# We want to be able to test several times the install part |
546 |
rm -rf %{buildroot} |
547 |
cp -a %{temp_root} %{buildroot} |
548 |
|
549 |
# Create directories infastructure |
550 |
%if %build_source |
551 |
install -d %{target_source} |
552 |
|
553 |
tar cf - . | tar xf - -C %{target_source} |
554 |
chmod -R a+rX %{target_source} |
555 |
|
556 |
# we remove all the source files that we don't ship |
557 |
|
558 |
# first architecture files |
559 |
for i in alpha arm avr32 blackfin cris frv h8300 ia64 m32r mips microblaze \ |
560 |
m68k m68knommu mn10300 parisc powerpc ppc s390 score sh sh64 sparc \ |
561 |
tile v850 xtensa; do |
562 |
rm -rf %{target_source}/arch/$i |
563 |
|
564 |
%if %build_devel |
565 |
rm -rf %{target_devel}/arch/$i |
566 |
%endif |
567 |
done |
568 |
|
569 |
# remove arch files based on target arch |
570 |
%ifnarch %{ix86} x86_64 |
571 |
rm -rf %{target_source}/arch/x86 |
572 |
%if %build_devel |
573 |
rm -rf %{target_devel}/arch/x86 |
574 |
%endif |
575 |
%endif |
576 |
|
577 |
|
578 |
# other misc files |
579 |
rm -f %{target_source}/{.config.old,.config.cmd,.tmp_gas_check,.mailmap,.missing-syscalls.d,arch/.gitignore} |
580 |
|
581 |
#endif %build_source |
582 |
%endif |
583 |
|
584 |
|
585 |
# gzipping modules |
586 |
find %{target_modules} -name "*.ko" | %kxargs gzip -9 |
587 |
|
588 |
|
589 |
# We used to have a copy of PrepareKernel here |
590 |
# Now, we make sure that the thing in the linux dir is what we want it to be |
591 |
|
592 |
for i in %{target_modules}/*; do |
593 |
rm -f $i/build $i/source |
594 |
done |
595 |
|
596 |
|
597 |
# sniff, if we gzipped all the modules, we change the stamp :( |
598 |
# we really need the depmod -ae here |
599 |
pushd %{target_modules} |
600 |
for i in *; do |
601 |
/sbin/depmod -u -ae -b %{buildroot} -r -F %{target_boot}/System.map-$i $i |
602 |
echo $? |
603 |
done |
604 |
|
605 |
for i in *; do |
606 |
pushd $i |
607 |
echo "Creating module.description for $i" |
608 |
modules=`find . -name "*.ko.gz"` |
609 |
echo $modules | %kxargs /sbin/modinfo \ |
610 |
| perl -lne 'print "$name\t$1" if $name && /^description:\s*(.*)/; $name = $1 if m!^filename:\s*(.*)\.k?o!; $name =~ s!.*/!!' > modules.description |
611 |
popd |
612 |
done |
613 |
popd |
614 |
|
615 |
|
616 |
### |
617 |
### Clean |
618 |
### |
619 |
|
620 |
%clean |
621 |
rm -rf %{buildroot} |
622 |
# We don't want to remove this, the whole reason of its existence is to be |
623 |
# able to do several rpm --short-circuit -bi for testing install |
624 |
# phase without repeating compilation phase |
625 |
#rm -rf %{temp_root} |
626 |
|
627 |
|
628 |
### |
629 |
### Scripts |
630 |
### |
631 |
|
632 |
### kernel |
633 |
%if %build_kernel |
634 |
%preun -n %{kname}-%{buildrel} |
635 |
/sbin/installkernel -R %{kversion}-%{ktag}-%{buildrpmrel} |
636 |
if [ -L /lib/modules/%{kversion}-%{ktag}-%{buildrpmrel}/build ]; then |
637 |
rm -f /lib/modules/%{kversion}-%{ktag}-%{buildrpmrel}/build |
638 |
fi |
639 |
if [ -L /lib/modules/%{kversion}-%{ktag}-%{buildrpmrel}/source ]; then |
640 |
rm -f /lib/modules/%{kversion}-%{ktag}-%{buildrpmrel}/source |
641 |
fi |
642 |
pushd /boot > /dev/null |
643 |
if [ -L vmlinuz-%{ktag} ]; then |
644 |
if [ "$(readlink vmlinuz-%{ktag})" = "vmlinuz-%{kversion}-%{ktag}-%{buildrpmrel}" ]; then |
645 |
rm -f vmlinuz-%{ktag} |
646 |
fi |
647 |
fi |
648 |
if [ -L initrd-%{ktag}.img ]; then |
649 |
if [ "$(readlink initrd-%{ktag}.img)" = "initrd-%{kversion}-%{ktag}-%{buildrpmrel}.img" ]; then |
650 |
rm -f initrd-%{ktag}.img |
651 |
fi |
652 |
fi |
653 |
popd > /dev/null |
654 |
exit 0 |
655 |
|
656 |
%post -n %{kname}-%{buildrel} |
657 |
/sbin/installkernel -L %{kversion}-%{ktag}-%{buildrpmrel} |
658 |
if [ -d /usr/src/linux-%{kversion}-%{ktag}-devel-%{buildrpmrel} ]; then |
659 |
ln -sf /usr/src/linux-%{kversion}-%{ktag}-devel-%{buildrpmrel} \ |
660 |
/lib/modules/%{kversion}-%{ktag}-%{buildrpmrel}/build |
661 |
ln -sf /usr/src/linux-%{kversion}-%{ktag}-devel-%{buildrpmrel} \ |
662 |
/lib/modules/%{kversion}-%{ktag}-%{buildrpmrel}/source |
663 |
fi |
664 |
pushd /boot > /dev/null |
665 |
if [ -L vmlinuz-%{ktag} ]; then |
666 |
rm -f vmlinuz-%{ktag} |
667 |
fi |
668 |
ln -sf vmlinuz-%{kversion}-%{ktag}-%{buildrpmrel} vmlinuz-%{ktag} |
669 |
if [ -L initrd-%{ktag}.img ]; then |
670 |
rm -f initrd-%{ktag}.img |
671 |
fi |
672 |
ln -sf initrd-%{kversion}-%{ktag}-%{buildrpmrel}.img initrd-%{ktag}.img |
673 |
popd > /dev/null |
674 |
|
675 |
%postun -n %{kname}-%{buildrel} |
676 |
/sbin/kernel_remove_initrd %{buildrel} |
677 |
%endif # build_kernel |
678 |
|
679 |
|
680 |
### kernel-devel |
681 |
%if %build_devel |
682 |
%post -n %{kname}-devel-%{buildrel} |
683 |
# place /build and /source symlinks in place. |
684 |
if [ -d /lib/modules/%{kversion}-%{ktag}-%{buildrpmrel} ]; then |
685 |
ln -sf /usr/src/linux-%{kversion}-%{ktag}-devel-%{buildrpmrel} \ |
686 |
/lib/modules/%{kversion}-%{ktag}-%{buildrpmrel}/build |
687 |
ln -sf /usr/src/linux-%{kversion}-%{ktag}-devel-%{buildrpmrel} \ |
688 |
/lib/modules/%{kversion}-%{ktag}-%{buildrpmrel}/source |
689 |
fi |
690 |
|
691 |
%preun -n %{kname}-devel-%{buildrel} |
692 |
# we need to delete <modules>/{build,source} at uninstall |
693 |
if [ -L /lib/modules/%{kversion}-%{ktag}-%{buildrpmrel}/build ]; then |
694 |
rm -f /lib/modules/%{kversion}-%{ktag}-%{buildrpmrel}/build |
695 |
fi |
696 |
if [ -L /lib/modules/%{kversion}-%{ktag}-%{buildrpmrel}/source ]; then |
697 |
rm -f /lib/modules/%{kversion}-%{ktag}-%{buildrpmrel}/source |
698 |
fi |
699 |
exit 0 |
700 |
%endif #build_devel |
701 |
|
702 |
|
703 |
### kernel-source |
704 |
%if %build_source |
705 |
%post -n %{kname}-source-%{buildrel} |
706 |
if [ -d "/lib/modules/%{kversion}-%{ktag}-%{buildrpmrel}" ]; then |
707 |
if [ ! -L $i/build -a ! -L $i/source ]; then |
708 |
rm -f $i/{build,source} |
709 |
ln -sf /usr/src/linux-%{kversion}-%{ktag}-%{buildrpmrel} \ |
710 |
$i/build |
711 |
ln -sf /usr/src/linux-%{kversion}-%{ktag}-%{buildrpmrel} \ |
712 |
$i/source |
713 |
fi |
714 |
fi |
715 |
|
716 |
%preun -n %{kname}-source-%{buildrel} |
717 |
for i in /lib/modules/%{kversion}-%{ktag}-%{buildrpmrel}/{build,source}; do |
718 |
if [ -L $i ]; then |
719 |
if [ "$(readlink $i)" = "/usr/src/linux-%{kversion}-%{ktag}-%{buildrpmrel}" ]; then |
720 |
rm -f $i |
721 |
fi |
722 |
fi |
723 |
done |
724 |
exit 0 |
725 |
%endif # build_source |
726 |
|
727 |
|
728 |
### |
729 |
### file lists |
730 |
### |
731 |
|
732 |
# kernel |
733 |
%if %build_kernel |
734 |
%files -n %{kname}-%{buildrel} |
735 |
%defattr(-,root,root) |
736 |
%{_bootdir}/config-%{kversion}-%{ktag}-%{buildrpmrel} |
737 |
%{_bootdir}/vmlinuz-%{kversion}-%{ktag}-%{buildrpmrel} |
738 |
%{_bootdir}/System.map-%{kversion}-%{ktag}-%{buildrpmrel} |
739 |
%dir %{_modulesdir}/%{kversion}-%{ktag}-%{buildrpmrel}/ |
740 |
%{_modulesdir}/%{kversion}-%{ktag}-%{buildrpmrel}/kernel |
741 |
%{_modulesdir}/%{kversion}-%{ktag}-%{buildrpmrel}/modules.* |
742 |
%doc README.kernel-sources |
743 |
%endif # build_kernel |
744 |
|
745 |
# kernel-source |
746 |
%if %build_source |
747 |
%files -n %{kname}-source-%{buildrel} |
748 |
%defattr(-,root,root) |
749 |
%dir %{_kerneldir} |
750 |
%dir %{_kerneldir}/arch |
751 |
%dir %{_kerneldir}/include |
752 |
%{_kerneldir}/.gitignore |
753 |
%{_kerneldir}/COPYING |
754 |
%{_kerneldir}/CREDITS |
755 |
%{_kerneldir}/Documentation |
756 |
%{_kerneldir}/Kbuild |
757 |
%{_kerneldir}/Kconfig |
758 |
%{_kerneldir}/MAINTAINERS |
759 |
%{_kerneldir}/Makefile |
760 |
%{_kerneldir}/README |
761 |
%{_kerneldir}/REPORTING-BUGS |
762 |
%{_kerneldir}/arch/Kconfig |
763 |
%ifarch %{ix86} x86_64 |
764 |
%{_kerneldir}/arch/x86 |
765 |
%endif |
766 |
%{_kerneldir}/arch/um |
767 |
%{_kerneldir}/block |
768 |
%{_kerneldir}/crypto |
769 |
%{_kerneldir}/drivers |
770 |
%{_kerneldir}/firmware |
771 |
%{_kerneldir}/fs |
772 |
%{_kerneldir}/include/Kbuild |
773 |
%{_kerneldir}/include/acpi |
774 |
%{_kerneldir}/include/asm-generic |
775 |
%{_kerneldir}/include/crypto |
776 |
%{_kerneldir}/include/drm |
777 |
%{_kerneldir}/include/linux |
778 |
%{_kerneldir}/include/math-emu |
779 |
%{_kerneldir}/include/net |
780 |
%{_kerneldir}/include/pcmcia |
781 |
%{_kerneldir}/include/scsi |
782 |
%{_kerneldir}/include/sound |
783 |
%{_kerneldir}/include/target |
784 |
%{_kerneldir}/include/trace |
785 |
%{_kerneldir}/include/video |
786 |
%{_kerneldir}/include/media |
787 |
%{_kerneldir}/include/mtd |
788 |
%{_kerneldir}/include/rxrpc |
789 |
%{_kerneldir}/include/keys |
790 |
%{_kerneldir}/include/rdma |
791 |
%{_kerneldir}/include/xen |
792 |
%{_kerneldir}/init |
793 |
%{_kerneldir}/ipc |
794 |
%{_kerneldir}/kernel |
795 |
%{_kerneldir}/lib |
796 |
%{_kerneldir}/mm |
797 |
%{_kerneldir}/net |
798 |
%{_kerneldir}/samples |
799 |
%{_kerneldir}/scripts |
800 |
%{_kerneldir}/security |
801 |
%{_kerneldir}/sound |
802 |
%{_kerneldir}/tools |
803 |
%{_kerneldir}/usr |
804 |
%{_kerneldir}/virt |
805 |
%doc README.kernel-sources |
806 |
%endif # build_source |
807 |
|
808 |
# kernel-devel |
809 |
%if %build_devel |
810 |
%files -n %{kname}-devel-%{buildrel} |
811 |
%defattr(-,root,root) |
812 |
%dir %{_develdir} |
813 |
%dir %{_develdir}/arch |
814 |
%dir %{_develdir}/include |
815 |
%{_develdir}/.config |
816 |
%{_develdir}/Documentation |
817 |
%{_develdir}/Kbuild |
818 |
%{_develdir}/Kconfig |
819 |
%{_develdir}/Makefile |
820 |
%{_develdir}/Module.symvers |
821 |
%{_develdir}/arch/Kconfig |
822 |
%ifarch %{ix86} x86_64 |
823 |
%{_develdir}/arch/x86 |
824 |
%endif |
825 |
%{_develdir}/arch/um |
826 |
%{_develdir}/block |
827 |
%{_develdir}/crypto |
828 |
%{_develdir}/drivers |
829 |
%{_develdir}/firmware |
830 |
%{_develdir}/fs |
831 |
%{_develdir}/include/Kbuild |
832 |
%{_develdir}/include/acpi |
833 |
%{_develdir}/include/asm-generic |
834 |
%{_develdir}/include/config |
835 |
%{_develdir}/include/crypto |
836 |
%{_develdir}/include/drm |
837 |
%{_develdir}/include/generated |
838 |
%{_develdir}/include/keys |
839 |
%{_develdir}/include/linux |
840 |
%{_develdir}/include/math-emu |
841 |
%{_develdir}/include/mtd |
842 |
%{_develdir}/include/net |
843 |
%{_develdir}/include/pcmcia |
844 |
%{_develdir}/include/rdma |
845 |
%{_develdir}/include/scsi |
846 |
%{_develdir}/include/sound |
847 |
%{_develdir}/include/target |
848 |
%{_develdir}/include/trace |
849 |
%{_develdir}/include/video |
850 |
%{_develdir}/include/media |
851 |
%{_develdir}/include/rxrpc |
852 |
%{_develdir}/include/xen |
853 |
%{_develdir}/init |
854 |
%{_develdir}/ipc |
855 |
%{_develdir}/kernel |
856 |
%{_develdir}/lib |
857 |
%{_develdir}/mm |
858 |
%{_develdir}/net |
859 |
%{_develdir}/samples |
860 |
%{_develdir}/scripts |
861 |
%{_develdir}/security |
862 |
%{_develdir}/sound |
863 |
%{_develdir}/tools |
864 |
%{_develdir}/usr |
865 |
%{_develdir}/virt |
866 |
%doc README.kernel-sources |
867 |
%endif # build_devel |
868 |
|
869 |
|
870 |
%if %build_doc |
871 |
%files -n %{kname}-doc |
872 |
%defattr(-,root,root) |
873 |
%doc linux-%{tar_ver}/Documentation/* |
874 |
%endif # build_doc |
875 |
|
876 |
%if %build_kernel |
877 |
%files -n %{kname}-latest |
878 |
%defattr(-,root,root) |
879 |
%endif # build_kernel |
880 |
|
881 |
%if %build_source |
882 |
%files -n %{kname}-source-latest |
883 |
%defattr(-,root,root) |
884 |
%endif # build_source |
885 |
|
886 |
%if %build_devel |
887 |
%files -n %{kname}-devel-latest |
888 |
%defattr(-,root,root) |
889 |
%endif # build_devel |