+#check if we need to build separate ldiskfs RPM
+skeep_ldiskfs_rpm()
+{
+ local tag=$1
+ local skip=false
+ if ! $LDISKFSRPM; then
+ skip=true
+ elif $PATCHLESS; then
+ skip=true
+ else
+ for skiptag in $SKIPLDISKFSRPM; do
+ [[ $tag == $skiptag ]] && skip=true && break
+ done
+ fi
+ echo $skip
+}
+
+#get date of last changed target/config/series/patches
+get_last_source_date()
+{
+ local filelist="${TOPDIR}/lustre/lustre/kernel_patches/series/${SERIES} \
+ $CONFIG_FILE"
+ local TOPDIRnew=$(echo ${TOPDIR} | sed -e s/\\//\\\\\\//g)
+ filelist="$filelist $( \
+ cat ${TOPDIR}/lustre/lustre/kernel_patches/series/${SERIES} | \
+ sed -e s/^/${TOPDIRnew}\\/lustre\\/lustre\\/kernel_patches\\/patches\\// 2>&1)"
+ local sourcelastdate=$( find ${filelist} -name CVS -prune -o \
+ -type f -printf "%T@\n" 2>&1 | sort | tail -1 )
+ is_integer $sourcelastdate && echo $sourcelastdate
+}
+
+#check if variable is integer
+is_integer()
+{
+ local invariable=$1
+ [ "$invariable" = "" ] && return 255
+ local invariableint=$( echo $invariable | sed -e s/[^0-9]//g )
+ [ "$invariable" = "$invariableint" ] || return 255
+}
+
+#generate LUSTRE_EXTRA_VERSION from EXTRA_VERSION
+gen_lustre_version()
+{
+ local smptype=smp
+ [ "$KERNCONFSMPTYPE" = "" ] || smptype=$KERNCONFSMPTYPE
+ [ "$RPMSMPTYPE" = "" ] || smptype=$RPMSMPTYPE
+
+ LUSTRE_EXTRA_VERSION="${lnxmaj}-${EXTRA_VERSION}"
+ if [ "$PATCHLESS" = "true" -a "$DISTRO" = "sles10" ]; then
+ LUSTRE_EXTRA_VERSION="${LUSTRE_EXTRA_VERSION}-${smptype}"
+ else
+ LUSTRE_EXTRA_VERSION="${LUSTRE_EXTRA_VERSION}${smptype}"
+ fi
+ LUSTRE_EXTRA_VERSION=$( echo $LUSTRE_EXTRA_VERSION | sed -e "s^-^_^g" )
+}
+
+#store RPMs and/or BUILD dir for future reuse
+store_for_reuse()
+{
+ local rpmonly=$1
+ if [ ! "$REUSEBUILD" = "" ] && [ -d "/$REUSEBUILD/" ] ; then
+ [ -d "${REUSEBUILD}/${TIMESTAMP}" ] || mkdir "${REUSEBUILD}/${TIMESTAMP}"
+ [ -d "${REUSEBUILD}/${TIMESTAMP}" ] || return 255
+ else
+ return 255
+ fi
+
+ local lnxrelnew=$( echo ${lnxrel} | sed s/-/_/g )
+ local EXTRA_VERSIONnew=$( echo ${EXTRA_VERSION} | sed s/-/_/g )
+ local KERNELRPMnew=$(basename "$KERNELRPM")
+ if [ ! "$rpmonly" = "rpmonly" ]; then
+ local builddir=
+ if [ ! "$KERNELCOMPILEDIR" = "" ]; then
+ builddir="$KERNELCOMPILEDIR"
+ else
+ builddir="BUILD/lustre-kernel-${lnxmaj}/lustre/linux-${lnxmaj}"
+ [ "$KERNELCOMPILEDIR" = "" ] || builddir="$KERNELCOMPILEDIR"
+ [ -d "$builddir" ] || builddir="BUILD/lustre-kernel-${lnxmaj}/lustre/linux-${lnxmaj}.${lnxrel}"
+ [ -d "$builddir" ] || builddir="BUILD/lustre-kernel-${lnxmaj}/lustre/linux-${lnxmaj}-${lnxrel}"
+ if [ ! -d "$builddir" ]; then
+ pushd "BUILD/lustre-kernel-${lnxmaj}/lustre/" || return 255
+ local basebuilddir=$(ls -d linux-${lnxmaj}* | head -1)
+ [ "$basebuilddir" = "" ] || builddir="BUILD/lustre-kernel-${lnxmaj}/lustre/${basebuilddir}"
+ popd
+ fi
+ fi
+ [ -d "$builddir" ] || return 255
+ local dstdir="${REUSEBUILD}/${TIMESTAMP}/linux-${KERNCONFSMPTYPE}-${lnxmaj}-${EXTRA_VERSIONnew}.${TARGET_ARCH}"
+ ( $PATCHLESS ) && dstdir="${REUSEBUILD}/${TIMESTAMP}/linux-$KERNELRPMnew" && \
+ dstdir="${dstdir%.rpm}"
+ [ -d "$dstdir" ] && rm -rf "$dstdir"
+ mv "${builddir}" "$dstdir" || return 255
+ fi
+ #store kernel rpm
+ local kernelrpmname="kernel-lustre-${KERNCONFSMPTYPE}-${lnxmaj}-${EXTRA_VERSIONnew}.${TARGET_ARCH}.rpm"
+ [ -f "RPMS/${TARGET_ARCH}/${kernelrpmname}" ] || kernelrpmname="kernel-${KERNCONFSMPTYPE}-${lnxmaj}-${EXTRA_VERSNnew}.${TARGET_ARCH}.rpm"
+ ( $PATCHLESS ) && [ -f "$KERNELRPM" ] && kernelrpmname="$KERNELRPMnew"
+ if [ "$rpmonly" = "rpmonly" ] && [ -f "${REUSEBUILD}/${TIMESTAMP}/${kernelrpmname}" ]; then
+ echo "RPM already exist in store directory tree"
+ else
+ [ -f "RPMS/${TARGET_ARCH}/${kernelrpmname}" ] && cp -f "RPMS/${TARGET_ARCH}/${kernelrpmname}" "${REUSEBUILD}/${TIMESTAMP}/"
+ fi
+ #store kernel source rpm
+ kernelrpmname="kernel-lustre-source-${lnxmaj}-${EXTRA_VERSIONnew}.${TARGET_ARCH}.rpm"
+ [ -f "RPMS/${TARGET_ARCH}/${kernelrpmname}" ] || kernelrpmname="kernel-source-${lnxmaj}-${EXTRA_VERSIONnew}.${TARGET_ARCH}.rpm"
+ ( $PATCHLESS ) && [ -f "$KERNELSOURCERPM" ] && kernelrpmname=$(basename "$KERNELSOURCERPM")
+ if [ "$rpmonly" = "rpmonly" ] && [ -f "${REUSEBUILD}/${TIMESTAMP}/${kernelrpmname}" ]; then
+ echo "RPM already exist in store directory tree"
+ else
+ [ -f "RPMS/${TARGET_ARCH}/${kernelrpmname}" ] && cp -f "RPMS/${TARGET_ARCH}/${kernelrpmname}" "${REUSEBUILD}/${TIMESTAMP}/"
+ fi
+}
+
+set_rpm_smp_type()
+{
+ RPMSMPTYPE=default
+ for smp_type in $SMP_ARCHS; do
+ [ $TARGET_ARCH == $smp_type ] && RPMSMPTYPE=smp && break
+ done
+
+ for smp_type in $BIGSMP_ARCHS; do
+ [ $TARGET_ARCH == $smp_type ] && RPMSMPTYPE=bigsmp && break
+ done
+}
+
+#unpack kernel(/source/devel) RPM
+unpack_linux_rpm()
+{
+ local prefix=$1
+ local delimiter=${2:-"-"}
+ local pathtorpms="${KERNELRPMSBASE}/${lnxmaj}/${DISTRO}"
+ local kernelbinaryrpm=
+ [ -d $pathtorpms ] || return 255
+ local rpmfile=
+ local wanted_kernel="${lnxmaj}${delimiter}${lnxrel}"
+ for arch in $TARGET_ARCHS_ALL; do
+ for rpm in ${pathtorpms}/${arch}/*.rpm; do
+ local provides=$(rpm -q --provides -p $rpm)
+ if (echo $provides | grep -q "kernel${prefix} = $wanted_kernel"); then
+ KERNELRPM=$rpm
+ fi
+ done
+ [ -f "$KERNELRPM" ] && TARGET_ARCH="$arch" && BUILD_ARCHS="$arch" && break
+ done
+
+ # bleah
+ set_rpm_smp_type
+
+ [ -f "$KERNELRPM" ] || return 255
+ [ -d $TOPDIR/reused ] || mkdir $TOPDIR/reused
+ pushd $TOPDIR/reused || return 255
+ RC=0
+ rpm2cpio < "$KERNELRPM" | cpio -idc > /dev/null 2>&1
+ if [ ${PIPESTATUS[0]} -eq 0 ]; then
+ # RHEL-style and SLES-style rpms
+ local paths="kernels/${lnxmaj}${delimiter}${lnxrel}-${TARGET_ARCH} linux-${lnxmaj}${delimiter}${lnxrel}"
+
+ for path in $paths; do
+ local src='usr/src'
+
+ if [ -d "$src/$path/" ]; then
+ LINUX="$(pwd)/$src/$path"
+ fi
+ # SLES has a separate -obj tree
+ if [ -d "$src/${path}-obj" ]; then
+ src="$src/${path}-obj"
+ local objects="$TARGET_ARCH/$RPMSMPTYPE"
+
+ # Novell, are you *TRYING* to make life hard for me?
+ if [ -d "$src/powerpc" ]; then
+ objects="powerpc/$TARGET_ARCH"
+ elif [ $TARGET_ARCH == 'i686' ]; then
+ objects="i386/$RPMSMPTYPE"
+ fi
+
+ LINUXOBJ="$(pwd)/$src/$objects"
+ fi
+ done
+ [ -z "$LINUX" ] && RC=255
+ else
+ RC=255
+ fi
+ popd
+ return $RC
+}
+
+#look for kernel source RPM
+find_linux_source_rpm()
+{
+ local rpmfile=
+ local findarch=true
+ local arch=
+ local pathtorpms=
+ [ ! "$TARGET_ARCH" = "" ] && arch=$TARGET_ARCH && findarch=false
+
+ if ! $findarch; then
+ pathtorpms="${KERNELRPMSBASE}/${lnxmaj}/${DISTRO}/${arch}"
+ [ -d $pathtorpms ] || return 255
+ case "$DISTRO" in
+ rhel4)
+ rpmfile="kernel-${lnxmaj}-${lnxrel}.src.rpm"
+ ;;
+ sles10)
+ rpmfile="kernel-source-${lnxmaj}.${lnxrel}.${arch}.rpm"
+ ;;
+ *)
+ rpmfile="kernel-source-${lnxmaj}-${lnxrel}.${arch}.rpm"
+ ;;
+ esac
+ [ -f "${pathtorpms}/${rpmfile}" ] || return 255
+ KERNELSOURCERPM="${pathtorpms}/${rpmfile}"
+ else
+ for arch in $TARGET_ARCHS_ALL; do
+ pathtorpms="${KERNELRPMSBASE}/${lnxmaj}/${DISTRO}/${arch}"
+ [ -d $pathtorpms ] || continue
+ case "$DISTRO" in
+ rhel4)
+ rpmfile="kernel-${lnxmaj}-${lnxrel}.src.rpm"
+ ;;
+ sles10)
+ rpmfile="kernel-source-${lnxmaj}.${lnxrel}.${arch}.rpm"
+ ;;
+ *)
+ rpmfile="kernel-source-${lnxmaj}-${lnxrel}.${arch}.rpm"
+ ;;
+ esac
+ [ -f "${pathtorpms}/${rpmfile}" ] || continue
+ KERNELSOURCERPM="${pathtorpms}/${rpmfile}"
+ TARGET_ARCH=${arch}
+ break
+ done
+ fi
+ [ -f "${KERNELSOURCERPM}" ] || return 255
+}
+
+#unpack and make symlinks for reusing kernel RPM
+reuse_kernel_rpm()
+{
+ local pathtorpm=$1
+ [ "$pathtorpm" = "" ] && return 255
+ [ -f "$pathtorpm" ] || return 255
+ [ -d $TOPDIR/reused ] || mkdir $TOPDIR/reused
+ pushd $TOPDIR/reused || return 255
+
+ rpm2cpio < $pathtorpm | cpio -idc
+ [ ${PIPESTATUS[0]} -eq 0 ] || return 255
+
+ local smptype=
+ if pushd usr/src/linux-*-obj/${TARGET_ARCH}; then
+ local smptypes="$SMPTYPES"
+ [ "$RPMSMPTYPE" = "" ] || smptypes=$RPMSMPTYPE
+ ( ! $PATCHLESS ) && [ ! "$KERNCONFSMPTYPE" = "" ] && smptypes="$KERNCONFSMPTYPE"
+ local cursmptype=
+ for cursmptype in $smptypes; do
+ [ "$cursmptype" = "''" ] && continue
+ [ -d $cursmptype ] && smptype=$cursmptype
+ [ -d $smptype ] && break
+ done
+ popd
+ fi
+ if [ "${smptype}" = "" ]; then
+ popd
+ return 255 # cannot detect smp type
+ fi
+ if pushd usr/src/linux-*-obj/${TARGET_ARCH}/$smptype/include2; then
+ local base=$(readlink asm)
+ if [ ! -d "/${base}/" ]; then
+ rm -f asm
+ base=$(basename "$base")
+ if pushd ../../../../linux-*/include; then
+ local lsrc=$(pwd)
+ popd
+ [ -d "$lsrc/${base}" ] && ln -s $lsrc/${base} asm
+ fi
+ fi
+ popd
+ read a b < <(echo $(pwd)/usr/src/linux-*)
+ if [[ $a == $(pwd)/* && $b = $(pwd)/* ]]; then
+ cp -f $a/include/linux/config.h $b/${TARGET_ARCH}/$smptype/include/linux/
+ cp $b/${TARGET_ARCH}/$smptype/.config $a/
+ [ -f "$b/${TARGET_ARCH}/$smptype/.config" ] && KERNELRPMCONFIG="$b/${TARGET_ARCH}/$smptype/.config"
+ cp $b/${TARGET_ARCH}/$smptype/.kernelrelease $a/
+ [ -f "$b/${TARGET_ARCH}/$smptype/.kernelrelease" ] && KERNELRPMRELEASE="$b/${TARGET_ARCH}/$smptype/.kernelrelease"
+ LINUX=$a
+ LINUXOBJ=$b/${TARGET_ARCH}/$smptype
+# local fname=$(basename $kernel_rpm)
+# KERNELRPMSDIR=${kernel_rpm%$fname}
+ fi
+ fi
+ popd
+ [ "$LINUX" = "" ] && return 255
+ [ -d "$LINUX" ] || return 255
+}
+
+#build linux kernel rpm
+build_linux_rpm()
+{
+ pushd $LINUX || return 255
+ make binrpm-pkg || ( popd ; return 255 )
+ local addlnxrel=
+ [ -f ".version" ] && addlnxrel="-$(cat .version)"
+ popd
+ local arch=
+ for arch in $TARGET_ARCHS_ALL; do
+ [ -f "/usr/src/rpm/RPMS/$arch/kernel-$lnxmaj.${lnxrel}${addlnxrel}.$arch.rpm" ] && \
+ KERNELRPM="/usr/src/rpm/RPMS/$arch/kernel-$lnxmaj.${lnxrel}${addlnxrel}.$arch.rpm" && \
+ TARGET_ARCH="$arch"
+ [ -f "/usr/src/packages/RPMS/$arch/kernel-$lnxmaj.${lnxrel}${addlnxrel}.$arch.rpm" ] && \
+ KERNELRPM="/usr/src/packages/RPMS/$arch/kernel-$lnxmaj.${lnxrel}${addlnxrel}.$arch.rpm" && \
+ TARGET_ARCH="$arch"
+ done
+ [ "$KERNELRPM" = "" ] || return
+ return 255
+}
+
+#build linux kernel
+build_linux()
+{
+ local nofullmake=$1
+ local nocopykernel=$2
+ pushd $LINUX || fatal 1 "Kernel source not found"
+ [ "$nofullmake" = "nofullmake" ] || make mrproper
+ [ "$nofullmake" = "nofullmake" ] || rm -f rpm-release
+# [ "$nocopykernel" = "copyrpmkernel" ] || rm -f localversion-*
+ [ "$nocopykernel" = "copykernel" ] && [ -f "$CONFIG_FILE" ] && cp $CONFIG_FILE .config
+ if [ "$nocopykernel" = "copyrpmkernel" ]; then
+ [ -f "$KERNELRPMCONFIG" ] && cp $KERNELRPMCONFIG .config
+ if [ -f "$KERNELRPMRELEASE" ]; then
+ cp $KERNELRPMRELEASE .
+ else
+ sed -e "s/^EXTRAVERSION\s\+=\s\+.*$/EXTRAVERSION = -${lnxrel}/" < Makefile > Makefile.new
+ [ -f "Makefile.new" ] && mv Makefile.new Makefile
+ fi
+ fi
+ [ -f ".config" ] || ( popd ; echo "Cannot find .config file"; return 255 )
+ make oldconfig || ( popd ; return 255 )
+ make include/linux/version.h
+ if [ ! "$nofullmake" = "nofullmake" ]; then
+ make || ( popd ; return 255 )
+ fi
+ popd
+ return
+}
+
+#build patchless lustre
+patchless_build_sequence()
+{
+ #try to build from kernel-devel RPM (RHEL)
+ LINUX=
+ TARGET_ARCH=
+ local rpmfound=false
+ local buildsuccess=false
+ local storeforreuse=false
+ if [ "$KERNELRPMSBASE" = "" ] || [ ! -d "$KERNELRPMSBASE" ]; then
+ return 255
+ fi
+ [ -d $TOPDIR/reused ] && rm -rf $TOPDIR/reused
+
+ local delimiter=${EXTRA_VERSION_DELIMITER:-"-"}
+ # default to source type -source and special case below
+ local type=-source
+ case "$DISTRO" in
+ rhel*)
+ type=-devel
+ ;;
+ esac
+
+ unpack_linux_rpm $type $delimiter && rpmfound=true
+ ( $rpmfound ) && build_lustre && buildsuccess=true && find_linux_source_rpm
+
+ if $buildsuccess; then
+ [ -d "RPMS/${TARGET_ARCH}" ] && [ -f "$KERNELRPM" ] && \
+ cp "$KERNELRPM" RPMS/${TARGET_ARCH}/
+ [ -d "RPMS/${TARGET_ARCH}" ] && [ -f "$KERNELSOURCERPM" ] && \
+ cp "$KERNELSOURCERPM" RPMS/${TARGET_ARCH}/
+ KERNELCOMPILEDIR="$LINUX"
+ if $storeforreuse; then
+ store_for_reuse || echo "Cannot store for feature reuse"
+ fi
+
+ return
+ elif ! $rpmfound; then
+ echo "COULD NOT FIND VENDOR -devel or -source RPM for $DISTRO/$TARGET_ARCH: $lnxmaj-$lnxrel in $KERNELRPMSBASE"
+ return 255
+ else
+ echo "Patchless build failed."
+ return 255
+ fi
+}
+
+#check timestamp value. should bi 14-digits string
+check_timestamp()
+{
+ local invalue=$1
+ local timestampnodig=$(echo $invalue | sed -e s/[0-9]*//g)
+ [ "$timestampnodig" = "" ] || return 255
+ local timestamplength="${#invalue}"
+ [ $timestamplength -eq 14 ] || return 255
+}
+
+# get list of suitable directories with potential reused staff
+get_reuse_dir_list()
+{
+ local rpmonly=$1
+ local reusedkernelmasknew=$2
+ local buildtimestamp=
+ local dirsforreuse=
+ local sourcelastdate=$(get_last_source_date)
+ for buildtimestamp in $(ls "$REUSEBUILD/" 2>&1); do
+ [ -d "$REUSEBUILD/$buildtimestamp" ] || continue
+ check_timestamp "$buildtimestamp" || continue
+ local buildtimestampstr=$(echo $buildtimestamp | \
+ sed -e "s^\(....\)\(..\)\(..\)\(..\)\(..\)\(..\)^\1-\2-\3 \4:\5:\6 GMT^g")
+ local buildtimestampepoch=$(date --date="$buildtimestampstr" +%s )
+ #check for suitable date
+ if ! $PATCHLESS; then
+ [ $buildtimestampepoch -ge $sourcelastdate ] || continue
+ fi
+ #check for suitable version
+ if [ "$rpmonly" = "rpmonly" ]; then
+ local reusedkernelprefix="kernel-lustre-"
+ ( $PATCHLESS ) && reusedkernelprefix=
+ local rpmmask="${reusedkernelprefix}${REUSEDKERNELMASK}"
+ [ "$reusedkernelmasknew" = "" ] || rpmmask="$reusedkernelmasknew"
+ [ -f $REUSEBUILD/$buildtimestamp/${rpmmask}.rpm ] && \
+ dirsforreuse="$dirsforreuse $REUSEBUILD/$buildtimestamp"
+ else
+ local rpmmask="$REUSEDKERNELMASK"
+ [ "$reusedkernelmasknew" = "" ] || rpmmask="$reusedkernelmasknew"
+ pushd $REUSEBUILD/$buildtimestamp/linux-${rpmmask} > /dev/null 2>&1 || continue
+ local curdir=$(pwd)
+ dirsforreuse="$dirsforreuse $curdir"
+ popd
+ fi
+ done
+ echo "$dirsforreuse"
+}
+
+#try to reuse old RPM
+build_sequence_rpm_reuse()
+{
+ local sourcerpm=$1
+ [ "$REUSERPM" = "" ] && [ "$REUSEBUILD" = "" ] && return 255
+ local dirsforreuse=
+ if ! [ "$REUSEBUILD" = "" ] && [ -d "$REUSEBUILD" ]; then #try to reuse RPM
+ local REUSEDKERNELMASKnew=$(echo $REUSEDKERNELMASK | sed -e "s/^[^0-9]*//")
+ REUSEDKERNELMASKnew="kernel-lustre-source-${REUSEDKERNELMASKnew}"
+ local dirsforreuse="$(get_reuse_dir_list rpmonly $REUSEDKERNELMASKnew)"
+ local buildsuccess=false
+ LINUXOBJ=
+ for curdir in $(echo $dirsforreuse); do
+ [ -d "$curdir" ] || continue
+ local reusedkernelprefix="kernel-lustre-"
+ local reusedkernelrpm=
+ [ -f ${curdir}/${reusedkernelprefix}${REUSEDKERNELMASK}.rpm ] && \
+ reusedkernelrpm=$(ls ${curdir}/${reusedkernelprefix}${REUSEDKERNELMASK}.rpm | head -1 )
+ [ -f "$reusedkernelrpm" ] || continue
+
+ local reusedkernelsourcerpm=
+ [ -f ${curdir}/${REUSEDKERNELMASKnew}.rpm ] && \
+ reusedkernelsourcerpm=$(ls ${curdir}/${REUSEDKERNELMASKnew}.rpm | head -1 )
+ [ -f "$reusedkernelsourcerpm" ] || continue
+
+ [ -d $TOPDIR/reused ] && rm -rf $TOPDIR/reused
+ reuse_kernel_rpm "$reusedkernelsourcerpm" && build_linux nofullmake copyrpmkernel && build_lustre && buildsuccess=true
+ ( $buildsuccess ) || continue
+ if ( ! $NORPM ) && ( ! $PATCHLESS ) ; then
+ [ -f "$reusedkernelrpm" ] && \
+ cp -f "$reusedkernelrpm" RPMS/${TARGET_ARCH}/ > /dev/null 2>&1
+
+ [ -f "$reusedkernelsourcerpm" ] && \
+ cp -f "$reusedkernelsourcerpm" RPMS/${TARGET_ARCH}/ > /dev/null 2>&1 && \
+ touch RPMS/${TARGET_ARCH}/kernel_was_reused
+ fi
+ return
+ done
+ fi
+ return 255
+}
+
+#try to reuse old BUILD dir
+build_sequence_reuse()
+{
+ local sourcerpm=$1
+ [ "$REUSERPM" = "" ] && [ "$REUSEBUILD" = "" ] && return 255
+ local dirsforreuse=
+ if [ ! "$REUSEBUILD" = "" ] && [ -d "$REUSEBUILD" ]; then #try to reuse old kernel build directory
+ local dirsforreuse="$(get_reuse_dir_list)"
+ local buildsuccess=false
+ LINUXOBJ=
+ local REUSEDKERNELMASKnew=$(echo $REUSEDKERNELMASK | sed -e "s/^[^0-9]*//")
+ for curdir in $(echo $dirsforreuse); do
+ local reusedkernelrpm=
+ local reusedkernelsourcerpm=
+ [ -d "$curdir" ] || continue
+ local reusedkernelprefix="kernel-lustre-"
+ ( $PATCHLESS ) && reusedkernelprefix=
+ [ -f ${curdir}/../${reusedkernelprefix}${REUSEDKERNELMASK}.rpm ] && \
+ reusedkernelrpm=$(ls ${curdir}/../${reusedkernelprefix}${REUSEDKERNELMASK}.rpm | head -1 )
+ reusedkernelprefix="kernel-lustre-source-"
+ [ -f ${curdir}/../${reusedkernelprefix}${REUSEDKERNELMASKnew}.rpm ] && \
+ reusedkernelsourcerpm=$(ls ${curdir}/../${reusedkernelprefix}${REUSEDKERNELMASKnew}.rpm | head -1 )
+ if ! ( $NORPM ) && ! [ -f "$reusedkernelrpm" ]; then #kernel rpm not found. Build all
+ continue
+ fi
+ if ! ( $NORPM ) && ! [ -f "$reusedkernelsourcerpm" ]; then #kernel source rpm not found. Build all
+ continue
+ fi
+ LINUX="$curdir"
+ build_lustre || continue
+ touch "$curdir/../"
+ buildsuccess=true
+ if ( ! $NORPM ) && ( ! $PATCHLESS ) ; then
+ [ -f "$reusedkernelrpm" ] && \
+ cp -f "$reusedkernelrpm" RPMS/${TARGET_ARCH}/ > /dev/null 2>&1 && \
+ touch RPMS/${TARGET_ARCH}/kernel_was_reused
+ [ -f "$reusedkernelsourcerpm" ] && \
+ cp -f "$reusedkernelsourcerpm" RPMS/${TARGET_ARCH}/ > /dev/null 2>&1
+ fi
+ return
+ done
+ fi
+ return 255
+}
+
+
+build_sequence()
+{
+ if (( $DO_SRC )) ; then
+ unpack_linux
+ patch_linux
+ pack_linux
+ clean_linux
+ fi
+ prep_kernel_build || return 255
+ clean_lustre || return 255
+
+ build_kernel || return 255
+}
+