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