change pldistro-dependent config filenames - create symlinks for onelab for now
[linux-2.6.git] / kernel-2.6.spec
1 Summary: The Linux kernel (the core of the Linux operating system)
2
3 # What parts do we want to build?  We must build at least one kernel.
4 # These are the kernels that are built IF the architecture allows it.
5
6 %define buildup 1
7 %define builduml 0
8 %define buildxen 0
9 %define builddoc 0
10
11 # Versions of various parts
12
13 #
14 # Polite request for people who spin their own kernel rpms:
15 # please modify the "release" field in a way that identifies
16 # that the kernel isn't the stock distribution kernel, for example by
17 # adding some text to the end of the version number.
18 #
19 %define sublevel 22
20 %define patchlevel 14
21 %define kversion 2.6.%{sublevel}
22 %define rpmversion 2.6.%{sublevel}%{?patchlevel:.%{patchlevel}}
23
24 %define vsversion 2.3.0.29
25
26 # Will go away when VServer supports NetNS in mainline. Currently, it must be 
27 # updated every time the PL kernel is updated.
28 %define vini_pl_patch 561
29
30 %define specrelease 1
31
32 %define release vs%{vsversion}.%{specrelease}%{?pldistro:.%{pldistro}}%{?date:.%{date}}
33
34 %{!?pldistro:%global pldistro planetlab}
35
36 %define signmodules 0
37 %define make_target bzImage
38 %define KVERREL %{PACKAGE_VERSION}-%{PACKAGE_RELEASE}
39
40 # Override generic defaults with per-arch defaults
41
42 %define image_install_path boot
43
44 #
45 # Three sets of minimum package version requirements in the form of Conflicts:
46 # to versions below the minimum
47 #
48
49 #
50 # First the general kernel 2.6 required versions as per
51 # Documentation/Changes
52 #
53 %define kernel_dot_org_conflicts  ppp <= 2.3.15, pcmcia-cs <= 3.1.20, isdn4k-utils <= 3.0, mount < 2.10r-5, nfs-utils < 1.0.3, e2fsprogs < 1.29, util-linux < 2.10, jfsutils < 1.0.14, reiserfsprogs < 3.6.3, xfsprogs < 2.1.0, procps < 2.0.9, oprofile < 0.5.3
54
55
56 # Then a series of requirements that are distribution specific, either 
57 # because we add patches for something, or the older versions have 
58 # problems with the newer kernel or lack certain things that make 
59 # integration in the distro harder than needed.
60 #
61 %define package_conflicts  cipe < 1.4.5, kudzu <= 0.92, initscripts < 7.23, dev < 3.2-7, iptables < 1.2.5-3, bcm5820 < 1.81, nvidia-rh72 <= 1.0 selinux-policy-targeted < 1.23.16-1
62
63 #
64 # Several packages had bugs in them that became obvious when the NPTL
65 # threading code got integrated.
66 #
67 %define nptl_conflicts SysVinit < 2.84-13, pam < 0.75-48, vixie-cron < 3.0.1-73, privoxy < 3.0.0-8, spamassassin < 2.44-4.8.x,  cups < 1.1.17-13
68
69 #
70 # The ld.so.conf.d file we install uses syntax older ldconfig's don't grok.
71 #
72
73 # MEF commented out
74 # %define xen_conflicts glibc < 2.3.5-1
75
76 #
77 # Packages that need to be installed before the kernel is, because the %post
78 # scripts use them.
79 #
80 %define kernel_prereq  fileutils, module-init-tools, initscripts >= 5.83, mkinitrd >= 3.5.5
81
82 URL: http://svn.planet-lab.org/wiki/linux-2.6
83
84 Name: kernel
85 Group: System Environment/Kernel
86 License: GPLv2
87 Version: %{rpmversion}
88 Release: %{release}
89 ExclusiveOS: Linux
90 Provides: kernel = %{version}
91 Provides: kernel-drm = 4.3.0
92 Provides: kernel-%{_target_cpu} = %{rpmversion}-%{release}
93 Provides: kernel-smp = %{rpmversion}-%{release}
94 Provides: kernel-smp-%{_target_cpu} = %{rpmversion}-%{release}
95 Prereq: %{kernel_prereq}
96 Conflicts: %{kernel_dot_org_conflicts}
97 Conflicts: %{package_conflicts}
98 Conflicts: %{nptl_conflicts}
99 # We can't let RPM do the dependencies automatic because it'll then pick up
100 # a correct but undesirable perl dependency from the module headers which
101 # isn't required for the kernel proper to function
102 AutoReqProv: no
103
104 #
105 # List the packages used during the kernel build
106 #
107 BuildPreReq: module-init-tools, patch >= 2.5.4, bash >= 2.03, sh-utils, tar
108 BuildPreReq: bzip2, findutils, gzip, m4, perl, make >= 3.78, gnupg, diffutils
109 BuildRequires: gcc >= 3.3.3, binutils >= 2.12, redhat-rpm-config
110 BuildConflicts: rhbuildsys(DiskFree) < 500Mb
111
112
113 Source0: ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-%{kversion}.tar.bz2
114
115 Source10: %{pldistro}-%{kversion}-i586.config
116 Source11: %{pldistro}-%{kversion}-i686.config
117 Source12: %{pldistro}-%{kversion}-x86_64.config
118 %if %{builduml}
119 Source20: %{pldistro}-%{kversion}-i686-uml.config
120 %endif
121 %if %{buildxen}
122 Source30: %{pldistro}-%{kversion}-i686-xenU.config
123 %endif
124
125 # Mainline patches
126 %if "0%{patchlevel}"
127 Patch000: ftp://ftp.kernel.org/pub/linux/kernel/v2.6/patch-%{rpmversion}.bz2
128 %endif
129
130 Patch010: linux-2.6-010-e1000e.patch
131 Patch020: linux-2.6-020-build-id.patch
132 Patch030: linux-2.6-030-netns.patch
133
134 # These are patches picked up from Fedora/RHEL
135 Patch100: linux-2.6-100-build-nonintconfig.patch
136
137 # Linux-VServer
138 Patch200: patch-%{rpmversion}-vs%{vsversion}.diff
139
140 # IP sets
141 Patch250: linux-2.6-250-ipsets.patch
142
143 # PlanetLab
144 Patch500: linux-2.6-500-vserver-filesharing.patch
145 Patch510: linux-2.6-510-ipod.patch
146 Patch520: linux-2.6-520-vnet+.patch
147 Patch530: linux-2.6-530-built-by-support.patch
148 Patch540: linux-2.6-540-oom-kill.patch
149 Patch550: linux-2.6-550-raise-default-nfile-ulimit.patch
150 Patch560: linux-2.6-560-mmconf.patch
151 Patch570: linux-2.6-570-tagxid.patch
152
153 BuildRoot: %{_tmppath}/kernel-%{KVERREL}-root
154
155 %description
156 The kernel package contains the Linux kernel (vmlinuz), the core of any
157 Linux operating system.  The kernel handles the basic functions
158 of the operating system:  memory allocation, process allocation, device
159 input and output, etc.
160
161 %package devel
162 Summary: Development package for building kernel modules to match the kernel.
163 Group: System Environment/Kernel
164 AutoReqProv: no
165 Provides: kernel-devel-%{_target_cpu} = %{rpmversion}-%{release}
166 Provides: kernel-smp-devel = %{rpmversion}-%{release}
167 Provides: kernel-smp-devel-%{_target_cpu} = %{rpmversion}-%{release}
168 Prereq: /usr/bin/find
169
170 %description devel
171 This package provides kernel headers and makefiles sufficient to build modules
172 against the kernel package.
173
174
175 %package doc
176 Summary: Various documentation bits found in the kernel source.
177 Group: Documentation
178
179 %description doc
180 This package contains documentation files from the kernel
181 source. Various bits of information about the Linux kernel and the
182 device drivers shipped with it are documented in these files.
183
184 You'll want to install this package if you need a reference to the
185 options that can be passed to Linux kernel modules at load time.
186
187 %package xenU
188 Summary: The Linux kernel compiled for unprivileged Xen guest VMs
189
190 Group: System Environment/Kernel
191 Provides: kernel = %{version}
192 Provides: kernel-%{_target_cpu} = %{rpmversion}-%{release}xenU
193 Prereq: %{kernel_prereq}
194 Conflicts: %{kernel_dot_org_conflicts}
195 Conflicts: %{package_conflicts}
196 Conflicts: %{nptl_conflicts}
197
198 # MEF commented out 
199 # Conflicts: %{xen_conflicts}
200
201 # We can't let RPM do the dependencies automatic because it'll then pick up
202 # a correct but undesirable perl dependency from the module headers which
203 # isn't required for the kernel proper to function
204 AutoReqProv: no
205
206 %description xenU
207 This package includes a version of the Linux kernel which
208 runs in Xen unprivileged guest VMs.  This should be installed
209 both inside the unprivileged guest (for the modules) and in
210 the guest0 domain.
211
212 %package xenU-devel
213 Summary: Development package for building kernel modules to match the kernel.
214 Group: System Environment/Kernel
215 AutoReqProv: no
216 Provides: kernel-xenU-devel-%{_target_cpu} = %{rpmversion}-%{release}
217 Provides: kernel-devel-%{_target_cpu} = %{rpmversion}-%{release}xenU
218 Provides: kernel-devel = %{rpmversion}-%{release}xenU
219 Prereq: /usr/sbin/hardlink, /usr/bin/find
220
221 %description xenU-devel
222 This package provides kernel headers and makefiles sufficient to build modules
223 against the kernel package.
224
225 %package uml
226 Summary: The Linux kernel compiled for use in user mode (User Mode Linux).
227
228 Group: System Environment/Kernel
229
230 %description uml
231 This package includes a user mode version of the Linux kernel.
232
233 %package uml-devel
234 Summary: Development package for building kernel modules to match the UML kernel.
235 Group: System Environment/Kernel
236 Provides: kernel-uml-devel-%{_target_cpu} = %{rpmversion}-%{release}
237 Provides: kernel-devel-%{_target_cpu} = %{rpmversion}-%{release}smp
238 Provides: kernel-devel = %{rpmversion}-%{release}smp
239 AutoReqProv: no
240 Prereq: /usr/sbin/hardlink, /usr/bin/find
241
242 %description uml-devel
243 This package provides kernel headers and makefiles sufficient to build modules
244 against the User Mode Linux kernel package.
245
246 %package uml-modules
247 Summary: The Linux kernel modules compiled for use in user mode (User Mode Linux).
248
249 Group: System Environment/Kernel
250
251 %description uml-modules
252 This package includes a user mode version of the Linux kernel modules.
253
254 %package vserver
255 Summary: A placeholder RPM that provides kernel and kernel-drm
256
257 Group: System Environment/Kernel
258 Provides: kernel = %{version}
259 Provides: kernel-drm = 4.3.0
260 Provides: kernel-%{_target_cpu} = %{rpmversion}-%{release}
261
262 %description vserver
263 VServers do not require and cannot use kernels, but some RPMs have
264 implicit or explicit dependencies on the "kernel" package
265 (e.g. tcpdump). This package installs no files but provides the
266 necessary dependencies to make rpm and yum happy.
267
268
269 %prep
270 # First we unpack the kernel tarball.
271 # If this isn't the first make prep, we use links to the existing clean tarball
272 # which speeds things up quite a bit.
273 if [ ! -d kernel-%{kversion}/vanilla ]; then
274   # Ok, first time we do a make prep.
275   rm -f pax_global_header
276 %setup -q -n %{name}-%{kversion} -c
277   mv linux-%{kversion} vanilla
278 else
279   # We already have a vanilla dir.
280   cd kernel-%{kversion}
281 fi
282
283 KERNEL_PREVIOUS=vanilla
284 # Dark RPM-magic to apply each patch to a hardlinked copy of the tree.
285 %define ApplyPatch() \
286   rm -fr linux-%{kversion}-%1                           \
287   cp -al $KERNEL_PREVIOUS linux-%{kversion}-%1          \
288   patchflag=-p1                                         \
289   test "%2" != "%%2" && patchflag="%2"                  \
290   PATCH="%{expand:%{PATCH%1}}"                          \
291   if test ! -e "$PATCH"; then                           \
292     echo "Patch %1 does not exist!"                     \
293     exit 1                                              \
294   fi                                                    \
295   case "$PATCH" in                                      \
296     *.bz2)  bzcat "$PATCH";;                            \
297     *.gz)   zcat "$PATCH";;                             \
298     *)      cat "$PATCH";;                              \
299   esac | patch -F1 -s -d linux-%{kversion}-%1 $patchflag \
300   KERNEL_PREVIOUS=linux-%{kversion}-%1
301
302 # This is where the patches get applied
303 %if "0%{patchlevel}"
304 %ApplyPatch 0
305 %endif
306
307 %ApplyPatch 10
308 %ApplyPatch 20
309
310 # NetNS patch for VINI
311 %if 0%{?with_netns}
312 %ApplyPatch 30
313 %endif
314
315 %ApplyPatch 100
316
317 %ApplyPatch 200
318
319 %ApplyPatch 250
320
321 %ApplyPatch 500
322 %ApplyPatch 510
323 %ApplyPatch 520
324 %ApplyPatch 530
325 %ApplyPatch 540
326 %ApplyPatch 550
327 %ApplyPatch 560
328 %ApplyPatch 570
329
330 # NetNS conflict-resolving patch for VINI. Will work with patch vini_pl_patch-1 but may
331 # break with later patches.
332
333 %if 0%{?with_netns}
334 %ApplyPatch %vini_pl_patch
335 %endif
336
337 rm -fr linux-%{kversion}
338 ln -sf $KERNEL_PREVIOUS linux-%{kversion}
339 cd linux-%{kversion}
340
341
342 # make sure the kernel has the sublevel we know it has. This looks weird
343 # but for -pre and -rc versions we need it since we only want to use
344 # the higher version when the final kernel is released.
345 perl -p -i -e "s/^SUBLEVEL.*/SUBLEVEL = %{sublevel}/" Makefile
346 perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = -prep/" Makefile
347
348 # get rid of unwanted files resulting from patch fuzz
349 find . \( -name "*.orig" -o -name "*~" \) -exec rm -f {} \; >/dev/null
350
351
352 ###
353 ### build
354 ###
355 %build
356
357 BuildKernel() {
358     MakeTarget=$1
359     Arch=$2
360     Flavour=$3
361
362     rm -rf linux-%{_target_cpu}-%{kversion}$Flavour
363     cp -rl linux-%{kversion}/ linux-%{_target_cpu}-%{kversion}$Flavour
364     cd linux-%{_target_cpu}-%{kversion}$Flavour
365
366     # Pick the right config file for the kernel we're building
367     if [ -n "$Flavour" ] ; then
368       Config=%{pldistro}-%{kversion}-%{_target_cpu}-$Flavour.config
369       DevelDir=/usr/src/kernels/%{KVERREL}-$Flavour-%{_target_cpu}
370       DevelLink=/usr/src/kernels/%{KVERREL}$Flavour-%{_target_cpu}
371     else
372       Config=%{pldistro}-%{kversion}-%{_target_cpu}.config
373       DevelDir=/usr/src/kernels/%{KVERREL}-%{_target_cpu}
374       DevelLink=
375     fi
376
377     KernelVer=%{version}-%{release}$Flavour
378     echo BUILDING A KERNEL FOR $Flavour %{_target_cpu}...
379
380     # make sure EXTRAVERSION says what we want it to say
381     perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = %{?patchlevel:.%{patchlevel}}-%{release}$Flavour/" Makefile
382
383     # and now to start the build process
384
385     make -s mrproper
386     cp %{_sourcedir}/$Config .config
387
388     #Arch=`head -1 .config | cut -b 3-`
389     echo USING ARCH=$Arch
390
391     make -s ARCH=$Arch nonint_oldconfig > /dev/null
392     make -s ARCH=$Arch %{?_smp_mflags} $MakeTarget
393     make -s ARCH=$Arch %{?_smp_mflags} modules || exit 1
394
395     # Start installing the results
396
397 %if "%{_enable_debug_packages}" == "1"
398     mkdir -p $RPM_BUILD_ROOT/usr/lib/debug/boot
399 %endif
400     mkdir -p $RPM_BUILD_ROOT/%{image_install_path}
401     install -m 644 .config $RPM_BUILD_ROOT/boot/config-$KernelVer
402     install -m 644 System.map $RPM_BUILD_ROOT/boot/System.map-$KernelVer
403     if [ -f arch/$Arch/boot/bzImage ]; then
404       cp arch/$Arch/boot/bzImage $RPM_BUILD_ROOT/%{image_install_path}/vmlinuz-$KernelVer
405     fi
406     if [ -f arch/$Arch/boot/zImage.stub ]; then
407       cp arch/$Arch/boot/zImage.stub $RPM_BUILD_ROOT/%{image_install_path}/zImage.stub-$KernelVer || :
408     fi
409     if [ "$Flavour" = "uml" ] ; then
410         install -D -m 755 linux $RPM_BUILD_ROOT/%{_bindir}/linux
411     fi
412
413     mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer
414     make -s ARCH=$Arch INSTALL_MOD_PATH=$RPM_BUILD_ROOT modules_install KERNELRELEASE=$KernelVer
415
416     # And save the headers/makefiles etc for building modules against
417     #
418     # This all looks scary, but the end result is supposed to be:
419     # * all arch relevant include/ files
420     # * all Makefile/Kconfig files
421     # * all script/ files
422
423     rm -f $RPM_BUILD_ROOT/lib/modules/$KernelVer/build
424     rm -f $RPM_BUILD_ROOT/lib/modules/$KernelVer/source
425     mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/build
426     (cd $RPM_BUILD_ROOT/lib/modules/$KernelVer ; ln -s build source)
427     # dirs for additional modules per module-init-tools, kbuild/modules.txt
428     mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/extra
429     mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/updates
430     # first copy everything
431     cp --parents `find  -type f -name "Makefile*" -o -name "Kconfig*"` $RPM_BUILD_ROOT/lib/modules/$KernelVer/build 
432         cp Module.symvers $RPM_BUILD_ROOT/lib/modules/$KernelVer/build
433     if [ "$Flavour" = "uml" ] ; then
434       cp --parents -a `find arch/um -name include` $RPM_BUILD_ROOT/lib/modules/$KernelVer/build
435     fi
436     # then drop all but the needed Makefiles/Kconfig files
437     rm -rf $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/Documentation
438     rm -rf $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/scripts
439     rm -rf $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include
440     cp arch/%{_arch}/kernel/asm-offsets.s $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/arch/%{_arch}/kernel || :
441     cp .config $RPM_BUILD_ROOT/lib/modules/$KernelVer/build
442     cp -a scripts $RPM_BUILD_ROOT/lib/modules/$KernelVer/build
443     if [ -d arch/%{_arch}/scripts ]; then
444       cp -a arch/%{_arch}/scripts $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/arch/%{_arch} || :
445     fi
446     if [ -f arch/%{_arch}/*lds ]; then
447       cp -a arch/%{_arch}/*lds $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/arch/%{_arch}/ || :
448     fi
449     rm -f $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/scripts/*.o
450     rm -f $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/scripts/*/*.o
451     mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include
452     cd include
453     cp -a acpi config keys linux math-emu media mtd net pcmcia rdma rxrpc scsi sound video asm asm-generic $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include
454     cp -a `readlink asm` $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include
455     if [ "$Arch" = "x86_64" ]; then
456       cp -a asm-i386 $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include
457     fi
458 %if %{buildxen}
459     if [ "$Flavour" = "xenU" ]; then
460       cp -a xen $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include
461       cp -a asm-i386 $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include
462     fi
463 %endif
464 %if %{builduml}
465     if [ "$Flavour" = "uml" ] ; then
466       cp -a `readlink -f asm/arch` $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include
467     fi
468 %endif
469     # While arch/powerpc/include/asm is still a symlink to the old
470     # include/asm-ppc{64,} directory, include that in kernel-devel too.
471     if [ "$Arch" = "powerpc" -a -r ../arch/powerpc/include/asm ]; then
472       cp -a `readlink ../arch/powerpc/include/asm` $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include
473       mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/arch/$Arch/include
474       pushd $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/arch/$Arch/include
475       ln -sf ../../../include/asm-ppc* asm
476       popd
477     fi
478
479     # Make sure the Makefile and version.h have a matching timestamp so that
480     # external modules can be built
481     touch -r $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/Makefile $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include/linux/version.h
482     touch -r $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/.config $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include/linux/autoconf.h
483     cd ..
484
485     #
486     # save the vmlinux file for kernel debugging into the kernel-debuginfo rpm
487     #
488 %if "%{_enable_debug_packages}" == "1"
489     mkdir -p $RPM_BUILD_ROOT/usr/lib/debug/lib/modules/$KernelVer
490     cp vmlinux $RPM_BUILD_ROOT/usr/lib/debug/lib/modules/$KernelVer
491 %endif
492 %if %{buildxen}
493     if [ -f vmlinuz ]; then
494       cp vmlinuz $RPM_BUILD_ROOT/%{image_install_path}/vmlinuz-$KernelVer
495     fi
496 %endif
497
498     find $RPM_BUILD_ROOT/lib/modules/$KernelVer -name "*.ko" -type f >modnames
499
500     # mark modules executable so that strip-to-file can strip them
501     cat modnames | xargs chmod u+x
502
503     # remove files that will be auto generated by depmod at rpm -i time
504     rm -f $RPM_BUILD_ROOT/lib/modules/$KernelVer/modules.*
505
506     # Move the devel headers out of the root file system
507     mkdir -p $RPM_BUILD_ROOT/usr/src/kernels
508     mv $RPM_BUILD_ROOT/lib/modules/$KernelVer/build $RPM_BUILD_ROOT/$DevelDir
509     ln -sf ../../..$DevelDir $RPM_BUILD_ROOT/lib/modules/$KernelVer/build
510     [ -z "$DevelLink" ] || ln -sf `basename $DevelDir` $RPM_BUILD_ROOT/$DevelLink
511 }
512
513 ###
514 # DO it...
515 ###
516
517 # prepare directories
518 rm -rf $RPM_BUILD_ROOT
519 mkdir -p $RPM_BUILD_ROOT/boot
520
521 %if "%{_target_cpu}" == "x86_64"
522 %define kernel_arch %{_target_cpu}
523 %endif
524 %if "%{_target_cpu}" == "i586"
525 %define kernel_arch i386
526 %endif
527 %if "%{_target_cpu}" == "i686"
528 %define kernel_arch i386
529 %endif
530
531 %if %{buildup}
532 BuildKernel %make_target %kernel_arch
533 %endif
534
535 %ifarch i686
536 %if %{builduml}
537 BuildKernel linux um uml
538 %endif
539
540 %if %{buildxen}
541 BuildKernel vmlinuz %kernel_arch xenU
542 %endif
543 %endif
544
545 ###
546 ### install
547 ###
548
549 %install
550
551 cd vanilla
552
553 %if %{buildxen} && "%{_target_cpu}" == "i686"
554 mkdir -p $RPM_BUILD_ROOT/etc/ld.so.conf.d
555 rm -f $RPM_BUILD_ROOT/etc/ld.so.conf.d/kernelcap-%{KVERREL}.conf
556 cat > $RPM_BUILD_ROOT/etc/ld.so.conf.d/kernelcap-%{KVERREL}.conf <<\EOF
557 # This directive teaches ldconfig to search in nosegneg subdirectories
558 # and cache the DSOs there with extra bit 0 set in their hwcap match
559 # fields.  In Xen guest kernels, the vDSO tells the dynamic linker to
560 # search in nosegneg subdirectories and to match this extra hwcap bit
561 # in the ld.so.cache file.
562 hwcap 0 nosegneg
563 EOF
564 chmod 444 $RPM_BUILD_ROOT/etc/ld.so.conf.d/kernelcap-%{KVERREL}.conf
565 %endif
566
567 %if %{builddoc}
568 mkdir -p $RPM_BUILD_ROOT/usr/share/doc/kernel-doc-%{kversion}/Documentation
569
570 # sometimes non-world-readable files sneak into the kernel source tree
571 chmod -R a+r *
572 # copy the source over
573 tar cf - Documentation | tar xf - -C $RPM_BUILD_ROOT/usr/share/doc/kernel-doc-%{kversion}
574 %endif
575
576 ###
577 ### clean
578 ###
579
580 %clean
581 rm -rf $RPM_BUILD_ROOT
582
583 ###
584 ### scripts
585 ###
586
587 # load the loop module for upgrades...in case the old modules get removed we have
588 # loopback in the kernel so that mkinitrd will work.
589 %pre
590 /sbin/modprobe loop 2> /dev/null > /dev/null  || :
591 exit 0
592
593 %post
594 if [ -f /etc/sysconfig/kernel ]; then
595   /bin/sed -i -e 's/^DEFAULTKERNEL=kernel-smp$/DEFAULTKERNEL=kernel/' /etc/sysconfig/kernel
596 fi
597
598 # trick mkinitrd in case the current environment does not have device mapper
599 rootdev=$(awk '/^[ \t]*[^#]/ { if ($2 == "/") { print $1; }}' /etc/fstab)
600 if echo $rootdev |grep -q /dev/mapper 2>/dev/null ; then
601     if [ ! -f $rootdev ]; then
602         fake_root_lvm=1
603         mkdir -p $(dirname $rootdev)
604         touch $rootdev
605     fi
606 fi
607
608 [ ! -x /usr/sbin/module_upgrade ] || /usr/sbin/module_upgrade %{rpmversion}-%{release}
609 #/sbin/new-kernel-pkg --package kernel --mkinitrd --depmod --install %{KVERREL}
610 # Older modutils do not support --package option
611 /sbin/new-kernel-pkg --mkinitrd --depmod --install %{KVERREL}
612
613 # remove fake handle
614 if [ -n "$fake_root_lvm" ]; then
615     rm -f $rootdev
616 fi
617
618 # make some useful links
619 pushd /boot > /dev/null ; {
620         ln -sf config-%{KVERREL} config
621         ln -sf config-%{KVERREL} configsmp
622         ln -sf initrd-%{KVERREL}.img initrd-boot
623         ln -sf initrd-%{KVERREL}.img initrd-bootsmp
624         ln -sf vmlinuz-%{KVERREL} kernel-boot
625         ln -sf vmlinuz-%{KVERREL} kernel-bootsmp
626 }
627 popd > /dev/null
628
629 # ask for a reboot
630 mkdir -p /etc/planetlab
631 touch /etc/planetlab/update-reboot
632
633 %post devel
634 [ -f /etc/sysconfig/kernel ] && . /etc/sysconfig/kernel
635 if [ "$HARDLINK" != "no" -a -x /usr/sbin/hardlink ] ; then
636   pushd /usr/src/kernels/%{KVERREL}-%{_target_cpu} > /dev/null
637   /usr/bin/find . -type f | while read f; do hardlink -c /usr/src/kernels/*FC*/$f $f ; done
638   popd > /dev/null
639 fi
640
641 %post xenU
642 [ ! -x /usr/sbin/module_upgrade ] || /usr/sbin/module_upgrade
643 [ ! -x /sbin/ldconfig ] || /sbin/ldconfig -X
644
645 %post xenU-devel
646 [ -f /etc/sysconfig/kernel ] && . /etc/sysconfig/kernel
647 if [ "$HARDLINK" != "no" -a -x /usr/sbin/hardlink ] ; then
648   pushd /usr/src/kernels/%{KVERREL}-xenU-%{_target_cpu} > /dev/null
649   /usr/bin/find . -type f | while read f; do hardlink -c /usr/src/kernels/*FC*/$f $f ; done
650   popd > /dev/null
651 fi
652
653 %post uml-modules
654 depmod -ae %{KVERREL}uml
655
656 %preun
657 /sbin/modprobe loop 2> /dev/null > /dev/null  || :
658 /sbin/new-kernel-pkg --rminitrd --rmmoddep --remove %{KVERREL}
659
660 %preun xenU
661 /sbin/modprobe loop 2> /dev/null > /dev/null  || :
662 /sbin/new-kernel-pkg --rmmoddep --remove %{KVERREL}xenU
663
664 %preun uml-modules
665 rm -f /lib/modules/%{KVERREL}uml/modules.*
666
667
668 ###
669 ### file lists
670 ###
671
672 %if %{buildup}
673 %files 
674 %defattr(-,root,root)
675 /%{image_install_path}/vmlinuz-%{KVERREL}
676 /boot/System.map-%{KVERREL}
677 /boot/config-%{KVERREL}
678 %dir /lib/modules/%{KVERREL}
679 /lib/modules/%{KVERREL}/kernel
680 /lib/modules/%{KVERREL}/build
681 /lib/modules/%{KVERREL}/source
682 /lib/modules/%{KVERREL}/extra
683 /lib/modules/%{KVERREL}/updates
684
685 %files devel
686 %defattr(-,root,root)
687 %verify(not mtime) /usr/src/kernels/%{KVERREL}-%{_target_cpu}
688 %endif
689
690 %if %{builduml} && "%{_target_cpu}" == "i686"
691 %files uml
692 %defattr(-,root,root)
693 %{_bindir}/linux
694
695 %files uml-devel
696 %defattr(-,root,root)
697 %verify(not mtime) /usr/src/kernels/%{KVERREL}-uml-%{_target_cpu}
698 /usr/src/kernels/%{KVERREL}uml-%{_target_cpu}
699
700 %files uml-modules
701 %defattr(-,root,root)
702 /boot/System.map-%{KVERREL}uml
703 /boot/config-%{KVERREL}uml
704 %dir /lib/modules/%{KVERREL}uml
705 /lib/modules/%{KVERREL}uml/kernel
706 /lib/modules/%{KVERREL}uml/build
707 /lib/modules/%{KVERREL}uml/source
708 /lib/modules/%{KVERREL}uml/extra
709 /lib/modules/%{KVERREL}uml/updates
710 %endif
711
712 %if %{buildxen} && "%{_target_cpu}" == "i686"
713 %files xenU
714 %defattr(-,root,root)
715 /%{image_install_path}/vmlinuz-%{KVERREL}xenU
716 /boot/System.map-%{KVERREL}xenU
717 /boot/config-%{KVERREL}xenU
718 %dir /lib/modules/%{KVERREL}xenU
719 /lib/modules/%{KVERREL}xenU/kernel
720 /lib/modules/%{KVERREL}xenU/build
721 /lib/modules/%{KVERREL}xenU/source
722 /lib/modules/%{KVERREL}xenU/extra
723 /lib/modules/%{KVERREL}xenU/updates
724 /etc/ld.so.conf.d/kernelcap-%{KVERREL}.conf
725
726 %files xenU-devel
727 %defattr(-,root,root)
728 %verify(not mtime) /usr/src/kernels/%{KVERREL}-xenU-%{_target_cpu}
729 /usr/src/kernels/%{KVERREL}xenU-%{_target_cpu}
730 %endif
731
732 %files vserver
733 %defattr(-,root,root)
734 # no files
735
736 # only some architecture builds need kernel-doc
737
738 %if %{builddoc}
739 %files doc
740 %defattr(-,root,root)
741 %{_datadir}/doc/kernel-doc-%{kversion}/Documentation/*
742 %dir %{_datadir}/doc/kernel-doc-%{kversion}/Documentation
743 %dir %{_datadir}/doc/kernel-doc-%{kversion}
744 %endif
745
746 %changelog
747 * Tue Jul 11 2006 Dave Jones <davej@redhat.com> [2.6.17-1.2142_FC4]
748 - 2.6.17.4
749 - Disable split pagetable lock.
750
751 * Wed Jul  5 2006 Dave Jones <davej@redhat.com>
752 - Get rid of stack backtrace on panic, which in most
753   cases actually caused a loss of info instead of a gain.
754
755 * Fri Jun 30 2006 Dave Jones <davej@redhat.com> [2.6.17-1.2141_FC4]
756 - 2.6.17.3
757
758 * Fri Jun 30 2006 Dave Jones <davej@redhat.com> [2.6.17-1.2140_FC4]
759 - 2.6.17.2
760 - Fix up the alsa list_add bug.
761
762 * Mon Jun 26 2006 Dave Jones <davej@redhat.com>
763 - Fix up various stupidities incurred by the last big rebase.
764   - Reenable SMP x86-64 builds.
765   - Reenable SMBFS.
766 - Enable PCI fake hotplug driver.
767 - Enable gameport/joystick on i586 builds. (#196581)
768
769 * Sat Jun 24 2006 Dave Jones <davej@redhat.com>
770 - Enable profiling for 586 kernels.
771
772 * Fri Jun 23 2006 Dave Jones <davej@redhat.com> [2.6.17-1.2139_FC4]
773 - Rebuild with slab debug off.
774
775 * Tue Jun 20 2006 Dave Jones <davej@redhat.com> [2.6.17-1.2138_FC4]
776 - 2.6.17.1
777
778 * Mon Jun  5 2006 Dave Jones <davej@redhat.com> [2.6.16-1.2115_FC4]
779 - 2.6.16.20
780
781 * Tue May 30 2006 Dave Jones <davej@redhat.com> [2.6.16-1.2114_FC4]
782 - 2.6.16.19
783
784 * Mon May 29 2006 Dave Jones <davej@redhat.com> [2.6.16-1.2113_FC4]
785 - Improved list_head debugging.
786
787 * Tue May 23 2006 Dave Jones <davej@redhat.com> [2.6.16-1.2112_FC4]
788 - 2.6.16.18
789
790 * Sat May 20 2006 Dave Jones <davej@redhat.com> [2.6.16-1.2111_FC4]
791 - 2.6.16.17
792
793 * Wed May 10 2006 Dave Jones <davej@redhat.com> [2.6.16-1.2110_FC4]
794 - 2.6.16.16
795
796 * Tue May  9 2006 Dave Jones <davej@redhat.com> [2.6.16-1.2109_FC4]
797 - 2.6.16.15
798 - make 16C950 UARTs work (again). (#126403)
799 - Fix exec-shield default, which should fix a few programs that
800   stopped running.
801
802 * Thu May  4 2006 Dave Jones <davej@redhat.com> [2.6.16-1.2108_FC4]
803 - 2.6.16.14
804
805 * Tue May  2 2006 Dave Jones <davej@redhat.com> [2.6.16-1.2107_FC4]
806 - 2.6.16.13
807
808 * Mon May  1 2006 Dave Jones <davej@redhat.com>
809 - 2.6.16.12
810
811 * Tue Apr 25 2006 Dave Jones <davej@redhat.com>
812 - Fix up SCSI errors with mymusix usb mp3 player (#186187)
813
814 * Mon Apr 24 2006 Dave Jones <davej@redhat.com>
815 - 2.6.16.11
816
817 * Wed Apr 19 2006 Dave Jones <davej@redhat.com>
818 - Enable PCI MSI support.
819
820 * Tue Apr 18 2006 Dave Jones <davej@redhat.com> [2.6.16-1.2096_FC4]
821 - 2.6.16.9
822
823 * Tue Apr 18 2006 Dave Jones <davej@redhat.com> [2.6.16-1.2093_FC4]
824 - 2.6.16.7
825
826 * Mon Apr 17 2006 Dave Jones <davej@redhat.com> [2.6.16-1.2092_FC4]
827 - 2.6.16.6
828
829 * Sun Apr 16 2006 Dave Jones <davej@redhat.com>
830 - 2.6.16.5
831
832 * Fri Apr  7 2006 Dave Jones <davej@redhat.com>
833 - 2.6.16.2
834
835 * Tue Apr  4 2006 Dave Jones <davej@redhat.com>
836 - Reenable non-standard serial ports. (#187466)
837 - Reenable snd-es18xx for x86-32 (#187733)
838
839 * Thu Mar 30 2006 Dave Jones <davej@redhat.com>
840 - ship the .kernelrelease file in -devel too.
841 - Disable EDAC debug.
842
843 * Tue Mar 26 2006 Dave Jones <davej@redhat.com> [2.6.16-1.2069_FC4]
844 - 2.6.16.1
845
846 * Mon Mar 25 2006 Dave Jones <davej@redhat.com>
847 - Include patches posted for review for inclusion in 2.6.16.1
848 - Updated new audit msg types.
849 - Reenable HDLC driver (#186257)
850 - Make acpi-cpufreq 'sticky'
851 - Fix broken x86-64 32bit vDSO (#186924)
852
853 * Tue Mar 21 2006 Dave Jones <davej@redhat.com>
854 - Improve spinlock scalability on big machines.
855
856 * Mon Mar 20 2006 Dave Jones <davej@redhat.com>
857 - Sync with FC5's 2.6.16 kernel.
858 - Update Tux & Exec-shield to latest.
859