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