Whamcloud - gitweb
Use the newer libsysio tags.
[fs/lustre-release.git] / build / lustre-kernel-2.4.spec.in
1 Summary: The Linux kernel (the core of the Linux operating system)
2
3 # Versions of various parts
4
5 #
6 # Polite request for people who spin their own kernel rpms:
7 # please modify the "release" field in a way that identifies
8 # that the kernel isn't the stock RHL kernel, for example by
9 # adding some text to the end of the version number.
10 #
11 %define kversion @KERNEL_VERSION@
12 %define kextraver @KERNEL_EXTRA_VERSION@
13 %define release @KERNEL_RELEASE@
14 # /usr/src/%{kslnk} -> /usr/src/linux-%{KVERREL}
15 %define kslnk linux-2.4
16
17 # groups of related archs
18 %define all_x86 i386 i686 i586 athlon
19 #define all_x86 i686 i386 i586 athlon
20
21 %define nptlarchs %{all_x86}
22 #define nptlarchs noarch
23 %define rhbuild @RHBUILD@
24 %define susebuild @SUSEBUILD@
25 %define linux26 @LINUX26@
26
27 # disable build root strip policy
28 %define __spec_install_post /usr/lib/rpm/brp-compress || :
29 #
30 # RPM foo magic
31 %define _missing_doc_files_terminate_build    0
32 %define _unpackaged_files_terminate_build 0
33 %define debug_package %{nil}
34
35 # Enable this to build a board-specific kernel configuration 
36 # some architectures have LOTS of different setups and this 
37 # is a way to deal with that cleanly.
38 #
39 #define targetboard assabet
40 %define dashtargetboard %{?targetboard:-%{targetboard}}
41 %define withtargetboard 0
42 %{?targetboard: %{expand: %%define withtargetboard 1}}
43         
44 # Override generic defaults with per-arch defaults (which can
45 # themselves be overridden with --with/--without).  These must
46 # ONLY be "0", never "1"
47
48 %define buildbase 0
49 %define buildbigmem 0
50 %define buildBOOT 0
51 %define buildjensen 0
52 %define buildsmp 0
53 %define buildbigsmp 0
54 %define buildup 0
55 %define buildsrc 0
56
57 %ifarch @BASE_ARCHS@
58 %define buildbase 1
59 %endif
60
61 %ifarch @BIGMEM_ARCHS@
62 %define buildbigmem 1
63 %endif
64
65 %ifarch @BOOT_ARCHS@
66 %define buildBOOT 1
67 %endif
68
69 %ifarch @JENSEN_ARCHS@
70 %define buildjensen 1
71 %endif
72
73 %ifarch @SMP_ARCHS@
74 %define buildsmp 1
75 %endif
76
77 %ifarch @BIGSMP_ARCHS@
78 %define buildbigsmp 1
79 %endif
80
81 %ifarch @UP_ARCHS@
82 %define buildup 1
83 %endif
84
85 # For board-specific kernels, build only the normal kernel (which may actually be smp, not up).
86 %if %{withtargetboard}
87 %define buildsmp 0
88 %define buildbigsmp 0
89 %define buildBOOT 0
90 %define buildbigmem 0
91 %define buildjensen 0
92 %endif
93
94 %if 0
95 Second, per-architecture exclusions (ifarch)
96 %ifarch i386
97 %define buildsmp 0
98 %endif
99 %ifarch ia64
100 %define buildBOOT 0
101 %endif
102 %endif
103
104 # we can't test values inline, only whether a macro exists
105 %{expand: %%define buildup_%{buildup} yadda}
106 %{expand: %%define buildsmp_%{buildsmp} yadda}
107 %{expand: %%define buildbigsmp_%{buildbigsmp} yadda}
108 %{expand: %%define buildBOOT_%{buildBOOT} yadda}
109 %{expand: %%define buildbigmem_%{buildbigmem} yadda}
110 %{expand: %%define buildjensen_%{buildjensen} yadda}
111 %{expand: %%define ikd_%{ikd} yadda}
112 %{expand: %%define ibcs_%{ibcs} yadda}
113 %{expand: %%define debuglevel_%{debugging} yadda}
114
115 %{expand: %%define kernel_conflicts  ppp <= 2.3.15, pcmcia-cs <= 3.1.20, isdn4k-utils <= 3.0, mount < 2.10r-5, nfs-utils < 0.3.1, cipe < 1.4.5, tux < 2.1.0, kudzu <= 0.92, e2fsprogs < 1.22, initscripts < 5.84, dev < 3.2-7, iptables < 1.2.5-3, bcm5820 < 1.81, nvidia-rh72 <= 1.0, oprofile < 0.4}
116
117 %if %{rhbuild}
118 %define BOOT_kernel_prereq fileutils, modutils >=  2.4.18
119 %define kernel_prereq %{BOOT_kernel_prereq}, initscripts >= 5.83, mkinitrd >= 3.2.6
120 %endif
121
122 %ifarch ia64
123 %define initrd_dir /boot/efi/redhat
124 %else
125 %define initrd_dir /boot
126 %endif
127
128 %ifarch %{all_x86} x86_64
129 %define kernel_glob vmlinu?-%{KVERREL}
130 %endif
131 %ifarch ia64
132 # <sigh>, no GLOB_BRACE for filelists, efi needs to be done separately
133 %define kernel_glob vmlinuz-%{KVERREL}
134 %endif
135 %ifarch alpha
136 %define kernel_glob vmlinu?-%{KVERREL}
137 %endif
138
139 Name: kernel
140 Version: %{kversion}
141 Release: %{release}%{?targetboard:%{targetboard}}%{?debuglevel_1:.dbg}
142 %define KVERREL %{PACKAGE_VERSION}-%{kextraver}%{?targetboard:%{targetboard}}%{?debuglevel_1:.dbg}
143 License: GPL
144 Group: System Environment/Kernel
145 ExclusiveArch: %{all_x86} x86_64 ia64 ppc
146 ExclusiveOS: Linux
147 Obsoletes: kernel-modules, kernel-sparc
148 Provides: kernel = %{version}
149 BuildConflicts: rhbuildsys(DiscFree) < 500Mb
150 %ifarch %{all_x86} ia64 x86_64
151 Provides: kernel-drm = 4.1.0, kernel-drm = 4.2.0, kernel-drm = 4.3.0, kernel-drm = 4.2.99.3
152 %endif
153 Autoreqprov: no
154 %if %{rhbuild}
155 Prereq: %{kernel_prereq}
156 Conflicts: %{kernel_conflicts}
157
158 BuildPreReq: patch >= 2.5.4, bash >= 2.03, sh-utils, gnupg, tar
159 BuildPreReq: bzip2, findutils, dev, gzip, m4
160 %endif
161
162 Vendor: Cluster File Systems, Inc.
163 URL: http://www.kernel.org/
164 Buildroot: /var/tmp/%{name}-%{PACKAGE_VERSION}-root
165
166 Source0: @LUSTRE_SOURCE@
167 Source1: @KERNEL_SOURCE@
168 Source2: external-patches.tar.gz
169
170 Source15: linux-rhconfig.h
171 Source16: linux-merge-config.awk
172 Source17: linux-merge-modules.awk
173
174 Source25: suse-functions.sh
175 Source26: suse-post.sh
176 Source27: suse-postun.sh
177 Source28: suse-trigger-script.sh.in
178
179 %package source
180 Summary: The source code for the Linux kernel.
181 Group: Development/System
182 Prereq: fileutils
183 Requires: gawk
184 Requires: gcc >= 2.96-98
185 Autoreqprov: 0
186
187 %package doc
188 Summary: Various documentation bits found in the kernel source.
189 Group: Documentation
190
191 %description
192 The kernel package contains the Linux kernel (vmlinuz), the core of a
193 Linux operating system.  The kernel handles the basic functions of the
194 operating system: memory allocation, process allocation, device input
195 and output, etc.
196
197 %description source
198 The kernel-source package contains the source code files for the Linux
199 kernel. These source files are needed to build custom/third party device
200 drivers. The source files can also be used to build a custom kernel that is
201 better tuned to your particular hardware, if you are so inclined (and you
202 know what you're doing).
203
204 %description doc
205 This package contains documentation files form the kernel
206 source. Various bits of information about the Linux kernel and the
207 device drivers shipped with it are documented in these files. 
208
209 You'll want to install this package if you need a reference to the
210 options that can be passed to Linux kernel modules at load time.
211
212 %package smp
213 Summary: The Linux kernel compiled for SMP machines.
214 Group: System Environment/Kernel
215 Provides: module-info, kernel = %{version}
216 %ifarch %{all_x86} ia64 x86_64
217 Provides: kernel-drm = 4.1.0, kernel-drm = 4.2.0, kernel-drm = 4.3.0, kernel-drm = 4.2.99.3
218 %endif
219 %if %{rhbuild}
220 Prereq: %{kernel_prereq}
221 Conflicts: %{kernel_conflicts}
222 %endif
223
224 %description smp
225 This package includes a SMP version of the Linux kernel. It is
226 required only on machines with two or more CPUs, although it should
227 work fine on single-CPU boxes.
228
229 Install the kernel-smp package if your machine uses two or more CPUs.
230
231 %package bigsmp
232 Summary: The Linux kernel compiled for SMP machines.
233 Group: System/Kernel
234 Provides: module-info, kernel = %{version}, k_smp4G
235 Obsoletes: k_smp4G
236 %ifarch %{all_x86} ia64 x86_64
237 Provides: kernel-drm = 4.1.0, kernel-drm = 4.2.0, kernel-drm = 4.3.0, kernel-drm = 4.2.99.3
238 %endif
239 %if %{rhbuild}
240 Prereq: %{kernel_prereq}
241 Conflicts: %{kernel_conflicts}
242 %endif
243
244 %description bigsmp
245 This package includes a SMP version of the Linux kernel. It is
246 required only on machines with two or more CPUs, although it should
247 work fine on single-CPU boxes.
248
249 Install the kernel-bigsmp package if your machine uses two or more CPUs.
250
251 %package bigmem
252 Summary: The Linux Kernel for machines with more than 4 Gigabyte of memory.
253 Group: System Environment/Kernel
254 Provides: module-info, kernel = %{version}
255 %ifarch %{all_x86} ia64 x86_64
256 Provides: kernel-drm = 4.1.0, kernel-drm = 4.2.0, kernel-drm = 4.3.0, kernel-drm = 4.2.99.3
257 %endif
258 %if %{rhbuild}
259 Prereq: %{kernel_prereq}
260 Conflicts: %{kernel_conflicts}
261 Obsoletes: kernel-enterprise <= 2.4.10
262 %endif
263
264 %description bigmem
265 This package includes a kernel that has appropriate configuration options
266 enabled for Pentium III machines with 4 Gigabyte of memory or more.
267
268 %package BOOT
269 Summary: The version of the Linux kernel used on installation boot disks.
270 Group: System Environment/Kernel
271 Provides: kernel = %{version}
272 %if %{rhbuild}
273 Prereq: %{BOOT_kernel_prereq}
274 Conflicts: %{kernel_conflicts}
275 %endif
276
277 %description BOOT
278 This package includes a trimmed down version of the Linux kernel.
279 This kernel is used on the installation boot disks only and should not
280 be used for an installed system, as many features in this kernel are
281 turned off because of the size constraints.
282
283 %package BOOTsmp
284 Summary: The Linux kernel used on installation boot disks for SMP machines.
285 Group: System Environment/Kernel
286 Provides: kernel = %{version}
287 %if %{rhbuild}
288 Prereq: %{BOOT_kernel_prereq}
289 Conflicts: %{kernel_conflicts}
290 %endif
291
292 %description BOOTsmp
293 This package includes a trimmed down version of the Linux kernel. This
294 kernel is used on the installation boot disks only and should not be used
295 for an installed system, as many features in this kernel are turned off
296 because of the size constraints. This kernel is used when booting SMP
297 machines that have trouble coming up to life with the uniprocessor kernel.
298
299 %package jensen
300 Summary: The Linux Kernel compiled for the Alpha Jensen platform.
301 Group: System Environment/Kernel
302 Provides: kernel = %{version}
303 %if %{rhbuild}
304 Prereq: %{kernel_prereq}
305 Conflicts: %{kernel_conflicts}
306 %endif
307
308 %description jensen
309 This package includes a kernel that has appropriate configuration
310 options enabled for use on the Alpha Jensen platform.  The Jensen
311 platform is not supported in the normal generic alpha kernel support.
312
313 %package -n lustre-lite-utils
314 Summary: Lustre utils for Linux
315 Group: Applications/System
316
317 %description -n lustre-lite-utils
318 The Lustre Lite file system utilities.  This includes the tools needed
319 to configure, mount, and administer a Lustre filesystem.  This package
320 is necessary if you want to access a Lustre filesystem.
321
322 # the lustre-doc files are just included as %doc wiht
323 # lustre-lite-utils
324
325 #%package -n lustre-doc
326 #Summary: Sample Lustre configurations and documentation
327 #Group: Documentation
328
329 #%description -n lustre-doc
330 #The Lustre book, sample configurations, and other documentation for
331 #Lustre.
332
333 %package -n lustre-ldap
334 Summary: LDAP schema files for Lustre
335 Group: System Environment/Daemons
336
337 %description -n lustre-ldap
338 LDAP schema files for Lustre.  These are needed if you plan to store
339 your Lustre configuration in LDAP, rather than on disk.
340
341 %prep
342 %setup -n lustre-kernel-%{version} -q -c
343 if [ ! -d lustre ] ; then
344     ln -sf lustre* lustre
345 fi
346 pushd lustre >/dev/null
347 if [ -s "%{SOURCE2}" ] ; then
348        tar zxf "%{SOURCE2}" -C lustre/kernel_patches
349 fi
350 sh -x ./build/lmake \
351         --unpack-kernel \
352         --target @LUSTRE_TARGET@ \
353         --target-arch %{_target_cpu} \
354         --kerneldir $RPM_SOURCE_DIR
355 popd >/dev/null
356
357 # handle both SuSE and Red Hat's new-kernel-pkg bits
358 for flavor in "" smp bigmem bigsmp BOOT jensen ; do
359         for when in pre preun post postun ; do
360                 script="${when}${flavor}.sh"
361                 echo "if [ -f /etc/SuSE-release ] ; then" > ${script}
362                 sed -e "s/@when@/$when/g" -e "s^%ver_str^%{KVERREL}${flavor}^g" %{SOURCE28} >> ${script}
363                 cat %{SOURCE25} >> ${script}
364                 case $when in
365                         post)
366                                 sed -e "s^%ver_str^%{KVERREL}${flavor}^g" %{SOURCE26} >> ${script}
367                                 ;;
368                         postun)
369                                 sed -e "s^%ver_str^%{KVERREL}${flavor}^g" %{SOURCE27} >> ${script}
370                                 ;;
371                 esac
372                 echo "exit 0; fi" >> ${script}
373                 case $when in
374                         post)
375                                 if [ -z "${flavor}" ] ; then
376                                         cat >> ${script} <<EOF
377 cd /boot
378 %ifnarch ia64 
379 ln -sf vmlinuz-%{KVERREL} vmlinuz
380 %endif
381 ln -sf System.map-%{KVERREL} System.map
382 ln -sf module-info-%{KVERREL} module-info
383 EOF
384                                 fi
385                                 cat >> ${script} <<EOF
386 [ -x /usr/sbin/module_upgrade ] && /usr/sbin/module_upgrade
387 [ -x /sbin/mkkerneldoth ] && /sbin/mkkerneldoth
388 if [ -x /sbin/new-kernel-pkg ] ; then
389         /sbin/new-kernel-pkg --mkinitrd --depmod --install %{KVERREL}${flavor}
390 fi
391 EOF
392                                 ;;
393                         postun)
394                                 ;;
395                         pre)
396                                 cat >> ${script} <<EOF
397 /sbin/modprobe loop 2>/dev/null >/dev/null || :
398 exit 0
399 EOF
400                                 ;;
401                         preun)
402                                 cat >> ${script} <<EOF
403 /sbin/modprobe loop 2> /dev/null > /dev/null  || :
404 rm -f /lib/modules/%{KVERREL}${flavor}/modules.*
405 if [ -x /sbin/new-kernel-pkg ] ; then
406  /sbin/new-kernel-pkg --rminitrd --rmmoddep --remove %{KVERREL}${flavor}
407 fi
408 EOF
409                                 ;;
410                 esac
411         done
412 done
413
414 %build
415 # if RPM_BUILD_NCPUS unset, set it
416 if [ -z "$RPM_BUILD_NCPUS" ] ; then
417     RPM_BUILD_NCPUS=$(egrep -c "^cpu[0-9]+" /proc/stat || :)
418     if [ $RPM_BUILD_NCPUS -eq 0 ] ; then
419         RPM_BUILD_NCPUS=1
420     fi
421     if [ $RPM_BUILD_NCPUS -gt 8 ] ; then
422         RPM_BUILD_NCPUS=8
423     fi
424 fi
425
426 rm -rf $RPM_BUILD_ROOT
427 mkdir -p $RPM_BUILD_ROOT
428
429 DependKernel()
430 {
431   target_config=${1:+--target-config $1}
432   sh -x ./build/lmake \
433         --depend-kernel \
434         --target @LUSTRE_TARGET@ \
435         --target-arch %{_target_cpu} \
436         ${target_config} \
437         --extraversion %{kextraver} \
438         -j $RPM_BUILD_NCPUS
439 }
440
441 BuildKernel()
442 {
443   target_config=${1:+--target-config $1}
444   sh -x ./build/lmake \
445         --build-kernel --build-lustre \
446         --install \
447         --target @LUSTRE_TARGET@ \
448         --target-arch %{_target_cpu} \
449         ${target_config} \
450         --extraversion %{kextraver} \
451         --kerneldir $RPM_SOURCE_DIR \
452         -j $RPM_BUILD_NCPUS \
453         --destdir $RPM_BUILD_ROOT \
454         -- --enable-modules \
455         --disable-doc --disable-tests \
456         --disable-utils --disable-liblustre \
457         --sysconfdir=%{_sysconfdir} \
458         --mandir=%{_mandir} \
459         @CONFIGURE_FLAGS@
460 }
461
462 BuildLustre()
463 {
464   target_config=${1:+--target-config $1}
465   sh -x ./build/lmake \
466         --build-lustre \
467         --install-lustre \
468         --target @LUSTRE_TARGET@ \
469         --target-arch %{_target_cpu} \
470         ${target_config} \
471         --extraversion %{kextraver} \
472         --kerneldir $RPM_SOURCE_DIR \
473         -j $RPM_BUILD_NCPUS \
474         --destdir $RPM_BUILD_ROOT \
475         -- --enable-utils \
476         --disable-doc --disable-tests \
477         --disable-modules --disable-liblustre \
478         --sysconfdir=%{_sysconfdir} \
479         --mandir=%{_mandir} \
480         @CONFIGURE_FLAGS@
481 }
482
483 SaveHeaders()
484 {
485   sh -x ./build/lmake \
486         --save-headers \
487         --target @LUSTRE_TARGET@ \
488         --target-arch %{_target_cpu} \
489         --extraversion %{kextraver} \
490         --destdir $RPM_BUILD_ROOT
491 }
492
493 pushd lustre >/dev/null
494
495 %if %{buildbigmem}
496 BuildKernel bigmem
497 %endif
498
499 %if %{buildBOOT}
500 BuildKernel BOOT
501 %endif
502
503 %if %{buildjensen}
504 BuildKernel jensen
505 %endif
506
507 %if %{buildsmp}
508 BuildKernel smp
509 %endif
510
511 %if %{buildbigsmp}
512 BuildKernel bigsmp
513 %endif
514
515 %if %{buildup}
516 BuildKernel
517 %endif
518
519 %if %{buildbase}
520 BuildLustre
521 SaveHeaders
522 %endif
523
524 popd >/dev/null
525
526 %install
527 pushd lustre >/dev/null
528 # it's already installed, so just clean up some things that are rpm
529 # specific
530 for i in $RPM_BUILD_ROOT/lib/modules/* ; do
531   rm -f $i/modules.*
532   rm -f $i/build
533   ln -sf ../../../usr/src/linux-%{KVERREL} $i/build
534 %ifarch %{ntplarchs}
535   # remove legacy pcmcia symlink that's no longer useful
536   rm -rf $i/pcmcia
537 %endif
538 done
539
540 # mark the vmlinux* non-executable to fool strip-to-file
541 chmod a-x $RPM_BUILD_ROOT/boot/vmlinux*
542
543 BuildObj ()
544 {
545         flavor=$1
546         if [ $flavor = "up" ] ; then
547                 flavext=""
548         else
549                 flavext="-$flavor"
550         fi
551         c="$RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}"
552         o="${c}-obj/%{_target_cpu}/$flavor"
553         mkdir -p $o
554         cp ../lustre/kernel_patches/kernel_configs/kernel-%{kversion}-@LUSTRE_TARGET@-%{_target_cpu}%{dashtargetboard}${flavext}.config \
555                 $o/.config
556         for oc in oldconfig_nonint silentoldconfig oldconfig ; do
557             if grep -q "$oc" Makefile ; then
558                 OLDCONFIG="$oc"
559                 break
560             fi
561         done
562         MAKE="make -s O=$o -C ${c}"
563         $MAKE $OLDCONFIG
564         $MAKE prepare-all
565         $MAKE clean
566         rm -rf $o/.config.old $o/include/config
567         # Replace the Makefile in the object directory with a version
568         # that has relative path names.
569         read VERSION PATCHLEVEL SUBLEVEL <<-EOF
570 $(set -- 2.6.5 ; echo ${*//./ })
571 EOF
572         source scripts/mkmakefile \
573             ../../../linux-%{KVERREL} \
574             ../linux-%{KVERREL}-obj/%{_target_cpu}/$flavor \
575             $VERSION \
576             $PATCHLEVEL \
577             > $o/Makefile
578         zcat "$RPM_BUILD_ROOT/boot/symvers-%{KVERREL}-%{_target_cpu}${flavor}.gz" \
579             > $o/Module.symvers
580 }
581
582 ##
583 ## do -source package cleanup/install
584 ##
585 %if %{buildbase}
586     pushd linux >/dev/null
587     mkdir -p $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}
588     rm -f drivers/net/hamradio/soundmodem/gentbl scripts/mkdep
589     tar cf - . | tar xf - -C $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}
590     perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = -%{kextraver}custom/" $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/Makefile
591     ln -sf linux-%{KVERREL} $RPM_BUILD_ROOT/usr/src/linux
592     # install -m 644 %{SOURCE10}  $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}
593
594     #clean up the destination
595     make -s mrproper -C $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}
596     rm -rf $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/configs
597     mkdir -p $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/configs
598     cp ../lustre/kernel_patches/kernel_configs/kernel-%{kversion}-@LUSTRE_TARGET@*.config $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/configs
599     %if %{linux26}
600         # this only works because CFS only builds one kernel per target/arch per kernel-source rpm
601         objdir=$RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}-obj
602         mkdir -p $objdir
603         %if %{buildbigmem}
604         BuildObj bigmem
605         %endif
606         %if %{buildBOOT}
607         BuildObj BOOT
608         %endif
609         %if %{buildjensen}
610         BuildObj jensen
611         %endif
612         %if %{buildsmp}
613         BuildObj smp
614         %endif
615         %if %{buildbigsmp}
616         BuildObj bigsmp
617         %endif
618         %if %{buildup}
619         BuildObj up
620         %endif
621         # Remove $RPM_BUILD_ROOT prefix from symlinks.
622         for link in $(find $objdir -type l); do
623             target=$(readlink $link)
624             rm -f $link
625             ln -s ${target/$RPM_BUILD_ROOT/} $link
626         done
627     %else # 2.4 rh-style
628         cp ../lustre/kernel_patches/kernel_configs/kernel-%{kversion}-@LUSTRE_TARGET@-%{_target_cpu}%{dashtargetboard}.config $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/.config
629         for oc in oldconfig_nonint silentoldconfig oldconfig ; do
630             if grep -q "$oc" $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/Makefile ; then
631                 OLDCONFIG="$oc"
632                 break
633             fi
634         done
635         make -s $OLDCONFIG -C $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}
636         %if %{linux26}
637            make -s include/asm -C $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}
638         %else
639            make -s symlinks -C $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}
640         %endif
641         make -s include/linux/version.h -C $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}
642
643         #this generates modversions info which we want to include and we may as
644         #well include the depends stuff as well, after we fix the paths
645         make -s depend -C $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}
646         find $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL} -name ".*depend" | \
647         while read file ; do
648             mv $file $file.old
649             sed -e "s|[^ ]*\(/usr/src/linux\)|\1|g" < $file.old > $file
650             rm -f $file.old
651         done
652
653         # Try to put some smarter autoconf.h and version.h files in place
654         pushd $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/include/linux ; {
655         rm -rf modules modversions.h autoconf.h version.h
656         cat > modversions.h <<EOF
657 #ifndef _LINUX_MODVERSIONS_H
658 #define _LINUX_MODVERSIONS_H
659 #include <linux/rhconfig.h>
660 #include <linux/modsetver.h>
661 EOF
662         echo '#include <linux/rhconfig.h>' > autoconf.h
663         list=`find ../../savedheaders/* -name '*.ver' -exec basename '{}' \; | sort`
664         mkdir modules
665         for l in $list; do
666             sed 's,$,modules/'$l, ../../savedheaders/list | awk -f %{SOURCE17} > modules/$l
667             touch -r modules/$l modules/`basename $l .ver`.stamp
668             echo '#include <linux/modules/'$l'>' >> modversions.h
669         done
670         echo '#endif' >> modversions.h
671         sed 's,$,autoconf.h,' ../../savedheaders/list | awk -f %{SOURCE16} >> autoconf.h
672         install -m 644 %{SOURCE15} rhconfig.h
673         echo "#include <linux/rhconfig.h>" >> version.h
674         keyword=if
675         for i in smp BOOT BOOTsmp bigmem bigsmp up ; do
676             # When we build in an i386, we don't have an bigmem header directory
677             # in savedheaders/i386/bigmem.  We also don't have a BOOT directory
678             # anywhere except in savedheaders/i386.  So, we need to use this method
679             # of determining if a kernel version string needs to be included in the
680             # version.h file
681             verh=`echo ../../savedheaders/*/$i/version.h | awk ' { print $1 } '`
682             if [ -n "$verh" -a -f "$verh" ]; then
683                 if [ "$i" = up ]; then
684                     if [ "$keyword" = if ]; then
685                         echo "#if 0" >> version.h
686                     fi
687                     echo "#else" >> version.h
688                 else
689                     echo "#$keyword defined(__module__$i)" >> version.h
690                     keyword=elif
691                 fi
692                 grep UTS_RELEASE $verh >> version.h
693             fi
694             done
695         echo "#endif" >> version.h
696         if [ -f ../../savedheaders/%{_target_cpu}/up/version.h ] ; then
697             # keep to a standard normally
698             HEADER_FILE=../../savedheaders/%{_target_cpu}/up/version.h
699         else
700             # test build not including uniprocessor, must get info from somewhere
701             HEADER_FILE=$(ls ../../savedheaders/*/*/version.h | head -n 1)
702         fi
703         grep -v UTS_RELEASE $HEADER_FILE >> version.h
704         rm -rf ../../savedheaders
705         } ; popd
706         touch $RPM_BUILD_ROOT/boot/kernel.h-%{kversion}
707         
708         # rm -f $RPM_BUILD_ROOT/usr/include/linux
709         
710         rm -rf $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/savedheaders
711         
712         %if %{rhbuild}
713             # fix up the tmp_include_depends file wrt the buildroot
714             perl -p -i -e "s|$RPM_BUILD_ROOT||g" $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/tmp_include_depends
715         %endif
716     %endif # linux26
717     popd >/dev/null
718 %endif # buildbase
719
720 popd >/dev/null
721
722 %clean
723 rm -rf $RPM_BUILD_ROOT
724
725 ###
726 ### scripts
727 ###
728
729 # do this for upgrades...in case the old modules get removed we have
730 # loopback in the kernel so that mkinitrd will work.
731 %pre -f pre.sh
732
733 %pre smp -f presmp.sh
734
735 %pre bigsmp -f prebigsmp.sh
736
737 %pre bigmem -f prebigmem.sh
738
739 %post -f post.sh
740
741 %post smp -f postsmp.sh
742
743 %post bigsmp -f postbigsmp.sh
744
745 %post bigmem -f postbigmem.sh
746
747 %post jensen -f postjensen.sh
748
749 %ifnarch ia64
750 %post BOOT -f postBOOT.sh
751
752 %endif
753
754 %post -n lustre-lite-utils
755 if [ ! -e /dev/obd ]; then
756    mknod /dev/obd c 10 241
757 fi
758 if [ ! -e /dev/portals ]; then
759    mknod /dev/portals c 10 240
760 fi
761 if [ -f /etc/init.d/lustre ] ; then
762         /sbin/chkconfig --add lustre
763         /sbin/chkconfig --add lustrefs
764 fi
765
766 # Allow clean removal of modules directory
767 %preun -f preun.sh
768
769 %preun smp -f preunsmp.sh
770
771 %preun bigsmp -f preunbigsmp.sh
772
773 %preun bigmem -f preunbigmem.sh
774
775 %preun BOOT -f preunBOOT.sh
776
777 %preun jensen -f preunjensen.sh
778
779 # suse needs these i guess
780 %postun -f postun.sh
781
782 %postun smp -f postunsmp.sh
783
784 %postun bigsmp -f postunbigsmp.sh
785
786 %postun bigmem -f postunbigmem.sh
787
788 %postun BOOT -f postunBOOT.sh
789
790 %postun jensen -f postunjensen.sh
791
792 # We need this here because we don't prereq kudzu; it could be
793 # installed after the kernel
794 %triggerin -- kudzu
795 [ -x /usr/sbin/module_upgrade ] && /usr/sbin/module_upgrade || :
796
797 %triggerin smp -- kudzu
798 [ -x /usr/sbin/module_upgrade ] && /usr/sbin/module_upgrade || :
799
800 %triggerin bigsmp -- kudzu
801 [ -x /usr/sbin/module_upgrade ] && /usr/sbin/module_upgrade || :
802
803 %triggerin bigmem -- kudzu
804 [ -x /usr/sbin/module_upgrade ] && /usr/sbin/module_upgrade || :
805
806 %triggerin BOOT -- kudzu
807 [ -x /usr/sbin/module_upgrade ] && /usr/sbin/module_upgrade || :
808
809 %triggerin jensen -- kudzu
810 [ -x /usr/sbin/module_upgrade ] && /usr/sbin/module_upgrade || :
811
812
813 # Old kernel-headers packages owned include symlinks; new
814 # ones just make them so that we can have multiple kernel-headers
815 # packages installed.
816
817 %triggerpostun source -- kernel-headers < 2.2.16
818 cd /usr/src
819 rm -f %{kslnk}
820 ln -snf linux-%{KVERREL} %{kslnk}
821 exit 0
822
823 %post source
824 cd /usr/src
825 rm -f %{kslnk}
826 ln -snf linux-%{KVERREL} %{kslnk}
827
828 %postun source
829 if [ -L /usr/src/%{kslnk} ]; then 
830     if [ -L /usr/src/%{kslnk} -a `ls -ld /usr/src/%{kslnk} 2>/dev/null| awk '{ print $11 }'` = "linux-%{KVERREL}" ]; then
831         [ $1 = 0 ] && rm -f /usr/src/%{kslnk}
832     fi
833 fi
834 exit 0
835
836 %preun -n lustre-lite-utils
837 if [ $1 = 0 -a -f /etc/init.d/lustre ]; then
838         /sbin/chkconfig --del lustre
839         /sbin/chkconfig --del lustrefs
840 fi
841
842 ###
843 ### file lists
844 ###
845
846 %if %{buildup}
847 %files
848 %defattr(-, root, root)
849 /boot/%{kernel_glob}
850 %ifarch ia64
851 /boot/efi/redhat/%{kernel_glob}
852 %endif
853 /boot/System.map-%{KVERREL}
854 /boot/config-%{KVERREL}
855 %dir /lib/modules
856 %dir /dev/shm
857 /lib/modules/%{KVERREL}
858 %if %{linux26}
859 /boot/Kerntypes-%{KVERREL}
860 /boot/symvers-%{KVERREL}-%{_target_cpu}.gz
861 %endif # linux26
862 %endif
863
864 %if %{buildsmp}
865 %files smp
866 %defattr(-, root, root)
867 /boot/%{kernel_glob}smp
868 %ifarch ia64
869 /boot/efi/redhat/%{kernel_glob}smp
870 %endif
871 /boot/System.map-%{KVERREL}smp
872 /boot/config-%{KVERREL}smp
873 %dir /lib/modules
874 %dir /dev/shm
875 /lib/modules/%{KVERREL}smp
876 %if %{linux26}
877 /boot/Kerntypes-%{KVERREL}smp
878 /boot/symvers-%{KVERREL}-%{_target_cpu}smp.gz
879 %endif # linux26
880 %endif
881
882 %if %{buildbigsmp}
883 %files bigsmp
884 %defattr(-, root, root)
885 /boot/%{kernel_glob}bigsmp
886 %ifarch ia64
887 /boot/efi/redhat/%{kernel_glob}bigsmp
888 %endif
889 /boot/System.map-%{KVERREL}bigsmp
890 /boot/config-%{KVERREL}bigsmp
891 %dir /lib/modules
892 %dir /dev/shm
893 /lib/modules/%{KVERREL}bigsmp
894 %if %{linux26}
895 /boot/Kerntypes-%{KVERREL}bigsmp
896 /boot/symvers-%{KVERREL}-%{_target_cpu}bigsmp.gz
897 %endif # linux26
898 %endif
899
900 %if %{buildbigmem}
901 %files bigmem
902 %defattr(-, root, root)
903 /boot/%{kernel_glob}bigmem
904 %ifarch ia64
905 /boot/efi/redhat/%{kernel_glob}bigmem
906 %endif
907 /boot/System.map-%{KVERREL}bigmem
908 /boot/config-%{KVERREL}bigmem
909 %dir /lib/modules
910 %dir /dev/shm
911 /lib/modules/%{KVERREL}bigmem
912 %if %{linux26}
913 /boot/Kerntypes-%{KVERREL}bigmem
914 /boot/symvers-%{KVERREL}-%{_target_cpu}bigmem.gz
915 %endif # linux26
916 %endif
917
918 %if %{buildBOOT}
919 %files BOOT
920 %defattr(-, root, root)
921 /boot/%{kernel_glob}BOOT
922 %ifarch ia64
923 /boot/efi/redhat/%{kernel_glob}BOOT
924 %endif
925 /boot/System.map-%{KVERREL}BOOT
926 /boot/config-%{KVERREL}BOOT
927 %dir /lib/modules
928 %dir /dev/shm
929 /lib/modules/%{KVERREL}BOOT
930 %if %{linux26}
931 /boot/Kerntypes-%{KVERREL}BOOT
932 /boot/symvers-%{KVERREL}-%{_target_cpu}BOOT.gz
933 %endif # linux26
934 %endif
935
936 %if %{buildbase}
937
938 %if 1
939 %files source
940 %defattr(-,root,root)
941 %dir /usr/src/linux-%{KVERREL}
942 /usr/src/linux-%{KVERREL}/*
943 %if %{linux26}
944 %dir /usr/src/linux-%{KVERREL}-obj
945 /usr/src/linux-%{KVERREL}-obj/*
946 %endif # linux26
947 %endif
948
949 %files doc
950 %defattr(-,root,root)
951 %doc lustre/linux/Documentation/*
952
953 %files -n lustre-lite-utils
954 %defattr(-, root, root)
955 %doc lustre/COPYING lustre/BUGS lustre/ChangeLog lustre/README lustre/doc/lustre.pdf
956 /sbin/*
957 /usr/sbin/*
958 /usr/bin/*
959 /usr/lib/lustre/python
960 @ENABLE_INIT_SCRIPTS@/etc/init.d/lustre
961 @ENABLE_INIT_SCRIPTS@/etc/init.d/lustrefs
962 /usr/include/lustre/*
963 /usr/include/portals/*
964 /usr/include/linux/*
965 /usr/lib/lib*.a
966 /usr/share/man/man?/*
967
968 #%files -n lustre-doc
969 #%defattr(-, root, root)
970 #/usr/share/doc/lustre/COPYING
971 #/usr/share/doc/lustre/lustre.pdf
972 #/usr/share/doc/lustre/COPYING
973
974 /usr/share/lustre/examples
975
976 %files -n lustre-ldap
977 %defattr(-, root, root)
978 /etc/openldap/slapd-lustre.conf
979 /etc/openldap/schema/lustre.schema
980 /usr/lib/lustre/lustre2ldif.xsl
981 /usr/lib/lustre/top.ldif
982
983 %endif # %{buildbase}