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