Whamcloud - gitweb
b=13679
[fs/lustre-release.git] / build / lustre-kernel-2.4.spec.in
index 3f1fc41..b296702 100644 (file)
@@ -10,6 +10,8 @@ Summary: The Linux kernel (the core of the Linux operating system)
 #
 %define kversion @KERNEL_VERSION@
 %define kextraver @KERNEL_EXTRA_VERSION@
+%define kextraverdelim @KERNEL_EXTRA_VERSION_DELIMITER@
+%define flavordelim "@KERNEL_TARGET_DELIMITER@"
 %define release @KERNEL_RELEASE@
 # /usr/src/%{kslnk} -> /usr/src/linux-%{KVERREL}
 %define kslnk linux-2.4
@@ -28,7 +30,7 @@ Summary: The Linux kernel (the core of the Linux operating system)
 %define __spec_install_post /usr/lib/rpm/brp-compress || :
 #
 # RPM foo magic
-%define _missing_doc_files_terminate_build    0
+%define _missing_doc_files_terminate_build 0
 %define _unpackaged_files_terminate_build 0
 %define debug_package %{nil}
 
@@ -51,6 +53,7 @@ Summary: The Linux kernel (the core of the Linux operating system)
 %define buildjensen 0
 %define buildsmp 0
 %define buildbigsmp 0
+%define buildpseries64 0
 %define buildup 0
 %define buildsrc 0
 
@@ -78,6 +81,10 @@ Summary: The Linux kernel (the core of the Linux operating system)
 %define buildbigsmp 1
 %endif
 
+%ifarch @PSERIES64_ARCHS@
+%define buildpseries64 1
+%endif
+
 %ifarch @UP_ARCHS@
 %define buildup 1
 %endif
@@ -88,6 +95,7 @@ Summary: The Linux kernel (the core of the Linux operating system)
 %define buildbigsmp 0
 %define buildBOOT 0
 %define buildbigmem 0
+%define buildpseries64 0
 %define buildjensen 0
 %endif
 
@@ -105,6 +113,7 @@ Second, per-architecture exclusions (ifarch)
 %{expand: %%define buildup_%{buildup} yadda}
 %{expand: %%define buildsmp_%{buildsmp} yadda}
 %{expand: %%define buildbigsmp_%{buildbigsmp} yadda}
+%{expand: %%define buildpseries64_%{buildpseries64} yadda}
 %{expand: %%define buildBOOT_%{buildBOOT} yadda}
 %{expand: %%define buildbigmem_%{buildbigmem} yadda}
 %{expand: %%define buildjensen_%{buildjensen} yadda}
@@ -135,11 +144,14 @@ Second, per-architecture exclusions (ifarch)
 %ifarch alpha
 %define kernel_glob vmlinu?-%{KVERREL}
 %endif
+%ifarch ppc ppc64
+%define kernel_glob vmlinu?-%{KVERREL}
+%endif
 
-Name: kernel
+Name: kernel-lustre
 Version: %{kversion}
 Release: %{release}%{?targetboard:%{targetboard}}%{?debuglevel_1:.dbg}
-%define KVERREL %{PACKAGE_VERSION}-%{kextraver}%{?targetboard:%{targetboard}}%{?debuglevel_1:.dbg}
+%define KVERREL %{PACKAGE_VERSION}%{kextraverdelim}%{kextraver}%{?targetboard:%{targetboard}}%{?debuglevel_1:.dbg}
 License: GPL
 Group: System Environment/Kernel
 ExclusiveArch: %{all_x86} x86_64 ia64 ppc
@@ -159,9 +171,9 @@ BuildPreReq: patch >= 2.5.4, bash >= 2.03, sh-utils, gnupg, tar
 BuildPreReq: bzip2, findutils, dev, gzip, m4
 %endif
 
-Vendor: Cluster File Systems, Inc.
+Vendor: Sun Microsystems, Inc.
 URL: http://www.kernel.org/
-Buildroot: /var/tmp/%{name}-%{PACKAGE_VERSION}-root
+Buildroot: %{_tmppath}/%{name}-%{version}-root
 
 Source0: @LUSTRE_SOURCE@
 Source1: @KERNEL_SOURCE@
