From 72ff4926c40905a58eb61e4c41ebf0f79bbc76ed Mon Sep 17 00:00:00 2001 From: Donald Buczek Date: Thu, 7 Jul 2016 12:57:41 +0200 Subject: [PATCH] nvidia: replace 367.27 with 367.18 nvidia 367.27 has a bug which may result in build problems of packages which use libGL.so.1 ( undefined symbols nv_vasprintf_vsnprintf, nv_vasprintf_alloc, nv_vasprintf_free in /usr/share/nvidia/367.27/lib/libnvidia-glcore.so.367.27") nvidia 352.79 was replaced, because using cuda with this version in machines with multiple graphic cards, sometimes crashed the cards. nvidia 367.18 seems to be okay regarding both problems. we need to keep nvidia_current-367.27-0.x86_64 until no more systems are using 367.27 we add nvidia_linux-4.6.3-92-367.18-0 because linux-4.6.3-92 might replace linux-4.6.3-91 --- nvidia_current-367.18-0.bee | 115 ++++++++++++++++++ ...bee => nvidia_linux-4.4.14-90-367.18-0.bee | 0 ....bee => nvidia_linux-4.6.3-91-367.18-0.bee | 4 +- nvidia_linux-4.6.3-92-367.18-0.bee | 88 ++++++++++++++ 4 files changed, 204 insertions(+), 3 deletions(-) create mode 100755 nvidia_current-367.18-0.bee rename nvidia_linux-4.6.3-91-367.27-0.bee => nvidia_linux-4.4.14-90-367.18-0.bee (100%) rename nvidia_linux-4.4.14-90-367.27-0.bee => nvidia_linux-4.6.3-91-367.18-0.bee (89%) create mode 100755 nvidia_linux-4.6.3-92-367.18-0.bee diff --git a/nvidia_current-367.18-0.bee b/nvidia_current-367.18-0.bee new file mode 100755 index 000000000..63e70b4e2 --- /dev/null +++ b/nvidia_current-367.18-0.bee @@ -0,0 +1,115 @@ +#!/bin/env beesh + +# resources: +# http://www.nvidia.com/object/unix.html +# ./README.txt +# ./.manifest +# https://github.com/NVIDIA/nvidia-installer +# ./nvidia-installer -A +# ./nvidia-installer --ui=none --accept-license --no-kernel-module --expert +# + +NVIDIA_ARCHIVE="NVIDIA-Linux-x86_64-${PKGVERSION}${PKGEXTRAVERSION:+-${PKGEXTRAVERSION}}.run" + +SRCURL[0]="ftp://download.nvidia.com/XFree86/Linux-x86_64/${PKGVERSION}/${NVIDIA_ARCHIVE}" + +BEE_CONFIGURE=none + +build_in_sourcedir + +PREFIX=/usr/share/nvidia/${PKGVERSION} +LIBDIR=${PREFIX}/lib +BINDIR=${PREFIX}/bin + +mee_extract() { + rmdir ${S} + sh ${F}/${NVIDIA_ARCHIVE} -x --target ${S} +} + +#mee_patch() { +# bee_patch +#} + +mee_build() { + #bee_build + true +} + +mee_install() { + #bee_install + + mkdir -pv ${D}${PREFIX}/{bin,lib,drivers,share} + + NVLIBS=( + "libGL.so.${PKGVERSION}" + "libOpenCL.so.1.0.0" + "libcuda.so.${PKGVERSION}" + "libnvcuvid.so.${PKGVERSION}" + "libnvidia-cfg.so.${PKGVERSION}" + "libnvidia-compiler.so.${PKGVERSION}" + "libnvidia-encode.so.${PKGVERSION}" + "libnvidia-glcore.so.${PKGVERSION}" + "libnvidia-ml.so.${PKGVERSION}" + "libnvidia-opencl.so.${PKGVERSION}" + "tls/libnvidia-tls.so.${PKGVERSION}" + "libnvidia-wfb.so.${PKGVERSION}" + "libvdpau_nvidia.so.${PKGVERSION}" + libnvidia-gtk2.so.${PKGVERSION} + libnvidia-gtk3.so.${PKGVERSION} + libnvidia-fatbinaryloader.so.${PKGVERSION} + ) + + NVDRV="nvidia_drv.so" + + NVLIBS32=( \ + ) + + NVBIN=( \ + "nvidia-settings" \ + "nvidia-xconfig" \ + "nvidia-smi" \ + "nvidia-modprobe" \ + ) + + NVSHARE=( \ + ) + + for i in ${NVLIBS[@]} ; do + soname=$(soname ${i} || echo "ERROR") + echo "installing ${i} as lib/${soname}" + install -v -c ${i} ${D}${LIBDIR}/${soname} + done + + echo "installing ${NVDRV} as drivers/$(basename ${NVDRV})"; + install -c -v ${NVDRV} ${D}${PREFIX}/drivers + + # soname is missing in this release.. + install -c -v "libglx.so.${PKGVERSION}" ${D}${LIBDIR}/libglx.so + + for i in ${NVLIBS32[@]} ; do + soname=$(soname ${i} || echo "ERROR") + echo "installing ${i} as lib32/${soname}" + + mkdir -pv ${D}${LIBDIR}32 + install -v -c ${i} ${D}${LIBDIR}32/${soname} + done + + mkdir -pv ${D}/usr/share/man/man1 + + for i in ${NVBIN[@]} ; do + echo "installing ${i} as bin/${i}" + install -v -c -m 755 ${i} ${D}${BINDIR} + install -v -c -m 644 ${i}.1.gz ${D}/usr/share/man/man1 + done + + for i in ${NVSHARE[@]} ; do + echo "installing ${i} as share/${i}" + cp -rv ${i} ${D}${PREFIX}/share + done + + mkdir -pv ${D}/usr/lib + + for i in tls glcore compiler gtk2 gtk3 fatbinaryloader; do + ln -vs ${LIBDIR}/libnvidia-${i}.so.${PKGVERSION} ${D}/usr/lib + done +} diff --git a/nvidia_linux-4.6.3-91-367.27-0.bee b/nvidia_linux-4.4.14-90-367.18-0.bee similarity index 100% rename from nvidia_linux-4.6.3-91-367.27-0.bee rename to nvidia_linux-4.4.14-90-367.18-0.bee diff --git a/nvidia_linux-4.4.14-90-367.27-0.bee b/nvidia_linux-4.6.3-91-367.18-0.bee similarity index 89% rename from nvidia_linux-4.4.14-90-367.27-0.bee rename to nvidia_linux-4.6.3-91-367.18-0.bee index 11db763ed..a1efa971c 100755 --- a/nvidia_linux-4.4.14-90-367.27-0.bee +++ b/nvidia_linux-4.6.3-91-367.18-0.bee @@ -82,9 +82,7 @@ mee_build() { mee_install() { mkdir -pv ${D}${DATAROOTDIR}/nvidia/kernel/${LINUXKLOCALVER}/${PKGVERSION} - cp -v nvidia.ko ${D}${DATAROOTDIR}/nvidia/kernel/${LINUXKLOCALVER}/${PKGVERSION}/nvidia.ko - cp -v nvidia-uvm.ko ${D}${DATAROOTDIR}/nvidia/kernel/${LINUXKLOCALVER}/${PKGVERSION}/nvidia-uvm.ko - cp -v nvidia-modeset.ko ${D}${DATAROOTDIR}/nvidia/kernel/${LINUXKLOCALVER}/${PKGVERSION}/nvidia-modeset.ko + cp -v *.ko ${D}${DATAROOTDIR}/nvidia/kernel/${LINUXKLOCALVER}/${PKGVERSION}/ ln -s ${PKGVERSION} ${D}${DATAROOTDIR}/nvidia/kernel/${LINUXKLOCALVER}/${mxnvversion} } diff --git a/nvidia_linux-4.6.3-92-367.18-0.bee b/nvidia_linux-4.6.3-92-367.18-0.bee new file mode 100755 index 000000000..a1efa971c --- /dev/null +++ b/nvidia_linux-4.6.3-92-367.18-0.bee @@ -0,0 +1,88 @@ +#!/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]="ftp://download.nvidia.com/XFree86/Linux-x86_64/${PKGVERSION}/${NVIDIA_ARCHIVE}" +#PATCHURL+=('/src/mariux/patches/nvidia-linux-readcr4_writecr4.patch') + +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} +}