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