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