Whamcloud - gitweb
b=16312
[fs/lustre-release.git] / build / lustre-kernel-2.4.spec.in
index d7fe38d..292b527 100644 (file)
@@ -10,9 +10,12 @@ 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
+%define kprovides %(bash -c "echo %{kversion}%{kextraverdelim}%{kextraver} | sed -e 's/-[^0-9]*smp$//'")
 
 # groups of related archs
 %define all_x86 i386 i686 i586 athlon
@@ -23,6 +26,7 @@ Summary: The Linux kernel (the core of the Linux operating system)
 %define rhbuild @RHBUILD@
 %define susebuild @SUSEBUILD@
 %define linux26 @LINUX26@
+%define lmakeopts @LMAKEOPTS@
 
 # disable build root strip policy
 %define __spec_install_post /usr/lib/rpm/brp-compress || :
@@ -40,7 +44,7 @@ Summary: The Linux kernel (the core of the Linux operating system)
 %define dashtargetboard %{?targetboard:-%{targetboard}}
 %define withtargetboard 0
 %{?targetboard: %{expand: %%define withtargetboard 1}}
-       
+
 # Override generic defaults with per-arch defaults (which can
 # themselves be overridden with --with/--without).  These must
 # ONLY be "0", never "1"
@@ -146,16 +150,16 @@ Second, per-architecture exclusions (ifarch)
 %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
+ExclusiveArch: %{all_x86} x86_64 ia64 ppc ppc64
 ExclusiveOS: Linux
 Obsoletes: kernel-modules, kernel-sparc
-Provides: kernel = %{version}
+Provides: kernel = %{kprovides}
 BuildConflicts: rhbuildsys(DiscFree) < 500Mb
 %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
@@ -169,7 +173,7 @@ 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: %{_tmppath}/%{name}-%{version}-root
 
@@ -227,7 +231,7 @@ options that can be passed to Linux kernel modules at load time.
 %package smp
 Summary: The Linux kernel compiled for SMP machines.
 Group: System Environment/Kernel
-Provides: module-info, kernel = %{version}
+Provides: module-info, kernel = %{kprovides}
 %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
@@ -246,7 +250,7 @@ Install the kernel-smp package if your machine uses two or more CPUs.
 %package bigsmp
 Summary: The Linux kernel compiled for SMP machines.
 Group: System/Kernel
-Provides: module-info, kernel = %{version}, k_smp4G
+Provides: module-info, kernel = %{kprovides}, k_smp4G
 Obsoletes: 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
@@ -266,7 +270,7 @@ 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
+Provides: module-info, kernel = %{kprovides}, 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
@@ -285,7 +289,7 @@ machines.
 %package bigmem
 Summary: The Linux Kernel for machines with more than 4 Gigabyte of memory.
 Group: System Environment/Kernel
-Provides: module-info, kernel = %{version}
+Provides: module-info, kernel = %{kprovides}
 %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
@@ -302,7 +306,7 @@ enabled for Pentium III machines with 4 Gigabyte of memory or more.
 %package BOOT
 Summary: The version of the Linux kernel used on installation boot disks.
 Group: System Environment/Kernel
-Provides: kernel = %{version}
+Provides: kernel = %{kprovides}
 %if %{rhbuild}
 Prereq: %{BOOT_kernel_prereq}
 Conflicts: %{kernel_conflicts}
@@ -317,7 +321,7 @@ turned off because of the size constraints.
 %package BOOTsmp
 Summary: The Linux kernel used on installation boot disks for SMP machines.
 Group: System Environment/Kernel
-Provides: kernel = %{version}
+Provides: kernel = %{kprovides}
 %if %{rhbuild}
 Prereq: %{BOOT_kernel_prereq}
 Conflicts: %{kernel_conflicts}
@@ -333,7 +337,7 @@ machines that have trouble coming up to life with the uniprocessor kernel.
 %package jensen
 Summary: The Linux Kernel compiled for the Alpha Jensen platform.
 Group: System Environment/Kernel