@@ -175,6 +187,11 @@ Source25: suse-functions.sh
 Source26: suse-post.sh
 Source27: suse-postun.sh
 Source28: suse-trigger-script.sh.in
+Source29: sles8-post.sh
+Source30: sles8-postun.sh
+Source31: sles8-pre.sh
+Source32: sles8-update_INITRD_MODULES.sh
+Source33: sles8-update_rcfile_setting.sh
 
 %package source
 Summary: The source code for the Linux kernel.
@@ -248,6 +265,25 @@ work fine on single-CPU boxes.
 
 Install the kernel-bigsmp package if your machine uses two or more CPUs.
 
+%package pseries64
+Summary: Standard Kernel for 64-bit Power based SMP and LPAR Machines
+Group: System/Kernel
+Provides: module-info, kernel = %{version}, k_smp4G
+%ifarch %{all_x86} ia64 x86_64
+Provides: kernel-drm = 4.1.0, kernel-drm = 4.2.0, kernel-drm = 4.3.0, kernel-drm = 4.2.99.3
+%endif
+%if %{rhbuild}
+Prereq: %{kernel_prereq}
+Conflicts: %{kernel_conflicts}
+%endif
+
+%description pseries64
+The standard kernel for Power3, Power4 and PowerPC 970 64-bit SMP
+machines.
+
+This kernel can be used for all 64bit RS/6000, pSeries and JS20
+machines.
+
 %package bigmem
 Summary: The Linux Kernel for machines with more than 4 Gigabyte of memory.
 Group: System Environment/Kernel
@@ -319,7 +355,7 @@ The Lustre Lite file system utilities.  This includes the tools needed
 to configure, mount, and administer a Lustre filesystem.  This package
 is necessary if you want to access a Lustre filesystem.
 
-# the lustre-doc files are just included as %doc wiht
+# the lustre-doc files are just included as %doc with
 # lustre-lite-utils
 
 #%package -n lustre-doc
@@ -330,13 +366,10 @@ is necessary if you want to access a Lustre filesystem.
 #The Lustre book, sample configurations, and other documentation for
 #Lustre.
 
-%package -n lustre-ldap
-Summary: LDAP schema files for Lustre
-Group: System Environment/Daemons
-
-%description -n lustre-ldap
-LDAP schema files for Lustre.  These are needed if you plan to store
-your Lustre configuration in LDAP, rather than on disk.
+# This is required in rpm >= 4.4.? and _should_ be set by the %setup macro
+# but isn't, at least for 4.4.2.  Yay RPM.
+%define buildsubdir lustre-kernel-%{version}
+%define _buildsubdir lustre-kernel-%{version}
 
 %prep
 %setup -n lustre-kernel-%{version} -q -c
@@ -355,18 +388,37 @@ sh -x ./build/lmake \
 popd >/dev/null
 
 # handle both SuSE and Red Hat's new-kernel-pkg bits
-for flavor in "" smp bigmem bigsmp BOOT jensen ; do
+for flavor in "" smp bigmem bigsmp pseries64 BOOT jensen ; do
+       [ -n "$flavor" ] && delim_flavor="%{flavordelim}$flavor"
        for when in pre preun post postun ; do
                script="${when}${flavor}.sh"
-               echo "if [ -f /etc/SuSE-release ] ; then" > ${script}
-               sed -e "s/@when@/$when/g" -e "s^%ver_str^%{KVERREL}${flavor}^g" %{SOURCE28} >> ${script}
-               cat %{SOURCE25} >> ${script}
+               cat %{SOURCE25} %{SOURCE32} %{SOURCE33} > ${script}
+               echo "if [ -d /etc/susehelp.d ] ; then" >> ${script}
+               sed -e "s/@when@/$when/g" -e "s^%ver_str^%{KVERREL}${delim_flavor}^g" %{SOURCE28} >> ${script}
                case $when in
+                       pre)
+                               echo "if [ ! -f /etc/modprobe.conf ] ; then" >> ${script}
+                               cat %{SOURCE31} >> ${script}
+                               echo "fi" >> ${script}
+                               ;;
                        post)
