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