Whamcloud - gitweb
5b3fa42b1761b1a09f552797da307da43db51ec0
[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                 flavtgt=""
549         else
550                 flavext="-$flavor"
551                 flavtgt="$flavor"
552         fi
553         perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = -%{kextraver}${flavtgt}/" $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/Makefile
554         c="$RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}"
555         o="${c}-obj/%{_target_cpu}/$flavor"
556         mkdir -p $o
557         cp ../lustre/kernel_patches/kernel_configs/kernel-%{kversion}-@LUSTRE_TARGET@-%{_target_cpu}%{dashtargetboard}${flavext}.config \
558                 $o/.config
559         for oc in oldconfig_nonint silentoldconfig oldconfig ; do
560             if grep -q "$oc" Makefile ; then
561                 OLDCONFIG="$oc"
562                 break
563             fi
564         done
565         MAKE="make -s O=$o -C ${c}"
566         $MAKE $OLDCONFIG
567         $MAKE prepare-all
568         $MAKE clean
569         rm -rf $o/.config.old $o/include/config
570         # Replace the Makefile in the object directory with a version
571         # that has relative path names.
572         read VERSION PATCHLEVEL SUBLEVEL <<-EOF
573 $(set -- 2.6.5 ; echo ${*//./ })
574 EOF
575         source scripts/mkmakefile \
576             ../../../linux-%{KVERREL} \
577             ../linux-%{KVERREL}-obj/%{_target_cpu}/$flavor \
578             $VERSION \
579             $PATCHLEVEL \
580             > $o/Makefile
581         zcat "$RPM_BUILD_ROOT/boot/symvers-%{KVERREL}-%{_target_cpu}${flavor}.gz" \
582             > $o/Module.symvers
583 }
584
585 ##
586 ## do -source package cleanup/install
587 ##
588 %if %{buildbase}
589     pushd linux >/dev/null
590     mkdir -p $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}
591     rm -f drivers/net/hamradio/soundmodem/gentbl scripts/mkdep
592     tar cf - . | tar xf - -C $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}
593     ln -sf linux-%{KVERREL} $RPM_BUILD_ROOT/usr/src/linux
594     # install -m 644 %{SOURCE10}  $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}
595
596     #clean up the destination
597     make -s mrproper -C $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}
598     rm -rf $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/configs
599     mkdir -p $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/configs
600     cp ../lustre/kernel_patches/kernel_configs/kernel-%{kversion}-@LUSTRE_TARGET@*.config $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/configs
601     %if %{linux26}
602         # this only works because CFS only builds one kernel per target/arch per kernel-source rpm
603         objdir=$RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}-obj
604         mkdir -p $objdir
605         %if %{buildbigmem}
606         BuildObj bigmem
607         %endif
608         %if %{buildBOOT}
609         BuildObj BOOT
610         %endif
611         %if %{buildjensen}
612         BuildObj jensen
613         %endif
614         %if %{buildsmp}
615         BuildObj smp
616         %endif
617         %if %{buildbigsmp}
618         BuildObj bigsmp
619         %endif
620         %if %{buildup}
621         BuildObj up
622         %endif
623         perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = -%{kextraver}custom/" $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/Makefile
624         # Remove $RPM_BUILD_ROOT prefix from symlinks.
625         for link in $(find $objdir -type l); do
626             target=$(readlink $link)
627             rm -f $link
628             ln -s ${target/$RPM_BUILD_ROOT/} $link
629         done
630     %else # 2.4 rh-style
631         perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = -%{kextraver}custom/" $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/Makefile
632         cp ../lustre/kernel_patches/kernel_configs/kernel-%{kversion}-@LUSTRE_TARGET@-%{_target_cpu}%{dashtargetboard}.config $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/.config
633         for oc in oldconfig_nonint silentoldconfig oldconfig ; do
634             if grep -q "$oc" $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/Makefile ; then
635                 OLDCONFIG="$oc"
636                 break
637             fi
638         done
639         make -s $OLDCONFIG -C $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}
640         %if %{linux26}
641            make -s include/asm -C $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}
642         %else
643            make -s symlinks -C $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}
644         %endif
645         make -s include/linux/version.h -C $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}
646
647         #this generates modversions info which we want to include and we may as
648         #well include the depends stuff as well, after we fix the paths
649         make -s depend -C $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}
650         find $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL} -name ".*depend" | \
651         while read file ; do
652             mv $file $file.old
653             sed -e "s|[^ ]*\(/usr/src/linux\)|\1|g" < $file.old > $file
654             rm -f $file.old
655         done
656
657         # Try to put some smarter autoconf.h and version.h files in place
658         pushd $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/include/linux ; {
659         rm -rf modules modversions.h autoconf.h version.h
660         cat > modversions.h <<EOF
661 #ifndef _LINUX_MODVERSIONS_H
662 #define _LINUX_MODVERSIONS_H
663 #include <linux/rhconfig.h>
664 #include <linux/modsetver.h>
665 EOF
666         echo '#include <linux/rhconfig.h>' > autoconf.h
667         list=`find ../../savedheaders/* -name '*.ver' -exec basename '{}' \; | sort`
668         mkdir modules
669         for l in $list; do
670             sed 's,$,modules/'$l, ../../savedheaders/list | awk -f %{SOURCE17} > modules/$l
671             touch -r modules/$l modules/`basename $l .ver`.stamp
672             echo '#include <linux/modules/'$l'>' >> modversions.h
673         done
674         echo '#endif' >> modversions.h
675         sed 's,$,autoconf.h,' ../../savedheaders/list | awk -f %{SOURCE16} >> autoconf.h
676         install -m 644 %{SOURCE15} rhconfig.h
677         echo "#include <linux/rhconfig.h>" >> version.h
678         keyword=if
679         for i in smp BOOT BOOTsmp bigmem bigsmp up ; do
680             # When we build in an i386, we don't have an bigmem header directory
681             # in savedheaders/i386/bigmem.  We also don't have a BOOT directory
682             # anywhere except in savedheaders/i386.  So, we need to use this method
683             # of determining if a kernel version string needs to be included in the
684             # version.h file
685             verh=`echo ../../savedheaders/*/$i/version.h | awk ' { print $1 } '`
686             if [ -n "$verh" -a -f "$verh" ]; then
687                 if [ "$i" = up ]; then
688                     if [ "$keyword" = if ]; then
689                         echo "#if 0" >> version.h
690                     fi
691                     echo "#else" >> version.h
692                 else
693                     echo "#$keyword defined(__module__$i)" >> version.h
694                     keyword=elif
695                 fi
696                 grep UTS_RELEASE $verh >> version.h
697             fi
698             done
699         echo "#endif" >> version.h
700         if [ -f ../../savedheaders/%{_target_cpu}/up/version.h ] ; then
701             # keep to a standard normally
702             HEADER_FILE=../../savedheaders/%{_target_cpu}/up/version.h
703         else
704             # test build not including uniprocessor, must get info from somewhere
705             HEADER_FILE=$(ls ../../savedheaders/*/*/version.h | head -n 1)
706         fi
707         grep -v UTS_RELEASE $HEADER_FILE >> version.h
708         rm -rf ../../savedheaders
709         } ; popd
710         touch $RPM_BUILD_ROOT/boot/kernel.h-%{kversion}
711         
712         # rm -f $RPM_BUILD_ROOT/usr/include/linux
713         
714         rm -rf $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/savedheaders
715         
716         %if %{rhbuild}
717             # fix up the tmp_include_depends file wrt the buildroot
718             perl -p -i -e "s|$RPM_BUILD_ROOT||g" $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/tmp_include_depends
719         %endif
720     %endif # linux26
721     popd >/dev/null
722 %endif # buildbase
723
724 popd >/dev/null
725
726 %clean
727 rm -rf $RPM_BUILD_ROOT
728
729 ###
730 ### scripts
731 ###
732
733 # do this for upgrades...in case the old modules get removed we have
734 # loopback in the kernel so that mkinitrd will work.
735 %pre -f pre.sh
736
737 %pre smp -f presmp.sh
738
739 %pre bigsmp -f prebigsmp.sh
740
741 %pre bigmem -f prebigmem.sh
742
743 %post -f post.sh
744
745 %post smp -f postsmp.sh
746
747 %post bigsmp -f postbigsmp.sh
748
749 %post bigmem -f postbigmem.sh
750
751 %post jensen -f postjensen.sh
752
753 %ifnarch ia64
754 %post BOOT -f postBOOT.sh
755
756 %endif
757
758 %post -n lustre-lite-utils
759 if [ ! -e /dev/obd ]; then
760    mknod /dev/obd c 10 241
761 fi
762 if [ ! -e /dev/portals ]; then
763    mknod /dev/portals c 10 240
764 fi
765 if [ -f /etc/init.d/lustre ] ; then
766         /sbin/chkconfig --add lustre
767         /sbin/chkconfig --add lustrefs
768 fi
769
770 # Allow clean removal of modules directory
771 %preun -f preun.sh
772
773 %preun smp -f preunsmp.sh
774
775 %preun bigsmp -f preunbigsmp.sh
776
777 %preun bigmem -f preunbigmem.sh
778
779 %preun BOOT -f preunBOOT.sh
780
781 %preun jensen -f preunjensen.sh
782
783 # suse needs these i guess
784 %postun -f postun.sh
785
786 %postun smp -f postunsmp.sh
787
788 %postun bigsmp -f postunbigsmp.sh
789
790 %postun bigmem -f postunbigmem.sh
791
792 %postun BOOT -f postunBOOT.sh
793
794 %postun jensen -f postunjensen.sh
795
796 # We need this here because we don't prereq kudzu; it could be
797 # installed after the kernel
798 %triggerin -- kudzu
799 [ -x /usr/sbin/module_upgrade ] && /usr/sbin/module_upgrade || :
800
801 %triggerin smp -- kudzu
802 [ -x /usr/sbin/module_upgrade ] && /usr/sbin/module_upgrade || :
803
804 %triggerin bigsmp -- kudzu
805 [ -x /usr/sbin/module_upgrade ] && /usr/sbin/module_upgrade || :
806
807 %triggerin bigmem -- kudzu
808 [ -x /usr/sbin/module_upgrade ] && /usr/sbin/module_upgrade || :
809
810 %triggerin BOOT -- kudzu
811 [ -x /usr/sbin/module_upgrade ] && /usr/sbin/module_upgrade || :
812
813 %triggerin jensen -- kudzu
814 [ -x /usr/sbin/module_upgrade ] && /usr/sbin/module_upgrade || :
815
816
817 # Old kernel-headers packages owned include symlinks; new
818 # ones just make them so that we can have multiple kernel-headers
819 # packages installed.
820
821 %triggerpostun source -- kernel-headers < 2.2.16
822 cd /usr/src
823 rm -f %{kslnk}
824 ln -snf linux-%{KVERREL} %{kslnk}
825 exit 0
826
827 %post source
828 cd /usr/src
829 rm -f %{kslnk}
830 ln -snf linux-%{KVERREL} %{kslnk}
831
832 %postun source
833 if [ -L /usr/src/%{kslnk} ]; then 
834     if [ -L /usr/src/%{kslnk} -a `ls -ld /usr/src/%{kslnk} 2>/dev/null| awk '{ print $11 }'` = "linux-%{KVERREL}" ]; then
835         [ $1 = 0 ] && rm -f /usr/src/%{kslnk}
836     fi
837 fi
838 exit 0
839
840 %preun -n lustre-lite-utils
841 if [ $1 = 0 -a -f /etc/init.d/lustre ]; then
842         /sbin/chkconfig --del lustre
843         /sbin/chkconfig --del lustrefs
844 fi
845
846 ###
847 ### file lists
848 ###
849
850 %if %{buildup}
851 %files
852 %defattr(-, root, root)
853 /boot/%{kernel_glob}
854 %ifarch ia64
855 /boot/efi/redhat/%{kernel_glob}
856 %endif
857 /boot/System.map-%{KVERREL}
858 /boot/config-%{KVERREL}
859 %dir /lib/modules
860 %dir /dev/shm
861 /lib/modules/%{KVERREL}
862 %if %{linux26}
863 /boot/Kerntypes-%{KVERREL}
864 /boot/symvers-%{KVERREL}-%{_target_cpu}.gz
865 %endif # linux26
866 %endif
867
868 %if %{buildsmp}
869 %files smp
870 %defattr(-, root, root)
871 /boot/%{kernel_glob}smp
872 %ifarch ia64
873 /boot/efi/redhat/%{kernel_glob}smp
874 %endif
875 /boot/System.map-%{KVERREL}smp
876 /boot/config-%{KVERREL}smp
877 %dir /lib/modules
878 %dir /dev/shm
879 /lib/modules/%{KVERREL}smp
880 %if %{linux26}
881 /boot/Kerntypes-%{KVERREL}smp
882 /boot/symvers-%{KVERREL}-%{_target_cpu}smp.gz
883 %endif # linux26
884 %endif
885
886 %if %{buildbigsmp}
887 %files bigsmp
888 %defattr(-, root, root)
889 /boot/%{kernel_glob}bigsmp
890 %ifarch ia64
891 /boot/efi/redhat/%{kernel_glob}bigsmp
892 %endif
893 /boot/System.map-%{KVERREL}bigsmp
894 /boot/config-%{KVERREL}bigsmp
895 %dir /lib/modules
896 %dir /dev/shm
897 /lib/modules/%{KVERREL}bigsmp
898 %if %{linux26}
899 /boot/Kerntypes-%{KVERREL}bigsmp
900 /boot/symvers-%{KVERREL}-%{_target_cpu}bigsmp.gz
901 %endif # linux26
902 %endif
903
904 %if %{buildbigmem}
905 %files bigmem
906 %defattr(-, root, root)
907 /boot/%{kernel_glob}bigmem
908 %ifarch ia64
909 /boot/efi/redhat/%{kernel_glob}bigmem
910 %endif
911 /boot/System.map-%{KVERREL}bigmem
912 /boot/config-%{KVERREL}bigmem
913 %dir /lib/modules
914 %dir /dev/shm
915 /lib/modules/%{KVERREL}bigmem
916 %if %{linux26}
917 /boot/Kerntypes-%{KVERREL}bigmem
918 /boot/symvers-%{KVERREL}-%{_target_cpu}bigmem.gz
919 %endif # linux26
920 %endif
921
922 %if %{buildBOOT}
923 %files BOOT
924 %defattr(-, root, root)
925 /boot/%{kernel_glob}BOOT
926 %ifarch ia64
927 /boot/efi/redhat/%{kernel_glob}BOOT
928 %endif
929 /boot/System.map-%{KVERREL}BOOT
930 /boot/config-%{KVERREL}BOOT
931 %dir /lib/modules
932 %dir /dev/shm
933 /lib/modules/%{KVERREL}BOOT
934 %if %{linux26}
935 /boot/Kerntypes-%{KVERREL}BOOT
936 /boot/symvers-%{KVERREL}-%{_target_cpu}BOOT.gz
937 %endif # linux26
938 %endif
939
940 %if %{buildbase}
941
942 %if 1
943 %files source
944 %defattr(-,root,root)
945 %dir /usr/src/linux-%{KVERREL}
946 /usr/src/linux-%{KVERREL}/*
947 %if %{linux26}
948 %dir /usr/src/linux-%{KVERREL}-obj
949 /usr/src/linux-%{KVERREL}-obj/*
950 %endif # linux26
951 %endif
952
953 %files doc
954 %defattr(-,root,root)
955 %doc lustre/linux/Documentation/*
956
957 %files -n lustre-lite-utils
958 %defattr(-, root, root)
959 %doc lustre/COPYING lustre/BUGS lustre/ChangeLog lustre/README lustre/doc/lustre.pdf
960 /sbin/*
961 /usr/sbin/*
962 /usr/bin/*
963 /usr/lib/lustre/python
964 @ENABLE_INIT_SCRIPTS@/etc/init.d/lustre
965 @ENABLE_INIT_SCRIPTS@/etc/init.d/lustrefs
966 /usr/include/lustre/*
967 /usr/include/portals/*
968 /usr/include/linux/*
969 /usr/lib/lib*.a
970 /usr/share/man/man?/*
971
972 #%files -n lustre-doc
973 #%defattr(-, root, root)
974 #/usr/share/doc/lustre/COPYING
975 #/usr/share/doc/lustre/lustre.pdf
976 #/usr/share/doc/lustre/COPYING
977
978 /usr/share/lustre/examples
979
980 %files -n lustre-ldap
981 %defattr(-, root, root)
982 /etc/openldap/slapd-lustre.conf
983 /etc/openldap/schema/lustre.schema
984 /usr/share/lustre/lustre2ldif.xsl
985 /usr/share/lustre/top.ldif
986
987 %endif # %{buildbase}