-                               sed -e "s^%ver_str^%{KVERREL}${flavor}^g" %{SOURCE26} >> ${script}
+                               # /sbin/update-modules.dep compares when the modules were built, rather
+                               # than installed, so force modules.dep to be recreated
+                               echo "rm -f /lib/modules/%{KVERREL}${delim_flavor}/modules.dep" >> ${script}
+                               echo "if [ -f /etc/modprobe.conf ] ; then" >> ${script}                 
+                               sed -e "s^%ver_str^%{KVERREL}${delim_flavor}^g" -e "s^%flavor^${flavor}^" %{SOURCE26} >> ${script}
+
+                               echo "else" >> ${script}
+                               sed -e "s^%ver_str^%{KVERREL}${delim_flavor}^g" -e "s^%%{cfg_name}^${delim_flavor}^g" %{SOURCE29} >> ${script}
+                               echo "fi" >> ${script}
                                ;;
                        postun)
-                               sed -e "s^%ver_str^%{KVERREL}${flavor}^g" %{SOURCE27} >> ${script}
+                               echo "if [ -f /etc/modprobe.conf ] ; then" >> ${script}                 
+                               sed -e "s^%ver_str^%{KVERREL}${delim_flavor}^g" %{SOURCE27} >> ${script}
+
+                               echo "else" >> ${script}                        
+                               sed -e "s^%ver_str^%{KVERREL}${delim_flavor}^g" %{SOURCE30} >> ${script}
+                               echo "fi" >> ${script}
                                ;;
                esac
                echo "exit 0; fi" >> ${script}
@@ -386,7 +438,11 @@ EOF
 [ -x /usr/sbin/module_upgrade ] && /usr/sbin/module_upgrade
 [ -x /sbin/mkkerneldoth ] && /sbin/mkkerneldoth
 if [ -x /sbin/new-kernel-pkg ] ; then
-        /sbin/new-kernel-pkg --mkinitrd --depmod --install %{KVERREL}${flavor}
+       if /sbin/new-kernel-pkg 2>&1 | grep package >/dev/null ; then
+               PACKAGE_ARG="--package kernel-${flavor}"
+       fi
+        /sbin/new-kernel-pkg $PACKAGE_ARG --mkinitrd --depmod \
+               --install %{KVERREL}${delim_flavor}
 fi
 EOF
                                ;;
@@ -401,16 +457,46 @@ EOF
                        preun)
                                cat >> ${script} <<EOF
 /sbin/modprobe loop 2> /dev/null > /dev/null  || :
-rm -f /lib/modules/%{KVERREL}${flavor}/modules.*
+rm -f /lib/modules/%{KVERREL}${delim_flavor}/modules.*
 if [ -x /sbin/new-kernel-pkg ] ; then
- /sbin/new-kernel-pkg --rminitrd --rmmoddep --remove %{KVERREL}${flavor}
+ /sbin/new-kernel-pkg --rminitrd --rmmoddep --remove %{KVERREL}${delim_flavor}
 fi
 EOF
                                ;;
                esac
        done
+
+       cat > "kernel$flavor.files" <<EOF
+%%defattr(-, root, root)
+/boot/%{kernel_glob}${delim_flavor}
+/boot/System.map-%{KVERREL}${delim_flavor}
+/boot/config-%{KVERREL}${delim_flavor}
+%%dir /lib/modules
+%%dir /dev/shm
+/lib/modules/%{KVERREL}${delim_flavor}
+%ifarch ia64
+/boot/efi/redhat/%{kernel_glob}${delim_flavor}
+%endif
+%if %{linux26}
+%if %{susebuild}
+/boot/Kerntypes-%{KVERREL}${delim_flavor}
+%endif
+/boot/symvers-%{KVERREL}-%{_target_cpu}${delim_flavor}.gz
+%endif
+EOF
+
 done
 