-Provides: kernel = %{version}
+Provides: kernel = %{kprovides}
 %if %{rhbuild}
 Prereq: %{kernel_prereq}
 Conflicts: %{kernel_conflicts}
@@ -353,7 +357,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
@@ -364,13 +368,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
@@ -381,20 +382,21 @@ pushd lustre >/dev/null
 if [ -s "%{SOURCE2}" ] ; then
        tar zxf "%{SOURCE2}" -C lustre/kernel_patches
 fi
-sh -x ./build/lmake \
+bash -x ./build/lmake \
        --unpack-kernel \
        --target @LUSTRE_TARGET@ \
        --target-arch %{_target_cpu} \
-       --kerneldir $RPM_SOURCE_DIR
+       --kerneldir $RPM_SOURCE_DIR %{lmakeopts}
 popd >/dev/null
 
 # handle both SuSE and Red Hat's new-kernel-pkg bits
 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"
                cat %{SOURCE25} %{SOURCE32} %{SOURCE33} > ${script}
                echo "if [ -d /etc/susehelp.d ] ; then" >> ${script}
-               sed -e "s/@when@/$when/g" -e "s^%ver_str^%{KVERREL}${flavor}^g" %{SOURCE28} >> ${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}
@@ -404,20 +406,20 @@ for flavor in "" smp bigmem bigsmp pseries64 BOOT jensen ; do
                        post)
                                # /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}${flavor}/modules.dep" >> ${script}
+                               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}${flavor}^g" %{SOURCE26} >> ${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}${flavor}^g" -e "s^%%{cfg_name}^${flavor}^g" %{SOURCE29} >> ${script}
+                               sed -e "s^%ver_str^%{KVERREL}${delim_flavor}^g" -e "s^%%{cfg_name}^${delim_flavor}^g" %{SOURCE29} >> ${script}
                                echo "fi" >> ${script}
                                ;;
                        postun)
                                echo "if [ -f /etc/modprobe.conf ] ; then" >> ${script}                 
-                               sed -e "s^%ver_str^%{KVERREL}${flavor}^g" %{SOURCE27} >> ${script}
+                               sed -e "s^%ver_str^%{KVERREL}${delim_flavor}^g" %{SOURCE27} >> ${script}
 
                                echo "else" >> ${script}                        
-                               sed -e "s^%ver_str^%{KVERREL}${flavor}^g" %{SOURCE30} >> ${script}
+                               sed -e "s^%ver_str^%{KVERREL}${delim_flavor}^g" %{SOURCE30} >> ${script}
                                echo "fi" >> ${script}
                                ;;
                esac
@@ -442,7 +444,7 @@ if [ -x /sbin/new-kernel-pkg ] ; then
                PACKAGE_ARG="--package kernel-${flavor}"
        fi
         /sbin/new-kernel-pkg $PACKAGE_ARG --mkinitrd --depmod \
-               --install %{KVERREL}${flavor}
+               --install %{KVERREL}${delim_flavor}
 fi
 EOF
                                ;;
@@ -457,9 +459,9 @@ 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
                                ;;
@@ -468,20 +470,20 @@ EOF
 
        cat > "kernel$flavor.files" <<EOF
 %%defattr(-, root, root)
-/boot/%{kernel_glob}${flavor}
-/boot/System.map-%{KVERREL}${flavor}
-/boot/config-%{KVERREL}${flavor}
+/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}${flavor}
+/lib/modules/%{KVERREL}${delim_flavor}
 %ifarch ia64
-/boot/efi/redhat/%{kernel_glob}${flavor}
+/boot/efi/redhat/%{kernel_glob}${delim_flavor}
 %endif
 %if %{linux26}
 %if %{susebuild}
-/boot/Kerntypes-%{KVERREL}${flavor}
+/boot/Kerntypes-%{KVERREL}${delim_flavor}
 %endif
-/boot/symvers-%{KVERREL}-%{_target_cpu}${flavor}.gz
+/boot/symvers-%{KVERREL}-%{_target_cpu}${delim_flavor}.gz
 %endif
 EOF
 
