#!/bin/env beesh

# calculate package extra versions and legacy level
# - use extraversions to define nvidia extraversion and/or legacy level
# - legacy level should be the last part of extraversion
# - legacy level 2 to 5 will be calculated from version number..

mxnvversion=${PKGEXTRAVERSION##*_}
: ${mxnvversion=current}

nvextraversion="${PKGEXTRAVERSION_DASH}"

if [ "${mxnvversion:0:6}" = "legacy" -o "${mxnvversion}" = "current" ] ; then
    nvextraversion="${nvextraversion%_*}"
    nvextraversion="${nvextraversion#-${mxnvversion}}"
else
    if [ "${PKGVERSION:0:4}" = "340." ] ; then
        mxnvversion="legacy5"
    elif [ "${PKGVERSION:0:4}" = "304." ] ; then
        mxnvversion="legacy4"
    elif [ "${PKGVERSION:0:7}" = "173.14." ] ; then
        mxnvversion="legacy3"
    elif [ "${PKGVERSION:0:6}" = "96.43." ] ; then
        mxnvversion="legacy2"
    else
        mxnvversion="current"
    fi
fi

print_info "calculated mxnvversion    = '${mxnvversion}'"
print_info "calculated nvextraversion = '${nvextraversion}'"

NVIDIA_ARCHIVE="NVIDIA-Linux-x86_64-${PKGVERSION}${nvextraversion}.run"

SRCURL[0]="https://download.nvidia.com/XFree86/Linux-x86_64/${PKGVERSION}/${NVIDIA_ARCHIVE}"

LINUXPKG=${PKGEXTRANAME}.${ARCH}

LINUXKLOCALVER=$(beeversion --format "%v.mx64.%r" "${LINUXPKG}")

# '4.4.mx64.75' to '4.4.0.mx64.75'
if [[ $LINUXKLOCALVER =~ ^([0-9]+\.[0-9]+)(\.mx64.*) ]]; then
    LINUXKLOCALVER="${BASH_REMATCH[1]}.0${BASH_REMATCH[2]}"
fi


build_in_sourcedir
sourcesubdir_append kernel

: ${BEE_TMP_TMPDIR:=/tmp}

mee_extract() {
    LINUXBUILDARCHIVE="${BEE_BUILDARCHIVEDIR}/${LINUXPKG}.beebuild.tar.bz2"

    print_info "extracting nvidia archive .."

    start_cmd rmdir ${S}
    start_cmd sh ${F}/${NVIDIA_ARCHIVE} -x --target ${S}

    if [ -d "/usr/src/linux/${LINUXPKG}/source" ] ; then
        LINUXSRCDIR="/usr/src/linux/${LINUXPKG}/source"
    elif [ -d "${BEE_TMP_TMPDIR}/${LINUXPKG}/source" ] ; then
        LINUXSRCDIR="${BEE_TMP_TMPDIR}/${LINUXPKG}/source"
    else
        print_info "extracting linux build ${LINUXPKG} .."
        start_cmd gtar -xf "${LINUXBUILDARCHIVE}" -C ${BEE_TMP_TMPDIR}
        LINUXSRCDIR="${BEE_TMP_TMPDIR}/${LINUXPKG}/source"
    fi

    print_info "using kernel sources from ${LINUXSRCDIR} .."
}

mee_build_pre() {
    ln -s ${LINUXSRCDIR}/include ${S}/include
}

mee_build() {
	start_cmd make SYSSRC=${LINUXSRCDIR} module
}

mee_install() {
    mkdir -pv ${D}${DATAROOTDIR}/nvidia/kernel/${LINUXKLOCALVER}/${PKGVERSION}

    cp -v *.ko ${D}${DATAROOTDIR}/nvidia/kernel/${LINUXKLOCALVER}/${PKGVERSION}/

    ln -s ${PKGVERSION} ${D}${DATAROOTDIR}/nvidia/kernel/${LINUXKLOCALVER}/${mxnvversion}
}