+cat > kernel-source.files <<EOF
+%%defattr(-,root,root)
+%%dir /usr/src/linux-%{KVERREL}
+/usr/src/linux-%{KVERREL}/*
+%if %{linux26}
+%%dir /usr/src/linux-%{KVERREL}-obj
+/usr/src/linux-%{KVERREL}-obj/*
+%endif
+EOF
+
 %build
 # if RPM_BUILD_NCPUS unset, set it
 if [ -z "$RPM_BUILD_NCPUS" ] ; then
@@ -444,6 +530,7 @@ BuildKernel()
   sh -x ./build/lmake \
        --build-kernel --build-lustre \
        --install \
+       --save-headers \
        --target @LUSTRE_TARGET@ \
        --target-arch %{_target_cpu} \
        ${target_config} \
@@ -451,11 +538,7 @@ BuildKernel()
        --kerneldir $RPM_SOURCE_DIR \
        -j $RPM_BUILD_NCPUS \
        --destdir $RPM_BUILD_ROOT \
-       -- --enable-modules \
-       --disable-doc --disable-tests \
-       --disable-utils --disable-liblustre \
-       --sysconfdir=%{_sysconfdir} \
-       --mandir=%{_mandir} \
+       -- --enable-tests \
        @CONFIGURE_FLAGS@
 }
 
@@ -512,13 +595,16 @@ BuildKernel smp
 BuildKernel bigsmp
 %endif
 
+%if %{buildpseries64}
+BuildKernel pseries64
+%endif
+
 %if %{buildup}
 BuildKernel
 %endif
 
 %if %{buildbase}
-BuildLustre
-SaveHeaders
+# BuildLustre
 %endif
 
 popd >/dev/null
@@ -529,8 +615,6 @@ pushd lustre >/dev/null
 # specific
 for i in $RPM_BUILD_ROOT/lib/modules/* ; do
   rm -f $i/modules.*
-  rm -f $i/build
-  ln -sf ../../../usr/src/linux-%{KVERREL} $i/build
 %ifarch %{ntplarchs}
   # remove legacy pcmcia symlink that's no longer useful
   rm -rf $i/pcmcia
@@ -547,15 +631,16 @@ BuildObj ()
                flavext=""
                flavtgt=""
        else
-               flavext="-$flavor"
+               flavext="%{flavordelim}$flavor"
                flavtgt="$flavor"
        fi
-        perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = -%{kextraver}${flavtgt}/" $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/Makefile
+        perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = %{kextraverdelim}%{kextraver}${flavext}/" $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/Makefile
        c="$RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}"
        o="${c}-obj/%{_target_cpu}/$flavor"
        mkdir -p $o
-       cp ../lustre/kernel_patches/kernel_configs/kernel-%{kversion}-@LUSTRE_TARGET@-%{_target_cpu}%{dashtargetboard}${flavext}.config \
-               $o/.config
+        # use the one we just built
+       #cp ../lustre/kernel_patches/kernel_configs/kernel-%{kversion}-@LUSTRE_TARGET@-%{_target_cpu}%{dashtargetboard}${flavext}.config \
+       cp .config $o/.config
         for oc in oldconfig_nonint silentoldconfig oldconfig ; do
            if grep -q "$oc" Makefile ; then
                OLDCONFIG="$oc"
@@ -563,29 +648,36 @@ BuildObj ()
            fi
         done
        MAKE="make -s O=$o -C ${c}"
-       $MAKE $OLDCONFIG
-       $MAKE prepare-all
+       if [ "$CC" ] ; then
+           MAKE_CC="CC=$CC"
+       fi
+       $MAKE "$MAKE_CC" $OLDCONFIG
        $MAKE clean
        rm -rf $o/.config.old $o/include/config
         # Replace the Makefile in the object directory with a version
-        # that has relative path names.
+        # that has relative path names.  This is done by fixing the Makefile
+        # after the fact to work with 2.6.17 and newer mkmakefile.
         read VERSION PATCHLEVEL SUBLEVEL <<-EOF
 $(set -- 2.6.5 ; echo ${*//./ })
 EOF
-        source scripts/mkmakefile \
-           ../../../linux-%{KVERREL} \
-            ../linux-%{KVERREL}-obj/%{_target_cpu}/$flavor \
-           $VERSION \
-           $PATCHLEVEL \
-           > $o/Makefile
-       zcat "$RPM_BUILD_ROOT/boot/symvers-%{KVERREL}-%{_target_cpu}${flavor}.gz" \
+       rm -f $o/Makefile
+       ARCH=%{_target_cpu} /bin/sh scripts/mkmakefile ../../../linux-%{KVERREL} $o \
+               $VERSION $PATCHLEVEL > $o/Makefile.in
+       if [ -f $o/Makefile ] ; then
+               # will exist only for 2.6.17 and newer because mkmakefile
+               # now writes the makefile to $o instead of stdout
+               mv -f $o/Makefile $o/Makefile.in
+       fi
+       sed -e "s^$o^../linux-%{KVERREL}-obj/%{_target_cpu}/$flavor^" \
+               $o/Makefile.in > $o/Makefile
+       zcat "$RPM_BUILD_ROOT/boot/symvers-%{KVERREL}-%{_target_cpu}${flavext}.gz" \
            > $o/Module.symvers
 }
 
 ##
 ## do -source package cleanup/install
 ##
