Upgrade to 2.6.27.45 and do some cleanup...
[linux-2.6.git] / kernel-2.6.spec
1 #
2 # $Id$
3 #
4 %define url $URL$
5
6 Summary: The Linux kernel (the core of the Linux operating system)
7
8 # What parts do we want to build?  We must build at least one kernel.
9 # These are the kernels that are built IF the architecture allows it.
10
11 %define buildup 1
12 %define builduml 0
13 %define buildxen 0
14 %define builddoc 0
15 %define headers 1
16
17 # from 2.6.27 iwlwifi in builtin
18
19 # Versions of various parts
20
21 # for module-tag.py - sublevel is used for the version (middle) part of tag names
22 %define name linux-2.6
23 %define module_version_varname sublevel
24 %define taglevel 3
25
26 #
27 # Polite request for people who spin their own kernel rpms:
28 # please modify the "release" field in a way that identifies
29 # that the kernel isn't the stock distribution kernel, for example by
30 # adding some text to the end of the version number.
31 #
32 %define sublevel 27
33 %define patchlevel 45
34 %define kversion 2.6.%{sublevel}
35 %define rpmversion 2.6.%{sublevel}%{?patchlevel:.%{patchlevel}}
36
37 %define vsversion 2.3.0.36.8
38
39 # Will go away when VServer supports NetNS in mainline. Currently, it must be 
40 # updated every time the PL kernel is updated.
41 %define vini_pl_patch 561
42
43 %define release vs%{vsversion}.%{taglevel}%{?pldistro:.%{pldistro}}%{?date:.%{date}}
44
45 %{!?pldistro:%global pldistro planetlab}
46
47 %define signmodules 0
48 %define make_target bzImage
49 %define KVERREL %{PACKAGE_VERSION}-%{PACKAGE_RELEASE}
50
51 # Override generic defaults with per-arch defaults
52
53 %define image_install_path boot
54
55 #
56 # Three sets of minimum package version requirements in the form of Conflicts:
57 # to versions below the minimum
58 #
59
60 #
61 # First the general kernel 2.6 required versions as per
62 # Documentation/Changes
63 #
64 %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
65
66
67 # Then a series of requirements that are distribution specific, either 
68 # because we add patches for something, or the older versions have 
69 # problems with the newer kernel or lack certain things that make 
70 # integration in the distro harder than needed.
71 #
72 %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
73
74 #
75 # Several packages had bugs in them that became obvious when the NPTL
76 # threading code got integrated.
77 #
78 %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
79
80 #
81 # The ld.so.conf.d file we install uses syntax older ldconfig's don't grok.
82 #
83
84 # MEF commented out
85 #define xen_conflicts glibc < 2.3.5-1
86
87 #
88 # Packages that need to be installed before the kernel is, because the %post
89 # scripts use them.
90 #
91 %define kernel_prereq  fileutils, module-init-tools, initscripts >= 5.83, mkinitrd >= 3.5.5
92
93 Vendor: PlanetLab
94 Packager: PlanetLab Central <support@planet-lab.org>
95 Distribution: PlanetLab %{plrelease}
96 URL: %(echo %{url} | cut -d ' ' -f 2)
97
98 Name: kernel
99 Group: System Environment/Kernel
100 License: GPLv2
101 Version: %{rpmversion}
102 Release: %{release}
103 ExclusiveOS: Linux
104 Provides: kernel = %{version}
105 Provides: kernel-drm = 4.3.0
106 Provides: kernel-%{_target_cpu} = %{rpmversion}-%{release}
107 Provides: kernel-smp = %{rpmversion}-%{release}
108 Provides: kernel-smp-%{_target_cpu} = %{rpmversion}-%{release}
109 Prereq: %{kernel_prereq}
110 Conflicts: %{kernel_dot_org_conflicts}
111 Conflicts: %{package_conflicts}
112 Conflicts: %{nptl_conflicts}
113 # We can't let RPM do the dependencies automatic because it'll then pick up
114 # a correct but undesirable perl dependency from the module headers which
115 # isn't required for the kernel proper to function
116 AutoReqProv: no
117
118 #
119 # List the packages used during the kernel build
120 #
121 BuildPreReq: module-init-tools, patch >= 2.5.4, bash >= 2.03, sh-utils, tar
122 BuildPreReq: bzip2, findutils, gzip, m4, perl, make >= 3.78, gnupg, diffutils
123 BuildRequires: gcc >= 3.3.3, binutils >= 2.12, redhat-rpm-config
124 BuildConflicts: rhbuildsys(DiskFree) < 500Mb
125
126
127 Source0: ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-%{kversion}.tar.bz2
128
129 Source11: %{pldistro}-%{kversion}-i686.config
130 Source12: %{pldistro}-%{kversion}-x86_64.config
131 %if %{builduml}
132 Source20: %{pldistro}-%{kversion}-i686-uml.config
133 %endif
134 %if %{buildxen}
135 Source30: %{pldistro}-%{kversion}-i686-xenU.config
136 %endif
137
138 # Mainline patches
139 %if "0%{patchlevel}"
140 Patch000: ftp://ftp.kernel.org/pub/linux/kernel/v2.6/patch-%{rpmversion}.bz2
141 %endif
142 Patch050: linux-2.6-050-getline.patch
143
144 Patch100: linux-2.6-100-build-nonintconfig.patch
145
146 # Linux-VServer
147 Patch200: patch-2.6.27.39-vs%{vsversion}.diff
148 Patch220: delta-ptrace-fix01.diff
149
150 # IP sets
151 Patch250: linux-2.6-250-ipsets.patch
152
153 # PlanetLab
154 Patch500: linux-2.6-500-vserver-filesharing.patch
155 Patch510: linux-2.6-510-ipod.patch
156 Patch521: linux-2.6-521-packet-tagging.patch
157 Patch522: linux-2.6-522-iptables-connection-tagging.patch
158 Patch523: linux-2.6-523-raw-sockets.patch
159 Patch524: linux-2.6-524-peercred.patch
160 Patch525: linux-2.6-525-sknid-elevator.patch
161 # Patch526: linux-2.6-526-tun-tap.patch
162 Patch527: linux-2.6-527-iptables-classify-add-mark.patch
163 Patch530: linux-2.6-530-built-by-support.patch
164 Patch540: linux-2.6-540-oom-kill.patch
165 Patch550: linux-2.6-550-raise-default-nfile-ulimit.patch
166 Patch560: linux-2.6-560-mmconf.patch
167 Patch570: linux-2.6-570-tagxid.patch
168 Patch580: linux-2.6-580-show-proc-virt.patch
169 Patch590: linux-2.6-590-dcookies-mm.patch
170 Patch591: linux-2.6-591-chopstix-intern.patch
171 # Patch630: linux-2.6-630-sched-fix.patch
172 Patch640: linux-2.6-640-netlink-audit-hack.patch
173 Patch650: linux-2.6-650-hangcheck-reboot.patch
174 Patch660: linux-2.6-660-nmi-watchdog-default.patch
175 Patch680: linux-2.6-680-htb-hysteresis-tso.patch
176 # Patch690: linux-2.6-690-web100.patch
177 Patch700: linux-2.6-700-egre.patch
178 Patch710: linux-2.6-710-avoid-64bits-addr-pcmcia.patch
179
180 BuildRoot: %{_tmppath}/kernel-%{KVERREL}-root
181
182 %description
183 The kernel package contains the Linux kernel (vmlinuz), the core of any
184 Linux operating system.  The kernel handles the basic functions
185 of the operating system:  memory allocation, process allocation, device
186 input and output, etc.
187
188 %package devel
189 Summary: Development package for building kernel modules to match the kernel.
190 Group: System Environment/Kernel
191 AutoReqProv: no
192 Provides: kernel-devel-%{_target_cpu} = %{rpmversion}-%{release}
193 Provides: kernel-smp-devel = %{rpmversion}-%{release}
194 Provides: kernel-smp-devel-%{_target_cpu} = %{rpmversion}-%{release}
195 Prereq: /usr/bin/find
196
197 %description devel
198 This package provides kernel headers and makefiles sufficient to build modules
199 against the kernel package.
200
201
202 %package doc
203 Summary: Various documentation bits found in the kernel source.
204 Group: Documentation
205
206 %description doc
207 This package contains documentation files from the kernel
208 source. Various bits of information about the Linux kernel and the
209 device drivers shipped with it are documented in these files.
210
211 You'll want to install this package if you need a reference to the
212 options that can be passed to Linux kernel modules at load time.
213
214 %package xenU
215 Summary: The Linux kernel compiled for unprivileged Xen guest VMs
216
217 Group: System Environment/Kernel
218 Provides: kernel = %{version}
219 Provides: kernel-%{_target_cpu} = %{rpmversion}-%{release}xenU
220 Prereq: %{kernel_prereq}
221 Conflicts: %{kernel_dot_org_conflicts}
222 Conflicts: %{package_conflicts}
223 Conflicts: %{nptl_conflicts}
224
225 # MEF commented out 
226 # Conflicts: %{xen_conflicts}
227
228 # We can't let RPM do the dependencies automatic because it'll then pick up
229 # a correct but undesirable perl dependency from the module headers which
230 # isn't required for the kernel proper to function
231 AutoReqProv: no
232
233 %description xenU
234 This package includes a version of the Linux kernel which
235 runs in Xen unprivileged guest VMs.  This should be installed
236 both inside the unprivileged guest (for the modules) and in
237 the guest0 domain.
238
239 %package xenU-devel
240 Summary: Development package for building kernel modules to match the kernel.
241 Group: System Environment/Kernel
242 AutoReqProv: no
243 Provides: kernel-xenU-devel-%{_target_cpu} = %{rpmversion}-%{release}
244 Provides: kernel-devel-%{_target_cpu} = %{rpmversion}-%{release}xenU
245 Provides: kernel-devel = %{rpmversion}-%{release}xenU
246 Prereq: /usr/sbin/hardlink, /usr/bin/find
247
248 %description xenU-devel
249 This package provides kernel headers and makefiles sufficient to build modules
250 against the kernel package.
251
252 %package uml
253 Summary: The Linux kernel compiled for use in user mode (User Mode Linux).
254
255 Group: System Environment/Kernel
256
257 %description uml
258 This package includes a user mode version of the Linux kernel.
259
260 %package uml-devel
261 Summary: Development package for building kernel modules to match the UML kernel.
262 Group: System Environment/Kernel
263 Provides: kernel-uml-devel-%{_target_cpu} = %{rpmversion}-%{release}
264 Provides: kernel-devel-%{_target_cpu} = %{rpmversion}-%{release}smp
265 Provides: kernel-devel = %{rpmversion}-%{release}smp
266 AutoReqProv: no
267 Prereq: /usr/sbin/hardlink, /usr/bin/find
268
269 %description uml-devel
270 This package provides kernel headers and makefiles sufficient to build modules
271 against the User Mode Linux kernel package.
272
273 %package uml-modules
274 Summary: The Linux kernel modules compiled for use in user mode (User Mode Linux).
275
276 Group: System Environment/Kernel
277
278 %description uml-modules
279 This package includes a user mode version of the Linux kernel modules.
280
281 %package vserver
282 Summary: A placeholder RPM that provides kernel and kernel-drm
283
284 Group: System Environment/Kernel
285 Provides: kernel = %{version}
286 Provides: kernel-drm = 4.3.0
287 Provides: kernel-%{_target_cpu} = %{rpmversion}-%{release}
288
289 %description vserver
290 VServers do not require and cannot use kernels, but some RPMs have
291 implicit or explicit dependencies on the "kernel" package
292 (e.g. tcpdump). This package installs no files but provides the
293 necessary dependencies to make rpm and yum happy.
294
295 %package headers
296 Summary: Kernel header
297 Group: System Environment/Kernel
298
299 %description headers
300 This package contains the sanitized kernel headers.
301
302 %prep
303 # First we unpack the kernel tarball.
304 # If this isn't the first make prep, we use links to the existing clean tarball
305 # which speeds things up quite a bit.
306 if [ ! -d kernel-%{kversion}/vanilla ]; then
307   # Ok, first time we do a make prep.
308   rm -f pax_global_header
309 %setup -q -n %{name}-%{kversion} -c
310   mv linux-%{kversion} vanilla
311 else
312   # We already have a vanilla dir.
313   cd kernel-%{kversion}
314 fi
315
316 KERNEL_PREVIOUS=vanilla
317 # Dark RPM-magic to apply each patch to a hardlinked copy of the tree.
318 %define ApplyPatch() \
319   rm -fr linux-%{kversion}-%1                           \
320   cp -al $KERNEL_PREVIOUS linux-%{kversion}-%1          \
321   patchflag=-p1                                         \
322   test "%2" != "%%2" && patchflag="%2"                  \
323   PATCH="%{expand:%{PATCH%1}}"                          \
324   if test ! -e "$PATCH"; then                           \
325     echo "Patch %1 does not exist!"                     \
326     exit 1                                              \
327   fi                                                    \
328   case "$PATCH" in                                      \
329     *.bz2)  bzcat "$PATCH";;                            \
330     *.gz)   zcat "$PATCH";;                             \
331     *)      cat "$PATCH";;                              \
332   esac | patch -F1 -s -d linux-%{kversion}-%1 $patchflag \
333   KERNEL_PREVIOUS=linux-%{kversion}-%1
334
335 # This is where the patches get applied
336 %if 0%{?patchlevel}
337 %ApplyPatch 0
338 %endif
339
340 %ApplyPatch 100
341
342 # vserver patch
343 %ApplyPatch 200
344
345 %ApplyPatch 250
346
347 %ApplyPatch 500
348 %ApplyPatch 510
349
350 # VNET+ series
351 %ApplyPatch 521
352 %ApplyPatch 522
353 %ApplyPatch 523
354 %ApplyPatch 524
355 %ApplyPatch 525
356 %ApplyPatch 527
357
358 %ApplyPatch 530
359 %ApplyPatch 540
360 %ApplyPatch 550
361 %ApplyPatch 560
362 %ApplyPatch 570
363 %ApplyPatch 580
364 %ApplyPatch 590
365 %ApplyPatch 591
366 %ApplyPatch 640
367 %ApplyPatch 650
368 %ApplyPatch 660
369 %ApplyPatch 680
370 %ApplyPatch 700
371 %ApplyPatch 710
372
373
374 # NetNS conflict-resolving patch for VINI. Will work with patch vini_pl_patch-1 but may
375 # break with later patches.
376
377 %if 0%{?with_netns}
378 %ApplyPatch %vini_pl_patch
379 %endif
380
381 rm -fr linux-%{kversion}
382 ln -sf $KERNEL_PREVIOUS linux-%{kversion}
383 cd linux-%{kversion}
384
385
386 # make sure the kernel has the sublevel we know it has. This looks weird
387 # but for -pre and -rc versions we need it since we only want to use
388 # the higher version when the final kernel is released.
389 perl -p -i -e "s/^SUBLEVEL.*/SUBLEVEL = %{sublevel}/" Makefile
390 perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = -prep/" Makefile
391
392 # get rid of unwanted files resulting from patch fuzz
393 find . \( -name "*.orig" -o -name "*~" \) -exec rm -f {} \; >/dev/null
394
395
396 ###
397 ### build
398 ###
399 %build
400
401 BuildKernel() {
402     MakeTarget=$1
403     Arch=$2
404     Flavour=$3
405
406     rm -rf linux-%{_target_cpu}-%{kversion}$Flavour
407     cp -rl linux-%{kversion}/ linux-%{_target_cpu}-%{kversion}$Flavour
408     cd linux-%{_target_cpu}-%{kversion}$Flavour
409
410     # Pick the right config file for the kernel we're building
411     if [ -n "$Flavour" ] ; then
412       Config=%{pldistro}-%{kversion}-%{_target_cpu}-$Flavour.config
413       DevelDir=/usr/src/kernels/%{KVERREL}-$Flavour-%{_target_cpu}
414       DevelLink=/usr/src/kernels/%{KVERREL}$Flavour-%{_target_cpu}
415     else
416       Config=%{pldistro}-%{kversion}-%{_target_cpu}.config
417       DevelDir=/usr/src/kernels/%{KVERREL}-%{_target_cpu}
418       DevelLink=
419     fi
420
421     KernelVer=%{version}-%{release}$Flavour
422     echo BUILDING A KERNEL FOR $Flavour %{_target_cpu}...
423
424     # make sure EXTRAVERSION says what we want it to say
425     perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = %{?patchlevel:.%{patchlevel}}-%{release}$Flavour/" Makefile
426
427     # and now to start the build process
428
429     make -s mrproper
430     cp %{_sourcedir}/$Config .config
431
432     #Arch=`head -1 .config | cut -b 3-`
433     echo USING ARCH=$Arch
434
435     make -s ARCH=$Arch nonint_oldconfig < /dev/null > /dev/null
436     make -s ARCH=$Arch %{?_smp_mflags} $MakeTarget
437     make -s ARCH=$Arch %{?_smp_mflags} modules || exit 1
438 %if %{headers}
439     make -s ARCH=$Arch INSTALL_HDR_PATH=$RPM_BUILD_ROOT/usr
440     find $RPM_BUILD_ROOT/%{_includedir} -name \*.cmd -delete
441     rm -f $RPM_BUILD_ROOT/%{_includedir}/{..,.}{check,install}*
442 %endif
443
444     # Start installing the results
445
446 %if "%{_enable_debug_packages}" == "1"
447     mkdir -p $RPM_BUILD_ROOT/usr/lib/debug/boot
448 %endif
449     mkdir -p $RPM_BUILD_ROOT/%{image_install_path}
450     install -m 644 .config $RPM_BUILD_ROOT/boot/config-$KernelVer
451     install -m 644 System.map $RPM_BUILD_ROOT/boot/System.map-$KernelVer
452     if [ -f arch/$Arch/boot/bzImage ]; then
453       cp arch/$Arch/boot/bzImage $RPM_BUILD_ROOT/%{image_install_path}/vmlinuz-$KernelVer
454     fi
455     if [ -f arch/$Arch/boot/zImage.stub ]; then
456       cp arch/$Arch/boot/zImage.stub $RPM_BUILD_ROOT/%{image_install_path}/zImage.stub-$KernelVer || :
457     fi
458     if [ "$Flavour" = "uml" ] ; then
459         install -D -m 755 linux $RPM_BUILD_ROOT/%{_bindir}/linux
460     fi
461
462     mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer
463     make -s ARCH=$Arch INSTALL_MOD_PATH=$RPM_BUILD_ROOT modules_install KERNELRELEASE=$KernelVer
464
465     # And save the headers/makefiles etc for building modules against
466     #
467     # This all looks scary, but the end result is supposed to be:
468     # * all arch relevant include/ files
469     # * all Makefile/Kconfig files
470     # * all script/ files
471
472     rm -f $RPM_BUILD_ROOT/lib/modules/$KernelVer/build
473     rm -f $RPM_BUILD_ROOT/lib/modules/$KernelVer/source
474     mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/build
475     (cd $RPM_BUILD_ROOT/lib/modules/$KernelVer ; ln -s build source)
476     # dirs for additional modules per module-init-tools, kbuild/modules.txt
477     mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/extra
478     mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/updates
479     # first copy everything
480     cp --parents `find  -type f -name "Makefile*" -o -name "Kconfig*"` $RPM_BUILD_ROOT/lib/modules/$KernelVer/build 
481         cp Module.symvers $RPM_BUILD_ROOT/lib/modules/$KernelVer/build
482     if [ "$Flavour" = "uml" ] ; then
483       cp --parents -a `find arch/um -name include` $RPM_BUILD_ROOT/lib/modules/$KernelVer/build
484     fi
485     # then drop all but the needed Makefiles/Kconfig files
486     rm -rf $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/Documentation
487     rm -rf $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/scripts
488     rm -rf $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include
489     cp arch/%{_arch}/kernel/asm-offsets.s $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/arch/%{_arch}/kernel || :
490     cp .config $RPM_BUILD_ROOT/lib/modules/$KernelVer/build
491     cp -a scripts $RPM_BUILD_ROOT/lib/modules/$KernelVer/build
492     if [ -d arch/%{_arch}/scripts ]; then
493       cp -a arch/%{_arch}/scripts $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/arch/%{_arch} || :
494     fi
495     if [ -f arch/%{_arch}/*lds ]; then
496       cp -a arch/%{_arch}/*lds $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/arch/%{_arch}/ || :
497     fi
498     rm -f $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/scripts/*.o
499     rm -f $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/scripts/*/*.o
500     mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include
501     cd include
502     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
503     cp -a `readlink asm` $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include
504     if [ "$Arch" = "x86_64" ]; then
505       cp -a asm-x86 $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include
506     fi
507 %if %{buildxen}
508     if [ "$Flavour" = "xenU" ]; then
509       cp -a xen $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include
510       cp -a asm-x86 $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include
511     fi
512 %endif
513 %if %{builduml}
514     if [ "$Flavour" = "uml" ] ; then
515       cp -a `readlink -f asm/arch` $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include
516     fi
517 %endif
518     # While arch/powerpc/include/asm is still a symlink to the old
519     # include/asm-ppc{64,} directory, include that in kernel-devel too.
520     if [ "$Arch" = "powerpc" -a -r ../arch/powerpc/include/asm ]; then
521       cp -a `readlink ../arch/powerpc/include/asm` $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include
522       mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/arch/$Arch/include
523       pushd $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/arch/$Arch/include
524       ln -sf ../../../include/asm-ppc* asm
525       popd
526     fi
527
528     # Make sure the Makefile and version.h have a matching timestamp so that
529     # external modules can be built
530     touch -r $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/Makefile $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include/linux/version.h
531     touch -r $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/.config $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include/linux/autoconf.h
532     cd ..
533
534     #
535     # save the vmlinux file for kernel debugging into the kernel-debuginfo rpm
536     #
537 %if "%{_enable_debug_packages}" == "1"
538     mkdir -p $RPM_BUILD_ROOT/usr/lib/debug/lib/modules/$KernelVer
539     cp vmlinux $RPM_BUILD_ROOT/usr/lib/debug/lib/modules/$KernelVer
540 %endif
541 %if %{buildxen}
542     if [ -f vmlinuz ]; then
543       cp vmlinuz $RPM_BUILD_ROOT/%{image_install_path}/vmlinuz-$KernelVer
544     fi
545 %endif
546
547     find $RPM_BUILD_ROOT/lib/modules/$KernelVer -name "*.ko" -type f >modnames
548
549     # mark modules executable so that strip-to-file can strip them
550     cat modnames | xargs chmod u+x
551
552     # remove files that will be auto generated by depmod at rpm -i time
553     rm -f $RPM_BUILD_ROOT/lib/modules/$KernelVer/modules.*
554
555     # Move the devel headers out of the root file system
556     mkdir -p $RPM_BUILD_ROOT/usr/src/kernels
557     mv $RPM_BUILD_ROOT/lib/modules/$KernelVer/build $RPM_BUILD_ROOT/$DevelDir
558     ln -sf ../../..$DevelDir $RPM_BUILD_ROOT/lib/modules/$KernelVer/build
559     [ -z "$DevelLink" ] || ln -sf `basename $DevelDir` $RPM_BUILD_ROOT/$DevelLink
560 }
561
562 ###
563 # DO it...
564 ###
565
566 # prepare directories
567 rm -rf $RPM_BUILD_ROOT
568 mkdir -p $RPM_BUILD_ROOT/boot
569
570 %if "%{_target_cpu}" == "x86_64"
571 %define kernel_arch %{_target_cpu}
572 %endif
573 %if "%{_target_cpu}" == "i586"
574 %define kernel_arch i386
575 %endif
576 %if "%{_target_cpu}" == "i686"
577 %define kernel_arch i386
578 %endif
579
580 %if %{buildup}
581 BuildKernel %make_target %kernel_arch
582 %endif
583
584 %ifarch i686
585 %if %{builduml}
586 BuildKernel linux um uml
587 %endif
588
589 %if %{buildxen}
590 BuildKernel vmlinuz %kernel_arch xenU
591 %endif
592 %endif
593
594 ###
595 ### install
596 ###
597
598 %install
599
600 cd vanilla
601
602 %if %{buildxen} && "%{_target_cpu}" == "i686"
603 mkdir -p $RPM_BUILD_ROOT/etc/ld.so.conf.d
604 rm -f $RPM_BUILD_ROOT/etc/ld.so.conf.d/kernelcap-%{KVERREL}.conf
605 cat > $RPM_BUILD_ROOT/etc/ld.so.conf.d/kernelcap-%{KVERREL}.conf <<\EOF
606 # This directive teaches ldconfig to search in nosegneg subdirectories
607 # and cache the DSOs there with extra bit 0 set in their hwcap match
608 # fields.  In Xen guest kernels, the vDSO tells the dynamic linker to
609 # search in nosegneg subdirectories and to match this extra hwcap bit
610 # in the ld.so.cache file.
611 hwcap 0 nosegneg
612 EOF
613 chmod 444 $RPM_BUILD_ROOT/etc/ld.so.conf.d/kernelcap-%{KVERREL}.conf
614 %endif
615
616 %if %{builddoc}
617 mkdir -p $RPM_BUILD_ROOT/usr/share/doc/kernel-doc-%{kversion}/Documentation
618
619 # sometimes non-world-readable files sneak into the kernel source tree
620 chmod -R a+r *
621 # copy the source over
622 tar cf - Documentation | tar xf - -C $RPM_BUILD_ROOT/usr/share/doc/kernel-doc-%{kversion}
623 %endif
624
625 ###
626 ### clean
627 ###
628
629 %clean
630 rm -rf $RPM_BUILD_ROOT
631
632 ###
633 ### scripts
634 ###
635
636 # load the loop module for upgrades...in case the old modules get removed we have
637 # loopback in the kernel so that mkinitrd will work.
638 %pre
639 /sbin/modprobe loop 2> /dev/null > /dev/null  || :
640 exit 0
641
642 %post
643 if [ -f /etc/sysconfig/kernel ]; then
644   /bin/sed -i -e 's/^DEFAULTKERNEL=kernel-smp$/DEFAULTKERNEL=kernel/' /etc/sysconfig/kernel
645 fi
646
647 # trick mkinitrd in case the current environment does not have device mapper
648 rootdev=$(awk '/^[ \t]*[^#]/ { if ($2 == "/") { print $1; }}' /etc/fstab)
649 if echo $rootdev |grep -q /dev/mapper 2>/dev/null ; then
650     if [ ! -f $rootdev ]; then
651         fake_root_lvm=1
652         mkdir -p $(dirname $rootdev)
653         touch $rootdev
654     fi
655 fi
656
657 [ ! -x /usr/sbin/module_upgrade ] || /usr/sbin/module_upgrade %{rpmversion}-%{release}
658 #/sbin/new-kernel-pkg --package kernel --mkinitrd --depmod --install %{KVERREL}
659 # Older modutils do not support --package option
660 /sbin/new-kernel-pkg --mkinitrd --depmod --install %{KVERREL}
661
662 # remove fake handle
663 if [ -n "$fake_root_lvm" ]; then
664     rm -f $rootdev
665 fi
666
667 # make some useful links
668 pushd /boot > /dev/null ; {
669         ln -sf config-%{KVERREL} config
670         ln -sf config-%{KVERREL} configsmp
671         ln -sf initrd-%{KVERREL}.img initrd-boot
672         ln -sf initrd-%{KVERREL}.img initrd-bootsmp
673         ln -sf vmlinuz-%{KVERREL} kernel-boot
674         ln -sf vmlinuz-%{KVERREL} kernel-bootsmp
675 }
676 popd > /dev/null
677
678 # ask for a reboot
679 mkdir -p /etc/planetlab
680 touch /etc/planetlab/update-reboot
681
682 %post devel
683 [ -f /etc/sysconfig/kernel ] && . /etc/sysconfig/kernel
684 if [ "$HARDLINK" != "no" -a -x /usr/sbin/hardlink ] ; then
685   pushd /usr/src/kernels/%{KVERREL}-%{_target_cpu} > /dev/null
686   /usr/bin/find . -type f | while read f; do hardlink -c /usr/src/kernels/*FC*/$f $f ; done
687   popd > /dev/null
688 fi
689
690 %post xenU
691 [ ! -x /usr/sbin/module_upgrade ] || /usr/sbin/module_upgrade
692 [ ! -x /sbin/ldconfig ] || /sbin/ldconfig -X
693
694 %post xenU-devel
695 [ -f /etc/sysconfig/kernel ] && . /etc/sysconfig/kernel
696 if [ "$HARDLINK" != "no" -a -x /usr/sbin/hardlink ] ; then
697   pushd /usr/src/kernels/%{KVERREL}-xenU-%{_target_cpu} > /dev/null
698   /usr/bin/find . -type f | while read f; do hardlink -c /usr/src/kernels/*FC*/$f $f ; done
699   popd > /dev/null
700 fi
701
702 %post uml-modules
703 depmod -ae %{KVERREL}uml
704
705 %preun
706 /sbin/modprobe loop 2> /dev/null > /dev/null  || :
707 /sbin/new-kernel-pkg --rminitrd --rmmoddep --remove %{KVERREL}
708
709 %preun xenU
710 /sbin/modprobe loop 2> /dev/null > /dev/null  || :
711 /sbin/new-kernel-pkg --rmmoddep --remove %{KVERREL}xenU
712
713 %preun uml-modules
714 rm -f /lib/modules/%{KVERREL}uml/modules.*
715
716
717 ###
718 ### file lists
719 ###
720
721 %if %{buildup}
722 %files 
723 %defattr(-,root,root)
724 /%{image_install_path}/vmlinuz-%{KVERREL}
725 /boot/System.map-%{KVERREL}
726 /boot/config-%{KVERREL}
727 %dir /lib/modules/%{KVERREL}
728 /lib/modules/%{KVERREL}/kernel
729 /lib/modules/%{KVERREL}/build
730 /lib/modules/%{KVERREL}/source
731 /lib/modules/%{KVERREL}/extra
732 /lib/modules/%{KVERREL}/updates
733
734 %files devel
735 %defattr(-,root,root)
736 %verify(not mtime) /usr/src/kernels/%{KVERREL}-%{_target_cpu}
737 %endif
738
739 %if %{builduml} && "%{_target_cpu}" == "i686"
740 %files uml
741 %defattr(-,root,root)
742 %{_bindir}/linux
743
744 %files uml-devel
745 %defattr(-,root,root)
746 %verify(not mtime) /usr/src/kernels/%{KVERREL}-uml-%{_target_cpu}
747 /usr/src/kernels/%{KVERREL}uml-%{_target_cpu}
748
749 %files uml-modules
750 %defattr(-,root,root)
751 /boot/System.map-%{KVERREL}uml
752 /boot/config-%{KVERREL}uml
753 %dir /lib/modules/%{KVERREL}uml
754 /lib/modules/%{KVERREL}uml/kernel
755 /lib/modules/%{KVERREL}uml/build
756 /lib/modules/%{KVERREL}uml/source
757 /lib/modules/%{KVERREL}uml/extra
758 /lib/modules/%{KVERREL}uml/updates
759 %endif
760
761 %if %{buildxen} && "%{_target_cpu}" == "i686"
762 %files xenU
763 %defattr(-,root,root)
764 /%{image_install_path}/vmlinuz-%{KVERREL}xenU
765 /boot/System.map-%{KVERREL}xenU
766 /boot/config-%{KVERREL}xenU
767 %dir /lib/modules/%{KVERREL}xenU
768 /lib/modules/%{KVERREL}xenU/kernel
769 /lib/modules/%{KVERREL}xenU/build
770 /lib/modules/%{KVERREL}xenU/source
771 /lib/modules/%{KVERREL}xenU/extra
772 /lib/modules/%{KVERREL}xenU/updates
773 /etc/ld.so.conf.d/kernelcap-%{KVERREL}.conf
774
775 %files xenU-devel
776 %defattr(-,root,root)
777 %verify(not mtime) /usr/src/kernels/%{KVERREL}-xenU-%{_target_cpu}
778 /usr/src/kernels/%{KVERREL}xenU-%{_target_cpu}
779 %endif
780
781 %files vserver
782 %defattr(-,root,root)
783 # no files
784
785 # only some architecture builds need kernel-doc
786
787 %if %{builddoc}
788 %files doc
789 %defattr(-,root,root)
790 %{_datadir}/doc/kernel-doc-%{kversion}/Documentation/*
791 %dir %{_datadir}/doc/kernel-doc-%{kversion}/Documentation
792 %dir %{_datadir}/doc/kernel-doc-%{kversion}
793 %endif
794
795 %if %{headers}
796 %files headers
797 %defattr(-,root,root)
798 %dir %{_includedir}
799 %{_includedir}/*
800 %endif
801
802 %changelog
803 * Tue May 12 2009 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - linux-2.6-27-3
804 - new tuntap patch available but not enabled
805 - mac80211 and iwlwifi are now mainstream, no ext. sources anymore
806 - new egre patch
807 - various changes in the config about netns and scheduler ...
808 - gnuradio gets a specific config
809 - enable patch about 64bits adresses and cardbus
810
811 * Tue Mar 24 2009 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - linux-2.6-27-2
812 - cleaned up obsolete (2.6.22) configs
813 - added gnuradio config links
814 - fix for building headers package (remove .cmd files)
815
816 * Tue Mar 10 2009 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - linux-2.6-27-1
817 - untested feature-complete version, but for the scheduler that is still missing
818
819 * Thu Jan 08 2009 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - linux-2.6-22-32
820 - support building on fedora 10
821
822 * Tue Dec 02 2008 Daniel Hokka Zakrisson <daniel@hozac.com> - linux-2.6-22-31
823 - add patches for m-lab and drl
824
825 * Tue Nov 11 2008 Daniel Hokka Zakrisson <daniel@hozac.com> - linux-2.6-22-30
826 - Use Intel's e1000e driver.
827
828 * Thu Oct 02 2008 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - linux-2.6-22-29
829 - added drivers for OPTION's globetrotter (gt 3g+ emea) umts cards
830 - + cleanup outdated configs
831
832 * Wed Sep 17 2008 Sapan Bhatia <sapanb@cs.princeton.edu> - linux-2.6-22-28
833 - Recovering a hunk that I accidentally ommited out of the last commit. Should not entail retesting, because the commits
834 - were unrelated.
835
836 * Sun Sep 14 2008 Sapan Bhatia <sapanb@cs.princeton.edu> - linux-2.6-22-27
837 - Fixing the accounting issue that causes certain connections to be misaccounted, and that causes NM/peercreds to
838 - intermittently break.
839
840 * Wed Sep 10 2008 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - linux-2.6-22-26
841 - patch for building on f9/gcc-4.3, no functional change on other distros
842
843 * Sun Aug 17 2008 Daniel Hokka Zakrisson <daniel@hozac.com> - linux-2.6-22-25
844 - FUSE support.
845
846 * Tue Aug 12 2008 Sapan Bhatia <sapanb@cs.princeton.edu> - linux-2.6-22-24
847 - Enable nmi watchdog by default.
848
849 * Mon Aug 04 2008 Sapan Bhatia <sapanb@cs.princeton.edu> - linux-2.6-22-23
850 - Fixed a bug in my previous commit.
851
852 * Mon Aug 04 2008 Sapan Bhatia <sapanb@cs.princeton.edu> - linux-2.6-22-22
853 - * 1 fix for using udp/listening sockets via raw
854 - * 1 fix to help codemux divide traffic in PlanetFlow
855
856 * Fri Aug 01 2008 Sapan Bhatia <sapanb@cs.princeton.edu> - linux-2.6-22-21
857 - Codemux calls setsockopt/SO_PEERCRED to set peer credentials on a socket, so that the connections it proxies to its clients are tagged for PlanetFlow. This hunk got lost somewhere along the way.
858
859 * Thu Jul 31 2008 Sapan Bhatia <sapanb@cs.princeton.edu> - linux-2.6-22-20
860 - Removed a debugging statement. Shows up a lot in the debug logs.
861
862 * Wed Jul 30 2008 Sapan Bhatia <sapanb@cs.princeton.edu> - linux-2.6-22-19
863 - Unbroke peercred setting.
864
865 * Mon Jul 28 2008 Sapan Bhatia <sapanb@cs.princeton.edu> - linux-2.6-22-18
866 - Now you can write your own TCP using packet sockets. As a side effect, tcptraceroute runs to completion including the
867 - last hop.
868
869 * Mon Jul 28 2008 Sapan Bhatia <sapanb@cs.princeton.edu> - linux-2.6-22-17
870 - Optimize packet socket support to eliminate a packet copy.
871
872 * Sun Jul 27 2008 Sapan Bhatia <sapanb@cs.princeton.edu> - linux-2.6-22-16
873 - Missed this header file, which broke the compile.
874 - I'll be doing another tag to include an optimization I left out of this version. This version is for Build only.
875
876 * Sun Jul 27 2008 Sapan Bhatia <sapanb@cs.princeton.edu> - linux-2.6-22-15
877 - Fixes to tcpdump-related problems reported recently.
878
879 * Wed Jul 23 2008 Stephen Soltesz <soltesz@cs.princeton.edu> - linux-2.6-22-14
880 - added fix to process visibility so when ncontext/vcontext  run netstat in
881 - xid=1, it can see all ports &  processes.
882
883 * Mon Jul 21 2008 Sapan Bhatia <sapanb@cs.princeton.edu> - linux-2.6-22-13
884 - fix for tcpdump/tcp payloads
885
886 * Tue Jul 15 2008 Sapan Bhatia <sapanb@cs.princeton.edu> - linux-2.6-22-12
887 - * Bugfix in tuntap
888 - * Attempt to fix TCP-payload-related problems with tcpdump
889
890 * Wed Jul 09 2008 Sapan Bhatia <sapanb@cs.princeton.edu> - linux-2.6-22-11
891 - * Split up VNET+ module into its component patches
892 - * Added tun/tap support
893
894 * Tue Jul 08 2008 Daniel Hokka Zakrisson <daniel@hozac.com> - linux-2.6-22-10
895 - Filling a statically allocated buffer cannot fail, right?
896
897 * Wed Jun 25 2008 Daniel Hokka Zakrisson <daniel@hozac.com> - linux-2.6-22-9
898 - Enable the hangcheck timer driver, and build it in to the kernel.
899 - Dump relevant data on the scheduler bug instead of BUGing.
900
901 * Sat Jun 07 2008 Sapan Bhatia <sapanb@cs.princeton.edu> - linux-2.6-22-8
902 - * Partial fix for the UDP-packet-pollution problem
903 - * Support for PF_PACKET sockets
904 - * Support for SOCK_PACKET sockets
905 - * Disabled Chopstix with mutexes
906 - * Tested VNET+ under heavy loads
907
908
909
910 * Fri May 16 2008 Stephen Soltesz <soltesz@cs.princeton.edu> - linux-2.6-22-7
911 - Bringing this fix in for tcpdump and  ping
912
913
914 * Fri May 09 2008 Stephen Soltesz <soltesz@cs.princeton.edu> - linux-2.6-22-6
915 - Updated configuration to include COW again.
916
917 - Patches from Sapan to fix ping losses.
918
919 - Still need help with tcpdump traffic.
920
921
922 * Tue May 06 2008 Daniel Hokka Zakrisson <daniel@hozac.com> - linux-2.6-22-5
923 - Patch needs to be applied.
924
925 * Mon May 05 2008 Stephen Soltesz <soltesz@cs.princeton.edu> - linux-2.6-22-4
926
927
928 * Thu Apr 24 2008 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - linux-2.6-22-3
929 - Fix bug with looping in schedule()
930
931 * Wed Apr 23 2008 Stephen Soltesz <soltesz@cs.princeton.edu> - linux-2.6-22-2
932 - Includes changes from Sapan/Andy regarding the scheduler and vnet bugs.
933 - Should be safe to try a second deployment.
934
935
936 * Tue Jul 11 2006 Dave Jones <davej@redhat.com> [2.6.17-1.2142_FC4]
937 - 2.6.17.4
938 - Disable split pagetable lock.
939
940 * Wed Jul  5 2006 Dave Jones <davej@redhat.com>
941 - Get rid of stack backtrace on panic, which in most
942   cases actually caused a loss of info instead of a gain.
943
944 * Fri Jun 30 2006 Dave Jones <davej@redhat.com> [2.6.17-1.2141_FC4]
945 - 2.6.17.3
946
947 * Fri Jun 30 2006 Dave Jones <davej@redhat.com> [2.6.17-1.2140_FC4]
948 - 2.6.17.2
949 - Fix up the alsa list_add bug.
950
951 * Mon Jun 26 2006 Dave Jones <davej@redhat.com>
952 - Fix up various stupidities incurred by the last big rebase.
953   - Reenable SMP x86-64 builds.
954   - Reenable SMBFS.
955 - Enable PCI fake hotplug driver.
956 - Enable gameport/joystick on i586 builds. (#196581)
957
958 * Sat Jun 24 2006 Dave Jones <davej@redhat.com>
959 - Enable profiling for 586 kernels.
960
961 * Fri Jun 23 2006 Dave Jones <davej@redhat.com> [2.6.17-1.2139_FC4]
962 - Rebuild with slab debug off.
963
964 * Tue Jun 20 2006 Dave Jones <davej@redhat.com> [2.6.17-1.2138_FC4]
965 - 2.6.17.1
966
967 * Mon Jun  5 2006 Dave Jones <davej@redhat.com> [2.6.16-1.2115_FC4]
968 - 2.6.16.20
969
970 * Tue May 30 2006 Dave Jones <davej@redhat.com> [2.6.16-1.2114_FC4]
971 - 2.6.16.19
972
973 * Mon May 29 2006 Dave Jones <davej@redhat.com> [2.6.16-1.2113_FC4]
974 - Improved list_head debugging.
975
976 * Tue May 23 2006 Dave Jones <davej@redhat.com> [2.6.16-1.2112_FC4]
977 - 2.6.16.18
978
979 * Sat May 20 2006 Dave Jones <davej@redhat.com> [2.6.16-1.2111_FC4]
980 - 2.6.16.17
981
982 * Wed May 10 2006 Dave Jones <davej@redhat.com> [2.6.16-1.2110_FC4]
983 - 2.6.16.16
984
985 * Tue May  9 2006 Dave Jones <davej@redhat.com> [2.6.16-1.2109_FC4]
986 - 2.6.16.15
987 - make 16C950 UARTs work (again). (#126403)
988 - Fix exec-shield default, which should fix a few programs that
989   stopped running.
990
991 * Thu May  4 2006 Dave Jones <davej@redhat.com> [2.6.16-1.2108_FC4]
992 - 2.6.16.14
993
994 * Tue May  2 2006 Dave Jones <davej@redhat.com> [2.6.16-1.2107_FC4]
995 - 2.6.16.13
996
997 * Mon May  1 2006 Dave Jones <davej@redhat.com>
998 - 2.6.16.12
999
1000 * Tue Apr 25 2006 Dave Jones <davej@redhat.com>
1001 - Fix up SCSI errors with mymusix usb mp3 player (#186187)
1002
1003 * Mon Apr 24 2006 Dave Jones <davej@redhat.com>
1004 - 2.6.16.11
1005
1006 * Wed Apr 19 2006 Dave Jones <davej@redhat.com>
1007 - Enable PCI MSI support.
1008
1009 * Tue Apr 18 2006 Dave Jones <davej@redhat.com> [2.6.16-1.2096_FC4]
1010 - 2.6.16.9
1011
1012 * Tue Apr 18 2006 Dave Jones <davej@redhat.com> [2.6.16-1.2093_FC4]
1013 - 2.6.16.7
1014
1015 * Mon Apr 17 2006 Dave Jones <davej@redhat.com> [2.6.16-1.2092_FC4]
1016 - 2.6.16.6
1017
1018 * Sun Apr 16 2006 Dave Jones <davej@redhat.com>
1019 - 2.6.16.5
1020
1021 * Fri Apr  7 2006 Dave Jones <davej@redhat.com>
1022 - 2.6.16.2
1023
1024 * Tue Apr  4 2006 Dave Jones <davej@redhat.com>
1025 - Reenable non-standard serial ports. (#187466)
1026 - Reenable snd-es18xx for x86-32 (#187733)
1027
1028 * Thu Mar 30 2006 Dave Jones <davej@redhat.com>
1029 - ship the .kernelrelease file in -devel too.
1030 - Disable EDAC debug.
1031
1032 * Tue Mar 26 2006 Dave Jones <davej@redhat.com> [2.6.16-1.2069_FC4]
1033 - 2.6.16.1
1034
1035 * Mon Mar 25 2006 Dave Jones <davej@redhat.com>
1036 - Include patches posted for review for inclusion in 2.6.16.1
1037 - Updated new audit msg types.
1038 - Reenable HDLC driver (#186257)
1039 - Make acpi-cpufreq 'sticky'
1040 - Fix broken x86-64 32bit vDSO (#186924)
1041
1042 * Tue Mar 21 2006 Dave Jones <davej@redhat.com>
1043 - Improve spinlock scalability on big machines.
1044
1045 * Mon Mar 20 2006 Dave Jones <davej@redhat.com>
1046 - Sync with FC5's 2.6.16 kernel.
1047 - Update Tux & Exec-shield to latest.
1048
1049
1050 %define module_current_branch 22