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