-%if %{buildbase}
+if [ "%{buildbase}" -ne 0 ] ; then
     pushd linux >/dev/null
     mkdir -p $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}
     rm -f drivers/net/hamradio/soundmodem/gentbl scripts/mkdep
@@ -598,47 +690,56 @@ EOF
     rm -rf $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/configs
     mkdir -p $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/configs
     cp ../lustre/kernel_patches/kernel_configs/kernel-%{kversion}-@LUSTRE_TARGET@*.config $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/configs
-    %if %{linux26}
-        # this only works because CFS only builds one kernel per target/arch per kernel-source rpm
+    if [ "%{linux26}" -ne 0 ] ; then
+        # this only works because Sun only builds one kernel per target/arch per kernel-source rpm
        objdir=$RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}-obj
        mkdir -p $objdir
-        %if %{buildbigmem}
-       BuildObj bigmem
-        %endif
-        %if %{buildBOOT}
-       BuildObj BOOT
-        %endif
-        %if %{buildjensen}
-       BuildObj jensen
-        %endif
-        %if %{buildsmp}
-       BuildObj smp
-        %endif
-       %if %{buildbigsmp}
-       BuildObj bigsmp
-        %endif
-        %if %{buildup}
-       BuildObj up
-        %endif
-        perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = -%{kextraver}custom/" $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/Makefile
+        if [ "%{buildbigmem}" -ne 0 ] ; then
+           BuildObj bigmem
+        fi
+        if [ "%{buildBOOT}" -ne 0 ] ; then
+           BuildObj BOOT
+        fi
+        if [ "%{buildjensen}" -ne 0 ] ; then
+           BuildObj jensen
+        fi
+        if [ "%{buildsmp}" -ne 0 ] ; then
+           BuildObj smp
+        fi
+       if [ "%{buildbigsmp}" -ne 0 ] ; then
+           BuildObj bigsmp
+        fi
+       if [ "%{buildpseries64}" -ne 0 ] ; then
+           BuildObj pseries64
+        fi
+        if [ "%{buildup}" -ne 0 ] ; then
+           BuildObj up
+        fi
+        perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = %{kextraverdelim}%{kextraver}%{flavordelim}custom/" $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/Makefile
        # Remove $RPM_BUILD_ROOT prefix from symlinks.
        for link in $(find $objdir -type l); do
            target=$(readlink $link)
            rm -f $link
            ln -s ${target/$RPM_BUILD_ROOT/} $link
        done
-    %else # 2.4 rh-style
-        perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = -%{kextraver}custom/" $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/Makefile
-        cp ../lustre/kernel_patches/kernel_configs/kernel-%{kversion}-@LUSTRE_TARGET@-%{_target_cpu}%{dashtargetboard}.config $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/.config
+    else # 2.4 rh-style
+        perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = %{kextraverdelim}%{kextraver}%{flavordelim}custom/" $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/Makefile
+        # get the one from the build we just completed as it might have picked
+        # up new options
+        #cp ../lustre/kernel_patches/kernel_configs/kernel-%{kversion}-@LUSTRE_TARGET@-%{_target_cpu}%{dashtargetboard}.config $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/.config
+        cp .config $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/.config
         for oc in oldconfig_nonint silentoldconfig oldconfig ; do
            if grep -q "$oc" $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/Makefile ; then
                OLDCONFIG="$oc"
                break
            fi
         done
-        make -s $OLDCONFIG -C $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}
-        make -s symlinks -C $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}
-        make -s include/linux/version.h -C $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}
+       if [ "$CC" ] ; then
+           MAKE_CC="CC=$CC"
+       fi
+        make "$MAKE_CC" -s $OLDCONFIG -C $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}
+        make "$MAKE_CC" -s symlinks -C $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}
+        make "$MAKE_CC" -s include/linux/version.h -C $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}
 
         #this generates modversions info which we want to include and we may as
         #well include the depends stuff as well, after we fix the paths