@@ -515,19 +517,19 @@ mkdir -p $RPM_BUILD_ROOT
 DependKernel()
 {
   target_config=${1:+--target-config $1}
-  sh -x ./build/lmake \
+  bash -x ./build/lmake \
        --depend-kernel \
        --target @LUSTRE_TARGET@ \
        --target-arch %{_target_cpu} \
        ${target_config} \
        --extraversion %{kextraver} \
-       -j $RPM_BUILD_NCPUS
+       -j $RPM_BUILD_NCPUS %{lmakeopts}
 }
 
 BuildKernel()
 {
   target_config=${1:+--target-config $1}
-  sh -x ./build/lmake \
+  bash -x ./build/lmake \
        --build-kernel --build-lustre \
        --install \
        --save-headers \
@@ -537,15 +539,15 @@ BuildKernel()
        --extraversion %{kextraver} \
        --kerneldir $RPM_SOURCE_DIR \
        -j $RPM_BUILD_NCPUS \
-       --destdir $RPM_BUILD_ROOT \
-       -- --disable-tests \
+       --destdir $RPM_BUILD_ROOT %{lmakeopts} \
+       -- --enable-tests \
        @CONFIGURE_FLAGS@
 }
 
 BuildLustre()
 {
   target_config=${1:+--target-config $1}
-  sh -x ./build/lmake \
+  bash -x ./build/lmake \
        --build-lustre \
        --install-lustre \
        --target @LUSTRE_TARGET@ \
@@ -554,7 +556,7 @@ BuildLustre()
        --extraversion %{kextraver} \
        --kerneldir $RPM_SOURCE_DIR \
        -j $RPM_BUILD_NCPUS \
-       --destdir $RPM_BUILD_ROOT \
+       --destdir $RPM_BUILD_ROOT %{lmakeopts} \
        -- --enable-utils \
        --disable-doc --disable-tests \
        --disable-modules --disable-liblustre \
@@ -565,12 +567,12 @@ BuildLustre()
 
 SaveHeaders()
 {
-  sh -x ./build/lmake \
+  bash -x ./build/lmake \
        --save-headers \
        --target @LUSTRE_TARGET@ \
        --target-arch %{_target_cpu} \
        --extraversion %{kextraver} \
-       --destdir $RPM_BUILD_ROOT
+       --destdir $RPM_BUILD_ROOT %{lmakeopts}
 }
 
 pushd lustre >/dev/null
@@ -631,10 +633,10 @@ 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
@@ -645,28 +647,32 @@ BuildObj ()
            if grep -q "$oc" Makefile ; then
                OLDCONFIG="$oc"
                break
-           fi
+           fi
         done
        MAKE="make -s O=$o -C ${c}"
        if [ "$CC" ] ; then
            MAKE_CC="CC=$CC"
        fi
        $MAKE "$MAKE_CC" $OLDCONFIG
-       $MAKE "$MAKE_CC" prepare-all
        $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/bash 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
 }
 
@@ -687,7 +693,7 @@ if [ "%{buildbase}" -ne 0 ] ; then
     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}" -ne 0 ] ; then
-        # this only works because CFS only builds one kernel per target/arch per kernel-source rpm
+        # 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}" -ne 0 ] ; then
@@ -711,7 +717,7 @@ if [ "%{buildbase}" -ne 0 ] ; then
         if [ "%{buildup}" -ne 0 ] ; then
            BuildObj up
         fi
-        perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = -%{kextraver}custom/" $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/Makefile
+        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)
@@ -719,7 +725,7 @@ if [ "%{buildbase}" -ne 0 ] ; then
            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
+        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
@@ -728,7 +734,7 @@ if [ "%{buildbase}" -ne 0 ] ; then
            if grep -q "$oc" $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/Makefile ; then
                OLDCONFIG="$oc"
                break
-           fi
+           fi
         done
        if [ "$CC" ] ; then
            MAKE_CC="CC=$CC"