X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=build%2Flustre-kernel-2.4.spec.in;h=292b5274fb2e7295408f9d9847e1684566a3ef5a;hp=c610623689c23dc4cb2ffd62003469fa1dd310b8;hb=39350c99094c7f400dcfab93bc00f334fd9291a3;hpb=8e96211a441ff27c30276929da58bbdcd72ce1ae diff --git a/build/lustre-kernel-2.4.spec.in b/build/lustre-kernel-2.4.spec.in index c610623..292b527 100644 --- a/build/lustre-kernel-2.4.spec.in +++ b/build/lustre-kernel-2.4.spec.in @@ -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" @@ -149,13 +153,13 @@ Second, per-architecture exclusions (ifarch) 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} @@ -364,6 +368,11 @@ is necessary if you want to access a Lustre filesystem. #The Lustre book, sample configurations, and other documentation for #Lustre. +# 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 if [ ! -d lustre ] ; then @@ -373,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} @@ -396,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 @@ -434,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 ;; @@ -449,9 +459,9 @@ EOF preun) cat >> ${script} < /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 ;; @@ -460,20 +470,20 @@ EOF cat > "kernel$flavor.files" </dev/null @@ -623,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 @@ -637,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}${flavtgt}.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 } @@ -679,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 @@ -703,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) @@ -711,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 @@ -720,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"