@@ -672,7 +773,7 @@ EOF
         install -m 644 %{SOURCE15} rhconfig.h
         echo "#include <linux/rhconfig.h>" >> version.h
         keyword=if
-        for i in smp BOOT BOOTsmp bigmem bigsmp up ; do
+        for i in smp BOOT BOOTsmp bigmem bigsmp pseries64 up ; do
             # When we build in an i386, we don't have an bigmem header directory
             # in savedheaders/i386/bigmem.  We also don't have a BOOT directory
             # anywhere except in savedheaders/i386.  So, we need to use this method
@@ -709,13 +810,13 @@ EOF
         
         rm -rf $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/savedheaders
         
-        %if %{rhbuild}
+        if [ "%{rhbuild}" -ne 0 ] ; then
             # fix up the tmp_include_depends file wrt the buildroot
             perl -p -i -e "s|$RPM_BUILD_ROOT||g" $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/tmp_include_depends
-        %endif
-    %endif # linux26
+        fi
+    fi # linux26
     popd >/dev/null
-%endif # buildbase
+fi # buildbase
 
 popd >/dev/null
 
@@ -734,10 +835,14 @@ rm -rf $RPM_BUILD_ROOT
 
 %pre bigsmp -f prebigsmp.sh
 
+%pre pseries64 -f prepseries64.sh
+
 %pre bigmem -f prebigmem.sh
 
 %post -f post.sh
 
+%post pseries64 -f postpseries64.sh
+
 %post smp -f postsmp.sh
 
 %post bigsmp -f postbigsmp.sh
@@ -752,12 +857,6 @@ rm -rf $RPM_BUILD_ROOT
 %endif
 
 %post -n lustre-lite-utils
-if [ ! -e /dev/obd ]; then
-   mknod /dev/obd c 10 241
-fi
-if [ ! -e /dev/portals ]; then
-   mknod /dev/portals c 10 240
-fi
 if [ -f /etc/init.d/lustre ] ; then
        /sbin/chkconfig --add lustre
        /sbin/chkconfig --add lustrefs
@@ -766,6 +865,8 @@ fi
 # Allow clean removal of modules directory
 %preun -f preun.sh
 
+%preun pseries64 -f preunpseries64.sh
+
 %preun smp -f preunsmp.sh
 
 %preun bigsmp -f preunbigsmp.sh
@@ -779,6 +880,8 @@ fi
 # suse needs these i guess
 %postun -f postun.sh
 
+%postun pseries64 -f postunpseries64.sh
+
 %postun smp -f postunsmp.sh
 
 %postun bigsmp -f postunbigsmp.sh
@@ -800,6 +903,9 @@ fi
 %triggerin bigsmp -- kudzu
 [ -x /usr/sbin/module_upgrade ] && /usr/sbin/module_upgrade || :
 
+%triggerin pseries64 -- kudzu
+[ -x /usr/sbin/module_upgrade ] && /usr/sbin/module_upgrade || :
+
 %triggerin bigmem -- kudzu
 [ -x /usr/sbin/module_upgrade ] && /usr/sbin/module_upgrade || :
 
@@ -844,140 +950,29 @@ fi
 ###
 
 %if %{buildup}
-%files
-%defattr(-, root, root)
-/boot/%{kernel_glob}
-%ifarch ia64
-/boot/efi/redhat/%{kernel_glob}
-%endif
-/boot/System.map-%{KVERREL}
-/boot/config-%{KVERREL}
-%dir /lib/modules
-%dir /dev/shm
-/lib/modules/%{KVERREL}
-%if %{linux26}
-/boot/Kerntypes-%{KVERREL}
-/boot/symvers-%{KVERREL}-%{_target_cpu}.gz
-%endif # linux26
+%files -f kernel.files
 %endif
 
 %if %{buildsmp}
-%files smp
-%defattr(-, root, root)
-/boot/%{kernel_glob}smp
-%ifarch ia64
-/boot/efi/redhat/%{kernel_glob}smp
-%endif
-/boot/System.map-%{KVERREL}smp
-/boot/config-%{KVERREL}smp
-%dir /lib/modules
-%dir /dev/shm
-/lib/modules/%{KVERREL}smp
-%if %{linux26}
-/boot/Kerntypes-%{KVERREL}smp
-/boot/symvers-%{KVERREL}-%{_target_cpu}smp.gz
-%endif # linux26
+%files smp -f kernelsmp.files
 %endif
 
 %if %{buildbigsmp}
