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