#!/bin/env beesh

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

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

PATCHURL+=()

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}

# fix tar option for user namespace usage (`unshare -U -r BEEFILE`)
export TAR_OPTIONS=--no-same-owner

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() {
    IGNORE_CC_MISMATCH=1 \
    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}/current
}