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