#
%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 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
Vendor: Cluster File Systems, Inc.
URL: http://www.kernel.org/
-Buildroot: /var/tmp/%{name}-%{PACKAGE_VERSION}-root
+Buildroot: %{_tmppath}/%{name}-%{version}-root
Source0: @LUSTRE_SOURCE@
Source1: @KERNEL_SOURCE@
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.
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
#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
# 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"
- 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" %{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}
[ -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
;;
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
;;
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}
-/boot/Kerntypes-%{KVERREL}${flavor}
-/boot/symvers-%{KVERREL}-%{_target_cpu}${flavor}.gz
+%if %{susebuild}
+/boot/Kerntypes-%{KVERREL}${delim_flavor}
+%endif
+/boot/symvers-%{KVERREL}-%{_target_cpu}${delim_flavor}.gz
%endif
EOF
--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@
}
%endif
%if %{buildbase}
-BuildLustre
+# BuildLustre
%endif
popd >/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
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"
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/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
}
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)
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
+ 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"
%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
%endif
%if %{buildpseries64}
-%files bigsmp -f kernelpseries64.files
+%files pseries64 -f kernelpseries64.files
%endif
%if %{buildbigmem}
%endif
%if %{buildbase}
-
%files source -f kernel-source.files
-
-%files doc
-%defattr(-,root,root)
-%doc lustre/linux/Documentation/*
-
-%files -n lustre-lite-utils
-%defattr(-, root, root)
-%doc lustre/COPYING lustre/lustre/BUGS lustre/ChangeLog lustre/README lustre/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}
+%endif