# vim:expandtab:shiftwidth=4:softtabstop=4:tabstop=4:

# increment this if you have made a change that should force a new kernel
# to build built
BUILD_GEN+=".0"	# TT-107: don't cache the BUILD dir (reset major to 5)

DEVEL_KERNEL_TYPE="source"
RPM_HELPERS_DIR="/usr/lib/rpm"

prepare_and_build_srpm() {

    pushd $TOPDIR >/dev/null
    # all of the specs but one are put into SOURCES, so let's just move
    # the one lone one in SPECS into SOURCES and just reference them from
    # there
    mv SPECS/*.spec SOURCES/

    # generate our buildid
    local buildid="lustre${EXTRA_VERSION##*_lustre}"

    # do release specific spec editing
    edit_specs

    # XXX - need to flesh this out per the rhel5 method
    local targets
    for arch in $BUILD_ARCHS; do
        targets="--target $arch $targets"
        mkdir -p config/$(basearch $arch)
        cp $CONFIG_FILE config/$(basearch $arch)/$RPMSMPTYPE
    done

    tar cjf SOURCES/config.tar.bz2 config
    rm -rf config

    # do we need any special rpm build options
    local rpmbuildopt="-bb"
    if $DO_SRC; then
        rpmbuildopt="-ba"
    fi

    # XXX - ignore the kabi changes.  need to figure out what this is really
    #       all about.
    touch SOURCES/IGNORE-KABI-BADNESS


# XXX testing speedup hack - never let an inspection pass without this
#     commented out!  in fact it should be removed completely before a
#     landing.
#if false; then
    # now build it
    if ! $RPMBUILD $rpmbuildopt $targets \
                   --define "_topdir $TOPDIR" \
                   $TOPDIR/SOURCES/kernel-$RPMSMPTYPE.spec 2>&1; then
        fatal 1 "Failed to build kernel RPM"
    fi
#fi

    # for SLES, we also need to build the kernel-source rpm
    if ! $RPMBUILD $rpmbuildopt $targets \
                   --define "_topdir $TOPDIR" \
                   $TOPDIR/SOURCES/kernel-source.spec 2>&1; then
        fatal 1 "Failed to build kernel source RPM"
    fi

}

devel_kernel_name() {
    local lustre=${1:-false}

    if $lustre; then
        echo "kernel-lustre-$DEVEL_KERNEL_TYPE"
    else
        echo "kernel-$DEVEL_KERNEL_TYPE"
    fi

}

rpm_BUILD_kernel_dirname() {
    local rpmsmptype="$1"
    local lnxmaj="$2"
    local lnxmin="$3"
    local arch="$4"

    local lustre=""
    if $KERNEL_LUSTRE_NAMING; then
        $lustre="-lustre"
    fi
    echo kernel${lustre}-${rpmsmptype}-${lnxmaj}${lnxmin}/linux-${lnxmaj}
}

resolve_arch() {
    local arch="$1"
    # because we build an i686 kernel, we need to know if the arch we are
    # resolving for is for the patched or patchless kernel (which is i586)
    # we really should be building an i586 kernel to match what Novell does
    local for_patchless=${2:-true}
    local canonical=${3:-false}

    case $arch in
        ppc64)	arch=powerpc
                ;;
        i?86)	if $canonical; then
                    arch=i386
                elif $(eval $for_patchless); then
                    arch=i586
                fi
                ;;
    esac

    echo "$arch"

}

find_linux_devel_paths() {
    local path="$1"

    LINUX=$path/usr/src/linux-${lnxmaj}${lnxmin}-${lnxrel}
    LINUXOBJ=$path/usr/src/linux-${lnxmaj}${lnxmin}-${lnxrel}-obj/$(resolve_arch $TARGET_ARCH $PATCHLESS)/$RPMSMPTYPE
    # XXX this has been commented out in th rhel5 build file for a while
    # as it says there, it's probably not needed anymore and can be deleted
    #LINUXRELEASE=$(find_linux_release "$LINUXOBJ")
    #if [ -z "$LINUXRELEASE" ]; then
    #    echo "Failed to find linux release in $LINUXOBJ"
    #    return 255
    #fi

    return 0
}

mcpu_rpmbuild_opt() {

    echo "--define \'jobs $(/usr/bin/getconf _NPROCESSORS_ONLN)\'"
    return 0
}
