-#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
- local pathtokernelibrpm=$2
- [ "$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
-
- if [ -n "$pathtokernelibrpm" ] && [ -f "$pathtokernelibrpm" ]; then
- rpm2cpio < $pathtokernelibrpm | cpio -idc
- [ ${PIPESTATUS[0]} -eq 0 -o ${PIPESTATUS[1]} -eq 0 ] || return 255
- CONFIGURE_FLAGS="--with-o2ib=$(pwd)/usr/src/ofa_kernel ${CONFIGURE_FLAGS}"
- fi
-
- 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_kernel_ib()
-{