diff options
author | Edward W. Koenig <kingbeowulf@gmail.com> | 2017-02-21 09:10:35 +0100 |
---|---|---|
committer | Matteo Bernardini <ponce@slackbuilds.org> | 2017-02-21 09:10:35 +0100 |
commit | a33493f4754999cc73da4e02857339c817d861e2 (patch) | |
tree | 94e74cffe6b1ff9327c6af47ef98ada1e5a0aee3 /system/nvidia-driver/nvidia-switch | |
parent | 1d3d55aa4cc9c2039ca9ce19bc61979f2f51969a (diff) |
system/nvidia-driver: Updated for version 375.39.
Signed-off-by: Matteo Bernardini <ponce@slackbuilds.org>
Diffstat (limited to 'system/nvidia-driver/nvidia-switch')
-rw-r--r-- | system/nvidia-driver/nvidia-switch | 229 |
1 files changed, 141 insertions, 88 deletions
diff --git a/system/nvidia-driver/nvidia-switch b/system/nvidia-driver/nvidia-switch index 33d3f61d65d60..d28aa95526cae 100644 --- a/system/nvidia-driver/nvidia-switch +++ b/system/nvidia-driver/nvidia-switch @@ -1,6 +1,6 @@ #!/bin/sh -# Copyright 2012-2015 Edward W. Koenig, Vancouver, WA, USA +# Copyright 2012-2017 Edward W. Koenig, Vancouver, WA, USA # All rights reserved. # # Redistribution and use of this script, with or without modification, is @@ -20,14 +20,14 @@ # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # -# nvidia-switch utility 2.6 +# nvidia-switch utility 3.0 # # A tool to install and cleanly remove the nvidia driver without stomping on the xorg files. # Note: this tool "should" allow switching on the fly, but why? Pick a driver! You will still # need to edit a bunch of other config files. # TO-DO: needs more cleanup; still way too brittle. -# NOTE: non-GLVND ONLY!! + ROOT="${ROOT:-/}" CWD=$(pwd) @@ -40,77 +40,104 @@ XMOD="${LIB}/xorg/modules" XLIB="$XMOD/extensions" NV_VERSION="PKGVERSION" # This will be replaced in the build script GL_VERSION="1.2.0" +GLVND="GLVNDFLAG" # This will be replaced in the build script (yes | no) NV_CONF="/usr/share/X11/xorg.conf.d/10-nvidia.conf" save_GL(){ cd $2 - if [ "$1" = "nvidia" ]; then - mv libGL.so.$GL_VERSION libGL.so.$GL_VERSION-xorg - mv libGL.la libGL.la-xorg - mv libGL.la-nvidia libGL.la - ln -sf libGL.so.$NV_VERSION libGL.so.1 - ln -sf libGL.so.$NV_VERSION libGL.so - - mv libEGL.so.1.0.0 libEGL.so.1.0.0-xorg - mv libEGL.so.1-nvidia libEGL.so.1.0.0 - ln -sf libEGL.so.1.0.0 libEGL.so.1 - ln -sf libEGL.so.1.0.0 libEGL.so - - mv libGLESv1_CM.so.1.1.0 libGLESv1_CM.so.1.1.0-xorg - mv libGLESv1_CM.so.1-nvidia libGLESv1_CM.so.1.1.0 - ln -sf libGLESv1_CM.so.1.1.0 libGLESv1_CM.so - ln -sf libGLESv1_CM.so.1.1.0 libGLESv1_CM.so.1 - - mv libGLESv2.so.2.0.0 libGLESv2.so.2.0.0-xorg - mv libGLESv2.so.2-nvidia libGLESv2.so.2.0.0 - ln -sf libGLESv2.so.2.0.0 libGLESv2.so.2 - ln -sf libGLESv2.so.2.0.0 libGLESv2.so - fi + case "$1" in + "nvidia") + mv libGL.so.$GL_VERSION libGL.so.$GL_VERSION-xorg + mv libGL.la libGL.la-xorg + mv libGL.la-nvidia libGL.la + mv libEGL.so.1.0.0 libEGL.so.1.0.0-xorg - if [ "$1" = "xorg" ]; then - mv libGL.la libGL.la-nvidia - mv libGL.la-xorg libGL.la - mv libGL.so.$GL_VERSION-xorg libGL.so.$GL_VERSION - ln -sf libGL.so.$GL_VERSION libGL.so.1 - ln -sf libGL.so.$GL_VERSION libGL.so - - mv libEGL.so.1.0.0 libEGL.so.1-nvidia - mv libEGL.so.1.0.0-xorg libEGL.so.1.0.0 - ln -sf libEGL.so.1.0.0 libEGL.so.1 - ln -sf libEGL.so.1.0.0 libEGL.so - - mv libGLESv1_CM.so.1.1.0 libGLESv1_CM.so.1-nvidia - mv libGLESv1_CM.so.1.1.0-xorg libGLESv1_CM.so.1.1.0 - ln -sf libGLESv1_CM.so.1.1.0 libGLESv1_CM.so.1 - ln -sf libGLESv1_CM.so.1.1.0 libGLESv1_CM.so - - mv libGLESv2.so.2.0.0 libGLESv2.so.2-nvidia - mv libGLESv2.so.2.0.0-xorg libGLESv2.so.2.0.0 - ln -sf libGLESv2.so.2.0.0 libGLESv2.so.2 - ln -sf libGLESv2.so.2.0.0 libGLESv2.so - fi + if [ "$GLVND" = "yes" ]; then + ln -sf libGL.so.1.0.0 libGL.so.1 + ln -sf libGL.so.1 libGL.so + ln -sf libEGL.so.1-nvidia libEGL.so.1 + ln -sf libEGL.so.1 libEGL.so + else + ln -sf libGL.so.$NV_VERSION libGL.so.1 + ln -sf libGL.so.1 libGL.so + ln -sf libEGL.so.$NV_VERSION libEGL.so.1 + ln -sf libEGL.so.1 libEGL.so + fi + + mv libGLESv1_CM.so.1.1.0 libGLESv1_CM.so.1.1.0-xorg + ln -sf libGLESv1_CM.so.1-nvidia libGLESv1_CM.so.1 + ln -sf libGLESv1_CM.so.1 libGLESv1_CM.so + mv libGLESv2.so.2.0.0 libGLESv2.so.2.0.0-xorg + ln -sf libGLESv2.so.2-nvidia libGLESv2.so.2 + ln -sf libGLESv2.so.2 libGLESv2.so + ;; + + "xorg") + mv libGL.la libGL.la-nvidia + mv libGL.la-xorg libGL.la + mv libEGL.so.1.0.0-xorg libEGL.so.1.0.0 + mv libGL.so.$GL_VERSION-xorg libGL.so.$GL_VERSION + + ln -sf libGL.so.$GL_VERSION libGL.so.1 + ln -sf libGL.so.$GL_VERSION libGL.so + ln -sf libEGL.so.1.0.0 libEGL.so.1 + ln -sf libEGL.so.1.0.0 libEGL.so + + mv libGLESv1_CM.so.1.1.0-xorg libGLESv1_CM.so.1.1.0 + ln -sf libGLESv1_CM.so.1.1.0 libGLESv1_CM.so.1 + ln -sf libGLESv1_CM.so.1.1.0 libGLESv1_CM.so + mv libGLESv2.so.2.0.0-xorg libGLESv2.so.2.0.0 + ln -sf libGLESv2.so.2.0.0 libGLESv2.so.2 + ln -sf libGLESv2.so.2.0.0 libGLESv2.so + ;; + *) + echo "nothind to do for save_gl?" + exit 1 + ;; + esac cd "$CWD" } save_glx(){ cd "$XLIB" - if [ "$1" = "nvidia" ]; then - mv libglx.so libglx.so-xorg - mv libglx.so.$NV_VERSION-nvidia libglx.so.$NV_VERSION - ln -sf libglx.so.$NV_VERSION libglx.so - fi - if [ "$1" = "xorg" ]; then - mv libglx.so.$NV_VERSION libglx.so.$NV_VERSION-nvidia - rm -f libglx.so - mv libglx.so-xorg libglx.so - fi -cd "$CWD" + case "$1" in + "nvidia") + if [ -e libglx.so ]; then + mv libglx.so libglx.so-xorg + fi + ln -sf libglx.so.$NV_VERSION libglx.so + ;; + "xorg") + if [ -e libglx.so-xorg ]; then + rm -f libglx.so + mv libglx.so-xorg libglx.so + else + rm -f libglx.so + fi + ;; + *) + echo "nothind to do for save_glx?" + exit 1 + ;; + esac + cd "$CWD" } -nvidia_ldconfig(){ - /sbin/ldconfig - #Generate correct symink for that lib - /sbin/ldconfig -l $1 +save_wfb(){ + cd "$XMOD" + if [ -e libwfb.so ]; then + echo "Using existing Xorg libwfb..." + else + if [ "$1" = "nvidia" ]; then + ln -sf libwfb.so.$NV_VERSION libwfb.so.1 + ln -sf libwfb.so.1 libwfb.so + fi + if [ "$1" = "xorg" ]; then + rm -f libwfb.so + rm -f libwfb.so.1 + fi + fi + cd "$CWD" } nvidia_install(){ @@ -121,9 +148,14 @@ nvidia_install(){ save_glx "nvidia" save_GL "nvidia" $LIB + save_wfb "nvidia" # Check for multilib configuration if [ "$COMPAT32" = "yes" ]; then - save_GL "nvidia" $LIB32 + if [ -e $LIB32/libGL.so.$GL_VERSION ]; then + save_GL "nvidia" $LIB32 + else + echo "mesa-compat32 is not installed, skipping..." + fi fi } @@ -135,19 +167,33 @@ nvidia_remove(){ save_glx "xorg" save_GL "xorg" $LIB - - # Kill dangling symlinks; - rm -f $LIB/libnvidia*.so.1 - rm -f $LIB/libvdpau_nvidia.so.1 + save_wfb "xorg" +# remove dangling sylinks + rm -f $LIB/libnvcuvid.so.1 + rm -f $LIB/libnvidia-cfg.so.1 + rm -f $LIB/libnvidia-encode.so.1 + rm -f $LIB/libnvidia-fbc.so.1 + rm -f $LIB/libnvidia-ifr.so.1 + rm -f $LIB/libnvidia-ml.so.1 + rm -f $LIB/libnvidia-opencl.so.1 rm -f $LIB/libcuda.so.1 - + rm -f $LIB/libOpenCL.so.1 # Check for multilib configuration if [ "$COMPAT32" = "yes" ]; then - save_GL "xorg" $LIB32 -# remove dangling symlinks - rm -f $LIB32/libnvidia*.so.1 - rm -f $LIB32/libvdpau_nvidia.so.1 + if [ -e $LIB32/libGL.so.$GL_VERSION-xorg ]; then + save_GL "xorg" $LIB32 + else + echo "mesa-compat32 is not installed, skipping..." + fi +# remove dangling sylinks + rm -f $LIB32/libnvcuvid.so.1 + rm -f $LIB32/libnvidia-encode.so.1 + rm -f $LIB32/libnvidia-fbc.so.1 + rm -f $LIB32/libnvidia-ifr.so.1 + rm -f $LIB32/libnvidia-ml.so.1 + rm -f $LIB32/libnvidia-opencl.so.1 rm -f $LIB32/libcuda.so.1 + rm -f $LIB32/libOpenCL.so.1 fi if [ -e $NV_CONF ]; then @@ -158,11 +204,11 @@ nvidia_remove(){ } restore(){ -# Attempts to reinstall damaged stock packages if something went wrong. -# Obviously, you will need to run this after '--remove' and before +# Attempt to reinstall damaged stock packages if something went wrong. +# Obviously, you will need to run this after '--remove' and before # 'removepkg nvidia-driver'. # User must: -# 1. remove any dangling symlinks and *-xorg, *-nvidia files in /usr/lib?/, +# 1. remove any dangling symlinks and *-xorg, *-nvidia files in /usr/lib*/, # and any other housekeeping tasks. # 2. copy stock Slackware packages to /root/Slackware # 3. be running STOCK Slackware-14.2 @@ -177,8 +223,9 @@ fi PKGPATH="/root/Slackware" MESA="mesa-11.2.2-$ARCH-1.txz" MESA32="mesa-compat32-11.2.2-$ARCH-1compat32.txz" -XORG="xorg-1.18.3-$ARCH-2.txz" - +XORG="xorg-server-1.18.3-$ARCH-2.txz" +# Note: The above is for stock 14.2; modify as needed for /patches or +# multilib updates if [ -d $PKGPATH ]; then if [ `find $PKGPATH -prune -empty -type d` ]; then echo "Your $PKGPATH is empty!" @@ -201,14 +248,20 @@ usage(){ echo " --help Show this help message" } -if [ "$1" = '--install' ]; then - nvidia_install -elif [ "$1" = '--remove' ]; then - nvidia_remove -elif [ "$1" = '--restore' ]; then - restore -elif [ "$1" = '--help' ]; then - usage -else - usage -fi +case "$1" in + "--install") + nvidia_install + ;; + "--remove") + nvidia_remove + ;; + "--restore") + restore + ;; + "--help") + usage + ;; + *) + usage + ;; +esac |