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