-%files bigsmp
-%defattr(-, root, root)
-/boot/%{kernel_glob}bigsmp
-%ifarch ia64
-/boot/efi/redhat/%{kernel_glob}bigsmp
+%files bigsmp -f kernelbigsmp.files
 %endif
-/boot/System.map-%{KVERREL}bigsmp
-/boot/config-%{KVERREL}bigsmp
-%dir /lib/modules
-%dir /dev/shm
-/lib/modules/%{KVERREL}bigsmp
-%if %{linux26}
-/boot/Kerntypes-%{KVERREL}bigsmp
-/boot/symvers-%{KVERREL}-%{_target_cpu}bigsmp.gz
-%endif # linux26
+
+%if %{buildpseries64}
+%files pseries64 -f kernelpseries64.files
 %endif
 
 %if %{buildbigmem}
-%files bigmem
-%defattr(-, root, root)
-/boot/%{kernel_glob}bigmem
-%ifarch ia64
-/boot/efi/redhat/%{kernel_glob}bigmem
-%endif
-/boot/System.map-%{KVERREL}bigmem
-/boot/config-%{KVERREL}bigmem
-%dir /lib/modules
-%dir /dev/shm
-/lib/modules/%{KVERREL}bigmem
-%if %{linux26}
-/boot/Kerntypes-%{KVERREL}bigmem
-/boot/symvers-%{KVERREL}-%{_target_cpu}bigmem.gz
-%endif # linux26
+%files bigmem -f kernelbigmem.files
 %endif
 
 %if %{buildBOOT}
-%files BOOT
-%defattr(-, root, root)
-/boot/%{kernel_glob}BOOT
-%ifarch ia64
-/boot/efi/redhat/%{kernel_glob}BOOT
-%endif
-/boot/System.map-%{KVERREL}BOOT
-/boot/config-%{KVERREL}BOOT
-%dir /lib/modules
-%dir /dev/shm
-/lib/modules/%{KVERREL}BOOT
-%if %{linux26}
-/boot/Kerntypes-%{KVERREL}BOOT
-/boot/symvers-%{KVERREL}-%{_target_cpu}BOOT.gz
-%endif # linux26
+%files BOOT -f kernelBOOT.files
 %endif
 
 %if %{buildbase}
-
-%if 1
-%files source
-%defattr(-,root,root)
-%dir /usr/src/linux-%{KVERREL}
-/usr/src/linux-%{KVERREL}/*
-%if %{linux26}
-%dir /usr/src/linux-%{KVERREL}-obj
-/usr/src/linux-%{KVERREL}-obj/*
-%endif # linux26
-%endif
-
-%files doc
-%defattr(-,root,root)
-%doc lustre/linux/Documentation/*
-
-%files -n lustre-lite-utils
-%defattr(-, root, root)
-%doc lustre/COPYING lustre/BUGS lustre/ChangeLog lustre/README lustre/doc/lustre.pdf
-/sbin/*
-/usr/sbin/*
-/usr/bin/*
-/usr/lib/lustre/python
-@ENABLE_INIT_SCRIPTS@/etc/init.d/lustre
-@ENABLE_INIT_SCRIPTS@/etc/init.d/lustrefs
-/usr/include/lustre/*
-/usr/include/portals/*
-/usr/include/linux/*
-/usr/lib/lib*.a
-/usr/share/man/man?/*
-
-#%files -n lustre-doc
-#%defattr(-, root, root)
-#/usr/share/doc/lustre/COPYING
-#/usr/share/doc/lustre/lustre.pdf
-#/usr/share/doc/lustre/COPYING
-
-/usr/share/lustre/examples
-
-%files -n lustre-ldap
-%defattr(-, root, root)
-/etc/openldap/slapd-lustre.conf
-/etc/openldap/schema/lustre.schema
-/usr/share/lustre/lustre2ldif.xsl
-/usr/share/lustre/top.ldif
-
-%endif # %{buildbase}
+%files source -f kernel-source.files
+%endif